通过OpenVPN连接AWS和Azure

我试图通过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中,但是我也得到了主机的相同结果。

任何帮助将不胜感激!