traceroute 的原理
traceroute 靠逐跳递增 TTL、让沿途设备回送 ICMP 超时来绘制路径。探测方式有 UDP、ICMP、TCP 三种,穿越防火墙时表现差异很大:有的环境只放行 ICMP,有的只放行特定 TCP 端口,选对模式才能过墙。
基本信息
| Linux | 默认 UDP 高端口,-I 用 ICMP,-T 用 TCP |
|---|---|
| Windows | tracert 使用 ICMP 探测 |
| 网络设备 | traceroute 命令可指定协议与探测次数 |
| 结果解读 | 星号表示该跳未响应,不等于丢包 |
| 华为设备 | tracert 支持按 VPN 实例发起 |
典型使用场景
- 定位跨网段不通:确认在哪一跳之后失去响应
- 跨防火墙排查:切换探测模式验证是否被策略拦截
- 路径变更验证:割接前后对比路径是否按设计走
- 质量定位:结合逐跳时延判断瓶颈出现在哪一段
- L3VPN 场景:指定 VPN 实例跟踪路径
用法示例
用法示例
traceroute -n 10.2.2.1 # 默认 UDP 探测,不解析域名
traceroute -I -n 10.2.2.1 # 改用 ICMP 探测,兼容性更好
traceroute -T -p 443 10.2.2.1 # 改用 TCP 443,便于穿越防火墙
!
# 设备侧
traceroute 10.2.2.1 probe 3 numeric探测方式
| 方式 | 特点 | 适用场景 |
|---|---|---|
| UDP | Linux 默认,端口号递增 | 一般环境 |
| ICMP | 兼容性好,多数设备响应 | 对端只放行 ICMP 时 |
| TCP | 指定端口,易穿越策略 | 穿越防火墙的场景 |
中间跳显示星号很常见:设备对 ICMP 限速或不回送时都会这样,不能据此判断该跳存在丢包。
目标可达但中途全是星号,说明路径可见性受限,而不是链路断裂:要结合业务实际表现与其他测量手段判断。
traceroute 的结果是探测那一刻的路径:负载分担环境下多次执行可能得到不同路径,这属于正常现象。
跨源对比很有价值:从不同位置发起跟踪,可以区分问题是局部现象还是全局路径问题。
结果要与业务表现结合:路径看起来正常而业务不通时,问题往往在策略、端口或应用层,而不是路由层。
留存路径基线很有价值:把关键链路的常态路径与逐跳时延存档,之后出现异常时可以一眼看出是哪一段发生了变化。