1 目标
2.1 开启机器转发功能
$ sysctl -w net.ipv4.ip_forward=1
2.2 配置 PREROUTING 链 nat 表实现目标地址转换
$iptables -t nat -A PREROUTING -d 192.168.2.203 -p tcp --dport 80 -j DNAT --to-destination 172.26.2.14:80
然后从客户端(172.26.2.61)访问服务器 A (192.168.2.203 )的 80 端口,但是没有回应,原因是超时。
原因:
1. 同步数据已经转发到 172.26.2.14:80
2. 172.26.2.14:80 —> 返回数据包, 但是source地址是 172.26.2.14, 和 tcp 连接目标地址192.168.203 不一致,所有内内核丢弃
分析清楚原因后,对于该问题,解决的办法有多种,最为便捷的是在服务器 A 对 80 端口的流量上再做 SNAT。
$ iptables -t nat -A POSTROUTING -d 172.26.2.14 -p tcp --dport 80 -j SNAT --to-source 192.168.2.203
这样做以后, 172.26.2.14:80 数据包返回192.168.2.203, 由192.168.2.203 做地址转化以后返回172.26.2.61上