Назад | Перейти на главную страницу

Подключите 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 route 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun пользователь никто группа никто не секрет /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 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:

Обе сети: iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT

Сеть 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 route добавить 10.22.1.0/24 через 10.0.1.9

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

по умолчанию через 10.0.1.1 dev eth0 10.0.1.0/27 dev eth0 proto kernel scope link 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 link src 172.17.42.1

но traceroute до 10.22.1.9 (противостоящий шлюз) все равно никуда не денется ...

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

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