Подключите AWS и Azure через OpenVPN

Подключите AWS и Azure через OpenVPN

Я пытаюсь соединить две сети (AWS и Azure) вместе через OpenVPN. Я знаю о других реализациях (OpenSwan+Azure GW и т. д.), но мне нужна максимальная переносимость, так как я буду расширять это и на других провайдеров облачных vps.

Шлюзы OpenVPN могут пинговать друг друга, и каждый шлюз может пинговать все IP-адреса в противостоящей сети, но компьютеры в одной сети не могут пинговать компьютеры в другой сети (и не могут пинговать противостоящие шлюзы).

Что я упускаю? Похоже, у многих по разным причинам возникает эта проблема, но после 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 ПЕРЕСЫЛКА -i eth0 -o tun0 -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ iptables -I ПЕРЕСЫЛКА -i eth0 -o eth0 -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ

Сеть 1:iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j МАСКАРАД iptables -A ПЕРЕСЫЛКА -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 МАСКАРАД iptables -A ПЕРЕСЫЛКА -p tcp -s 10.8.223.40/32 -d 0.0.0.0/0 -j ПРИНЯТЬ

Сеть 2:iptables -t nat -A POSTROUTING -s "10.22.1.0/24" -o "eth0" -j МАСКАРАД iptables -A ПЕРЕСЫЛКА -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 МАСКАРАД iptables -A ПЕРЕСЫЛКА -p tcp -s 10.8.223.41/32 -d 0.0.0.0/0 -j ПРИНЯТЬ

Я предполагал (поскольку у меня есть отдельные шлюзы для доступа в Интернет), что теперь мне придется добавить маршруты к каждому компьютеру, не являющемуся шлюзом, в обеих сетях, которые будут маршрутизировать пакеты, предназначенные для противоположной сети, через локальный шлюз OpenVPN.

Я сделал это для машины 10.0.1.7:

добавить ip route 10.22.1.0/24 через 10.0.1.9

Итак, теперь у меня есть:

по умолчанию через 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

но traceroute до 10.22.1.9 (противоположный шлюз) по-прежнему никуда не ведет...

P.S. Большинство моих машин работают в Docker, но те же результаты я получаю и с хост-машины.

Любая помощь будет высоко оценен!

Связанный контент