我试图通过OpenVPN将两个networking(AWS和Azure)连接在一起。 我知道其他的实现(OpenSwan + Azure的GW等),但我需要最大的便携性,因为我将这个扩展到其他云vps提供商以及。
OpenVPN网关可以相互ping通,每个网关都可以ping对方networking上的所有IP,但是一个networking上的计算机不能ping通另一个networking上的计算机(它们也不能ping相对的网关)。
我在这里错过了什么? 似乎很多人都有这个问题的各种原因,但经过50 +尝试,我放弃了,并决定要求:)
networking1:
dev tun port 1194 ifconfig 10.8.223.40 10.8.223.41 route 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /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
networking2
dev tun port 1194 remote my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 route 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /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明智的:
两个networking: iptables -I FORWARD -i eth0 -o tun0 -m conntrack -ctstate新build-j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack -ctstate NEW -j ACCEPT
networking1: 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接受
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
networking2: 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接受
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
我的假设是(因为我有独立的互联网接入网关),我现在必须添加路由到两个networking中的每个非网关计算机,这些networking将通过本地OpenVPN网关路由到对端networking的数据包。
我为机器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 kernel scope链接src 10.0.1.7 10.22.1.0/24通过10.0.1.9 dev eth0 172.17.0.0/16 dev docker0 proto kernel scope链接src 172.17.42.1
但traceroute到10.22.1.9(对方网关)仍然没有去任何地方…
PS大多数机器都在Docker中,但是我也得到了主机的相同结果。
任何帮助将不胜感激!