首页/系统/Linux 运维命令速查/traceroute 路由追踪
网络命令82 条

traceroute 路由追踪

逐跳探测到目标的路径与延迟:默认 UDP 探测,-I 换 ICMP、-T 换 TCP 绕过封禁,-n 不解析域名看更快。

Linux 运维命令速查系统更新于 2026-10-13

traceroute 是什么

traceroute 通过逐步增大探测包的 TTL,收集沿途路由器返回的超时消息,从而描绘出从本机到目标的路径以及每一跳的往返延迟。它默认用 UDP 探测,很多网络会对这类流量限速或丢弃,所以 -I(改用 ICMP)与 -T(改用 TCP,通常需要 root)是常用的替代方案。它回答的是「路径长什么样」,与 ping 回答的「通不通、延迟多少」正好互补。

基本信息

用途逐跳探测到目标的路由路径与时延
语法traceroute [选项] 目标
常用选项-n 不做域名反解、-I ICMP 探测、-T TCP 探测、-p 指定端口、-m 最大跳数、-q 每跳探测次数、-w 超时秒数
权限说明UDP 与 ICMP 模式普通用户可用;TCP 模式通常需要 root

典型使用场景

  • 跨网访问慢:确认请求走了哪条路径,是否绕行或落入异常的自治域
  • 连不通的初判:ping 不通时用 traceroute 看停在哪一跳,区分是本机出口问题还是中间链路
  • 云环境排查:确认流量是否按预期经过专线或 VPN 网关
  • 路由变更验证:调整策略路由或静态路由后,用路径变化确认配置已生效
  • 工单举证:向运营商或云厂商提单时,逐跳记录是最直接的证据

常用示例

常用示例
traceroute -n 8.8.8.8                    # 不解析域名,输出更快
traceroute -T -p 443 -n example.com      # 用 TCP 443 探测,更接近业务流量
traceroute -I -n -m 15 10.1.1.1          # ICMP 探测,最多 15 跳
traceroute -n -q 1 -w 1 app.internal     # 每跳只发一个包,超时 1 秒,跑得快
traceroute -n -m 10 -w 2 203.0.113.10    # 限制跳数与等待时间

与其他工具组合判断

与其他工具组合判断
ping -c 3 target                     # 先确认基本连通与延迟
ip route get 203.0.113.10            # 看本机走哪条路由、从哪个网卡出去
traceroute -T -p 443 -n target       # 再看来回路径的跳点
mtr -rnc 20 target                   # 需要持续统计丢包率时换 mtr

输出逐列读法

内容含义怎么看
跳数从 1 开始累计的 TTL第几跳就是路径上的第几个三层设备
地址该跳回应的路由器地址配合 -n 关闭反解,避免等 DNS
三个 RTT每跳发了几个探测包就有几个延迟值差异大说明该跳负载不均或限速
*该跳在超时时间内没有回应不代表故障,很多设备不回应探测
!H / !N / !P主机不可达 / 网络不可达 / 协议不可达通常是最后一跳给出的明确错误
!X / !F被管理策略禁止 / 需要分片多与防火墙或 MTU 相关问题有关
中间跳出现星号是常态,很多路由器对探测流量限速甚至完全不理。判断故障位置看的是「从哪一跳开始,后续所有跳都持续无响应」,而不是某一行出现了星号。
中间跳的 RTT 偏高不代表业务慢:控制面处理探测包的优先级通常低于转发。真正要看的是终点延迟,以及是否存在从某一跳开始延迟阶跃上升。

易错点

  • 默认 UDP 探测被全程丢弃导致满屏星号:换 -I 或 -T 重试,不要据此判定链路中断
  • 把中间跳的高延迟当成故障点:控制面限速很常见,重点看终点与阶跃位置
  • 目标禁 ICMP 时误判为目标不可达:改用 TCP 端口探测更接近业务真实路径
  • 不做域名反解与不记录输出:排查工单需要可复现的证据,加 -n 提速并把结果保存下来

数据来源与参考

  • man 8 traceroute(traceroute 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