iptables-mod-tee によって複製されたパケットは、複製後にどこに行くのでしょうか?

iptables-mod-tee によって複製されたパケットは、複製後にどこに行くのでしょうか?

iptables-mod-tee次のようなルールを追加した場合、クローン後にパックされたクローンはどこに行きますか?

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

下の図を参照してください。上記のコマンドでは、モジュールがのをクローンとしてiptables-mod-tee使用していることがわかります。POSTROUTING chainmangle tableソースしかし、パケットはどうなるのかクローンは作成されますか? つまり、クローンはどのチェーンとテーブルに移動しますか?

ここに画像の説明を入力してください

編集: 回答に記載されている複製されたパケットのパスを表すために、上の図に赤い破線を追加しました。

ここに画像の説明を入力してください

答え1

パケットTEEを通じてクローン化されたconntrackによって追跡されないよう設定されている阻止される 再び重複、そして放出されるローカル出力ルーティングスタックの一部なので、raw/OUTPUTで最初に表示されます(このNetfilter のパケットフローと一般的なネットワークの概略図: これは、ローカルプロセスの直後になります。これは、ルーティングされたパケットの複製が以前に行われた場合(たとえば、マングルまたは生のPREROUTING)と同じです。これにより、(ただし)不可能ではない)は、追跡されず、オリジナルとの区別が難しいため、追加のナットのような追加の処理を受けることになります。

例を挙げてみましょう痕跡(iptables-legacyのバージョンを使用) OPの設定に似た192.168.0.2から8.8.8.8へのpingのキャプチャ: キャプチャはルーターで使用されました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

関連情報