三种探测模式的区别
traceroute 靠逐级加大 TTL 让沿途设备回 ICMP 超时,从而画出路径。发出去的是什么包由模式决定:默认模式用高端口 UDP 报文,-I 用 ICMP Echo,-T 用 TCP SYN,-U 显式指定 UDP。模式不同,穿越策略设备的命运也不同:只放行 TCP 的网络里,UDP 模式会全程星号;反过来,ICMP 被限速时,-I 的结果会残缺。选模式的判断标准只有一个:让探测报文尽量与真实业务报文长得一样。
基本信息
| 适用平台 | Linux traceroute(含现代 2.x 版本),-T 需要 root 或 CAP_NET_RAW |
|---|---|
| 默认行为 | UDP 高端口,每跳 3 个探针,最多 30 跳 |
| 常用选项 | -n 不做反解、-m 最大跳数、-q 每跳探针数、-p 端口、-s 源地址、-w 超时 |
| Windows 对应 | tracert 只有 ICMP 模式,TCP 路径探测需第三方工具 |
典型使用场景
- 只放行 443 的网络:用 -T -p 443 复现业务真实路径,否则全程星号
- 网络允许 ICMP:用 -I 拿到与 ping 路径一致的结果,最适合与 ping 结论互证
- 多出口或有策略路由:用 -s 指定源地址,观察不同源地址的路径差异
- 对比三种模式:三条路径不一致时,说明中间设备对不同协议做了差异化处理
- 定位路径在哪一跳断掉:先用通用模式,再用 -T 复测可疑跳
三模式对比同一目标
三模式对比同一目标
traceroute -n -m 15 10.9.9.9 # 默认 UDP 高端口模式
traceroute -I -n -m 15 10.9.9.9 # ICMP Echo 模式,最接近 ping
traceroute -T -p 443 -n -m 15 10.9.9.9 # TCP SYN 到 443,复现业务路径
traceroute -T -p 443 -s 10.0.0.5 -n 10.9.9.9 # 指定源地址,验证策略路由
traceroute -U -p 5000 -n -m 15 10.9.9.9 # 显式 UDP 到指定端口模式选择对照
| 模式 | 探测包 | 适用场景 |
|---|---|---|
| 默认(UDP) | 高端口 UDP 包 | 通用路径探测,传统实现 |
| -I | ICMP Echo | 网络允许 ICMP 时,结果最接近 ping 路径 |
| -T -p 443 | TCP SYN 到指定端口 | 防火墙只放行业务端口时复现真实路径 |
| -T -p 443 -s IP | 指定源地址 TCP | 多出口环境复现特定业务流量路径 |
| -U -p N | 指定端口 UDP | 排查 UDP 业务(如 DNS、语音)的路径 |
TCP 模式到达目标后目标回 SYN/ACK 或 RST,两种都算探测成功到达;看到最后一跳有回应即可确认路径连通。
-I 与 -T 都需要原始套接字权限(CAP_NET_RAW):生产机上长期用 root 跑探测脚本属于权限过大,建议单独授权或限制执行的账号。