Linux/Windows系统下:traceroute 与 tracert 路由追踪命令全解析

在网络排查中,"为什么访问目标地址失败?""数据卡在了哪个节点?" 这类问题屡见不鲜。路由追踪命令(Linux 的traceroute与 Windows 的tracert)正是解决这类问题的 "网络探针"------ 它能精准定位数据包从本地主机到目标主机的传输路径,暴露每一跳的延迟、丢包等关键信息,是运维、开发及普通用户排查网络故障的核心工具。本文将从语法、适用场景、使用方法、结果解读、问题解决五个维度,全面拆解两个系统的路由追踪命令,让你快速上手。

一、核心概念:路由追踪命令到底是什么?

路由追踪的核心原理是利用 IP 协议的 TTL(生存时间)字段ICMP(互联网控制消息协议)反馈机制

  1. 本地主机向目标主机发送数据包时,会将 TTL 值设为 1(第一跳);
  2. 数据包经过第一个路由器时,TTL 减 1 变为 0,路由器会丢弃数据包并返回 "TTL 超时"(ICMP Time Exceeded)消息;
  3. 本地主机记录该路由器的 IP 和延迟,再将 TTL 设为 2,重复上述过程,直到数据包到达目标主机,目标主机会返回 "端口不可达"(ICMP Port Unreachable)消息,追踪结束。

简单说,路由追踪就像 "给数据包贴了个倒计时标签",通过每一跳的 "超时反馈",画出数据传输的完整路径,同时检测每一段的网络状态。

二、分系统详解:语法、适用场景与使用方法

(一)Linux 系统:traceroute 命令

1. 基础语法

traceroute [选项] 目标地址(IP/域名)

2. 常用选项(核心必记)

|-----------|-----------------------------------|--------------------------------------------------|
| 选项 | 作用 | 示例 |
| -n | 不解析域名(仅显示 IP),速度更快 | traceroute -n 8.8.8.8 |
| -m <跳数> | 设置最大追踪跳数(默认 30 跳) | traceroute -m 20 www.baidu.com(最多追踪 20 跳) |
| -w <秒数> | 设置超时时间(默认 3 秒),避免卡顿 | traceroute -w 1 192.168.1.1(1 秒无响应则判定超时) |
| -q <次数> | 每跳发送的数据包数量(默认 3 个) | traceroute -q 5 www.github.com(每跳发 5 个包,结果更精准) |
| -p <端口> | 指定目标端口(TCP 模式下生效) | traceroute -T -p 80 www.google.com(追踪 TCP 80 端口) |
| -T | 使用 TCP 协议追踪(默认 UDP,部分网络禁用 UDP 时用) | traceroute -T www.taobao.com |

3. 适用场景
  • 排查 Linux 服务器访问外网 / 内网服务失败(如无法访问 API 接口、数据库连接超时);
  • 定位跨机房、跨地区网络延迟过高的节点(如南方用户访问北方服务器卡顿);
  • 检测是否存在路由环路、黑洞路由(数据包被丢弃无反馈);
  • 验证 CDN 节点是否生效(如追踪www.taobao.com,看是否经过 CDN 节点)。
4. 基本使用步骤
  1. 打开 Linux 终端(Ctrl+Alt+T);
  2. 输入基础命令(如追踪百度):traceroute www.baidu.com
  3. 如需精准排查,添加选项:traceroute -n -w 1 -m 25 8.8.8.8(不解析域名、1 秒超时、最多 25 跳);
  4. 等待结果输出(按 Ctrl+C 可终止追踪)。

(二)Windows 系统:tracert 命令

1. 基础语法

tracert [选项] 目标地址(IP/域名)

2. 常用选项(与 Linux 对应,易记)

|------------|-------------------------------------|-------------------------------------------------|
| 选项 | 作用 | 示例 |
| -d | 不解析域名(仅显示 IP),速度更快 | tracert -d 8.8.8.8 |
| -h <跳数> | 设置最大追踪跳数(默认 30 跳) | tracert -h 20 www.baidu.com |
| -w <毫秒数> | 设置超时时间(默认 4000 毫秒 = 4 秒) | tracert -w 1000 192.168.1.1(1000 毫秒无响应则超时) |
| -q <次数> | 每跳发送的 ICMP 数据包数量(默认 3 个) | tracert -q 5 www.github.com |
| -p <端口> | 指定目标端口(仅 TCP 模式,需配合-T) | tracert -T -p 443 www.google.com(追踪 TCP 443 端口) |
| -T | 使用 TCP 协议追踪(默认 ICMP,部分网络禁用 ICMP 时用) | tracert -T www.taobao.com |

