Netfilterの拡張機能 manページ は次のように述べています。
MASQUERADE:このターゲットは、
nat
チェーンのPOSTROUTING
テーブルでのみ有効です。
質問:MASQUERADE
ターゲットのoutputをTEE
ターゲットで複製する方法は?
以下のnetfilter/iptables
の図を見ると、nat.POSTROUTING
が、パケットがアウトバウンドインターフェイスに送信される前に評価される最後のチェーンであることがわかります。 raw.POSTROUTING
チェーンがありません、...またはありますか?
this も参照してください。
P.S.
データがmangle
インターフェースとnat
インターフェースで、outbound
テーブルとinbound
テーブルを同じ順序で処理する理由は何ですか。これらのインターフェース(出力と入力)を介して反対方向に流れますか?
私の知る限り、iptablesによって提供される最後のフックである nat/POSTROUTING の後にiptablesルールを実行することはできないため、これはiptablesを使用してNAT後のパケットをキャプチャすることはできません。
ただし、これは nftables を使用する場合に可能です。これは、 フックの優先度はユーザー定義 であるためです。nft 's dup ステートメントは、iptables' [〜#〜] tee [〜#〜]の直接の置き換えです。nftablesとiptablesの両方がNATを実行していない限り、それらを混在させることができます(natリソースは特別であり、iptables間で適切に共有できません。およびnftables)。 iptables-over-nftables のバージョンのiptablesも機能し(ルールセットをフラッシュするときは注意が必要です)、もちろんすべてにnftのみを使用しても機能します。
これは、eth1にNATされたLANがあり、eth2にそのWAN側があるルーターで、192.168.0.3にコピーを送信するための既製のnftルールセットです。 LAN側で。 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ホストが非アクティブの後にping -c1 8.8.8.8
を実行したときにwiresharkホストを通常受信するものです(「間違った」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
mangle/POSTROUTINGおよびnat/POSTROUTINGの順序の論理的根拠がわかりません。とにかく、これはiptables'制限の一部です。なぜなら、nftablesでは、特別な タイプルート であるmangle/OUTPUTと同等のものは別としてです。再ルーティングのためのフック、マングルの他のすべての同等の使用法はタイプフィルターの一部です:実際には別のマングルタイプはもうありません。優先順位を選択できることで、より多くのことが可能になります。