adicionar a seguinte entrada POSTROUTING resolveu o problema:
iptables -t nat -A POSTROUTING -p tcp --dport 29871 -j SNAT --to-source 172.16.100.1
Eu tenho um servidor de nuvem em execução no Ubuntu 14.04 que está conectado a um túnel IPsec.
O servidor tem uma interface real com um IP público x.x.x.xe uma interface virtual 172.16.100.1 Todo o tráfego para a rede remota deve ser roteado pela interface virtual com o IP 172.16.100.1 Portanto, eu configurei um roteamento de uma entrada. Isso funciona corretamente para todo o tráfego gerado nesse servidor.
route add -net 172.17.1.2/21 gw 172.16.100.1 dev eth0:1
Mas outro requisito é que, se o servidor da nuvem receber tráfego em seu IP público com uma porta específica, esse tráfego também deverá ser encaminhado para a rede remota. Eu tentei isso adicionando uma entrada de tabela IP:
iptables -t nat -A PREROUTING -p tcp --dport 45678 -j DNAT --to-destination 172.17.1.2:29871
mas o problema é que, de alguma forma, ele ignora a configuração de roteamento e apenas encaminha a solicitação com seu IP de origem, em vez de usar 172.16.x.x
Essa configuração é a abordagem correta ou estou completamente errada? O que mais eu tenho que configurar para encaminhar o tráfego corretamente?