我正在尝试使用 IPTables 对流进行 SNAT 和 DNAT,但 SNAT 让我很头疼。规则似乎没有被评估,我不知道为什么。
规则如下:
Chain PREROUTING (policy ACCEPT 117 packets, 5372 bytes)
num pkts bytes target prot opt in out source destination
1 2 120 DNAT all -- * * 0.0.0.0/0 xx.xx.xx.xx to:99.99.99.1
Chain POSTROUTING (policy ACCEPT 6 packets, 396 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 SNAT all -- * * 192.198.0.0/24 0.0.0.0/0 to:192.168.4.40
此外,net.ipv4.ip_forward
设置为1
。
当我执行 tcpdump 来查看发生了什么时,我看到目标 IP 经过了 NAT,但源 IP 没有经过 NAT:
15:16:49.994739 IP 192.168.0.4.55149 > xx.xx.xx.xx.443: Flags [S], seq 1558061817, win 29200, options [mss 1460,sackOK,TS val 2666551254 ecr 0,nop,wscale 7], length 0
15:16:49.994797 IP 192.168.0.4.55149 > 99.99.99.1.443: Flags [S], seq 1558061817, win 29200, options [mss 1460,sackOK,TS val 2666551254 ecr 0,nop,wscale 7], length 0
我是否遗漏了什么?