1.
概述与准备工作
- 准备项:能远程登录的跳板机或故障主机(root/管理员权限),安装工具:ping, traceroute, mtr, tcpdump, iperf3, netstat, iproute2。
- 数据收集:记录故障时间、影响范围(IP/服务/客户)、是否为持续/间歇性问题、业务端口与目标IP。
- 环境确认:确认本地出口出口IP、路由器型号、是否有防火墙或负载均衡介入。
2.
第一步:快速可达性检测
- ping 检测:ping -c 10 <目标IP>,关注平均延时与丢包率(%)。
- 多点检测:从不同公网节点/国外 VPS 与香港目标对比结果,判断是否一致。若只有单点异常,可能为本地或中间链路问题。
3.
第二步:路径追踪(traceroute / mtr)
- traceroute:traceroute -n <目标IP> 或 traceroute -T -n <目标IP>(TCP 模式用于绕过 ICMP 过滤);记录每跳时延与丢包。
- mtr:mtr -r -c 100 <目标IP>,生成稳定统计,注意哪一跳开始出现丢包或延时突增。
- 判定规则:如果丢包在第 N 跳之后持续,则问题多半在第 N 跳或其后链路;若单跳丢包但后续恢复,可能是该设备对 ICMP 限制。
4.
第三步:分段定位(本端/ISP/对端)
- 本端检查:ip route show; ip addr show; 检查网关是否正确,网卡是否有错误计数(ethtool / ifconfig)。
- ISP 验证:向上游交换机 ping 此跳 IP,或要求 ISP 对该跳进行环测。
- 对端判定:使用第三方测点(例如 GCP、AWS、国内云)对目标做 traceroute,比较差异以判断问题归属。
5.
第四步:端口与应用层测试
- TCP 连接测试:使用 telnet <目标IP> <端口> 或 curl -v --connect-timeout 10 http://<目标IP>:<端口>。
- 并发吞吐测试:iperf3 -c <目标IP> -p <端口> -P 10 -t 60,观察丢包与吞吐稳定性。若 TCP 性能极差但单包延迟正常,可能为丢包或拥塞。
6.
第五步:抓包并分析(tcpdump)
- 抓包命令:tcpdump -i eth0 host <目标IP> and (port 80 or port 443) -w /tmp/hk_cn2.pcap,控制时间(如 60s)。
- 分析:使用 Wireshark/MITM 分析三次握手、重传、RTO、MSS/MTU、ICMP Fragmentation needed。查找重复 ACK、大量重传或 ICMP MTU 报文。
7.
第六步:MTU 与 TCP MSS 问题定位与修复
- 判断:若抓包见到 ICMP Fragmentation needed,则需调整 MTU。
- Linux 调整:临时调整:ip link set dev eth0 mtu 1460;持久化修改 /etc/systemd/network 或网卡配置。
- MSS 修复:iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu(或应用于 OUTPUT/FORWARD 视场景)。
8.
第七步:防火墙与NAT排查
- 检查策略:iptables -L -n -v; nft list ruleset; 检查是否有误拦截或限速规则。
- NAT/负载均衡:确认源 NAT 是否稳定,SYN_COOKIE 是否触发(查看 /proc/sys/net/ipv4/tcp_syncookies),若有大量 SYN 丢失可能触发防护。
9.
第八步:BGP 与路由路径检查
- 查看 BGP:在 BGP 路由器上 show ip bgp <目标前缀>,检查 AS_PATH、社区、是否被黑洞或被劫持。
- 路由变更:若发现路由突变或回程走非 CN2 路径,检查是否有社区策略或 upstream 改动导致。向上游请求恢复 CN2 回程或加回专有社区标签。提供 traceroute + 时间戳。
10.
第九步:向香港/回程运营商提交工单的要点
- 必备信息:故障起止时间、源 IP、目标 IP、完整 traceroute(带时间戳)、mtr 报表、tcpdump 抓包文件(pcap),影响业务与复现步骤。
- 工单示例:附上“mtr -r -c 100 目标IP (日期时间)”、“tcpdump 文件下载链接”。要求运营商确认 hop X 是否有丢包/丢连接并给出改路或修复时间窗。
11.
第十步:常用回退与临时缓解措施
- 临时切换:调整路由策略把流量切到备用链路或通过 BGP 社区切换回程出口。
- 容灾配置:使用负载均衡和多出口备份,按优先级降级非关键业务,通知客户并安排维护窗口。记录修改并准备回滚命令。
12.
第十一步:事故记录与复盘
- 记录:故障原因、排查命令、运营商回复、解决时间与影响范围。
- 复盘:分析根因(链路硬件、配置、拥塞、BGP 误操作),形成文档与预防措施(如报警阈值、自动切换策略)。
13.
问:如何快速判断是本地设备问题还是回程 CN2 链路问题?
- 用多点对比:从本地与第三方测点同时对目标做 ping/traceroute/mtr,若第三方正常而本地异常,优先排查本地设备与出口;若多点均异常,多为回程链路或目标侧问题。
14.
问:发现某一跳丢包但后续跳恢复,是否就不用处理?
- 不可忽视:该跳可能对 ICMP 做了率限制,需结合业务层(TCP)测试与抓包确认。若业务受影响(TCP 重传、超时),仍需向该跳所属运营商确认并处理。
15.
问:提交运营商工单时最关键的三项信息是什么?
- 三项关键:带时间戳的 traceroute/mtr 报告、影响业务的 tcpdump(pcap)或 iperf3 测试结果、明确的复现步骤与影响范围(IP 列表与端口)。这三项能显著提高处理效率。
来源:运维手册 香港 回程cn2 常见问题排查与解决流程