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

评论

只是为了澄清一下,您是说被阻止了(如被防火墙或网关阻止),还是意味着已经被其他东西使用?
“审核我的PC防火墙”测试使您可以从外部源测试特定端口或一系列端口。

#1 楼

由于您使用的是Windows计算机,因此可以完成以下操作:执行以下命令,并查找“:3306”侦听器(您未提及UDP / TCP)。这将确认端口上正在运行某些东西。
netstat -a -n-


此后,如果您期望该端口上有传入连接并且感觉防火墙可能要阻止它们,您可以使用Windows防火墙启动日志记录并检查断开连接的日志

转到Windows防火墙的高级设置
单击“本地连接”旁边的“设置”按钮
选择“记录丢弃的数据包”
查看日志文件的位置(如果不存在,请定义一个)
单击确定
现在,当尝试进行连接时(假设您知道何时(此操作已完成),请查看日志文件中端口3306上的下降。 br />还有一个命令可以检查防火墙状态
(已针对Windows 7用户更新-如下面的Nick所提及-使用netsh advfirewall防火墙)
netsh防火墙显示状态

这将列出被阻止的端口以及具有应用程序关联的侦听端口



此命令将转储Windows防火墙配置详细信息
netsh防火墙show config



如果在开始记录后有活动的阻止状态(防火墙断开了传入连接的连接),则应该在日志中看到它。 ,防火墙配置应显示为已启用。如果未看到此消息,则您可能错过了添加防火墙例外以允许该应用程序/服务的操作。
最后,端口3306通常用于MySQL。因此,我假设您正在此Windows计算机上运行MySQL服务器。因此,您应该看到3306的侦听器接受传入的连接。如果没有看到,则需要使用您的应用程序(MySQL)才能首先开始。

评论


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

–尼克·迪沃(Nick DeVore)
2011年5月18日在15:31



要在命令行上解析输出,请在命令中添加| find“ 3306”,例如C:\ Windows \ System32> netstat -an |找到“ 3306”

– Cees Timmerman
13年7月5日在8:20



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

–巴西
17年8月22日在10:58

@Bassie,请尝试docs.microsoft.com/en-us/windows/access-protection/…

– nik
17年8月24日在6:23

@nik谢谢nik,我设法找到了该复选框,但是现在尝试远程访问我的服务(总是失败)后,看到日志为空。我想这只是表明问题不在于丢包,而必须在其他地方

–巴西
17年8月24日在8:49



#2 楼

NETSTAT会告诉您该端口是否正在侦听,但不会告诉您该端口是否对外界开放。我的意思是,NETSTAT可能表明0.0.0.0在端口3306上处于侦听状态,但是防火墙可能仍在阻止该端口,从而阻止了外部连接。因此仅依靠NETSTAT是不够的。

检查端口是否被阻止的最佳方法是从客户端计算机进行端口扫描。

有很多方法可以进行端口扫描,但是由于您提到过Windows,因此我建议使用Microsoft命令行实用程序PortQry和图形版本PortQryUI

来测试所有打开端口:

portqry.exe -n #.#.#.#   


测试特定端口:

portqry.exe -n #.#.#.# -e #


例如测试Web界面192.168.1.1处的路由器的地址:

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是通常的另一个命令行选项y默认情况下安装在操作系统上。此命令行实用程序可用于快速查看端口是否响应网络请求。

要使用telnet,您只需在命令提示符下发出以下命令: 3306上的端口localhost响应。

评论


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

–利亚姆·尼桑(Liam neesan)
17年11月6日在20:08

#3 楼

从PowerShell 4.0开始,您可以使用命令Test-NetConnection

如果要像示例中那样测试端口3306,则命令是
-NetConnection文档

评论


为此+1。一个很好的替代方案,不需要在大多数现代Windows机器上安装任何东西。

– DCaugs
18年7月13日在17:13

#4 楼

如果您可以从本地计算机(使用外部IP地址)远程登录到端口,但不能从另一台计算机远程登录,则该端口被阻止在两者之间。甚至连第一个动作都不能阻止。

评论


请注意,在Win7和更高版本的系统上不再安装telnet。

– Alexis Wilke
15年4月18日在19:12

@AlexisWilke这是不正确的。可以安装Telnet

–深入
15年6月18日在1:50

要从命令行安装telnet,请执行以下操作:dism / online / Enable-Feature / FeatureName:TelnetClient

–詹森·梅西(Jason Massey)
16年1月21日在20:08