先看现象。外网访问站点一直转圈,ping 服务器地址完全正常,用端口检测工具一会儿提示拒绝,一会儿提示超时,两个结果指向的方向完全不同。
排查方向其实有限,先把可能性排一排。提示拒绝说明包到了主机,只是没有进程监听或者被规则显式拒绝。另一种情况是提示超时多半是包在中间被丢弃,安全组和本机防火墙都可能是原因。
少数情况下是只测 ping 无法反映端口状态,它走的是另一套协议。
动手时先在本机确认端口有没有监听
ss -lntp | grep 443
从外部带超时探测端口
nc -zv -w 3 服务器IP 443
然后在本机抓包看请求是否到达
tcpdump -i any port 443 -nn -c 20
末了核对两侧防火墙规则
iptables -S | grep 443
恢复的判定其实很直接。外部探测返回成功,抓包能看到完整的握手过程,浏览器访问不再超时。
这里还有个坑。拒绝和超时是两条完全不同的排查路径,先分清再动手;只测 ping 通不通就下结论是最常见的误判。报错文案容易误导,真正的原因往往在相邻那一层的日志里。