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  

관련 정보