
Tenho 2 VMs, uma com endereço IP privado (atrás do NAT) e outra com endereço público. Fiz túnel SSH com NAT. O objetivo é conectar a VM pública à rede por trás do NAT e encaminhar algum tráfego através dela. O objetivo é falsificar um aplicativo executado nesta rede com outro semelhante em um servidor público (para fins de teste).
Então eu fiz algo assim:
Ativar túnel
sudo ssh [email protected] -w 0:0
Endereçamento
ifconfig tun0 10.253.253.1/30 pointopoint 10.253.253.2 - Local
ifconfig tun0 10.253.253.2/30 pointopoint 10.253.253.1 - Remote
Adicionando rota à rede interna
ip route add 10.0.3.0/24 via 10.253.253.1
Para comunicação bidirecional (na verdade, não tenho certeza sobre esta)
sudo arp -sD 10.253.253.1 ens18 pub
Encaminhamento de porta no local
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -s 10.253.253.1 -j ACCEPT
sudo iptables -I FORWARD 1 -d 10.253.253.1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.253.253.1 -j MASQUERADE
E, na verdade, isso está quase funcionando, quando desativo o serviço de aplicativo no host local, ele encaminha o tráfego para o host remoto. Mas há um problema principal: este servidor local está enviando solicitações na porta 4660 e outros (aplicativos internos) respondem na porta 4661. Parece que preciso de uma regra adicional para encaminhar todo o tráfego de entrada na porta 4661 para a interface do túnel para a porta 4660. Como para lidar com isso? Não estou muito familiarizado com o iptables, mas tentei algo assim, mas não funcionou:
iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.1:4660
iptables -A FORWARD -p udp -d 10.253.253.1 --dport 4660 -j ACCEPT
Responder1
Ok, fiz funcionar:
iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.2:4661(remote tun address)