Estou tentando conectar duas redes (AWS e Azure) via OpenVPN. Estou ciente de outras implementações (OpenSwan + Azure GW etc.), mas preciso de portabilidade máxima, pois expandirei isso para outros provedores de vps em nuvem também.
Os gateways OpenVPN podem executar ping entre si, e cada gateway pode executar ping em todos os IPs na rede oposta, mas os computadores em uma rede não podem executar ping em computadores na outra rede (nem podem executar ping nos gateways opostos).
O que estou perdendo aqui? Parece que muitos estão tendo esse problema por vários motivos, mas depois de mais de 50 tentativas 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-key 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-key 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 em termos de iptables:
Ambas as redes:iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NOVO -j ACEITAR iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NOVO -j ACEITAR
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 ACEITAR
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 ACEITAR
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 ACEITAR
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 ACEITAR
Minha suposição foi (já que tenho gateways separados para acesso à Internet) que agora preciso adicionar rotas para cada computador não-gateway em ambas as redes que encaminharão pacotes destinados à rede oposta através do gateway OpenVPN local.
Eu fiz isso para a máquina 10.0.1.7:
rota ip adicionar 10.22.1.0/24 via 10.0.1.9
Então agora eu tenho:
padrão 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 leva a lugar nenhum ...
PS A maioria das minhas máquinas está no Docker, mas também obtenho os mesmos resultados na máquina host.
Qualquer ajuda seria muito apreciada!