在OpenVPN中铺设L2隧道



最近,有人要求我弄清楚如何为两个远程LAN之间的网桥配置L2隧道,而令我惊讶的是,我找不到这么方便的解决方案。以前,我对此主题不感兴趣,并且天真地相信任何适当的VPN协议都可以捕获广播数据包并通过常规L3隧道转发它们。不幸的是,没有“开箱即用”的通用解决方案。有几种适用于它们的协议和工具,其中大多数都在非常有限的条件下运行或已完全弃用。我将进一步分享最愉快的选择。



为什么是L2?



我首先问了这个问题:我很少使用网络外围设备,在我看来,很长一段时间以来,所有设备都能够在L3上行走。无论如何:有人需要使用办公室打印机,有人需要使用录像机,而有人只是想和他的朋友在局域网对决中被黑而死-当然不用离开家。办公室中共享/网络文件夹的想法也很有吸引力,可以在家中访问,特别是在完全退休期间。



同时,在VPN客户端的开发人员中,出于某些原因,L2桥被认为是一种奇怪的想法,即一两个用户的想法,基本上任何人都不需要。在工业网络中,情况完全不同,在工业网络中,有许多过时或兼容性差的设备,并且L2VPN概念(由其他缩写表示)在网络和提供商级别实现。



技术



它们很多,而且它们都具有怪异和局限性:



  • 例如,顾名思义,第2层隧道协议(L2TP)应该支持OSI L2,包括广播转发。但是不可以,常规的L2TP + IPsec捆绑包不允许在L2级别桥接网络!
  • PPTP-由于存在重大漏洞而成为模因,现已通过某种方式修复,但与L2无关。
  • MPLS — «» . , RouterOS ( , ).
  • PPPoE PPPoEoE , . PPPoE , Cisco.
  • EoIP L2VPN made right, , . PPTP, GRE, NAT.


然后我很惊讶地发现真正的以太网桥接可以... OpenVPN!



我们经常使用个人或工作VPN,因为许多VPN通常会永久打开以绕过锁(尽管在删除Telegram阻止后这种趋势正在下降)。在我的工作任务中,我一直都在使用远程开发主机,并且几乎总是使用OpenVPN。长期以来,我不明白为什么需要在客户端上使用一堆OpenVPN访问服务器+ OpenVPN Connect。对于我的任务,具有手动编辑配置的经典版本对我来说总是足够的,专用的管理面板和GUI在细长的瘦客户机中似乎不合适。但是事实证明,与终端中的配置表相比,该接口在架设桥时要方便得多,尽管并非一切都完美。



配置



事实是Access Server(AS)是作为一种付费且相当昂贵的产品出现的,因此他们努力地将各种各样的东西塞进了其中,只是为了购买它。因此,一个菜单子项出现在Web管理面板中,它允许您选择网络模式(L2桥接/ L3路由),并在一段时间后出于同样的原因从那里悄悄地切断了该菜单项,“没人需要它”。但是,桥接功能本身和相应的脚本尚未删除,仍然可以自定义。



安装



我们需要一台服务器或虚拟机。它的图像在下载页面上,我们将继续分析在Ubuntu 18.04下的服务器上进行安装的情况:



apt update && apt -y install ca-certificates wget net-tools gnupg
wget -qO - https://as-repository.openvpn.net/as-repo-public.gpg | apt-key add -
echo "deb http://as-repository.openvpn.net/as/debian bionic main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update && apt -y install openvpn-as


安装后,服务器将自行运行,您将看到以下消息:



+++++++++++++++++++++++++++++++++++++++++++++++
Access Server 2.8.4 has been successfully installed in /usr/local/openvpn_as
Configuration log file has been written to /usr/local/openvpn_as/init.log

Access Server Web UIs are available here:
Admin  UI: https://185.209.31.165:943/admin
Client UI: https://185.209.31.165:943/
+++++++++++++++++++++++++++++++++++++++++++++++


您立即需要为管理员帐户指定密码:



passwd openvpn


然后,您可以在浏览器中打开管理面板(如上所述:943 / admin),使用指定的密码以openvpn用户身份登录并配置服务器。







AS由两个用户免费使用,然后您可以按每位用户每月18美元的价格添加它,因此最好立即设计由两个客户端使用隧道的流程。



桥接回来



cd /usr/local/openvpn_as/scripts
./sacli --key "von.general.osi_layer" --value "2" ConfigPut
./sacli start


如果一切顺利,输出json将包含以下内容:



{
 "errors": {},
 "last_restarted": "Thu Jul  2 00:07:37 2020",
 "service_status": {
   "api": "on",
   "auth": "on",
   "bridge": "on",
        ...
    }
}


在管理面板中,状态“ OSI层:3(路由/ NAT)”将变为“ 2(桥接)”



注意:在最新版本中,有关L3的信息可能会在启用网桥的情况下保留。为什么-我不明白,在这方面安全的版本约为2.4


实际上,这种专有技术结束了,那么您只需要为自己配置服务器,通过相同的Web界面创建第二个用户,然后登录到端口943上的用户页面(不带/ admin)。将提供用于下载所有平台的OpenVPN Connect客户端的链接,这些客户端具有经过烘焙的连接配置(移动应用程序除外,您必须手动输入地址,然后所有内容都将自行安装)。







成功连接并桥接客户端后,具有TCP / UDP流量的L2隧道将可用。客户端可以充当内部网络的对象,这也可以在管理面板中进行配置。






All Articles