Исходящие пакеты, не транзитные, именно локально созданные, браузером, в таблице nat перенаправляются в локальный прокси 127.0.0.1:8080 и локальный DNS 127.0.0.1:53:
iptables -t nat -A OUTPUT ! -o lo -p udp --dport 53 -m udp -j REDIRECT --to-ports 53
iptables -t nat -A OUTPUT ! -o lo -p tcp -j REDIRECT --to-ports 8080В логах вижу (логгирует из filter, OUTPUT; это уже после обработки в таблице nat), что идёт пакет на 127.0.0.1:8080 и через eth0 вместо петли:
IN= OUT=eth0 SRC=192.168.0.2 DST=127.0.0.1 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=49221 DF PROTO=TCP SPT=36551 DPT=8080 WINDOW=2641 RES=0x00 ACK FIN URGP=0
IN= OUT=eth0 SRC=192.168.0.2 DST=127.0.0.1 LEN=89 TOS=0x00 PREC=0x00 TTL=64 ID=34996 DF PROTO=TCP SPT=59256 DPT=8080 WINDOW=2641 RES=0x00 ACK PSH URGP=0
IN= OUT=eth0 SRC=192.168.0.2 DST=127.0.0.1 LEN=58 TOS=0x00 PREC=0x00 TTL=64 ID=40181 PROTO=UDP SPT=35527 DPT=53 LEN=38Пакет попадает в прокси, оттуда уже идёт наружу, всё работает.
Как объяснить, что интерфейс eth0?Для ясности, вот диаграмма, как пакеты идут по цепям:
http://kray.info/images/KernelPacketTravelingDiagram.pngВыходит, последовательность такая: пакет с внешним адресом был направлен в eth0,
в таблице nat был переписан адрес и порт назначения, но не менялся интерфейс,
в таблице filter пакет был записан в журнал,
где-то после снова выполнено направление в петлю, вместо eth0.Где, когда происходит перенаправление в loopback? За пределами Netfilter, при обработке согласно таблице маршрутов?
А имеет смысл в iptables анализировать интерфейс, если известно, что имел место NAT?Я правильно понял последовательность?
> iptables -t nat -A OUTPUT ! -o lo -p udp --dport 53 -m udp -j REDIRECT --to-ports 53(1)
> Выходит, последовательность такая: пакет с внешним адресом был направлен в eth0,
> в таблице nat был переписан адрес и порт назначения, но не менялся
> интерфейс,
> Где, когда происходит перенаправление в loopback? За пределами Netfilter, при обработке
> согласно таблице маршрутов?При dnat-е меняется dest-ip --> пакет может роутиться повторно.
"""Обратите внимание также на тот факт, что пакеты, с адресом назначения на брандмауэр, могут претерпеть изменение сетевого адреса назначения (DNAT) в цепочке PREROUTING таблицы nat и соответственно дальнейшая маршрутизация в первой точке будет выполняться в зависимости от произведенных изменений. .. https://www.opennet.ru/docs/RUS/iptables/#TRAVERSINGOFTABLES
(1) Обычно перенаправление (DNAT в частности) делают в NAT/PREROUTING -- видимо, как раз чтоб не гонять роутинг и все таблицы по два раза.
+++Мозголомные подробности "другого" табличинга: http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html