Para responder minha própria pergunta; no ipsec.conf no servidor, tivemos left=<server's subnet>
. Alterar isso para left=0.0.0.0/0
fez o encaminhamento funcionar como esperado.
Eu fiz uma pergunta relacionada aqui - Não é possível encaminhar o túnel ipsec do VPS - mas eu respondi isso e mudei um pouco.
O objetivo final do que estou tentando alcançar é o seguinte:
Temos um grupo de roteadores 4G que, como é padrão para o Reino Unido, estão por trás de algumas camadas de NAT de operadora e, portanto, não são endereçáveis publicamente. Precisamos ser capazes de responder a esses roteadores em um servidor da AWS. Minha idéia para conseguir isso foi configurar um VPS que tinha um endereço IP estático e estabelecer uma VPN do roteador 4G para o VPS. Podemos então nos comunicar com o roteador 4G através do IP público no VPS que seria configurado para encaminhar o tráfego de volta pelo túnel VPN.
Onde estou:
Eu configurei um VPS no Oceano Digital e configurei uma VPN IPSec libreSwan usando esse script - link - e conseguiu a VPN estabelecida com sucesso do roteador para o VPS. Eu posso fazer ping do VPS para o roteador e para outros dispositivos conectados ao roteador (que era o meu problema inicial). O roteador está configurado para usar o túnel VPN como a rota padrão e quando eu faço o ping do VPS do roteador, posso ver os pacotes que chegam do endereço local do roteador (o mesmo dos dispositivos conectados ao roteador), mas agora eu tenho um problema Eu pingar um endereço de internet (por exemplo, 8.8.8.8) do roteador, eu posso ver os pacotes atingindo o VPS, mas eles não estão sendo encaminhados para a Internet (comprovado por ping outra máquina na internet e assistindo TCPdump). Eu configurei o encaminhamento em /etc/sysctl.conf ( net.ipv4.ip_forward = 1
) e habilitei o MASQUERADE no iptables ( -A POSTROUTING -o eth0 -j MASQUERADE
). Eu também tentei várias outras regras do iptables que encontrei na web, mas nada ajudou.
Diagrama de rede:
laptop (used for testing) --- 4G router --- Internet/VPN tunnel --- DO VPS
192.168.0.159 192.168.0.1 public IP
Se eu fizer o ping 8.8.8.8 do laptop, isso é o que o TCPdump no VPS vê:
14:24:58.713759 IP 192.168.0.159 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 714, length 40
mas o laptop não recebe uma resposta e, como eu disse, confirmei que os pacotes não estão sendo enviados.
Tabela de roteamento do VPS:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 178.62.64.1 0.0.0.0 UG 0 0 0 eth0
178.62.64.0 * 255.255.192.0 U 0 0 0 eth0
O que estou fazendo de errado (além de levantar e ir trabalhar)?
Obrigado.
Para responder minha própria pergunta; no ipsec.conf no servidor, tivemos left=<server's subnet>
. Alterar isso para left=0.0.0.0/0
fez o encaminhamento funcionar como esperado.