我正在尝试通过 OpenVPN 将两个网络(AWS 和 Azure)连接在一起。我知道其他实现(OpenSwan+Azure GW 等),但我需要最大的可移植性,因为我还将将其扩展到其他云 vps 提供商。
OpenVPN 网关可以相互 ping 通,并且每个网关可以 ping 通对方网络上的所有 IP,但是一个网络上的计算机无法 ping 通另一个网络上的计算机(也无法 ping 通对方网关)。
我遗漏了什么?似乎很多人因为各种原因遇到了这个问题,但尝试了 50 多次后,我放弃了,决定问一下 :)
网络 1:
dev tun 端口 1194 ifconfig 10.8.223.40 10.8.223.41 路由 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun 用户 nobody 组 nobody 秘密 /etc/openvpn/static.key
ip route
default via 10.0.1.1 dev eth0
10.0.1.0/27 dev eth0 proto kernel scope link src 10.0.1.9
10.22.1.0/24 via 10.8.223.41 dev tun0
10.33.0.0/24 via 10.33.0.2 dev tun2
10.33.0.2 dev tun2 proto kernel scope link src 10.33.0.1
10.8.223.41 dev tun0 proto kernel scope link src 10.8.223.40
网络 2
dev tun 端口 1194 远程 my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 路由 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun 用户 nobody 组 nobody 秘密 /etc/openvpn/static.key
ip route
default via 10.22.1.1 dev eth0
10.0.0.0/15 via 10.8.223.40 dev tun0
10.22.1.0/24 dev eth0 proto kernel scope link src 10.22.1.9
10.8.223.40 dev tun0 proto kernel scope link src 10.8.223.41
以下是我所拥有的 iptables 内容:
两个网络:iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j 接受 iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j 接受
网络 1:iptables -t nat -A POSTROUTING -s “10.0.0.0/15” -o “eth0” -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -s “10.8.223.40/32” -o “eth0” -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.40/32 -d 0.0.0.0/0 -j ACCEPT
网络 2:iptables -t nat -A POSTROUTING -s “10.22.1.0/24” -o “eth0” -j MASQUERADE iptables -A FORWARD -p tcp -s 10.22.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -t nat -A POSTROUTING -s “10.8.223.41/32” -o “eth0” -j MASQUERADE iptables -A FORWARD -p tcp -s 10.8.223.41/32 -d 0.0.0.0/0 -j ACCEPT
我的假设是(因为我有单独的互联网访问网关),我现在必须向两个网络上的每台非网关计算机添加路由,这些路由将通过本地 OpenVPN 网关路由发往相反网络的数据包。
我对机器 10.0.1.7 做了同样的操作:
ip 路由通过 10.0.1.9 添加 10.22.1.0/24
所以现在我有:
默认通过 10.0.1.1 dev eth0 10.0.1.0/27 dev eth0 proto 内核范围链接 src 10.0.1.7 10.22.1.0/24 通过 10.0.1.9 dev eth0 172.17.0.0/16 dev docker0 proto 内核范围链接 src 172.17.42.1
但是到 10.22.1.9(对面的网关)的跟踪路由仍然没有任何进展...
PS 我的大多数机器都在 Docker 中,但我也从主机上获得了相同的结果。
任何帮助都将不胜感激!