> 技术文档 > Linux tracert命令使用详解 - 追踪数据包从源主机到目标主机的路径

Linux tracert命令使用详解 - 追踪数据包从源主机到目标主机的路径

tracert(Windows)或 traceroute(Linux/macOS)是一个网络诊断工具,用于追踪数据包从源主机到目标主机的路径,并显示途径的每一跳(路由器或节点)的延迟和状态。它通过发送 ICMP/UDP/TCP 探测包并分析响应时间,帮助排查网络延迟或路由问题。


基本语法

Windows (tracert)

tracert [选项] 目标主机或IP

Linux/macOS (traceroute)

traceroute [选项] 目标主机或IP

常用选项

选项(Windows) 选项(Linux) 说明 -d -n 不解析IP为主机名(加快速度) -h 最大跳数 -m 最大跳数 设置最大跳数(默认30) -w 超时毫秒 -w 超时秒 设置每次探测的超时时间 -4 -4 强制使用IPv4 -6 -6 强制使用IPv6 N/A -I 使用ICMP协议(类似ping) N/A -T 使用TCP协议(默认端口80) N/A -U 使用UDP协议(默认端口53)

工作原理

  1. 发送探测包
    • Windows:默认使用 ICMP 协议。
    • Linux:默认使用 UDP 协议(可切换为-I-T)。
  2. TTL递增
    • 首次发送TTL=1的包,途径的第一台路由器会返回Time Exceeded错误。
    • 逐步增加TTL,直到到达目标主机或超过最大跳数。
  3. 计算延迟
    • 对每一跳发送3个探测包,显示往返时间(RTT)

输出解析

以Windows tracert为例:

tracert www.google.com 1 1 ms <1 ms <1 ms 192.168.1.1 # 第一跳:本地路由器 2 10 ms 10 ms 11 ms 100.64.0.1  # 第二跳:ISP网关 3 * * * 请求超时  # 可能被防火墙拦截 4 15 ms 14 ms 13 ms 203.0.113.45 # 第四跳:骨干网节点 ... 12 30 ms 31 ms 30 ms 172.217.160.110 # 目标服务器
  • 每行格式
    跳数 RTT1 RTT2 RTT3 节点IP或主机名
  • *:表示超时(可能因防火墙丢弃探测包)。
  • 延迟单位:毫秒(ms)。

常见用途

1. 诊断网络延迟

tracert www.baidu.com # 查看哪一跳延迟高
  • 如果中间某跳延迟激增,可能是网络拥塞或故障节点。

2. 检测路由环路

traceroute -m 20 203.0.113.1 # 限制跳数,避免无限循环
  • 如果出现重复的IP,可能存在路由环路。

3. 检查防火墙拦截

traceroute -I 8.8.8.8 # 使用ICMP协议(可能被防火墙放行)
  • 如果UDP探测超时但ICMP能通,说明目标屏蔽了UDP。

4. 对比路径(多运营商)

traceroute -T -p 443 www.github.com # 使用TCP 443端口
  • 不同协议/端口可能走不同路径(如TCP 80 vs UDP 53)。

高级技巧

1. 绕过DNS解析(加快速度)

traceroute -n 8.8.8.8 # 不解析IP为主机名

2. 指定源接口(多网卡环境)

traceroute -i eth1 203.0.113.1 # Linux:从eth1网卡发送

3. 保存结果到文件

tracert www.example.com > C:\\path\\to\\log.txt

4. 检测MTU问题

如果某跳之后全部超时,可能是MTU不匹配(需配合ping -f进一步检查)。


常见问题

Q1: 为什么某些跳显示*

  • 节点配置了不响应ICMP/UDP(常见于防火墙或运营商设备)。
  • 解决方法:尝试 traceroute -T(TCP)或 traceroute -I(ICMP)。

Q2: 目标延迟高,如何定位问题?

  • 对比多个探测点,如果从某一跳开始延迟增加,问题可能出在该节点或上游链路。

Q3: Windows和Linux的tracert/traceroute区别?

特性 Windows (tracert) Linux (traceroute) 默认协议 ICMP UDP 端口指定 不支持 支持(如-T -p 80) 数据包大小 固定 可调(如-s 64

替代工具

  • mtr:结合ping+traceroute,实时监控每跳丢包率(Linux)。
  • pathping(Windows):类似mtr,提供统计信息。

总结

  • 基本命令tracert 目标(Windows)或 traceroute 目标(Linux)。
  • 关键场景:排查延迟、路由异常、防火墙拦截。
  • 技巧:使用-n加速、-I/-T切换协议、-m限制跳数。