我有一个远程服务器正在监听特定端口。
偶尔我会遇到这种情况:客户端突然无法通过该端口连接到服务器。这是一个随机问题,其他一些 PC 可以连接,但 100 台 PC 中可能就有 1 台无法连接。
客户端使用 Windows PC,而服务器使用 Linux。
我已完成以下操作来追踪错误。
在客户端上运行
netstat
以查看该端口是否正在使用。Netstat 没有发现任何使用该端口的进程。禁用
Windows Firewall
或任何其他防火墙。这里还是没运气。跑步
portqry
,显示端口为已过滤
正如我所说,这种情况只会在随机客户端上运行portqry
同时在另一个客户端上运行,端口显示为聆听因此看起来客户端出了问题。
所以我找到的唯一解决方案是完整的重新安装客户端的操作系统。
我如何确定从客户端到服务器的线路中端口被阻塞的具体位置?
编辑
我尝试过以下事情
- ping 正常
- tracert 显示大约 20 个跳跃并成功结束。
- nmap 显示端口已过滤但 tracert 确实成功了。
答案1
portqry
只显示与客户端软件无法连接相同的问题。
我猜你的客户端在使用 NAT?由于有些客户端可以连接,而有些则无法连接,因此这几乎排除了远程问题(因为它们可能使用相同的公共 IP)。但是,如果你使用的是出口 IP 池,当不同的 IP 地址不符合远程服务器访问限制时,这很可能是问题所在。
远程服务器/防火墙也可能限制来自单个 IP 地址的连接数量。
您需要检查您的访问防火墙/路由器是否存在任何问题。有问题的客户端可以 ping 远程服务器吗?可以正常访问其他服务器吗?会出现什么tracert
?防火墙是否记录了这些客户端的任何信息?
可能,客户端重新安装有效,因为它需要一段时间并允许问题转移到其他地方。
如果您可以在某一时刻重现该问题,我会尝试使用 Wireshark 找出是谁发送了端口重置(从而拒绝连接)。