我用 C 编写了一个简单的服务器应用程序。我设法使用 telnet 建立了连接。问题是,如果我在 telnet 中指定公共 IP 而不是本地 IP,则无法访问服务器。我的意思是这有效
telnet 192.168.1.2 20600
虽然这没有
telnet 151.53.150.45 20600
我在网上看到这是一个 NAT 配置问题,但端口 20600 似乎是开放的(根据http://www.canyouseeme.org/和http://www.yougetsignal.com/tools/open-ports/)此外,我禁用了防火墙,所以这不可能是导致失败的原因......
有什么帮助吗?
答案1
典型的家庭 NAT 旨在确保出站连接可以与外部端点通信。默认情况下,家庭 NAT 不会将外部接口(例如来自您的有线调制解调器提供商)上的端口转发到您的开发箱。
您需要配置 NAT,将端口 20600 上的入站连接转发到 192.168.1.2。这通常称为“端口转发”。查看http://portforward.com/了解大多数硬件选项的详细指南。
关于配置细节的问题更适合http://superuser.com。
答案2
您的 192.168.1.2 机器是否在路由器后面?或者它就是路由器?
你通常需要设置端口转发规则,以允许将路由器上端口 20600 的公共流量重定向到 192.168.1.2
答案3
我会戴上我的通灵帽,猜测这里发生了什么。
您有一个客户端,例如192.168.1.3
,您可以从它顺利连接到192.168.1.2
。但是当您尝试从它连接到 NAT 路由器的外部 IP 时,您什么也得不到。这是因为您位于 NAT 路由器的内部,它既便宜又没有为此配置。为了验证您的服务器是否可以从网络外部访问,您必须尝试从网络外部访问它。
去朋友家尝试连接。如果不行,请确保您在 NAT 设备上正确设置了端口转发。如果仍然不行,请在此处提出新问题并发布一些代码。