我想转发端口 3002 并允许其他人通过互联网连接到它。我设置了一个节点服务器,当http://localhost:3002/
我在本地计算机上输入时,我得到了“你好世界!”信息。
我网络上托管服务器的计算机正在192.168.0.182
运行 Linux。我在 TP-Link A6 Archer 路由器上配置了“虚拟服务器”功能,将内部和外部端口设置为 3002,并将 IP 设置为我的计算机的本地 IP。
保存更改并转到https://www.yougetsignal.com/tools/open-ports/,我被告知端口仍然关闭。虽然路由器设置说阻止 ping 数据包已禁用,但我也无法 ping 自己的 IP。
http://192.168.0.182:3002
在我的本地网络上确实能从我托管的服务器得到回复。
我听说 ISP 可能会这样做,但这到底是如何实现的呢?
路由器信息页面:
答案1
您的路由器(TP-Link Archer A6)没有公共 IP 地址,因此无法从互联网直接从访问,并且其上的虚拟服务器/端口转发规则无助于从公共互联网访问此路由器。
路由器的 IP 地址10.0.203.167
是私有 IP 地址并且无法通过互联网访问。
为了能够(并知道去哪里)启动与本地设备的连接,它需要一条从互联网到本地设备的开放路径。 在您的情况下,虽然您为它提供了一条从路由器到服务器的路径(通过在路由器的虚拟服务器中设置)10.0.203.167
,192.168.0.182
但仍然没有办法从您的公共 IP(即像 myip.com 这样的网站提供您,也是互联网上唯一可以访问的IP)到10.0.203.167
。
如果 TP-Link 路由器连接到另一个您有权登录的路由器(或调制解调器路由器组合),您可以检查该路由器是否显示公共 IP 地址作为其 WAN 地址,如果是,您可以在该路由器上进行端口转发(或其他设置,如桥接模式或 DMZ)。如果您没有这样的设备,则意味着您位于 ISP 的 CGNAT 后面,无法真正直接连接到您的服务器(有关更多详细信息/想法,请参阅此答案https://superuser.com/a/1258102/368970)