我想了解为什么尝试使用公共 IP 地址(由路由器/NAT 提供)连接到同一网络中的服务器,但端口不起作用。(我假设路由器/NAT 中有两个接口,一个连接到互联网,另一个连接到专用网络。我还假设我使用的是 TCP。)
您可以在此处查看图表:
我有一个 NAT 表,它允许连接到我的内部 192.168.1.4:80 主机,该主机正在运行一个 http 服务器。
IP internal | Port internal | IP external Port external | Port nat
192.168.1.4 80 * * 80
如果我使用 ip 8.8.8.9 和端口 55231 从主机 B 连接,将添加以下条目:
192.168.1.4 80 8.8.8.9 55231 80
一切都会正常工作。当尝试从内部主机连接到 (80.53.56.67,80) 时,会出现“环回问题”,例如带有端口 60000 的主机 A 192.168.1.4。该主机发送的数据报如下所示:
IPsrc:192.168.1.4, IPdst:IPnat, Proto:TCP|| PortSrc: 50243, PortDst: 80
因此,将在 NAT 表中添加一个新条目:
192.168.1.4 50243 IPnat 80 60000
服务器的数据报回复如下所示:
IPsrc:192.168.1.4, IPdst:IPnat, Proto:TCP||PortSrc: 80, PortDst: 60000
我在这里看不到问题;在我看来,它应该可以正常工作。我不明白为什么这行不通。是 NAT 路由完成的顺序吗?