¿La tabla nat de iptables no cambia la IP de destino en PREROUTING?

¿La tabla nat de iptables no cambia la IP de destino en PREROUTING?

Bien, en una instalación básica de Ubuntu 14.04.2, ejecuto los siguientes 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

Luego hago ping 192.168.100.1desde otra terminal. Pero veo que tcpdumpme muestra esto:

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

Sin embargo, si limpio la tabla nat y ejecutoeste comandoen cambio:

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

Luego, tcpdumpda esto:

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

(El ping es exitoso y la otra máquina envía un ping.)

Desde elnumerosos tutorialesen línea, esperaría que se cambiara la IP de destino incluso en la cadena PREROUTING, ¿verdad? ¿O me estoy perdiendo algo?

Respuesta1

La cadena PREROUTING no se evalúa en paquetes generados por procesos locales.

Su primera regla funcionará con la entrada de paquetes desde una interfaz de red (intente hacer ping desde una computadora diferente).

Quizás esta imagen pueda aclarar cómo se examina el flujo de paquetes:Filtrado de paquetes en iptables

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

información relacionada