首页 >> 综合 > 知识问答 >

问linuxtraceroute 命令详解 路由路径探测工具

2026-11-08 22:29:50

答

linuxtraceroute 命令也就是 traceroute,它是 linux 系统网络排查核心命令,核心作用是探测本机到目标主机之间经过的全部路由跳点,也就是沿途每一台路由器,同时输出每一跳的响应延迟,用来定位网络卡顿丢包断点,判断是哪一段链路出现故障,运维排查跨机房访问异常外网访问不通延迟过高的时候都会优先使用这个命令,它底层原理是利用 IP 报文 TTL 字段,TTL 每经过一台路由器就减 1,当 TTL 变成 0 的时候路由器会返回 ICMP 超时报文,traceroute 从 TTL 等于 1 开始逐步增加 TTL,依次获取每一跳路由器的地址和响应时间,默认使用 UDP 报文探测,也可以切换 ICMP TCP 探测模式,部分精简 linux 发行版默认没有预装 traceroute,需要手动安装软件包,普通用户可以执行,但是部分探测模式需要 root 权限,它和 ping 命令不一样,ping 只测试端到端连通性,traceroute 可以看到完整路由路径,这是两者最核心区别。

基础原理说明

IP 协议里面 TTL 全称生存时间,作用是防止数据包在网络里面无限循环转发,traceroute 就是利用这个机制,第一轮发送 TTL 为 1 的探测包,第一跳路由器收到之后 TTL 归零,回复 ICMP 超时,程序记录这一跳地址,第二轮 TTL 设置为 2,第二跳路由器回复,一直循环直到数据包抵达目标主机,目标主机收到之后会回复对应的应答报文,探测就完成,输出每一行代表一跳,每行一般显示三个探测包的响应毫秒数值,很多网络运营商路由器会屏蔽 ICMP 或者 UDP 探测报文,输出就会出现星号,代表这一跳没有响应,不代表这台路由器故障,只是它不回应探测包。

基础使用步骤

第一步确认 traceroute 是否安装,输入 which traceroute,debian ubuntu 执行 apt install traceroute,centos rhel 执行 yum install traceroute 或者 dnf install traceroute。

第二步基础探测,格式为 traceroute 目标域名或者 IP,例如 traceroute baidu.com,回车开始探测路由。

第三步等待探测完成,逐行查看每一跳 IP 地址和延迟数值,定位延迟突增或者丢包的跳点。

第四步如果默认 UDP 探测被防火墙拦截,可以切换探测方式,使用 ICMP 模式探测。

第五步探测完成之后,根据输出结果判断故障位置,如果前几跳正常,中间某一跳开始全部星号,故障点大概率就在该跳之后的链路。

核心参数清单

参数作用说明
-I使用 ICMP echo 报文探测,替代默认 UDP,很多环境 UDP 被拦截的时候使用这个参数
-T使用 TCP SYN 方式探测,适合目标只开放 TCP 服务,屏蔽 ICMP UDP 的场景,一般需要 root 权限
-p指定探测使用的目标端口,TCP UDP 探测的时候修改端口号
-m设置最大 TTL 也就是最大跳数,防止路由跳数太多一直探测,限制探测上限
-q设置每一跳发送探测包数量,默认是 3 个,修改这个值可以增加采样次数
-w设置单跳等待超时时间,单位秒,网络慢的时候调大等待时间
-n不做 DNS 反向解析,直接输出 IP 地址,加快探测速度,减少 DNS 解析等待

进阶深度要点

linuxtraceroute 命令输出星号,是非常常见现象,运营商骨干路由器经常开启策略,不回复探测报文,所以出现星号不能直接判定该节点故障,需要结合 ping 和 mtr 交叉验证,mtr 是 traceroute 和 ping 结合工具,可以持续统计每一跳丢包率。

多出口服务器场景,linuxtraceroute 命令探测的时候可以结合源地址参数,指定从指定网卡出口发起探测,用来验证多路由策略是否生效。

IPv6 环境下对应的命令是 traceroute6,原理和 traceroute 一致,只是探测 IPv6 路由路径,linuxtraceroute 命令默认是 IPv4 探测。

跨防火墙环境,企业防火墙拦截 UDP 探测包,默认 traceroute 直接全部星号,切换 - I 参数 ICMP 探测经常可以拿到路由结果,如果 ICMP 也被拦截,就需要 - T TCP SYN 探测。

脚本自动化场景,可以把 linuxtraceroute 命令输出保存到日志,定期探测关键业务链路,监控路由变更,但是高频探测会被运营商识别,不要短时间大量并发执行。

常见报错与踩坑

command not found 系统没有安装 traceroute 软件包,需要手动安装。

全部跳点都是星号,一般是中间链路拦截探测报文,或者目标主机禁止应答,尝试更换 - I 或者 - T 探测模式。

探测长时间卡住,没有设置最大跳数,路由环路会一直增加 TTL,使用 - m 参数限制最大跳数。

解析速度很慢,每一跳等待 DNS 反向解析,添加 - n 参数跳过域名解析,直接显示 IP。

权限报错,使用 - T TCP SYN 探测的时候,原始套接字需要 root 权限,普通用户执行会报错,需要加 sudo。

【常见问题】

问题 1 linuxtraceroute 命令和 ping 命令有什么区别

回答 1 linuxtraceroute 命令是探测完整路由路径,输出沿途每一跳路由器和每一跳延迟,ping 只测试本机到目标主机端到端连通性和延迟,无法查看中间经过的路由节点,linuxtraceroute 命令适合定位中间链路故障,ping 只判断最终通断。

问题 2 linuxtraceroute 命令输出星号是什么意思

回答 2 linuxtraceroute 命令输出星号代表该跳路由器没有对探测包做出应答,有可能是路由器屏蔽探测报文,不一定是节点故障,遇到星号可以切换 - I ICMP 探测方式,或者搭配 mtr 工具交叉验证。

问题 3 linuxtraceroute 命令默认使用什么协议探测

回答 3 linuxtraceroute 命令默认使用 UDP 报文进行探测,当网络防火墙拦截 UDP 的时候探测失败,可以通过 - I 参数切换 ICMP 探测,或者 - T 参数切换 TCP SYN 探测模式。

问题 4 linuxtraceroute 命令需要 root 权限吗

回答 4 默认 UDP 模式的 linuxtraceroute 命令普通用户就可以运行,但是使用 - T TCP SYN 探测模式的时候需要原始套接字权限,必须使用 sudo 或者 root 用户执行 linuxtraceroute 命令。

【免责申明】

本内容仅针对 linuxtraceroute 命令做技术讲解,不同 linux 发行版 traceroute 版本参数存在差异,部分运营商和企业网络会限制探测报文,探测结果会受网络策略影响,探测行为请遵守网络管理相关规定,不要对非授权目标进行高频路由探测。

 

相关阅读

最新文章