Более того, если я создаю цель LOG в своей необработанной таблице, я вижу журналы следующего вида:
Код: Выделить всё
IN=tun0 OUT= MAC= SRC=172.21.0.3 DST=224.0.0.3 LEN=92 TOS=0x00 PREC=0x00 TTL=15 ID=26717 DF PROTO=UDP SPT=49391 DPT=23000 LEN=72
а также типа:
Код: Выделить всё
IN=tun0 OUT= MAC= SRC=172.21.0.2 DST=224.0.0.3 LEN=172 TOS=0x00 PREC=0x00 TTL=0 ID=11313 DF PROTO=UDP SPT=35231 DPT=23000 LEN=152
У меня есть правило для PREROUTING моей таблицы nat цепочка, которая ДНКАТизирует эти входящие пакеты для отправки их в докер-контейнер на моей локальной машине: sudo iptables -t nat -A PREROUTING -p udp --dport 23000 -i tun0 -j DNAT --to-destination 172.18.0.3.
Я могу подтвердить, что трафик из одного контейнера докера попадает в mangle цепочка FORWARD таблицы, добавив цель LOG: sudo iptables -t mangle -A FORWARD -j LOG -i tun0 и затем запустив sudo iptables -t mangle -L FORWARD -n -v.
Но пакеты из другого Docker-контейнера не попадают ни в цепочку FORWARD таблицы mangle или в цепочку INPUT таблицы mangle. С помощью sudo iptables -t nat -L PREROUTING -v -n я подтвердил, что счетчики байтов увеличиваются, а пакеты обрабатываются DNAT.
Этот документ заставляет меня думаю, что пакеты должны идти либо в цепочки INPUT, либо в FORWARD таблицы mangle, но в моем случае трафик из 172.21.0.2 не будет ни в одной цепочке.
Как это возможно?
Подробнее здесь: https://stackoverflow.com/questions/793 ... prerouting