3. 适用场景
  • 普通用户排查电脑无法上网、访问网站卡顿(如打开微信网页版失败);
  • 办公场景下排查局域网内打印机、共享文件夹连接失败;
  • 游戏玩家定位延迟过高的节点(如玩外服游戏时卡顿,看是否卡在国际出口);
  • 验证路由器、光猫等设备是否正常转发数据包(如追踪 192.168.1.1,看是否能到达网关)。
4. 基本使用步骤
  1. 打开 CMD 命令提示符(Win+R→输入cmd→回车);
  2. 输入基础命令:tracert www.baidu.com
  3. 精准排查命令:tracert -d -w 1000 -h 25 8.8.8.8(不解析域名、1 秒超时、最多 25 跳);
  4. 等待结果输出(按 Ctrl+C 可终止追踪)。

三、结果解读:不同输出代表什么?

无论是traceroute还是tracert,输出格式类似,核心关注跳数、IP / 域名、延迟、超时标识,以下是常见结果及含义:

(一)正常结果示例(Linux)

bash 复制代码
traceroute to www.baidu.com (180.101.49.11), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.523 ms  0.481 ms  0.456 ms  # 第1跳:本地网关(路由器),延迟<1ms,正常
 2  10.100.0.1 (10.100.0.1)  2.134 ms  2.098 ms  2.071 ms    # 第2跳:运营商小区网关,延迟2ms,正常
 3  221.226.18.1 (221.226.18.1)  5.345 ms  5.312 ms  5.289 ms# 第3跳:运营商骨干网节点,延迟5ms,正常
...
10  180.101.49.11 (180.101.49.11)  12.456 ms  12.412 ms  12.389 ms # 第10跳:目标主机,追踪结束

正常结果特征:

  • 每跳均有 IP / 域名,无超时(*);
  • 延迟逐步递增(跨地区 / 跨国时延迟会明显升高,但无突变);
  • 最终到达目标地址,无环路(不会重复出现同一 IP)。

(二)异常结果及含义

  1. 某一跳出现 * * *(超时)

示例(Windows)

bash 复制代码
tracert www.github.com
 1  192.168.1.1 (192.168.1.1)  1ms  1ms  1ms
 2  10.100.0.1 (10.100.0.1)  3ms  2ms  2ms
 3  * * *  # 第3跳超时
 4  221.226.20.1 (221.226.20.1)  8ms  7ms  7ms
...

含义:第 3 跳的路由器禁用了 ICMP 反馈(如安全策略拦截),或该节点网络拥堵、故障,但数据包可能仍能继续传输(后续跳数正常则无大碍)。

  1. 重复出现同一 IP(路由环路)

示例(Linux)

bash 复制代码
5 203.0.113.10 (203.0.113.10) 20ms 19ms 18ms

6 203.0.113.5 (203.0.113.5) 25ms 24ms 23ms

7 203.0.113.10 (203.0.113.10) 20ms 19ms 18ms

8 203.0.113.5 (203.0.113.5) 25ms 24ms 23ms

...

含义:数据包在两个节点间循环传输(TTL 不断重置),无法到达目标,通常是路由配置错误(如静态路由指向错误)。

  1. 所有跳数均为 * * *(全程超时)

示例

bash 复制代码
traceroute -n 192.168.2.100

1 * * *

2 * * *

...

30 * * *

含义:目标主机不可达,可能原因:目标 IP 不存在、目标主机禁用 ICMP、防火墙拦截、网络链路中断(如网线断开、网关故障)。

  1. 延迟突变(某一跳延迟飙升)

示例

bash 复制代码
5 221.226.18.1 (221.226.18.1) 6ms 5ms 5ms

6 153.37.128.1 (153.37.128.1) 300ms 298ms 295ms # 延迟从6ms飙升到300ms

7 180.101.49.11 (180.101.49.11) 302ms 300ms 298ms

含义:第 6 跳节点可能存在网络拥堵、带宽占用过高(如 P2P 下载)、跨运营商互联(如电信→联通)等问题,导致延迟激增。

四、问题解决:不同异常情况怎么处理?

根据上述异常结果,针对性给出解决方案,覆盖个人用户和运维场景:

(一)某一跳超时(* * *),但后续跳数正常

问题原因:该节点禁用 ICMP 反馈(常见于运营商骨干网、企业网关),或临时拥堵。

