一、场景:半夜告警 ping 全丢
凌晨两点,监控群弹消息,某台生产服务器 ping 超时。你迷迷糊糊爬起来,打开手机准备远程排查,结果发现:
ping 目标 IP,全部超时。
但业务监控显示服务还在跑,用户也没投诉。你登录控制台一看,安全组里确实有一条 drop icmp 的规则。
这不是故障,这是你自己挖的坑。
二、原理:ICMP 和 TCP 是两套语义
Ping 走 ICMP Echo,TCPing 走标准三次握手。本机发 SYN,服务器回 SYN+ACK,本机再发 ACK,三次握手完成,端口连通性确认。
只要目标端口在监听,哪怕 ICMP 全丢,443 一样能握手成功。所以判断端口是否可达,TCPing 比 Ping 更贴近真实用户,因为浏览器、APP、爬虫全都是 TCP。
三、实操:用 TCPing 验证服务存活
在拨测平台进入 TCPing 功能,填目标 IP 或域名,端口填 443,顺便把 80 和 22 也填上。节点全选,电信、联通、移动、教育网、海外都跑一遍。
看三个值:端口状态是 open 还是 closed 还是 filtered,连接耗时多少毫秒,按运营商分组的结果。
四、判读矩阵
Ping 全丢加 TCPing 443 全 open,这是典型的禁 ICMP 业务正常,不用救火。
443 open 但 22 timeout,说明 SSH 收敛了、Web 没收敛,暴露面排查的重要线索。
国内 timeout 加海外 open,安全组可能只限制了国内段,海外漏了。
全节点 filtered,端口确实没监听或者被全量过滤,上服务器用 ss 命令查监听端口。
五、常见误判
把 filtered 当成 down。filtered 只代表没收到明确应答,可能是防火墙静默丢包,服务本身或许健康。closed 才是端口明确拒绝。区分这两点对判断被攻击还是进程崩了很关键。
六、总结
禁 ICMP 不等于服务器挂了,用 TCPing 对业务端口做三次握手才是正经验证方式。日常排障记住一句话:Ping 告诉你 IP 层通不通,TCPing 告诉你用户能不能连上来。