MASQUERADE ターゲットの出力を TEE で複製する方法は?

MASQUERADE ターゲットの出力を TEE で複製する方法は?

Netfilterの拡張機能マニュアルページ次のように述べています。

MASQUERADE: このターゲットはテーブルnatPOSTROUTINGチェーン内でのみ有効です

質問: クローンを作成する方法出力ターゲットをターゲットMASQUERADEにしますかTEE?

下の図を見るとnetfilter/iptables、パケットが送信インターフェイスに送信される前に評価される最後のチェーンであることがわかりますnat.POSTROUTING。チェーンはありませんraw.POSTROUTING...それともありますか?

ここに画像の説明を入力してください こちらもご覧くださいこれ

PSデータが流入するときに、と のインターフェースでとテーブルを同じ順序で
処理する理由は何ですか?manglenatoutboundinbound反対方向これらのインターフェース(出力と入力)を介してですか?

答え1

私の知る限り、iptablesルール実行後nat/ポストラウティング、これはによって提供される最後のフックですiptables、使用することはできませんiptablesNAT 後のパケットをキャプチャします。


しかし、これはnftables、以来フックの優先度はユーザー定義ですNFT重複ステートメントは、iptables'ティー混ぜることも可能nftablesそしてiptables両方がNATを実行しない限り(NATリソースは特別なので、iptablesそしてnftables)。使用iptables オーバー nftablesのバージョンiptablesも動作します(ルールセットをフラッシュする際には注意が必要です)。もちろん、NFTすべてがうまくいくからです。

既製品はこちらNFTNATされたLANを持つルーター上のこのルールセットeth1そしてWAN側はeth2、LAN側の192.168.0.3にコピーを送信します。OPからのその他の質問. という名前のファイルに保存されますforwireshark.nftそして、次のようにして「ロード」しますnft -f forwireshark.nft:

table ip forwireshark {
        chain postnat {
                type filter hook postrouting priority 250; policy accept;
                oif eth2 counter dup to 192.168.0.3 device eth1
        }
}

ここで重要なのは、250という値が、iptables'NF_IP_PRI_NAT_SRC(100)

ping ホストが一定時間非アクティブになった後に Wireshark ホストが通常受信する内容は次のとおりですping -c1 8.8.8.8(一部のシステムではデフォルトで受け入れられない可能性がある「間違った」 IP からの奇妙な ARP 要求に注意してください)。

root@ns-wireshark:~# tcpdump -e -n -s0 -p -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:06:03.074142 82:01:54:27:4d:d7 > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.1 tell 192.168.0.2, length 28
21:06:03.074301 9a:80:fb:e6:6a:0a > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Request who-has 192.168.0.3 tell 140.82.118.4, length 28
21:06:03.074343 7e:0a:6c:12:00:61 > 9a:80:fb:e6:6a:0a, ethertype ARP (0x0806), length 42: Reply 192.168.0.3 is-at 7e:0a:6c:12:00:61, length 28
21:06:03.074387 9a:80:fb:e6:6a:0a > 7e:0a:6c:12:00:61, ethertype IPv4 (0x0800), length 98: 140.82.118.4 > 8.8.8.8: ICMP echo request, id 1633, seq 1, length 64

理由は分かりませんがマングル/ポストルーティングそしてnat/ポストラウティングとにかくこれはiptables' 制限があるため、nftables、同等のものを除いてマングル/出力これは特別なルートを入力再ルーティング用のフック、その他の同等の使用法マングルの一部であるタイプフィルター: 実際には別個のマングルもう入力する必要はありません。優先順位を選択できるため、より多くのことが可能になります。

関連情報