pQd*_*pQd 6 linux openvpn linux-networking dynamic-routing
我正在考虑通过OpenVPN隧道使用动态路由 [OSPF 或 RIP] 。现在我几乎没有以全网状连接的办公室,但是随着我们添加更多位置,这不是可扩展的解决方案。如果我计划使用的两个 vpn 终端点之一出现故障,我想避免大量内部流量受到影响的情况。
你有类似的配置在生产中工作吗?如果是这样-您使用了什么路由守护程序-quagga?还有什么?你有遇到什么问题吗?
谢谢!
小智 4
我之前已经按照这些思路实现过一些东西,但是我的设置相当复杂,也许太多了。我目前正在研究按照以下 URL 中描述的内容/影响来实现一个更简单的解决方案,但我将描述我同时构建的内容。网址是http://www.linuxjournal.com/article/9915
过去对我来说效果很好的一种选择是使用 Tap 设备而不是 tun 设备构建我的 OpenVPN 隧道。这将以太网封装在隧道而不是第 3 层上,并且允许您解决 OpenVPN 维护其自己的与内核分离的路由表的固有限制。缺点是通过这种方式建立隧道会产生大量开销...想象一下通过 TCP 加密 SSL 的以太网上的 TCP...您明白了。好处是它的工作效果和水平扩展都相当好。
假设您的 VPN 服务器和客户端是 Linux 端点(我只在 Linux 上进行了测试),您可以创建一个新的虚拟桥接口并将分接接口分配给桥以获得第 3 层。在我的拓扑中,我为每个 VPN 服务器提供了其拥有 10.x.0.0/16 子网,并部署了本地 DHCP 服务器来为连接的客户端分配地址。DHCP 服务器需要存在,因为 OpenVPN 不再识别 IP 地址;它是隧道以太网。连接后,客户端运行 dhclient 通过 VPN 接口获取 IP,这一切都由与 OpenVPN 配置相关的连接脚本进行管理。
一旦通过 DHCP 获得了双方的 IP 地址,您就可以使用动态路由协议在连接的客户端之间通告路由。我过去使用过Quagga,它工作得相当可靠。
使用 Tap 的服务器配置示例:
mode server
proto tcp-server
port 1194
dev tap0
Run Code Online (Sandbox Code Playgroud)
将 Tap 接口添加到新网桥的示例命令:
sudo brctl addbr vpnbr0 # create new bridge called vpnbr0
sudo brctl setfd vpnbr0 0 # set forwarding delay to 0 secs
sudo brctl addif vpnbr0 tap0 # add openvpn tap interface to vpnbr0
Run Code Online (Sandbox Code Playgroud)
拆卸命令示例:
sudo brctl delif vpnbr0 tap0
sudo brctl delbr vpnbr0
Run Code Online (Sandbox Code Playgroud)
拥有 vpnbr0 桥接接口后,您可以在其上运行 DHCP 服务器或手动分配 IP 地址。然后您可以像对待任何其他以太网接口一样对待它。您可能需要进行其他更改来调整 MTU 大小,并且您可能会尝试不同的协议和加密选项,直到在效率和安全性之间找到适当的平衡。我没有任何关于整体吞吐量的好的规格可以提供,而且这里有很多移动部件。
如果重来一次,我会坚持使用 OpenVPN 中的 tun 设备,并且会按照第一段中链接的文章中的说明在 OpenVPN 的内部地址表更新时更新 Linux 内核的路由表。这将从堆栈中消除 DHCP,减少隧道开销,并允许我的客户端在不参与动态路由的情况下进行连接和操作。
| 归档时间: |
|
| 查看次数: |
5588 次 |
| 最近记录: |