traceroute 是 linux 下诊断网络路径、识别丢包或延迟异常节点的核心工具,通过逐跳发送 ttl 递增的 icmp/udp/tcp 包并接收“time exceeded”响应,还原路由路径;常用于定位跨境链路中断点,支持协议切换、跳数限制等参数优化排查。

traceroute 是 Linux 下诊断网络路径、识别丢包或延迟异常节点的核心工具,特别适用于排查跨境链路中断——比如国内访问某海外网站超时,但 ping 通目标 IP 却无响应,这时 traceroute 能帮你快速定位是哪一跳(尤其是国际出口网关、海外 ISP 接入点或中间骨干网)出现阻断或策略限速。
理解 traceroute 的工作原理
它不是“直接连到目标”,而是逐跳发送 TTL(Time-To-Live)递增的 ICMP 或 UDP 数据包(取决于实现和选项),每经过一个路由器,TTL 减 1;当 TTL=0 时,该路由器会返回 ICMP “Time Exceeded” 消息,从而暴露其 IP 和响应延迟。这样就能按跳数顺序还原出从本地到目标的完整路由路径。
注意:部分节点(尤其防火墙、运营商核心设备)可能禁用 ICMP 响应或限速,表现为 * * * 或持续超时,这本身已是关键线索——说明该节点未返回响应,不等于“不通”,但极可能是策略过滤、QoS 限速或 NAT 设备静默丢包。
基础用法与关键参数
-
基本命令:
traceroute example.com或traceroute 203.208.60.1(支持域名或 IP) -
指定协议更稳定:跨境链路中某些 ISP 会屏蔽 ICMP,改用 TCP 或 UDP 更易穿透:
traceroute -T -p 443 example.com(TCP 模式,端口 443,模拟 HTTPS 流量)traceroute -U -p 53 example.com(UDP 模式,端口 53,模拟 DNS 查询) -
绕过 DNS 解析加快诊断:直接对目标 IP 执行,避免本地 DNS 故障干扰:
traceroute -n 172.217.160.14(-n 禁用反向 DNS 查询,显示纯 IP) -
调整探测次数与超时:默认每跳发 3 包,可缩短等待时间:
traceroute -q 1 -w 2 example.com(每跳只发 1 包,超时 2 秒)
识别跨境断网的关键特征
观察输出时重点关注三类现象:
- 连续超时(* * *)起始位置:若前几跳正常(如本地宽带网关、省网、骨干网),从第 7–10 跳开始全为 *,且对应 IP 属于国际运营商(如 AS3356(Level3)、AS174(Cogent)、AS2914(NTT)等),大概率是跨境出口策略限制或对端封禁
- 延迟突增 + 不稳定:某跳平均延迟突然从 10ms 跃升至 300ms+,且抖动极大(如 25ms / 320ms / *),常见于国际海缆拥塞、BGP 路由震荡或中转 ISP 限速
-
IP 地址归属异常:使用
whois或在线工具(如 ipip.net、bgp.he.net)查某跳 IP 所属 ASN 和地理区域。例如跳到202.97.65.130(CN2 国际出口),下跳却变成美国某 CDN 边缘节点,再下跳却返回香港或新加坡的某个私有地址段(如 100.64.0.0/10),说明路径绕行或被劫持
配合其他命令交叉验证
单靠 traceroute 不足以定责,需组合验证:
-
对比不同协议:执行
traceroute -I example.com(ICMP)、traceroute -T -p 80 example.com(TCP 80)、traceroute -T -p 443 example.com(TCP 443)。若仅 ICMP 全丢、TCP 可达,说明对方禁 ICMP 但服务端口开放,非真正断网 -
检查 DNS 是否正常:运行
dig example.com +short或nslookup example.com,确认解析结果正确且无污染;若 DNS 返回错误 IP,则后续 traceroute 本身就跑偏了 -
抓包确认真实行为:在怀疑跳数后加
-f 8(从第 8 跳开始追踪),再用tcpdump -i any host X.X.X.X抓该跳 IP 的 ICMP/TCP 响应,看是否真无回包,还是被本地防火墙拦截











