1) 明确问题范围:是单台VPS无法ping通,还是区域性丢包;
2) 准备访问手段:控制台(VPS管理面板)、SSH、远程监控平台(Prometheus/Grafana);
3) 收集初始数据:本地ping结果、远端traceroute、VPS控制台图形网络统计;
4) 准备查看日志:/var/log/messages、/var/log/kern.log、iptables日志、tcpdump抓包文件;
5) 准备配置快照:内核参数(sysctl)、网络接口配置、iptables/ufw规则、虚拟化类型(KVM/OpenVZ)。

1) 从三地同时ping:香港机房、内地骨干和本地办公室,记录丢包率与延迟;示例:10 packets transmitted, 0 received, 100% packet loss;
2) 执行traceroute定位故障跳点,注意是否在机房出口或上游运营商处丢包;
3) 在VPS上用tcpdump监听ICMP并保存:tcpdump -i eth0 icmp -w icmp.pcap;
4) 查看接口统计 ifconfig/ethtool 发现 RX errors 和 dropped 值;如 RX packets 1200 errors 45 dropped 20;
5) 将数据上传监控系统并生成时间序列图以便与流量峰值或防御事件关联。
1) 检查内核日志:grep -i icmp /var/log/kern.log,寻找类似 "IPTables-Dropped: IN=eth0 SRC=1.2.3.4 DST=203.0.113.45 PROTO=ICMP" 的条目;
2) 查看iptables/ufw规则:iptables -L -v -n 或 ufw status verbose,定位是否有DROP icmp规则;示例规则:-A INPUT -p icmp --icmp-type 8 -j DROP;
3) 审核fail2ban与CSF日志,确认是否因误判将网段封禁;/var/log/fail2ban.log 提示 banned IP;
4) 分析tcpdump文件:若看到收到 Echo Request 但无 Echo Reply,说明VPS层面未响应;若未看到请求,问题可能在上游或机房出口;
5) 结合系统负载日志(top sar)确认是否因CPU/IO饱和导致内核无法及时处理网络中断。
1) 检查是否启用了CDN或WAF(如Cloudflare、Akamai),CDN回源或探测策略可能导致ICMP被拦截;
2) 与机房/带宽商核对BGP路由及黑洞信息,确认是否触发DDoS防护导致IP被暂时黑洞;
3) 查询带宽使用历史,若瞬时流量异常(如 1Gbps 持续 5 分钟),运营商可能自动启用清洗;
4) 在控制台查看带宽峰值与安全事件告警记录(如TCP SYN 速率),匹配丢包时间点;
5) 如果使用弹性防护,验证防护策略是否允许ICMP回显,以免误伤正常探测。
1) 案例背景:客户A在香港VPS(Ubuntu20.04,KVM,公网IP 203.0.113.45)出现无法ping通;
2) 配置快照:CPU 2 vCPU,RAM 4GB,MTU 1500,默认网关 203.0.113.1;
3) 关键日志摘录:kernel: IPTables-Dropped IN=eth0 SRC=45.77.23.11 DST=203.0.113.45 PROTO=ICMP TYPE=8;
4) tcpdump 输出(简要):看到来自外部的 Echo Request,但服务器未发送 Echo Reply;
5) 结论:iptables规则误配置导致ICMP被DROP,结合控制台监控无带宽异常排除上游因素。下表为排查时部分数据示例:
| 测试项 | 结果/数据 |
|---|---|
| ping 本地到 VPS | 10 packets transmitted, 0 received, 100% packet loss |
| traceroute 跳点 | 1→机房出口(丢包)→上游ISP |
| iptables 规则 | -A INPUT -p icmp --icmp-type 8 -j DROP |
| ifconfig rx/tx errors | RX errors:45 dropped:20 TX errors:0 |
1) 临时恢复:移除或修改DROP ICMP规则(iptables -D INPUT ...),允许必要ICMP探测;
2) 验证修复:修复后立即tcpdump观察是否有Echo Reply发送,并从多点再做ping/traceroute;
3) 防护策略:对DDoS使用流量清洗+黑洞策略,并保留监控及告警,建议对ICMP做有限速而非完全阻断;
4) 自动化与告警:在Prometheus中定义网络丢包告警、在Grafana展示丢包/错误率时间序列;
5) 变更管理:将网络与防火墙规则纳入代码管理(Ansible/Git),变更前后记录并回滚策略。