Conecte AWS e Azure via OpenVPN

1

Estou tentando conectar duas redes (AWS e Azure) juntas por meio do OpenVPN. Estou ciente de outras implementações (OpenSwan + Azure GW, etc.), mas preciso de portabilidade máxima, já que estarei expandindo isso para outros provedores de nuvem vps também.

Gateways OpenVPN podem pingar uns aos outros, e cada gateway pode fazer ping de todos os IPs na rede oposta, mas os computadores em uma rede não podem fazer ping em computadores na outra rede (nem podem fazer ping nos gateways opostos).

O que estou perdendo aqui? Parece que muitos estão tendo esse problema por várias razões, mas depois de mais de 50 tentativas eu desisti e decidi perguntar:)

Rede 1:

dev tun porta 1194 ifconfig 10.8.223.40 10.8.223.41 rota 10.22.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persistência-chave persist-tun usuário ninguém grupo ninguém segredo /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 

Rede 2

dev tun porta 1194 remoto my_ext_ip 1194 ifconfig 10.8.223.41 10.8.223.40 rota 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persistência-chave persist-tun usuário ninguém grupo ninguém segredo /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 

Aqui está o que eu tenho no iptables:

Ambas as redes: iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NOVO -j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NOVO -j ACCEPT

Rede 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

Rede 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

Minha suposição era (já que tenho gateways separados para acesso à Internet) que agora tenho que adicionar rotas a cada computador não-gateway em ambas as redes que rotearão pacotes destinados à rede oposta via gateway OpenVPN local.

Eu fiz isso para a máquina 10.0.1.7:

ip route add 10.22.1.0/24 via 10.0.1.9

Agora eu tenho:

default via 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 via 10.0.1.9 dev eth0 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1

mas traceroute para 10.22.1.9 (gateway oposto) ainda não vai a lugar nenhum ...

P.S. A maioria das minhas máquinas está no Docker, mas também obtenho os mesmos resultados da máquina host.

Qualquer ajuda seria muito apreciada!

    
por user3521621 24.02.2015 / 21:57

0 respostas