1 目标

  • 连接本机器: 192.168.2.203: 80 端口 -> 172.26.2.14:80
  • 在其他机器 连接 192.168.2.203: 80 获取网页返回

    2 步骤

2.1 开启机器转发功能

  1. $ sysctl -w net.ipv4.ip_forward=1

2.2 配置 PREROUTING 链 nat 表实现目标地址转换

  1. $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上