如何检查Windows机器上的端口是否被阻塞?

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

    既然你是在Windows机器上,这些东西都可以做到,

    • 执行以下命令并查找“:3306”侦听器(您没有提到UDP / TCP)。 这将确认端口上正在运行。

      netstat -a -n

    • 在此之后,如果您希望在此端口上传入连接,并且觉得防火墙可能会阻止它们,则可以启动Windows防火墙日志logging并检查日志中是否存在连接断开

      • 转到Windows防火墙,高级设置
      • 点击“本地连接”旁边的设置button
      • select“logging丢弃的数据包”
      • 查看日志文件的位置(如果不存在则定义一个)
      • 点击OK
      • 现在,当进行连接尝试时(假设您知道何时完成),请查看日志文件以查看端口3306上的放置情况。
      • 如果看到这个,你会想为这个端口添加一个exception。
    • 还有一个命令来检查防火墙的状态
      (针对Windows 7用户的更新 – 如下面的Nick所述 – 使用netsh advfirewall防火墙

      netsh防火墙显示状态

      • 这将列出被阻塞的端口以及与应用程序关联的活动侦听端口
    • 该命令将转储Windows防火墙configuration细节

      netsh防火墙显示configuration


    如果启动日志logging后有一个活动块(传入的连接正在被防火墙丢弃),则应该在日志中看到该块。

    如果您运行的应用程序/服务正在侦听3306,则防火墙configuration应显示为已启用。 如果没有看到,你可能会错过在防火墙上添加一个例外来允许这个应用程序/服务。

    最后,端口3306通常用于MySQL。 所以,我认为你正在这台Windows机器上运行MySQL服务器。 因此,您应该看到3306接受传入连接的监听器。 如果你没有看到,你需要使用你的应用程序(MySQL)来启动它。

    NETSTAT会告诉你端口是否在监听,但是不会告诉你端口是否对外开放 。 我的意思是, NETSTAT可能会显示端口3306上的0.0.0.0是LISTENING,但是防火墙可能仍然阻止该端口阻止外部连接; 所以仅仅依靠NETSTAT是不够的。

    检查端口是否被阻塞的最好方法是从客户端机器进行端口扫描。

    有很多方法来做一个端口扫描,但是因为你提到在Windows上,我会build议Microsoft命令行实用程序PortQry和graphics版本PortQryUI

    使用PortScan实用程序,您将获得3个结果中的一个。

    • Listening意味着服务器正在侦听指定的端口
    • Filtered意味着它收到一个TCP确认数据包,并设置了重置标志,这可能表示防火墙或软件问题
    • Not Listening是指根本没有收到答复

    telnet是默认情况下通常安装在操作系统上的另一个命令行选项。 这个命令行实用程序可以用来快速查看端口是否响应networking请求。

    要使用telnet ,只需从命令提示符发出以下命令:

     telnet localhost 3306 

    上面的命令应该能让你快速的知道localhost上的端口3306是否响应。

    如果您可以从本地机器(使用外部IP地址)远程login到端口,而不是从另一台机器login – 则会在两者之间被阻塞。

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