Acontece que isso foi uma questão da Amazônia. Eu tive que desabilitar a verificação src / destination do painel para permitir que ele roteasse pacotes.
Eu tenho uma configuração do OpenVPN que se parece com isso:
+------------------------------------------------------+
| |
| |
| |
| |
| |
| |
| |
| +-------------+--+ |
| | Internal Server| |
| | 10.19.4.35 | |
| | | |
| +----------------+ |
+-----+-------+ |
| Gateway | |
| 10.19.4.1 | |
| | |
+-----+-------+ +--------+-------+ |
| | VPN Server | |
| | 10.19.4.59 eth0| |
+------------------------------+ 10.19.5.0 tun0 | |
+-------------+---+ | | +----------------+ |
| Remote Server | | | |
| 10.0.0.2 eth0 +------------+ | |
| 10.19.5.2 tun0| | |
+-----------------+ | |
| |
| |
+------------------------------------------------------+
VPC
O gateway é um gateway da AWS e há uma rota para encaminhar o tráfego 10.19.5.0/24 para o servidor VPN. Eu também estou empurrando uma rota para o servidor remoto para 10.19.4.0/24. Eu também estou usando NAT na eth0 no servidor VPN.
Se eu pingar "Servidor Interno" do "Servidor Remoto", ele funcionará perfeitamente e eu receberei uma resposta. Se eu fizer o ping do eth0 IP do servidor interno do Servidor VPN, recebo uma resposta corretamente.
O problema é que, se eu tentar pingar o endereço IP tun0 do Servidor Remoto ou do Servidor VPN do Servidor Interno, ele nunca recebe a resposta. Depois de fazer alguns despejos de TCP, descobri que quando tento enviar pacotes para 10.19.5.0/24 do servidor interno, ele vai para o gateway como você esperaria. Em seguida, o gateway roteia esse tráfego para o servidor VPN. O servidor VPN está manipulando o tráfego corretamente, pois ele gerará uma resposta se for o destino ou roteará o pacote para o servidor remoto e será a resposta se o servidor remoto for o destino.
O problema é que, em vez de enviar essa resposta para o gateway, o servidor VPN envia o pacote diretamente para 'Internal Server' (isso foi confirmado pela observação dos endereços MAC com o tcpdump).
Eu vi alguma documentação sobre como corrigir isso, mas depois de brincar com SNAT / DNAT / MASQUERADE e especificar vários endereços de origem, ainda não sei como consertar isso com IPTABLES.
Qualquer ajuda seria muito apreciada.