我试图在服务器上的替代端口下安装站点,但端口可能被防火墙关闭。是否有一种方法可以ping出或ping入一个特定的端口,以查看它是否打开?
你想要做这件事的工具吗?有一个网站在http://www.canyouseeme.org/。否则,你需要其他服务器回叫你,看看端口是否打开…
假设您正在尝试使用的是TCP(而不是UDP)端口:
在服务器本身,使用netstat -an来检查哪些端口正在监听。
netstat -an
在外部,只需使用telnet host port(或Unix系统上的telnet host:port)来查看连接是否被拒绝、接受或超时。
telnet host port
telnet host:port
在后一个测试中,一般来说:
在Windows 7或Windows Vista上,默认选项“telnet”不能被识别为内部或外部命令、可操作程序或批处理文件。要解决这个问题,只需启用它:单击*Start** →控制面板 →项目 →打开Windows功能 on或off。在列表中,向下滚动并选择Telnet客户机并单击好吧。
如果telnet不可用,下载腻子。它是一个远比Telnet、SSH等更优秀的客户端,在许多情况下都很有用,而不仅仅是在这种情况下,特别是在管理服务器时。
telnet
你可以在Windows上使用
netstat -na | findstr "your_port"
缩小结果范围。你也可以过滤LISTENING, ESTABLISHED, TCP等等。注意它是区分大小写的。
LISTENING
ESTABLISHED
TCP
在Windows服务器上可以使用
netstat -an | where{$_.Contains("Yourport")}
以下是对我有效的方法:
它将确认端口是否打开。
我喜欢这样:
netstat -an | find "8080"
从远程登录
telnet 192.168.100.132 8080
确保那台机器的防火墙已经关闭。
在Windows机器上,你可以使用微软的PortQry来检查应用程序是否已经在监听特定的端口,使用以下命令:
portqry -n 11.22.33.44 -p tcp -e 80
如果你想查看Windows服务器上所有被使用和监听的端口,使用这个:
netstat -an |find /i "listening"
查看所有开放、监听、已建立的端口:
netstat -a
Sysinternals中的psp也很好。
另一个选项是tcp。
例如:
tcping host port
如果你从外部检查,而不是从服务器本身检查,并且你不想安装telnet(因为它没有随最新版本的Windows提供)或任何其他软件,那么你有原生的PowerShell:
Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed
(不幸的是,这只适用于PowerShell 4.0或更新版本。要检查您的PowerShell版本,键入$PSVersionTable。)
$PSVersionTable
PS:注意,这些天在twitter上有一些声明,暗示这个答案可以通过提到PowerShell Core中的“Test-Connection”或快捷键“tnc”来改进。请参阅https://twitter.com/david_obrien/status/1214082339203993600并帮助我编辑这个答案以改进它!
(如果你有PSVersion <你真不走运。查看这个表格:
尽管你可以通过安装Windows管理框架4.0来升级你的PowerShell版本,但它并没有为我做到这一点,Test-NetConnection cmdlet仍然不可用)。
我发现的另一个实用程序是PortQry命令行端口扫描器2.0版本,它也很好,也很小。
你可以ping一个服务器和一个端口,它会告诉你端口的状态。有一个命令行实用程序和它的UI。