Таблица NAT iptables не меняет IP-адрес назначения в PREROUTING?

Таблица NAT iptables не меняет IP-адрес назначения в PREROUTING?

Итак, на чистой установке Ubuntu 14.04.2 я запускаю следующие команды:

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

​ Затем я пингую 192.168.100.1с другого терминала. Но я вижу, что tcpdumpмне показывают это:

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

Однако, если я очистлю таблицу NAT и запущуэта командавместо:

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

Затем, tcpdumpдает это:

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

(Пинг проходит успешно, с другого компьютера раздается звуковой сигнал.)

Измногочисленные руководствав сети, я бы ожидал, что IP назначения будет изменен даже в цепочке PREROUTING, верно? Или я что-то упускаю?

решение1

Цепочка PREROUTING не оценивается для пакетов, сгенерированных локальными процессами.

Первое правило будет работать при поступлении пакетов с сетевого интерфейса (попробуйте выполнить ping с другого компьютера).

Возможно, эта картинка прояснит, как исследуется поток пакетов:Фильтрация пакетов в iptables

источник:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html

Связанный контент