我有一个多 WAN 网络。默认网关是 router0。我在这里使用 router1 来连接受限网络。
WAN: 172.16.5.0/24
LAN: 192.168.1.0/24
router0: 192.168.1.1, [Internet], default gw [Internet]
router1: 192.168.1.3(eth2), 172.16.5.6(eth0), default gw 172.16.5.254
我想将 WAN SSH 服务器 10.1.2.3:22 转发到 192.168.1.3:999 供 LAN 用户使用。
当然,WAN 提供从 172.16.5.6 经由 172.16.5.254 到 10.1.2.3 的路由。
我iptables
在 router1 上设置了这些,但是不起作用:
iptables -t nat -A PREROUTING -p tcp --dport 999 -i eth2 -j DNAT --to-destination 10.1.2.3:22:22
iptables -t nat -A POSTROUTING -p tcp -s 10.1.2.3:22 -j SNAT --to-source 192.168.1.3:999
我怎样才能实现这个目标?
答案1
我不完全明白你的要求,但我认为你只是在寻找这个:
iptables -t nat -A PREROUTING -d 192.168.1.3 -p tcp --dport 999 -i eth2 -j DNAT --to-destination 10.1.2.3:22:22
当流量通过盒子并通过不同的接口(eth0)离开盒子时,您不需要任何其他规则,返回的数据包在通过盒子时将被正确处理和修改。
请注意,服务器必须有一条路由才能返回到原始客户端。如果不是这种情况(服务器没有到客户端的路由),那么你才需要 SNAT,并且你可能需要传出接口地址作为源:
iptables -t nat -A POSTROUTING -d 10.1.2.3 -p tcp --dport 22 -j SNAT --to-source 172.16.5.6