Boris Pavlović Asked: 2009-06-17 06:21:51 +0800 CST2009-06-17 06:21:51 +0800 CST 2009-06-17 06:21:51 +0800 CST 如何检查 Windows 机器上的端口是否被阻塞? 772 在 Windows 平台上,我必须检查本地计算机上的端口(例如 3306)(如localhost)是否被阻止? windows firewall networking port 4 个回答 Voted Best Answer nik 2009-06-17T06:28:46+08:002009-06-17T06:28:46+08:00 由于您在 Windows 机器上,因此可以执行以下操作: 执行以下命令并查找“:3306”侦听器(您没有提到 UDP/TCP)。这将确认端口上正在运行某些东西。 网络统计 -a -n 在此之后,如果您期望此端口上的传入连接并且觉得防火墙可能阻止它们,您可以使用启动 windows 防火墙日志记录并检查日志以查找丢失的连接 转到 Windows 防火墙,高级设置 单击“本地连接”旁边的设置按钮 选择“记录丢弃的数据包” 查看日志文件位置(如果不存在,定义一个) 点击确定 现在,当进行连接尝试时(假设您知道何时完成),查看日志文件以了解端口 3306 上的丢弃情况。 如果看到这种情况,您将需要为此端口添加一个例外。 还有一个检查防火墙状态的命令 (为 Windows 7 用户更新 -Nick如下所述 - 使用netsh advfirewall firewall) netsh 防火墙显示状态 这将列出被阻止的端口以及具有应用程序关联的活动侦听端口 此命令将转储 Windows 防火墙配置详细信息 netsh 防火墙显示配置 如果您在开始记录后有一个活动块(传入连接被防火墙丢弃),您应该在日志中看到它。 如果您正在运行正在侦听 3306 的应用程序/服务,则防火墙配置应将其显示为已启用。如果没有看到,您可能错过了添加防火墙例外以允许此应用程序/服务。 最后,端口 3306 通常用于 MySQL。所以,我假设你在这台 Windows 机器上运行 MySQL 服务器。因此,您应该看到 3306 的侦听器接受传入连接。如果您没有看到,您需要先使用您的应用程序 (MySQL) 才能开始。 Marcel Janus 2018-01-18T06:56:05+08:002018-01-18T06:56:05+08:00 从 PowerShell 4.0 开始,您可以使用该命令Test-NetConnection 如果您想像示例中那样测试端口 3306,则命令是 Test-NetConnection -ComputerName localhost -Port 3306 TechNet 测试网络连接文档 Tim Penner 2016-04-04T16:47:22+08:002016-04-04T16:47:22+08:00 NETSTAT会告诉您端口是否正在侦听,但不会告诉您端口是否对外界开放。我的意思是,这NETSTAT可能表明 0.0.0.0 在端口 3306 上正在侦听,但防火墙可能仍会阻止该端口,从而阻止外部连接;所以单靠是不够的NETSTAT。 检查端口是否被阻止的最佳方法是从客户端计算机进行端口扫描。 有很多方法可以进行端口扫描,但既然你提到在 Windows 上,那么我会建议 Microsoft 命令行实用程序PortQry和图形版本PortQryUI 要测试所有打开的端口: portqry.exe -n #.#.#.# 测试特定端口: portqry.exe -n #.#.#.# -e # 例如在 192.168.1.1 测试路由器的 Web 界面: portqry.exe -n 192.168.1.1 -e 80 返回: TCP port 80 (http service): LISTENING 在没有运行 HTTPD 的本地机器上进行测试返回: TCP port 80 (http service): NOT LISTENING 使用 PortScan 实用程序,您将获得 3 个结果之一。 Listening表示服务器正在监听指定端口 Filtered意味着它收到了一个 TCP 确认数据包,其中设置了重置标志,这可能表示防火墙或软件问题 Not Listening意味着它根本没有收到回应 telnet是另一个通常默认安装在操作系统上的命令行选项。此命令行实用程序可用于快速查看端口是否响应网络请求。 要使用telnet,您只需从命令提示符发出以下命令: telnet localhost 3306 上面的命令应该给你一个快速的指示,如果端口3306在localhost响应。 Brent 2009-06-17T06:27:24+08:002009-06-17T06:27:24+08:00 如果您可以从本地计算机(使用外部 IP 地址)远程登录到该端口,但不能从另一台计算机远程登录 - 那么它在某处被阻止。 请注意,本地计算机上的防火墙甚至可以阻止第一个操作。
由于您在 Windows 机器上,因此可以执行以下操作:
执行以下命令并查找“:3306”侦听器(您没有提到 UDP/TCP)。这将确认端口上正在运行某些东西。
网络统计 -a -n
在此之后,如果您期望此端口上的传入连接并且觉得防火墙可能阻止它们,您可以使用启动 windows 防火墙日志记录并检查日志以查找丢失的连接
还有一个检查防火墙状态的命令
(为 Windows 7 用户更新 -
Nick
如下所述 - 使用netsh advfirewall firewall)netsh 防火墙显示状态
此命令将转储 Windows 防火墙配置详细信息
netsh 防火墙显示配置
如果您在开始记录后有一个活动块(传入连接被防火墙丢弃),您应该在日志中看到它。
如果您正在运行正在侦听 3306 的应用程序/服务,则防火墙配置应将其显示为已启用。如果没有看到,您可能错过了添加防火墙例外以允许此应用程序/服务。
最后,端口 3306 通常用于 MySQL。所以,我假设你在这台 Windows 机器上运行 MySQL 服务器。因此,您应该看到 3306 的侦听器接受传入连接。如果您没有看到,您需要先使用您的应用程序 (MySQL) 才能开始。
从 PowerShell 4.0 开始,您可以使用该命令
Test-NetConnection
如果您想像示例中那样测试端口 3306,则命令是
TechNet 测试网络连接文档
NETSTAT
会告诉您端口是否正在侦听,但不会告诉您端口是否对外界开放。我的意思是,这NETSTAT
可能表明 0.0.0.0 在端口 3306 上正在侦听,但防火墙可能仍会阻止该端口,从而阻止外部连接;所以单靠是不够的NETSTAT
。检查端口是否被阻止的最佳方法是从客户端计算机进行端口扫描。
有很多方法可以进行端口扫描,但既然你提到在 Windows 上,那么我会建议 Microsoft 命令行实用程序
PortQry
和图形版本PortQryUI要测试所有打开的端口:
测试特定端口:
例如在 192.168.1.1 测试路由器的 Web 界面:
返回:
在没有运行 HTTPD 的本地机器上进行测试返回:
使用 PortScan 实用程序,您将获得 3 个结果之一。
Listening
表示服务器正在监听指定端口Filtered
意味着它收到了一个 TCP 确认数据包,其中设置了重置标志,这可能表示防火墙或软件问题Not Listening
意味着它根本没有收到回应telnet
是另一个通常默认安装在操作系统上的命令行选项。此命令行实用程序可用于快速查看端口是否响应网络请求。要使用
telnet
,您只需从命令提示符发出以下命令:上面的命令应该给你一个快速的指示,如果端口
3306
在localhost
响应。如果您可以从本地计算机(使用外部 IP 地址)远程登录到该端口,但不能从另一台计算机远程登录 - 那么它在某处被阻止。
请注意,本地计算机上的防火墙甚至可以阻止第一个操作。