NextTrace 中文教程:一条命令看清网络请求的真实路径
2026-10-31发表于
框架与库一、速览:NextTrace 是什么,解决什么运维痛点
入门
NextTrace 是一个开源的可视化路由追踪工具,使用 Golang 开发,追求轻量。路由追踪(traceroute)的作用是:当你访问某个网站或服务器很慢时,它能像快递查询一样,把数据包从你电脑出发、经过哪些网络“站点”、每一段用了多少毫秒,逐跳显示出来。
传统的 traceroute 输出只有 IP 地址,新手很难看懂。NextTrace 在每一跳旁边补齐了城市、运营商、AS 号(互联网上的“自治系统”编号,相当于每家网络公司的门牌号)等信息,让问题定位变得直观。
它解决的核心痛点有两个:
- 看不到地理位置:传统工具只有 IP,NextTrace 直接告诉你数据包经过了哪个城市、哪家运营商。
- 看不到线路质量:每一跳的延迟都标清楚,哪一跳突然变高、丢包发生在哪里,一眼就能找到。
另外,NextTrace 目前提供三个版本:nexttrace(经典可视化版)、nexttrace-tiny(更精简的版本)、ntr(专门运行 MTR 模式,MTR 是一种结合了持续探测和统计的路由追踪方式)。普通用户用 nexttrace 即可。

二、安装:Linux 一键接入 APT,macOS 用 Homebrew
入门
安装前需要确认两件事:
- 你有服务器的超级用户权限:因为路由追踪需要发送特殊网络包,多数系统要求用
sudo执行。 - 服务器能正常联网:安装过程要从 GitHub 下载软件包,且后续追踪也需要访问外部网络。
Debian / Ubuntu 安装
官方提供了 APT 软件源(APT 是 Debian 系 Linux 的软件包管理器,类似手机应用商店)。在终端中依次执行以下命令:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL -o /tmp/nexttrace-archive-keyring.gpg https://github.com/nxtrace/nexttrace-debs/releases/latest/download/nexttrace-archive-keyring.gpg
sudo install -m 0644 /tmp/nexttrace-archive-keyring.gpg /etc/apt/keyrings/nexttrace.gpg
rm -f /tmp/nexttrace-archive-keyring.gpg
printf '%s\n' 'Types: deb' 'URIs: https://github.com/nxtrace/nexttrace-debs/releases/latest/download/' 'Suites: ./' 'Signed-By: /etc/apt/keyrings/nexttrace.gpg' | sudo tee /etc/apt/sources.list.d/nexttrace.sources >/dev/null
sudo apt update
sudo apt install nexttrace
如果只想安装精简版或 MTR 专用版,把最后一条命令换成:
sudo apt install nexttrace-tiny
sudo apt install ntr
macOS 安装
macOS 用户可以使用 Homebrew(macOS 上常见的软件包管理器)。先添加 NextTrace 的 tap(第三方软件源),再安装:
brew tap nxtrace/nexttrace
brew install nexttrace
安装完成后,在终端输入 nexttrace -V,如果能显示版本号,说明安装成功。
三、核心用法:一条命令开始追踪
入门
最常用的命令就是后面直接跟一个目标地址,可以是域名,也可以是 IP:
nexttrace 1.1.1.1
或者:
nexttrace www.example.com
运行后,终端会逐跳打印类似下面的信息,内容会因实际网络不同而变化:
1 192.168.1.1 局域网 1.2 ms
2 10.0.0.1 运营商骨干 3.4 ms
3 100.64.0.1 某城市运营商 5.6 ms
...
每一跳通常包含四类信息:第几跳、IP 地址、地理位置或运营商、延迟。NextTrace 还会在可能的情况下显示 AS 号,方便你判断路径是否绕路。比如从国内访问国外网站,如果看到中途经过了不合理的城市,就说明线路选择有问题。
对比传统 traceroute:传统命令 traceroute 1.1.1.1 只输出 IP 和延迟,你需要自己查 IP 归属。NextTrace 把查 IP 归属这件事自动完成了。
注意:与很多路由追踪工具一样,NextTrace 需要 root 权限发送探测包,所以在 Linux 上建议用
sudo nexttrace 目标地址来避免权限报错。
四、常用参数与配置:按需切换探测方式
进阶 · 推荐细读
NextTrace 的参数很多,但日常用不到那么多。这里挑几个最实用的说明。
切换 TCP / UDP / ICMP
默认情况下,NextTrace 会根据目标选择探测方式。ICMP 是网络层的“回声请求”协议,类似声呐;TCP 和 UDP 则是传输层协议,分别对应连接建立和数据报发送。有些服务器会屏蔽 ICMP,导致追踪中途停止,这时可以强制用 TCP:
sudo nexttrace --tcp 目标地址
如果目标只开放 UDP 端口(如部分 DNS 服务器),可以用:
sudo nexttrace --udp 目标地址
指定端口
--port 参数用于 TCP/UDP 探测时指定目标端口,例如测试 443 端口(HTTPS 默认端口):
sudo nexttrace --tcp --port 443 目标地址
输出 JSON 格式
JSON 是一种机器容易解析的数据格式。如果你想把追踪结果接入脚本、日志系统或监控平台,可以用 --json:
sudo nexttrace --json 目标地址
这样输出就不再是给人看的表格,而是结构化的数据,方便程序处理。官方还提到,JSON 输出中会包含 StopReason 字段,用来解释追踪为什么停止,比如“到达目的地”“达到最大跳数”等。
自检环境:--doctor
--doctor 是一个很实用的诊断模式。它只检查本机环境是否正常,不会发送探测包,也不会查询外部 IP 归属服务。适合在追踪结果异常时,先确认是不是自己电脑或服务器的网络配置有问题:
sudo nexttrace --doctor
它会生成一份纯文本报告,把 DNS 解析、源地址选择、路由预测等信息列出来。注意,这个模式也不会读取捕获的流量,不会调用 GeoIP 或 API 服务,只是纯粹检查本地配置。
传统模式提醒
官方在 README 中说明:2027 年之前,nexttrace 和 nexttrace-tiny 的默认显示模式会切换为 MTR。如果你现在的脚本依赖传统 traceroute 的输出,建议立即改用 --traceroute 参数,避免将来默认行为变化影响你的自动化流程。

