
iptables-mod-tee
次のようなルールを追加した場合、クローン後にパックされたクローンはどこに行きますか?
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 のパケットフローと一般的なネットワークの概略図: これは、ローカルプロセスの直後になります。これは、ルーティングされたパケットの複製が以前に行われた場合(たとえば、マングルまたは生の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