linux中查看数据包路由跟踪路径主要靠traceroute,它通过ttl递增机制逐跳探测,输出每跳ip、往返时间及响应状态,-n可禁dns解析,-i可切icmp协议,tracepath和mtr则提供轻量或实时补充。

Linux中查看数据包的路由跟踪路径,主要靠 traceroute 及其替代工具,它们通过TTL递增机制逐跳探测,真实还原数据包从本机到目标的经过节点。关键不在于“管理路由表”,而在于“观测实际转发路径”——因为路由表只决定下一跳,真正走哪条物理/逻辑链路,得靠跟踪验证。
用 traceroute 查看基础路由路径
这是最常用的方法,默认使用UDP协议(端口从33434起递增),适合大多数公网环境:
- 运行 traceroute example.com 或 traceroute 8.8.8.8,命令会输出每跳编号、中间设备IP(或主机名)、三次探测的往返时间(ms)
- 遇到 *** 表示该跳无响应——可能是防火墙丢弃ICMP超时消息,也可能是策略限制UDP回包
- 若安装缺失,Ubuntu/Debian执行 sudo apt install traceroute,CentOS/RHEL用 sudo yum install traceroute
跳过DNS解析,加快并稳定输出
默认 traceroute 会对每个返回IP做反向DNS查询,既慢又容易失败(尤其在内网或DNS异常时):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 加 -n 参数:例如 traceroute -n google.com,所有节点直接显示IP,不查域名
- 结果更干净,执行更快,也避免因DNS干扰导致某跳显示为空或超时误判
换协议绕过网络策略限制
有些企业网、云平台安全组或运营商设备会屏蔽UDP响应,但允许ICMP或TCP:
- 用ICMP模式:traceroute -I target.com(无需root权限,兼容性好)
- 用TCP SYN模式:sudo tcptraceroute target.com 443(需安装tcptraceroute,适合HTTPS等端口探测)
- IPv6环境用:traceroute -6 target.com 或 traceroute6 target.com
用 tracepath 或 mtr 做轻量/动态补充
当没有root权限,或需要持续观察链路波动时,这两个工具更实用:
- tracepath target.com:无需root,自动发现路径MTU,输出简洁,适合快速确认是否通以及在哪一跳断开
- mtr target.com:类似“实时版traceroute+ping”,持续发包统计丢包率和延迟抖动,按 s 排序、r 刷新、q 退出










