在服务器 1.1.1.1 上:
iptables -t nat -A PREROUTING -p tcp --dport 20000 -j DNAT --to-destination: 2.2.2.2:20000
iptables -t nat -A PREROUTING -p tcp --dport 20000 -j LOG --log-prefix pre20k
iptables -t nat -A POSTROUTING -p tcp --dport 20000 -j LOG --log-prefix post20k
在服务器 2.2.2.2 上:
iptables -t nat -A PREROUTING -p tcp --dport 20000 -j LOG --log-prefix pre20k
在客户端 3.3.3.3 上:
nc 1.1.1.1 20000
我可以在 1.1.1.1 的日志中看到,后路由包确实有 SIP=3.3.3.3 和 DIP=2.2.2.2(而不是原始预路由包中的 1.1.1.1)。
但是从 1.1.1.1 发出的包都没有到达 2.2.2.2。我在 iptables 日志和 tcpdump 中都看不到它们。
为什么?
答案1
我测试规则的机器位于 digitalocean 云上。我在谷歌上搜索后发现
“由于网关盒试图发送与其自身源地址不同的数据包,因此将不允许该数据包通过。”