五、融入运维体系:脚本化与日志留痕
进阶 · 推荐细读
NextTrace 除了手动排查,还可以写进运维脚本里。下面给出两个常见用法。
定期检测并保存日志
你可以把追踪命令写进 crontab(Linux 的定时任务)里,每天对关键线路做一次探测,把结果追加到日志文件:
echo "$(date)" >> /var/log/nexttrace.log
sudo nexttrace --tcp --port 443 目标地址 >> /var/log/nexttrace.log 2>&1
这样以后再遇到用户反馈“网站变慢了”,你可以直接翻日志,对比历史延迟变化。
配合 JSON 输出做监控
如果你使用 Zabbix、Prometheus 这类监控系统,可以让脚本调用 nexttrace --json,然后解析输出里的每一跳延迟,自动发现哪一跳劣化。不过这一步需要写代码,此处不展开,仅说明 NextTrace 的输出可以机器读取。
注意版本选择
如果你的应用场景只需要 MTR 的持续统计功能,可以安装 ntr 版本,它只提供 MTR 模式,没有其他冗余功能。如果服务器磁盘空间紧张,nexttrace-tiny 会更省资源。
六、踩坑与注意事项
进阶 · 推荐细读
权限问题
在 Linux 上直接用 nexttrace 可能会报“Operation not permitted”之类的错误。原因是没有权限创建原始套接字(raw socket,一种底层网络通信方式)。解决办法是加上 sudo。
ICMP 被屏蔽
很多云服务器和防火墙会丢弃 ICMP 请求,导致中间跳数显示星号 * 或直接中断。常见建议是改用 --tcp 并指定一个常用端口,比如 --port 443,因为 HTTPS 流量几乎不会被完全屏蔽。
IPv6 环境
如果你的服务器有 IPv6 地址,可以用 --ipv6 参数追踪 IPv6 路由。但要注意,IPv6 的路由可能和 IPv4 完全不同,定位问题时不要只测 IPv4。
Windows 特殊选项
Windows 用户如果遇到 ICMP 相关报错,可以查看 --icmp-mode 参数,它用于选择 Windows 下的 ICMP 实现方式。这个选项只在 Windows 上有意义。
不要频繁探测
路由追踪本身会向每一跳发送多个探测包,如果频率太高,可能被目标网络当作扫描行为。日常排障使用即可,不建议写死循环持续探测。
传统模式迁移
再次提醒:如果你是脚本开发者或重度用户,请立即把默认命令改成 nexttrace --traceroute 或 nexttrace --traceroute --raw,这样将来官方切换默认模式时,你的脚本不会突然失效。
项目信息
| 项目 | 值 |
|---|---|
| 仓库 | nxtrace/NTrace-dev |
| 语言 | Go |
| Star | 389 |
| Fork | 35 |
| 主页 | https://www.nxtrace.org |
参考链接
延伸阅读
想继续探索?这些同领域的教程可能也适合你:
179
73
1
4969
文章目录
评论