SNAT/Masquerade는 때때로 소스 IP를 수정하지 않습니다.

SNAT/Masquerade는 때때로 소스 IP를 수정하지 않습니다.

시스템의 POSTROUTING 체인에서 SNAT를 수행합니다. 그러나 때때로 소스 IP가 수정되지 않은 경우가 있음을 발견했습니다. 패킷은 내부 IP를 사용하여 전송됩니다.

우리는 IP 테이블 버전 - 1.6.2
Linux 커널 버전 - 4.14.78을 사용하고 있습니다.

NAT 규칙은 다음과 같습니다.

# iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A POSTROUTING -o wwan0 -j MASQUERADE

위의 wwan0은 기본 게이트웨이입니다.

이 문제를 해결하는 방법.

TCP 덤프의 스냅샷. 내부 IP(172.16..)가 강조 표시됩니다. 변환된 IP는 100.86.203.169입니다. 성공적인 번역의 몇 가지 예를 찾을 수 있습니다.

17:13:51.939700 IP 100.86.203.169.47554 > 135.sub-198-224-172.myvzw.com.domain: 64282+ AAAA? connectivitycheck.gstatic.com. (47)
17:13:52.033482 IP 135.sub-198-224-172.myvzw.com.domain > 100.86.203.169.47554: 63258 1/0/0 A 172.217.11.163 (63)
17:13:52.033598 IP 100.86.203.169.hostmon > 224.0.0.252.hostmon: UDP, length 27
17:13:52.042355 IP 135.sub-198-224-172.myvzw.com.domain > 100.86.203.169.47554: 64282 1/0/0 AAAA 2607:f8b0:4007:804::2003 (75)
17:13:52.043389 IP 100.86.203.169 > lax28s15-in-f3.1e100.net: ICMP echo request, id 34628, seq 0, length 64
17:13:52.132848 IP lax28s15-in-f3.1e100.net > 100.86.203.169: ICMP echo reply, id 34628, seq 0, length 64
17:13:52.237290 IP **172.16.9.59.63478** > lax31s14-in-f14.1e100.net.443: UDP, length 1350
17:13:52.366892 IP 100.86.203.169.hostmon > 224.0.0.252.hostmon: UDP, length 27
17:13:52.416431 IP **172.16.9.68.45839** > lax17s14-in-f14.1e100.net.https: Flags [F.], seq 1838160668, ack 751548505, win 373, options [nop,nop,TS val 31214649 ecr 2926508259], length 0
17:13:52.419421 IP **172.16.9.68.45840** > lax17s14-in-f14.1e100.net.https: Flags [F.], seq 3938547017, ack 4273274368, win 373, options [nop,nop,TS 

관련 정보