Куда идет упакованный клон iptables-mod-tee после клонирования, когда я добавляю такое правило?:

iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3

Пожалуйста, обратитесь к диаграмме ниже. Я думаю, очевидно, что с приведенной выше командой модуль iptables-mod-tee использует POSTROUTING chain mangle table в качестве источника клонирования, но что происходит с пакетом < strong>после его клонирования? то есть в какую цепочку и таблицу идет клон?

enter image description here

РЕДАКТИРОВАТЬ: на приведенную выше диаграмму добавлена ​​красная пунктирная линия, чтобы обозначить путь клонированного пакета, описанный в ответе.

enter image description here

2
George Robinson 24 Ноя 2019 в 14:44

1 ответ

Лучший ответ

Пакет клонирован через TEE, отслеживается conntrack< /a>, предотвращено < /a>снова продублировано и передается через локальный вывод часть стека маршрутизации, поэтому ее впервые видит raw/OUTPUT (вы также можете обратиться к этому Поток пакетов в схеме Netfilter и General Networking тик: это будет сразу после локального процесса). Это было бы то же самое, если бы дублирование было сделано ранее (например, в mangle или raw PREROUTING) для маршрутизируемого пакета. Это усложняет задачу (но не невозможно), чтобы получить дополнительную обработку, как дополнительный физ, так как он не будет отслеживаться, и его трудно отличить от оригинала.

Вот пример захвата TRACE (с использованием версии iptables-legacy) в настройке, аналогичной на ОП пинга сделанного с 192.168.0.2 на 8.8.8.8: захват был на роутере через iptables -t raw -A OUTPUT -j TRACE. Исходный маршрутизируемый пакет не появится, так как его нужно будет захватить из raw/PREROUTING, тем самым подтверждая приведенное выше объяснение о том, что это делается из вывода.

TRACE: raw:OUTPUT:policy:2 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1 
TRACE: mangle:OUTPUT:policy:1 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1 
TRACE: mangle:POSTROUTING:policy:2 IN= OUT=eth1 SRC=192.168.0.2 DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=39209 DF PROTO=ICMP TYPE=8 CODE=0 ID=3070 SEQ=1
1
A.B 24 Ноя 2019 в 15:59
Вы написали, что клонированный пакет "испускается через локальную выходную часть стека маршрутизации". Означает ли это, что путь клонированного пакета показан красной пунктирной линией на отредактированной диаграмме OP?
 – 
George Robinson
24 Ноя 2019 в 14:23
Обратите внимание, что источником этих клонированных пакетов является исходящий интерфейс eth2, а их назначением — интерфейс eth1, поэтому зацикливания быть не должно.
 – 
George Robinson
24 Ноя 2019 в 15:00
Спасибо, значит, пунктирная красная линия правильно показывает путь клонированного пакета, верно? Кроме того, взгляните на этот связанный вопрос: a-tee" title="как клонировать вывод цели masquerade с тройником">unix.stackexchange.com/questions/553899/…
 – 
George Robinson
24 Ноя 2019 в 21:25
Да (я изменил свой ответ раньше, чтобы отразить это)
 – 
A.B
24 Ноя 2019 в 21:35
Я добавил комментарий к другому вопросу. Но я думаю, что это сделано, не так ли?
 – 
A.B
24 Ноя 2019 в 21:37