我们有一个带有预路由的 nat,如下所示:iptables -t nat -I PREROUTING -p tcp -d mysite.com --dport 37777 -j DNAT --to-destination 192.168.1.2:37777
如果我尝试从其他网络连接,服务运行正常。不幸的是,当我尝试从网络内部连接时,连接超时。我是不是忘了什么?提前致谢。
答案1
您正在寻找的选项是NAT 发夹弯。
当网络内的客户端尝试访问路由器的公共 IP 地址时,连接的目的地将更改为192.168.1.2:37777。服务器收到握手的开始,并向源地址(仍然是客户端)回复握手响应。由于客户端只记得与路由器的 IP 地址对话,而不记得与服务器的 IP 地址对话,因此客户端认为此连接无效。
使用发夹式连接时,如果客户端位于 LAN 内,则当目标更改时,源也会更改为路由器的 IP 地址。这意味着服务器将其传回路由器,然后路由器将数据包中继到客户端。从客户端的角度来看,这看起来像是在与路由器对话。
编辑:至于 iptables,你希望添加一些类似的东西
iptables -t nat -I POSTROUTING -p tcp -d 192.168.1.2 -s 192.168.1.0/24 --dport 37777 -j SNAT --to-source 192.168.1.1