解决方法:

  • 无需处理:若最终能到达目标(如访问网站正常),仅单跳超时不影响使用;
  • 验证网络:用ping 目标地址测试连通性,若 ping 正常则无需干预;
  • 更换追踪协议:Linux 用traceroute -T 目标地址(TCP 模式),Windows 用traceroute -T 目标地址,避免 ICMP 被拦截。

(二)路由环路(重复出现同一 IP)

问题原因:路由器 / 网关路由配置错误(如静态路由循环、动态路由协议故障)。

解决方法:

1.个人用户:

重启路由器(拔掉电源 30 秒再插上),重置路由表;

检查本地网络配置(如 IP 是否为静态分配,是否与网关冲突)。

2.运维用户:

登录环路节点路由器,查看路由表(Linux:route -n;路由器:通过 Web 管理界面);

删除错误路由条目,或重新配置动态路由协议(如 OSPF、BGP)。

(三)全程超时(所有跳数* * *)

问题原因:目标不可达、防火墙拦截、链路中断。

解决方法:

1.验证目标地址:确认 IP / 域名正确(如www.github.com是否拼写错误),用nslookup 域名检查 DNS 解析是否正常;

2.检查本地网络:

个人用户:确认电脑已连接网络(Wi-Fi / 网线正常),ping 网关(ping 192.168.1.1),若 ping 不通则重启光猫、路由器;

运维用户:检查服务器网卡配置(ifconfig)、防火墙规则(Linux:iptables -L;Windows:netsh advfirewall show allprofiles),是否拦截 ICMP/TCP。

3.测试目标端口:用telnet 目标IP 端口(如telnet www.baidu.com 80),若端口不通,可能是目标服务未启动或防火墙拦截端口。

(四)延迟突变(某一跳延迟飙升)

问题原因:节点拥堵、跨运营商、带宽不足。

解决方法:

1.个人用户:

关闭占用带宽的应用(如迅雷、云盘同步),重新测试;

更换网络(如手机热点),排除本地网络问题;

访问目标的备用域名 / IP(如百度备用 IP 180.101.49.12)。

2.运维用户:

查看拥堵节点归属(通过whois IP查询运营商),联系运营商优化链路;

更换 CDN 节点或加速线路(如使用 BGP 多线机房);

限制服务器带宽占用(如用tc命令限流),避免带宽饱和。

(五)目标主机可达,但访问慢(整体延迟高)

解决方法:

  • 选择更近的节点:如访问国外网站,切换至香港、新加坡节点的 VPN / 代理;
  • 检查目标服务器负载:运维用户可登录目标服务器,用top(Linux)/任务管理器(Windows)查看 CPU、内存占用,若负载过高需扩容。

五、注意事项与进阶技巧

  1. 权限要求:Linux 的traceroute默认使用 UDP 端口(33434-33534),普通用户即可执行;若使用-T(TCP)或-I(ICMP)选项,可能需要sudo权限(避免端口占用)。
  2. 防火墙影响:部分网络环境(如企业内网、校园网)会禁用 ICMP/UDP,导致traceroute/tracert失败,此时优先使用 TCP 模式(-T选项)。
  3. 批量追踪工具 :若需定期监控路由,可使用mtr(Linux)/pathping(Windows),结合脚本自动化输出报告(如mtr --report www.baidu.com > traceroute_report.txt)。
  4. 跨平台差异:Linux 的traceroute默认 UDP,Windows 的tracert默认 ICMP,若需一致性结果,建议统一使用 TCP 模式(-T选项)。
相关推荐
不穿格子的程序员35 分钟前
操作系统篇3——深入理解操作系统:Linux 常用命令、系统中断与用户态/内核态详解
linux·服务器·操作系统·内核态·用户态·中断
...对方正在输入......42 分钟前
MySQL主从复制
linux·mysql
---学无止境---43 分钟前
Linux内核POSIX文件锁机制深度解析
linux
L.Ru1 小时前
ubuntu的使用
linux·运维·ubuntu
Clarice__1 小时前
Ubuntu使用指南——MATLAB篇
linux·ubuntu
g***72701 小时前
Nginx 缓存清理
运维·nginx·缓存
lang201509281 小时前
什么是 Linux?
linux·运维·服务器
食品一少年1 小时前
【Day1-3】(Windows版)Open Harmony PC 命令行适配指南环境准备篇(2)
windows
wanderist.1 小时前
Linux使用经验——mv命令
linux·运维·服务器