iptables snat não altera o IP de origem

0

Estou no Ubuntu (com o IP 10.0.0.1) tentando enviar pacotes saindo da porta 9090. Eu quero mudar o IP de origem para 10.0.0.2

Eu adicionei a seguinte regra através do iptables:

# iptables -t nat -A POSTROUTING -o eth0 --protocol TCP --source-port 9090 -j SNAT --to-source 10.0.0.2:9090

# sudo iptables -t nat -vL
Chain POSTROUTING (policy ACCEPT 2432 packets, 162K bytes)
pkts bytes target     prot opt in     out     source               destination
   0     0 SNAT       tcp  --  any    eth0    anywhere             anywhere        tcp spt:9090 to:10.0.0.2:9090

No entanto, isso não alterou o endereço IP de origem. Através do tcpdump, pude ver que o IP de origem nos pacotes de saída era 10.0.0.1.

Note que 10.0.0.2 é atribuído a uma máquina diferente.

Minhas perguntas são: (1) Não tenho certeza se os pacotes estão atingindo essa regra. O que é uma boa maneira de verificar se os pacotes realmente estão atingindo essa regra. (2) Há mais alguma coisa que eu preciso executar / ativar para fazer o SNAT funcionar (talvez encadeamento?).

Obrigado!

    
por Groot 17.11.2014 / 18:06

1 resposta

0

Thanks @DanielB. Well, I have a server (IP 10.0.0.1) running on port 9090. When it receives a SYN from a client, I want the SYN-ACK to go out with src IP:port as 10.0.0.2:9090. Through tcpdump, I see the SYN-ACK go out with 10.0.0.1:9090

Eu não acho que exista uma maneira de conseguir o que você quer com o iptables NAT (e se você achou que não seria útil, os clientes irão rejeitar pacotes de IPs inesperados)

O NAT de iptables funciona em conexões , somente o primeiro pacote de cada conexão está sujeito às tabelas NAT visíveis ao usuário. Os pacotes posteriores são traduzidos (ou não) de acordo com as entradas de rastreamento de conexão estabelecidas pelo primeiro pacote.

    
por 12.09.2018 / 16:18