iptables-mod-tee
これらのルールを追加すると、レプリケーション後にgo cloneにパッケージ化されますか? :
iptables -t mangle -A POSTROUTING -o eth2 -j TEE --gateway 192.168.0.3
下の図を参照してください。上記のコマンドを使用すると、モジュールがレプリカとしてiptables-mod-tee
使用されることは明らかであると思います。POSTROUTING chain
mangle table
源泉しかし、パケットはどうなりますか?後ろにクローンですか?つまり、クローンはどのチェーンとテーブルに移動しますか?
編集:回答に記載されている複製されたパケットのパスを説明するために、上記の画像に赤い点線を追加しました。
答え1
データパックTEEによる複製、conntrackによって追跡されないように設定されています。、存在しないようにブロック もう一度繰り返す、そして次の日から始まるローカル出力ルーティングスタックの一部なので、raw / OUTPUTで最初に見ることができます(この内容も参照できます)。一般的なネットワーク図のNetfilterとパケットフロー:ローカルプロセスの後に進みます。)これは、ルーティングされたパケットが以前にコピーされた場合でも同じです(たとえば、mangleまたは元のPREROUTINGなど)。これは仕事が難しくなりますが(しかし不可能ではない) は追跡されず、オリジナルと区別するのが難しいため、 extra nat などの追加処理が可能です。
これは例です追跡する(iptables-legacy を使用するバージョン) OP と同様の設定で 192.168.0.2 から 8.8.8.8 まで ping をキャプチャします.キャプチャはiptables -t raw -A OUTPUT -j TRACE
.originalを使用してルータで行われます。ルーティング済みパケットは、ソース/プレパスからキャプチャする必要があるため表示されません。したがって、上記の説明を確認して、出力で実行されたことを通知します。
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