traceroute核心是通过逐跳递增TTL值并捕获ICMP超时消息,定位数据包路径中延迟高、丢包或中断的具体节点;默认用UDP探测,支持-I切ICMP、-n禁DNS、-m调最大跳数等参数优化诊断。

Linux 中用 traceroute 诊断网络路由,核心是观察数据包从本机到目标主机途中经过的每一跳(hop)及其响应情况,从而定位延迟高、丢包或中断的具体节点。
基础使用与快速验证
直接运行命令即可开始追踪:
-
traceroute example.com—— 解析域名并显示路径,含主机名和IP -
traceroute -n 8.8.8.8—— 跳过DNS解析,只显示IP地址,避免因DNS慢导致卡顿 -
traceroute -m 20 google.com—— 将最大跳数限制为20(默认30),适合内网或短路径排查
每行输出包含跳数编号、中间设备的主机名(或IP)、三次探测的往返时间(单位ms)。若某跳全为 ***,说明该节点未返回ICMP超时消息——常见于防火墙过滤、策略丢包或设备禁ping。
识别关键异常信号
输出中特殊符号反映不同网络状态,需结合上下文判断:
- !H:Host unreachable(主机不可达),通常表示目标IP不存在或路由指向错误
- !N:Network unreachable(网络不可达),上游路由缺失对应网段条目
- !X:Communication administratively prohibited(管理性禁止),多由ACL或防火墙主动拦截
- 连续多跳延迟骤增(如从5ms跳至120ms):可能经过跨运营商链路、国际出口或拥塞节点
绕过常见干扰的实用选项
默认 traceroute 使用UDP探测(端口33434起),但某些网络会屏蔽UDP。可切换协议或调整行为:
-
traceroute -I example.com—— 改用ICMP Echo请求(类似ping),兼容性更好 -
traceroute -p 53 example.com—— 指定UDP端口为53(DNS常用端口),部分防火墙对此更宽松 -
traceroute -f 3 example.com—— 从第3跳开始探测,跳过已知正常的前两跳(如本地网关、ISP接入点) -
traceroute -w 2 example.com—— 将每跳等待时间设为2秒,加快超时判定,适合高延迟链路
进阶对比与替代方案
单次 traceroute 是快照式结果。若需持续观测,推荐组合使用:
-
mtr example.com—— 实时滚动显示各跳的丢包率、平均延迟和抖动,按 q 退出;比 traceroute 更利于发现间歇性问题 -
traceroute -6 example.com—— 显式启用IPv6路径追踪(等价于traceroute6) - 对比不同协议:
traceroute -I example.com和traceroute example.com结果不一致,往往说明某段路径对UDP/ICMP策略不同



















