![如何将 WAN SSH 服务器转发到 LAN 用户的路由器?](https://linux22.com/image/712401/%E5%A6%82%E4%BD%95%E5%B0%86%20WAN%20SSH%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BD%AC%E5%8F%91%E5%88%B0%20LAN%20%E7%94%A8%E6%88%B7%E7%9A%84%E8%B7%AF%E7%94%B1%E5%99%A8%EF%BC%9F.png)
我有一个多 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