![两个 OpenVPN 隧道之间的路由](https://linux22.com/image/1437729/%E4%B8%A4%E4%B8%AA%20OpenVPN%20%E9%9A%A7%E9%81%93%E4%B9%8B%E9%97%B4%E7%9A%84%E8%B7%AF%E7%94%B1.png)
我需要进行如下设置:
Clients - OpenVPN_tun0 - Int_Server - OpenVPN_tun1 - Ext_Servers - public_internet
两个 OpenVPN 隧道均使用“dev tun”启动并运行,但我在隧道之间路由流量时遇到了困难。
OpenVPN_tun0的服务器是Int_Server,Int_Server是OpenVPN_tun1中的客户端。
OpenVPN_tun0 是 10.20.30.0/24(只有一台服务器),而 OpenVPN_tun1 IP 地址各不相同(几台服务器,tun1 配置中存在“remote-random”)。
Int_Server 运行的是 Fedora21,因此它有防火墙。
Int_server OpenVPN 服务器配置有“推送“重定向网关””,因此来自客户端的所有流量都被路由到 OpenVN_tun0。
问题是,除非我为 Int_Server 中的公共区域启用伪装(“firewall-cmd --zone=public --add-masquerade”),然后流量从“eth0”接口传出,否则客户端无法访问互联网。
这是我现在所拥有的(没有公共区域伪装):
Int_Server # firewall-cmd --list-all-zones | grep -v -e ": $" -e "masquerade: no$"
...
external (active)
interfaces: tun1
masquerade: yes
...
internal (active)
interfaces: tun0
public (default, active)
interfaces: eth0
services: xxx yyy zzz ssh
...
Int_Server # firewall-cmd --direct --get-all-rules
ipv4 filter FORWARD 10 -i tun0 -o tun1 -m conntrack --ctstate NEW -j ACCEPT
ipv4 filter FORWARD 20 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Int_Server # cat /etc/openvpn/openvpn.log | grep ROUTE_GATEWAY | tail -1
Mon Jan 19 21:49:53 2015 ROUTE_GATEWAY x.y.z.1/255.255.255.0 IFACE=eth0 HWADDR=ff:aa:bb:cc:ee:ee
任何帮助都值得感激,首先要确认两个 OpenVPN 隧道之间的路由是可能的。
—帕沃