ICMP応答にプライベートIPを表示するように構成されたSNATを持つTCPDUMP

ICMP応答にプライベートIPを表示するように構成されたSNATを持つTCPDUMP

問題:TCPDUMP icmpレスポンスで説明できない個人アドレスがあります。公開アドレスが欲しいです。

[router.box(1.2.3.4)]$ tcpdump -n -i br1 icmp
10:42:21.689215 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2935, seq 1, length 64
10:42:21.696828 IP 8.8.8.8 > 10.0.0.1: ICMP echo reply, id 2935, seq 1, length 64

ブリッジインターフェイスを離れるパケットに対してSNATを実行するようにLinuxボックスを設定しましたbr1

[router.box(1.2.3.4)]$ iptables -t nat -L -n -v
Chain POSTROUTING (policy ACCEPT 75970 packets, 4560K bytes)
 pkts bytes target     prot opt in     out     source               destination                   
   62  3816 SNAT       all  --  *      br1     0.0.0.0/0            0.0.0.0/0            to:1.2.3.4

発信ICMPパケットは送信元アドレスをからに正しく変更します10.0.0.1が、1.2.3.4ICMP応答パケットはプライベートアドレス(10.0.0.1)に変換されているようです。

[local.box(10.0.0.1)]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=112 time=8.06 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=112 time=7.97 ms
[router.box(1.2.3.4)]$ tcpdump -n -i br1 icmp
10:42:21.689215 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 2935, seq 1, length 64
10:42:21.696828 IP 8.8.8.8 > 10.0.0.1: ICMP echo reply, id 2935, seq 1, length 64

私のネットワーク構成は次のとおりです。

[router.box(1.2.3.4)]$ ip a
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br1 state UP group default qlen 1000
36: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
  inet 1.2.3.4/26 ...
36: br3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
  inet 10.0.0.2/24 ...
[router.box(1.2.3.4)]$ ip route
default via <gateway address> dev br1
10.0.0.1/24 dev br3 proto kernel scope link src 10.0.0.2
[local.box(10.0.0.1)]$ ip a
36: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
  inet 10.0.0.1/24 ...
[local.box(10.0.0.1)]$ ip route
default via 10.0.0.2 dev eno1

TCPDUMPがパケットを収集する場所を誤解していますか?アドレスがソースアドレスに再変換された後ですか?

編集する:
eno2物理インタフェース()のtcpdumpが期待した結果を生成するようです。

[router.box(1.2.3.4)]$ sudo tcpdump -n -i eno2 icmp                                                                                                                 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eno2, link-type EN10MB (Ethernet), capture size 262144 bytes
13:33:49.331086 IP 1.2.3.4 > 8.8.8.8: ICMP echo request, id 3011, seq 1, length 64
13:33:49.338641 IP 8.8.8.8 > 1.2.3.4: ICMP echo reply, id 3011, seq 1, length 64

eno2その後、SNATは物理インターフェイス()に入り、ブリッジインターフェイス()の前に適用されますかbr1

答え1

これは通常の動作です。 NAT 以前および NAT 以降の IP を表示するには、インターフェイスを「any」に置き換えます。

sudo tcpdump -eni any icmp  

関連情報