我之前已经成功设置了端口转发,但这次却不起作用。
我使用的是 WRT54G v6 路由器,带有最新固件。在端口转发部分,我已将端口范围设置为 7000-7100,以转发到 LAN ip 192.168.1.106,即我的计算机。我还设置了计算机的网络连接,以始终使用上面提到的 ip,就像在静态 ip 配置中一样。
但是,当我测试端口 7050 是否打开时,我总是从以下网站获得它已关闭的信息:http://www.yougetsignal.com/tools/open-ports/。
什么原因导致了这个问题?
答案1
仅当您转发端口的 IP 地址上有一个可以接受端口上的连接的“监听器”时,测试转发端口才会显示成功。
因此,首先要做的是启动要连接的应用程序,并确保它正在监听端口。您可以使用
netstat -an
你应该看到类似
Proto Local Address Foreign Address State
TCP 0.0.0.0:7050 0.0.0.0:0 LISTENING
如果仅启动客户端不足以使监听器运行,那么您可以使用 netcat:
nc -l 7050
如果可以的话,请确保此操作可以在您的网络内进行。一个简单的方法是从另一台安装了 telnet 的机器上使用以下命令:
telnet 192.168.1.106 7050
如果成功,并且您正在测试的是 Windows 设备,那么您只会看到一个闪烁的光标。如果失败,那么您将立即返回命令行,或者暂停。 nmap是您可以用来测试的替代工具。
一旦您确定 PC 正在接受端口上的连接,请尝试外部测试服务。
如果可能,请从外部 Linux 机器进行测试。确保您可以 ping 通路由器的公共 IP(您可能需要在路由器的配置中启用此功能),然后从 Linux 机器执行以下操作:
traceroute -I <public ip>
traceroute -p 7050 -T <your public IP>
第一个 traceroute 将使用 ICMP 跟踪到您的路由器,如果您在路由器上启用了 ping,它应该可以工作。第二个 traceroute 可以工作,或者在路由器之前的某个点停止。如果它是路由器之前的直接跳转(与 ICMP traceroute 相比),则您的路由器转发不正确。如果更早,则意味着您的 ISP 正在阻止传入连接。