首页 > 解决方案 > 如何打开可公开访问的端口?

问题描述

我在我的电脑上运行一个服务器(Photon),它使用端口 9090。

我可以使用本地 IP 地址访问它,使用内部路由器网络的 IP 地址而不是公共 IP 地址。即使通过这个公共 IP 地址也可以完美地 ping。

要公开运行服务器,我不使用路由器而是直接连接。所有可能的防火墙都被禁用,没有防病毒,入站规则中的所有端口都打开(以防万一)。但还是telnet xxx.xxx.xxx.xx 9090给了我Could not open connection to the host, on port 9090: Connect failed

如果我进入netstat -aonbcmd 我会看到

TCP 0.0.0.0:9090 监听

据我了解,这意味着必须在端口 9090 上监听任何 IP 地址(0.0.0.0)

但正如在线服务所说,9090 端口仍然关闭。如果我尝试从客户端连接到服务器(因为它适用于内部网络)我得到Error: 1004 Master peer error timeout

我还能做些什么来打开这个端口并最终通过公共网络访问它?

我使用 Windows。

标签: serverporthostingfirewallwindows-firewall

解决方案


问题的描述似乎不一致。最有可能的是,“所有可能的防火墙都已禁用 [...并且] 入站规则中的所有端口都已打开”的说法是不正确或具有误导性的一种或两种。

如果

  • 测试客户端可以成功 ping 目标机器,并且
  • netstat表明客户端正在目标机器上监听 0.0.0.0:9090 / TCP,但是
  • 测试客户端无法连接到同一地址的端口 9090,并且
  • 测试客户端可以通过它的其他地址成功连接到目标机器上的端口 9090,之前和之后

那么到目前为止,最有可能的情况是失败的连接尝试被防火墙阻止。即使服务器本身上根本没有运行防火墙,也可能在客户端和服务器之间的网络路径上的路由器上运行一个防火墙。请注意,路由器防火墙通常区分内部流量和外部流量,对后者应用更严格的控制。有些对两者有完全不同的规则集。


推荐阅读