在Windows平台上,我必须使用哪些本机选项检查本地计算机(例如)中的端口(例如3306 localhost
)是否被阻止?
在Windows平台上,我必须使用哪些本机选项检查本地计算机(例如)中的端口(例如3306 localhost
)是否被阻止?
Answers:
由于您使用的是Windows计算机,因此可以完成以下操作,
执行以下命令并查找“:3306”侦听器(您未提及UDP / TCP)。这将确认端口上正在运行某些设备。
netstat -a -n
此后,如果您期望该端口上有传入连接,并且感觉防火墙可能阻止了它们,则可以启动Windows防火墙日志记录并检查日志中是否存在断开的连接
还有一个命令可以检查防火墙状态
(针对Windows 7用户的更新- Nick
如下所述-使用netsh advfirewall防火墙)
netsh防火墙显示状态
此命令将转储Windows防火墙配置详细信息
netsh防火墙显示配置
如果在开始记录后您有一个活动的阻止状态(传入连接已被防火墙断开),则应该在日志中看到。
如果您正在运行正在3306上侦听的应用程序/服务,则防火墙配置应将其显示为“已启用”。如果未看到此消息,则您可能错过了添加防火墙例外以允许该应用程序/服务的操作。
最后,端口3306通常用于MySQL。因此,我假设您正在此Windows计算机上运行MySQL服务器。因此,您应该看到3306的侦听器接受传入的连接。如果没有看到,则需要使用您的应用程序(MySQL)来首先启动它。
|find "3306"
到命令,例如C:\Windows\System32>netstat -an |find "3306"
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
正在响应。
从PowerShell 4.0开始,您可以使用以下命令 Test-NetConnection
如果要像示例中一样测试端口3306,则命令为
Test-NetConnection -ComputerName localhost -Port 3306
如果可以从本地计算机(使用外部IP地址)远程登录到端口,但不能从另一台计算机远程登录,则该端口之间将被阻塞。
请注意,本地计算机上的防火墙甚至可能阻止第一个操作。