如何检查Windows计算机上的端口是否被阻止?


105

在Windows平台上,我必须使用哪些本机选项检查本地计算机(例如)中的端口(例如3306 localhost)是否被阻止?


1
只是为了澄清,您是说被防火墙或网关阻止了,还是被其他东西使用了?
squillman

1
通过“ 审核我的PC防火墙”测试,您可以测试来自外部源的特定端口或一系列端口。
彼得·斯图尔

Answers:


111

由于您使用的是Windows计算机,因此可以完成以下操作,

  • 执行以下命令并查找“:3306”侦听器(您未提及UDP / TCP)。这将确认端口上正在运行某些设备。

    netstat -a -n

  • 此后,如果您期望该端口上有传入连接,并且感觉防火墙可能阻止了它们,则可以启动Windows防火墙日志记录并检查日志中是否存在断开的连接

    • 转到Windows防火墙的“高级”设置
    • 单击“本地连接”旁边的设置按钮
    • 选择“记录丢弃的数据包”
    • 查看日志文件的位置(如果不存在,请定义一个)
    • 点击确定
    • 现在,当尝试进行连接时(假设您知道何时完成),请在日志文件中查看端口3306断开的情况。
    • 如果看到这种情况,您将要为此端口添加一个例外。
  • 还有一个命令可以检查防火墙状态
    (针对Windows 7用户的更新- Nick如下所述-使用netsh advfirewall防火墙

    netsh防火墙显示状态

    • 这将列出阻止的端口以及具有应用程序关联的活动监听端口
  • 此命令将转储Windows防火墙配置详细信息

    netsh防火墙显示配置


如果在开始记录后您有一个活动的阻止状态(传入连接已被防火墙断开),则应该在日志中看到。

如果您正在运行正在3306上侦听的应用程序/服务,则防火墙配置应将其显示为“已启用”。如果未看到此消息,则您可能错过了添加防火墙例外以允许该应用程序/服务的操作。

最后,端口3306通常用于MySQL。因此,我假设您正在此Windows计算机上运行MySQL服务器。因此,您应该看到3306的侦听器接受传入的连接。如果没有看到,则需要使用您的应用程序(MySQL)来首先启动它。


4
+1可获得出众的细节
贤者

3
从Windows Vista开始,不建议使用“ netsh Firewall”命令。建议您改用“ netsh advfirewall防火墙”,并参考文章go.microsoft.com/fwlink/?linkid=121488
Nick DeVore

5
要在命令行解析输出,请添加|find "3306"到命令,例如C:\Windows\System32>netstat -an |find "3306"
Cees Timmerman

我找不到第二个建议的步骤2中指定的设置按钮...
Bassie


23

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正在响应。


我下载了PortQryUI,在阻止并启用tcp和udp中的445端口后进行了检查,它在tcp中显示相同的监听,而在udp中不监听。
利亚姆·尼桑


5

如果可以从本地计算机(使用外部IP地址)远程登录到端口,但不能从另一台计算机远程登录,则该端口之间将被阻塞。

请注意,本地计算机上的防火墙甚至可能阻止第一个操作。


请注意,在Win7和更高版本的系统上不再安装telnet。
亚历克西斯·威尔克

@AlexisWilke这是不正确的。远程登录可以安装
deepdive

4
要从命令行安装telnet,请执行以下操作:dism / online / Enable-Feature / FeatureName:TelnetClient
Jason Massey,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.