A tabela iptables nat não está alterando o IP de destino em PREROUTING?

A tabela iptables nat não está alterando o IP de destino em PREROUTING?

OK, então em uma instalação vanilla do Ubuntu 14.04.2, executo os seguintes comandos:

sudo bash -c 'echo 1 > "/proc/sys/net/ipv4/ip_forward"'
sudo iptables -t nat -A PREROUTING -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230
sudo tcpdump -i wlan0 icmp and icmp[icmptype]=icmp-echo -n

​ Então eu faço ping 192.168.100.1de outro terminal. Mas, vejo tcpdumpme mostrando isso:

01:46:37.536354 IP 10.196.100.76 > 192.168.100.1: ICMP echo request, id 6635, seq 1, length 64

No entanto, se eu liberar a tabela nat e executareste comandoem vez de:

sudo iptables -t nat -A OUTPUT -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230

Então, tcpdumpdá isso:

01:46:53.168639 IP 10.196.100.76 > 10.196.106.230: ICMP echo request, id 6638, seq 1, length 64

(O ping foi bem-sucedido, com um pong retornando da outra máquina.)

Denumerosos tutoriaisonline, esperaria que o IP de destino fosse alterado mesmo na cadeia PREROUTING, certo? Ou eu estou esquecendo de alguma coisa?

Responder1

A cadeia PREROUTING não é avaliada em pacotes gerados por processos locais.

Sua primeira regra funcionará na entrada de pacotes de uma interface de rede (tente fazer ping de um computador diferente).

Talvez esta imagem possa esclarecer como o fluxo de pacotes é examinado:Filtragem de pacotes em iptables

fonte:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html

informação relacionada