星号说明什么
traceroute 靠逐次递增 TTL、等待中间设备回 ICMP 超时报文来还原路径。当某一跳返回星号,只能说明这一跳没有回应该探测,绝不等于这一跳坏了。真正要看的规律是:星号之后路径是否恢复、最后一跳是否到达、星号是否时有时无。把这三条判清楚,多数「路径断了」的误报都能当场排除。
为什么设备不回 ICMP
运营商骨干与带安全策略的防火墙普遍对 TTL 超时报文做限速或直接静默丢弃,一是怕被扫描,二是这类报文由控制平面 CPU 处理,量大时影响转发。于是同一条路径上出现「中间几跳全星号、末跳正常」是常态。反过来,如果路径中间几乎每一跳都正常返回,说明沿途设备策略宽松,这类网络反而更适合用 ICMP 探测。
星号模式判读
| 模式 | 判读 | 下一步 |
|---|---|---|
| 中间几跳星号,之后恢复正常 | 该设备不回 TTL 超时 ICMP,路径本身正常 | 无需处置,继续看末跳 |
| 中间星号且之后全部不通 | 流量可能在该段被丢弃 | 结合两端抓包与设备策略确认 |
| 最后一跳星号但业务可达 | 目标不回 ICMP,不代表不可达 | 用端口探测复核业务 |
| 星号时有时无 | 等价多路径导致探测走了不同链路 | 多次探测并对比不同链路 |
| 全程星号 | 路径上设备普遍不回 ICMP | 改用 TCP 或 UDP 模式探测 |
交叉验证最后一跳
交叉验证最后一跳
traceroute -T -p 443 -n 10.0.0.5 # TCP 模式探测,绕开 ICMP 限制
traceroute -U -p 53 -n 10.0.0.5 # UDP 模式作为对照
traceroute -q 3 -w 2 -n 10.0.0.5 # 每跳 3 次探测,看清是否稳定
nc -zv 10.0.0.5 443 && echo PORT-OK # 应用端口二次确认,最直接的证据典型使用场景
- 跨运营商访问慢:先看路径在哪一跳之后时延抬升,判断是否绕行
- 确认流量走向是否符合规划:对比实际路径与专线、云联网的设计路径
- 判断「路径不通」是否成立:用星号分布规律排除设备不回 ICMP 的假故障
- 给运营商报障:把逐跳结果与业务端口探测结果一起提交,减少来回沟通
- 验证故障恢复:用同一命令在同一源点做前后对比,形成可核对的证据
报「路径不通」时要区分两类证据:traceroute 提供的是控制平面视角,端口探测提供的是数据平面证据。两者结论不一致时,以端口探测与抓包为准。
把星号当作「丢包率 100%」上报会制造假故障,也会让处置方向完全跑偏;上报前至少要用 TCP 模式与端口探测各复核一次。