如何找到端口被阻止的位置

如何找到端口被阻止的位置

我有一个远程服务器正在监听特定端口。

偶尔我会遇到这种情况:客户端突然无法通过该端口连接到服务器。这是一个随机问题,其他一些 PC 可以连接,但 100 台 PC 中可能就有 1 台无法连接。

客户端使用 Windows PC,而服务器使用 Linux。

我已完成以下操作来追踪错误。

  1. 在客户端上运行netstat以查看该端口是否正在使用。Netstat 没有发现任何使用该端口的进程。

  2. 禁用Windows Firewall或任何其他防火墙。这里还是没运气。

  3. 跑步portqry,显示端口为已过滤

正如我所说,这种情况只会在随机客户端上运行portqry同时在另一个客户端上运行,端口显示为聆听因此看起来客户端出了问题。

所以我找到的唯一解决方案是完整的重新安装客户端的操作系统。

我如何确定从客户端到服务器的线路中端口被阻塞的具体位置?

编辑

我尝试过以下事情

  • ping 正常
  • tracert 显示大约 20 个跳跃并成功结束。
  • nmap 显示端口已过滤但 tracert 确实成功了。

答案1

portqry只显示与客户端软件无法连接相同的问题。

我猜你的客户端在使用 NAT?由于有些客户端可以连接,而有些则无法连接,因此这几乎排除了远程问题(因为它们可能使用相同的公共 IP)。但是,如果你使用的是出口 IP 池,当不同的 IP 地址不符合远程服务器访问限制时,这很可能是问题所在。

远程服务器/防火墙也可能限制来自单个 IP 地址的连接数量。

您需要检查您的访问防火墙/路由器是否存在任何问题。有问题的客户端可以 ping 远程服务器吗?可以正常访问其他服务器吗?会出现什么tracert?防火墙是否记录了这些客户端的任何信息?

可能,客户端重新安装有效,因为它需要一段时间并允许问题转移到其他地方。

如果您可以在某一时刻重现该问题,我会尝试使用 Wireshark 找出是谁发送了端口重置(从而拒绝连接)。

相关内容