NextTrace
一款追求轻量化的开源可视化路由跟踪工具。
主页:www.nxtrace.org
IAAS Sponsor
我们非常感谢 DMIT、 Misaka 和 SnapStack 提供了支持本项目所需的网络基础设施。
How To Use
| Document Language: English | 简体中文 |
⚠️ 请注意:我们欢迎来自社区的PR提交,但是请将您的PR提交至 NTrace-dev 仓库,而不是 NTrace-core 仓库。
关于NTrace-dev和NTrace-core两个仓库的说明:
二者将大体上保持一致。所有的开发工作均在NTrace-dev仓库中进行。NTrace-dev仓库首先发布新版本,在稳定运行一段时间后(时长不定),我们会把版本同步至NTrace-core。这意味着NTrace-dev仓库充当了一个“测试版”的角色。
请注意,版本同步也存在例外。如果NTrace-dev的某个版本出现了严重的bug,NTrace-core会跳过这一有缺陷的版本,直接同步到下一个修复了该问题的版本。
Before Using
使用 NextTrace 之前,我们建议您先阅读 #IP 数据以及精准度说明,在了解您自己的对数据精准度需求以后再进行抉择。
Automated Install
- Debian / Ubuntu
- 推荐:通过官方
nexttrace-debsAPT 源安装- 当前支持:
amd64、i386、arm64、armel、armhf、loong64、mipsel、mips64el、ppc64el、riscv64、s390x - 添加源并安装默认包:
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 - 可选:安装额外的 flavor:
sudo apt install nexttrace-tiny sudo apt install ntr - 三个包可以共存安装,对应命令分别是:
nexttrace、nexttrace-tiny、ntr
- 当前支持:
- 推荐:通过官方
- Linux / macOS / BSD
- 一键安装脚本(完整版,默认)
curl -sL https://nxtrace.org/nt | bash - 一键安装脚本(Tiny)
curl -sL https://nxtrace.org/nt | bash -s -- --flavor tiny - 一键安装脚本(NTR)
curl -sL https://nxtrace.org/nt | bash -s -- --flavor ntr -
安装后的命令名:Full
nexttrace,Tinynexttrace-tiny,NTRntr - Arch Linux AUR 安装命令
- 直接下载bin包(仅支持amd64)
yay -S nexttrace-bin - 从源码构建(仅支持amd64)
yay -S nexttrace - AUR 的构建分别由 ouuan, huyz 维护
- 直接下载bin包(仅支持amd64)
-
Linuxbrew 安装命令
同macOS Homebrew安装方法(homebrew-core版仅支持amd64)
-
deepin 安装命令
apt install nexttrace -
x-cmd 安装命令
x env use nexttrace - Termux 安装命令
pkg install root-repo pkg install nexttrace - ImmortalWrt 安装命令
opkg install nexttrace
- 一键安装脚本(完整版,默认)
- macOS
- macOS Homebrew 安装命令
- homebrew-core版
brew install nexttrace - 本仓库ACTIONS自动构建版(更新更快)
brew tap nxtrace/nexttrace && brew install nxtrace/nexttrace/nexttrace - homebrew-core 构建由 chenrui333 维护,请注意该版本更新可能会落后仓库Action自动构建版本
- homebrew-core版
- macOS Homebrew 安装命令
- Windows
- Windows WinGet 安装命令
- WinGet 版
winget install nexttrace - WinGet 构建由 Dragon1573 维护
- WinGet 版
- Windows Scoop 安装命令
- scoop-extras 版
scoop bucket add extras && scoop install extras/nexttrace - scoop-extra 由 soenggam 维护
- scoop-extras 版
- Windows WinGet 安装命令
请注意:
nexttrace-debsAPT 源由 nxtrace 和 wcbing 维护。- 其它安装方式中的软件源大多由开源爱好者自行维护,不保证可用性和及时更新;如遇到问题请联系对应维护者,或使用本项目官方编译提供的二进制包。
Manual Install
-
下载预编译的可执行程序
对于以上方法没有涵盖的用户,请直接前往 Release 下载编译好的二进制可执行文件。
Release里面为很多系统以及不同架构提供了编译好的二进制可执行文件,如果没有可以自行编译。- 一些本项目的必要依赖在
Windows上Golang底层实现不完全,所以目前NextTrace在Windows平台出于实验性支持阶段。
版本说明
从本版本开始,NextTrace 在同一 release tag 下发布 三种构建版本,按需选用:
| 功能 | nexttrace(完整版) |
nexttrace-tiny |
ntr |
|---|---|---|---|
| 常规 traceroute | ✅ | ✅ | — |
独立 MTU(--mtu) |
✅ | ✅ | — |
CDN 测速(--speed) |
✅ | — | — |
IP 文本标注(--nali) |
✅ | — | — |
| MTR TUI | ✅ | — | ✅(默认) |
MTR 报告(-r) |
✅ | — | ✅ |
MTR 宽报告(-w) |
✅ | — | ✅ |
MTR 原始输出(--raw) |
✅ | — | ✅ |
Globalping(--from) |
✅ | — | — |
WebUI(--deploy) |
✅ | — | — |
快速跟踪(-F) |
✅ | ✅ | — |
| 默认运行模式 | traceroute | traceroute | MTR TUI |
| 二进制名 | nexttrace |
nexttrace-tiny |
ntr |
注意:
APT (nexttrace-debs)目前提供 Full(nexttrace)、Tiny(nexttrace-tiny)和 NTR(ntr)三种包;其它包管理器(Homebrew、AUR、Scoop 等)目前仍仅提供 完整版(nexttrace)。
功能对比
nexttrace— 完整版。包含 traceroute、独立 MTU、CDN 测速、IP 文本标注、MTR、Globalping、Fast Trace 与 WebUI。nexttrace-tiny— 精简版。保留常规 traceroute、独立 MTU 和 Fast Trace;不含 CDN 测速 / IP 文本标注 / MTR / Globalping / WebUI。适合嵌入式或极简环境。ntr— MTR 专用版。默认启动 MTR TUI。不含常规 traceroute、独立--mtu、CDN 测速、IP 文本标注、Globalping、Fast Trace 与 WebUI。
手动编译
需要 Go 1.22+ 环境:
# 完整版(所有功能)
go build -trimpath -o dist/nexttrace -ldflags "-w -s" .
# 精简版(无 MTR、无 Globalping、无 WebUI)
go build -tags flavor_tiny -trimpath -o dist/nexttrace-tiny -ldflags "-w -s" .
# MTR 专用版
go build -tags flavor_ntr -trimpath -o dist/ntr -ldflags "-w -s" .
交叉编译示例:
# Linux arm64 精简版
GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \
go build -tags flavor_tiny -trimpath -o dist/nexttrace-tiny_linux_arm64 -ldflags "-w -s" .
tiny 和 ntr 版本通过 编译期 build tags 裁剪模块——不是运行时开关。可通过 go version -m <binary> 验证 nexttrace-tiny 和 ntr 中不包含 gin 与 globalping-cli。
.cross_compile.sh 脚本支持按版本构建:
./.cross_compile.sh all # 构建全部三个版本(所有平台)
./.cross_compile.sh full # 仅构建 nexttrace(完整版)
./.cross_compile.sh tiny # 仅构建 nexttrace-tiny
./.cross_compile.sh ntr # 仅构建 ntr
发行资产命名规则
Release 二进制文件命名格式:
{二进制名}_{操作系统}_{架构}[v{arm版本}][.exe][_softfloat]
示例:
nexttrace_linux_amd64、nexttrace-tiny_linux_amd64、ntr_linux_amd64nexttrace_darwin_universal、nexttrace-tiny_darwin_universal、ntr_darwin_universalnexttrace_windows_amd64.exe、ntr_windows_amd64.exe
Get Started
NextTrace 默认使用ICMP协议发起TraceRoute请求,该协议同时支持IPv4和IPv6
# IPv4 ICMP Trace
nexttrace 1.0.0.1
# URL
nexttrace http://example.com:8080/index.html?q=1
# 表格输出(报告模式):运行一次探测后打印最终汇总表格
nexttrace --table 1.0.0.1
# 机器可读输出:stdout 只包含一个 JSON 文档
nexttrace --raw 1.0.0.1
nexttrace --json 1.0.0.1
# 将实时 traceroute 输出写入自定义文件
nexttrace --output ./trace.log 1.0.0.1
# 将实时 traceroute 输出写入默认日志文件
nexttrace --output-default 1.0.0.1
# 只进行IPv4/IPv6解析,且当多个IP时自动选择第一个IP
nexttrace --ipv4 g.co
nexttrace --ipv6 g.co
# IPv6 ICMP Trace
nexttrace 2606:4700:4700::1111
# 普通 traceroute 模式下设置 TTL 分组间隔(默认 300ms)
nexttrace -i 300 1.1.1.1
# 禁用路径可视化 使用 --map / -M 参数
nexttrace koreacentral.blob.core.windows.net
# MapTrace URL: https://api.nxtrace.org/tracemap/html/c14e439e-3250-5310-8965-42a1e3545266.html
# 禁用MPLS显示 使用 --disable-mpls / -e 参数 或 NEXTTRACE_DISABLEMPLS 环境变量
nexttrace --disable-mpls example.com
export NEXTTRACE_DISABLEMPLS=1
PS: 路由可视化的绘制模块为独立模块,具体代码可在 nxtrace/traceMap 查看
路由可视化功能因为需要每个 Hop 的地理位置坐标,而第三方 API 通常不提供此类信息,所以此功能目前只支持搭配 LeoMoeAPI 使用。
Windows 用户必须完成的配置步骤
- 对于普通用户模式:
只能使用 ICMP mode,且需防火墙配置允许ICMP/ICMPv6。netsh advfirewall firewall add rule name="All ICMP v4" dir=in action=allow protocol=icmpv4:any,any netsh advfirewall firewall add rule name="All ICMP v6" dir=in action=allow protocol=icmpv6:any,any - 对于管理员模式:
TCP/UDP mode 依赖WinDivert。
ICMP mode 支持1=Socket与2=WinDivert(0=Auto)。使用 Socket 模式时,需防火墙配置允许ICMP/ICMPv6。
在Windows上,ICMPv6未传--tos或显式--tos 0时继续走原生 Socket 发送路径;只有非零ICMPv6 --tos才额外依赖WinDivert发送能力,并要求管理员权限。
WinDivert可使用--init参数自动配置环境;该命令会将运行时解压到可执行文件目录。
NextTrace 现已经支持快速测试,有一次性测试回程路由需求的朋友可以使用
# 北上广(电信+联通+移动+教育网)IPv4 / IPv6 ICMP 快速测试
nexttrace --fast-trace
# 也可以使用 TCP SYN 而非 ICMP 进行测试
nexttrace --fast-trace --tcp
# 也可以通过自定义的IP/DOMAIN列表文件进行快速测试
nexttrace --file /path/to/your/iplist.txt
# 自定义的IP/DOMAIN列表文件格式
## 一行一个IP/DOMAIN + 空格 + 描述信息(可选)
## 例如:
## 106.37.67.1 北京电信
## 240e:928:101:31a::1 北京电信
## bj.10086.cn 北京移动
## 2409:8080:0:1::1
## 223.5.5.5
NextTrace 已支持指定网卡进行路由跟踪
在 macOS 和 Linux 上,--dev 会绑定到指定源网卡。
在 Windows 上,--dev 会从指定网卡解析 source IP,并用该 source address 发起 ICMP/TCP/UDP 探测;它不会把 WinDivert 或 socket 绑定到真实出接口,实际出口仍可能由 Windows 路由表决定。独立 --mtu 模式也遵循相同的 source-address 语义,并额外使用网卡名查询本地 MTU。
# 请注意 Lite 版本此参数不能和快速测试联用,如有需要请使用 enhanced 版本
# 使用 eth0 网卡
nexttrace --dev eth0 2606:4700:4700::1111
# 使用 eth0 网卡IP
# 网卡 IP 可以使用 ip a 或者 ifconfig 获取
# 使用网卡IP进行路由跟踪时需要注意跟踪的IP类型应该和网卡IP类型一致(如都为 IPv4)
nexttrace --source 204.98.134.56 9.9.9.9
NextTrace 也可以使用TCP和UDP协议发起Traceroute请求
# TCP SYN Trace
nexttrace --tcp www.bing.com
# 可以自行指定目标端口[此处为443],默认80端口
nexttrace --tcp --port 443 2001:4860:4860::8888
# UDP Trace
nexttrace --udp 1.0.0.1
# 可以自行指定目标端口[此处为5353],默认33494端口
nexttrace --udp --port 5353 1.0.0.1
# TCP/UDP Trace 可以自行指定源端口,默认使用随机一个固定的端口(如需每次发包随机使用不同的源端口,请设置`ENV` `NEXTTRACE_RANDOMPORT`)
nexttrace --tcp --source-port 14514 www.bing.com
NextTrace 也支持独立的路径 MTU 探测模式
# 类 tracepath 的 UDP PMTU 探测,运行中实时刷行
nexttrace --mtu 1.1.1.1
# mtu 模式同样复用常规的 GeoIP / RDNS 参数
nexttrace --mtu --data-provider IPInfo --language en 1.1.1.1
# JSON 输出沿用独立 mtu schema,并包含 hop.geo
nexttrace --mtu --json 1.1.1.1
--mtu是独立的 UDP-only 模式,不复用普通 traceroute 引擎。- TTY 下会原地更新当前 hop,并为 hop 状态 / PMTU 高亮加色;重定向/管道输出会退化成“定稿一跳输出一行”的无 ANSI 流式文本。
--mtu --json在 stdout 上只输出独立的 MTU JSON 文档。- GeoIP、RDNS、
--data-provider、--language、--no-rdns、--always-rdns、--dot-server都对该模式生效。
NextTrace 也支持独立的 CDN 测速模式
# 默认使用 Apple CDN 后端
nexttrace --speed
# 改用 Cloudflare 后端
nexttrace --speed --speed-provider cloudflare
# 查看测速模式专属帮助
nexttrace --speed --help
# 机器可读输出
nexttrace --speed --json --non-interactive --no-metadata
# 指定测速节点 IP,或绑定 source address / 网卡
nexttrace --speed --endpoint 1.2.3.4
nexttrace --speed --source 192.0.2.10
nexttrace --speed --dev eth0
--speed仅在完整版nexttrace中提供,nexttrace-tiny与ntr不注册该参数。- 主
nexttrace --help只展示顶层--speed入口;测速模式的详细参数放在nexttrace --speed --help。 - 支持的后端为
apple(默认)和cloudflare。 - 复用的公共参数:
--json、--language、--no-color、--dot-server、--timeout、--source、--dev。 - 测速模式专属参数:
--speed-provider、--max、--threads、--latency-count、--non-interactive、--endpoint、--no-metadata。 - 默认终端输出会展示候选节点、最终选中节点、客户端/服务端信息、空载延迟、下载/上传单线程与多线程轮次、负载延迟、总流量、warnings 和 degraded 状态。
--json时,stdout 只输出一个 JSON 文档。- 退出码:
0表示成功,2表示降级完成,1表示失败,130表示被中断。
NextTrace 可以对文本流中的 IP 字面量做归属标注
# 标注单行文本
nexttrace --nali 1.1.1.1
# 标注管道输出
dig example.com +short | nexttrace --nali --data-provider IPInfo --language en
--nali仅在完整版nexttrace中提供,nexttrace-tiny与ntr不注册该参数。- 仅标注 IPv4/IPv6 字面量,并复用 NextTrace 现有 GeoIP provider;不内置 CDN/CNAME 匹配、离线数据库、更新逻辑或 nali 专属路径。
- 复用的公共参数:
--data-provider、--language、--dot-server、--timeout、--dn42、-4、-6。 - 该文本标注模式参考 zu1k/nali 的使用体验;nali 使用 MIT License。
NextTrace也同样支持一些进阶功能,如 TTL 控制、并发数控制、模式切换等
# 每一跳发送2个探测包
nexttrace --queries 2 www.hkix.net
# 无并发,每次只发送一个探测包
nexttrace --parallel-requests 1 www.hkix.net
# 从TTL为5开始发送探测包,直到TTL为10结束
nexttrace --first 5 --max-hops 10 www.decix.net
# 此外还提供了一个ENV,可以设置是否隐匿目的IP
export NEXTTRACE_ENABLEHIDDENDSTIP=1
# 关闭IP反向解析功能
nexttrace --no-rdns www.bbix.net
# 设置探测包总大小为1024字节(含 IP + 探测协议头)
nexttrace --psize 1024 example.com
# 让每个 probe 在 1500 字节内随机大小
nexttrace --psize -1500 example.com
# 设置 TOS / traffic class 字段
nexttrace -Q 46 example.com
# 特色功能:打印Route-Path图
# Route-Path图示例:
# AS6453 塔塔通信「Singapore『Singapore』」
# ╭╯
# ╰AS9299 Philippine Long Distance Telephone Co.「Philippines『Metro Manila』」
# ╭╯
# ╰AS36776 Five9 Inc.「Philippines『Metro Manila』」
# ╭╯
# ╰AS37963 阿里云「ALIDNS.COM『ALIDNS.COM』」
nexttrace --route-path www.time.com.my
# 禁止色彩输出
nexttrace --no-color 1.1.1.1
# 或者使用环境变量
export NO_COLOR=1
高级参数调优速查
| 参数 | 控制内容 | 默认值 / 起步建议 | 什么时候调 |
|---|---|---|---|
--queries |
常规 traceroute 的每跳采样数;MTR 中显式指定每跳探测次数 | traceroute: 3;MTR report: 未指定时 10;MTR TUI/raw: 未指定时无限 |
链路抖动大时可升到 5-10 |
--max-attempts |
每跳最大发包上限 | 默认按 --queries 自动推导 |
丢包严重、回包慢时增大 |
--parallel-requests |
跨 TTL 的总并发 in-flight 探测数 | 18 |
多路径/负载均衡链路用 1;稳定链路一般 6-18 |
--send-time |
同一 TTL 组内相邻探测包间隔 | 50ms |
设备限速时升到 100-200ms;MTR 下忽略 |
--ttl-time |
常规 traceroute 的 TTL 组间隔;MTR 的每跳探测间隔 | traceroute: 300ms;MTR: 未指定时 1000ms |
想加速就调低;远程/限速链路调高 |
--timeout |
单个探测包超时 | 1000ms |
跨洲或高丢包链路升到 2000-3000ms |
--psize |
探测包大小 | 按协议/IP 族自动取最小合法值 | 含 IP + 探测协议头;负值表示每个 probe 在 abs(value) 内随机;超过出接口/路径 MTU 时,链路上可能看到分片 |
-Q, --tos |
IP TOS / traffic class | 0 |
设置 IP 头里的 TOS / traffic class;在 Windows 上仅 ICMPv6 且值非零时额外依赖 WinDivert |
这些探测参数目前仍是 CLI 级配置,nt_config.yaml 还不能直接保存它们。若要复用一组调优参数,建议写成 shell alias 或小脚本。
# 适合多路径 / ECMP 的保守配置
nexttrace --parallel-requests 1 --send-time 100 --ttl-time 500 --timeout 2000 example.com
# 适合稳定单路径链路的快速配置
nexttrace --parallel-requests 18 --send-time 20 --ttl-time 150 example.com
# 适合高丢包长途链路的配置
nexttrace --queries 5 --max-attempts 10 --timeout 2500 example.com
NextTrace 支持 MTR(My Traceroute)连续探测模式
# MTR 模式:使用 ICMP(默认)连续探测,实时刷新表格
nexttrace -t 1.1.1.1
# 等价写法:
nexttrace --mtr 1.1.1.1
# MTR 模式使用 TCP SYN 探测
nexttrace -t --tcp --port 443 www.bing.com
# MTR 模式使用 UDP 探测
nexttrace -t --udp 1.0.0.1
# 设置每个跳点的探测间隔(MTR 模式下默认 1000ms;-z/--send-time 在 MTR 模式下无效)
nexttrace -t -i 500 1.1.1.1
# 限制每个跳点的最大探测次数(TUI 默认无限,报告模式默认 10)
nexttrace -t -q 20 1.1.1.1
# 报告模式:对每个跳点探测 N 次后一次性输出统计摘要(类似 mtr -r)
nexttrace -r 1.1.1.1 # = --mtr --report,默认每跳点 10 次
nexttrace -r -q 5 1.1.1.1 # 每跳点 5 次
# 宽报告模式:主机列不截断(类似 mtr -rw)
nexttrace -w 1.1.1.1 # = --mtr --report --wide
# 在 MTR 输出中同时显示 PTR 和 IP(PTR 在前,IP 括号)
nexttrace --mtr --show-ips 1.1.1.1
nexttrace -r --show-ips 1.1.1.1
nexttrace -w --show-ips 1.1.1.1
# MTR 原始流式模式(面向程序解析,逐事件输出)
nexttrace --mtr --raw 1.1.1.1
nexttrace -r --raw 1.1.1.1
# 与其他选项组合使用
nexttrace -t --tcp --max-hops 20 --first 3 --no-rdns 8.8.8.8
在终端(TTY)中运行时,MTR 模式使用交互式全屏 TUI:
q/Q— 退出(恢复终端,不留下输出)p— 暂停探测- 空格 — 恢复探测
r— 重置统计(计数器清零,显示模式保持不变)y— 循环切换主机显示模式:ASN → City → Owner → Fulln— 切换主机名显示方式:- 默认:PTR(无 PTR 时回退 IP)↔ 仅 IP
- 启用
--show-ips:PTR (IP) ↔ 仅 IP
e— 切换 MPLS 标签显示开/关- TUI 标题栏显示源 → 目标路由信息,指定
--source/--dev时会展示对应信息。 - 使用 LeoMoeAPI 时,标题栏会显示首选 API IP 地址。
- 使用备用屏幕缓冲区,退出后恢复之前的终端历史记录。
- 当 stdin 非 TTY(如管道输入)时,降级为简单表格刷新模式。
报告模式(-r/--report)在所有探测完成后一次性输出统计,适合脚本使用:
Start: 2025-07-14T09:12:00+08:00
HOST: myhost Loss% Snt Last Avg Best Wrst StDev
1. one.one.one.one 0.0% 10 1.23 1.45 0.98 2.10 0.32
2. 10.0.0.2 100.0% 10 0.00 0.00 0.00 0.00 0.00
显示为 (waiting for reply) 的行仍然保留同样的表格列布局,只是该行的指标单元格会留空。
非 wide 报告模式会刻意保持 Host 列精简:
- 只显示
PTR/IP - 不发起 Geo API 查询
- 不显示 ASN / 运营商 / 地理位置字段
- 不显示 MPLS 标签
wide 报告模式(-w / --wide)继续保留当前完整信息行为,包括 Geo 衍生字段和 MPLS 输出。
当 --raw 与 MTR(--mtr、-r、-w)一起使用时,会进入 MTR 原始流式模式。
如果当前数据源是 LeoMoeAPI,会先输出一行无色的 API 信息头:
[NextTrace API] preferred API IP - [2403:18c0:1001:462:dd:38ff:fe48:e0c5] - 21.33ms - DMIT.NRT
之后再逐行输出 | 分隔的事件流:
4|84.17.33.106|po66-3518.cr01.nrt04.jp.misaka.io|0.27|60068|日本|东京都|东京||cdn77.com|35.6804|139.7690
字段顺序:
ttl|ip|ptr|rtt|asn|一级行政区|二级行政区|三级行政区|四级行政区|owner|纬度|经度
超时行保持固定 12 列:
ttl|*||||||||||
在 MTR 模式(--mtr、-r、-w,包括 --raw)下,-i/--ttl-time 设置的是每个跳点的探测间隔:同一跳点两次连续探测之间的等待时间(未显式指定时默认 1000ms)。-z/--send-time 在 MTR 模式下被忽略。
注意:
--show-ips仅在 MTR 模式(--mtr、-r、-w)生效,其他模式会忽略。注意:
--mtr不可与--table、--classic、--json、--output、--output-default、--route-path、--from、--fast-trace、--file、--deploy同时使用。
NextTrace支持用户自主选择 IP 数据库(目前支持:LeoMoeAPI, IP.SB, IPInfo, IPInsight, IPAPI.com, IPInfoLocal, CHUNZHEN)
# 可以自行指定IP数据库[此处为IP-API.com],不指定则默认为LeoMoeAPI
nexttrace --data-provider ip-api.com
## 特别的: 其中 ipinfo 和 IPInsight API 对于免费版查询有频率限制,可从这些服务商自行购买服务以解除限制,如有需要可以 clone 本项目添加其提供的 token 自行编译
## TOKEN填写路径:ipgeo/tokens.go
## 特别的: 对于离线库 IPInfoLocal,请自行下载并命名为 ipinfoLocal.mmdb
## (可以从这里下载:https://ipinfo.io/signup?ref=free-database-downloads),
## 默认搜索用户当前路径、程序所在路径、和 FHS 路径(Unix-like)
## 如果需要自定义路径,请设置环境变量
export NEXTTRACE_IPINFOLOCALPATH=/xxx/yyy.mmdb
## 另外:由于IP.SB被滥用比较严重,会经常出现无法查询的问题,请知悉。
## IP-API.com限制调用较为严格,如有查询不到的情况,请几分钟后再试。
# 纯真IP数据库默认使用 http://127.0.0.1:2060 作为查询接口,如需自定义请使用环境变量
export NEXTTRACE_CHUNZHENURL=http://127.0.0.1:2060
## 可使用 https://github.com/freshcn/qqwry 自行搭建纯真IP数据库服务
# 也可以通过设置环境变量来指定默认IP数据库
export NEXTTRACE_DATAPROVIDER=ipinfo
NextTrace支持使用混合参数和简略参数
Example:
nexttrace --data-provider ip-api.com --max-hops 20 --tcp --port 443 --queries 5 --no-rdns 1.1.1.1
nexttrace -tcp --queries 2 --parallel-requests 1 --table --route-path 2001:4860:4860::8888
Equivalent to:
nexttrace -d ip-api.com -m 20 -T -p 443 -q 5 -n 1.1.1.1
nexttrace -T -q 2 --parallel-requests 1 --table -P 2001:4860:4860::8888
Globalping
Globalping 提供了对成千上万由社区托管的探针的访问能力,可用于运行网络测试和测量。
通过 --from 参数可以选择使用指定位置的探针来执行 traceroute。位置字段支持洲、国家、地区、城市、ASN、ISP 或云厂商区域等多种类型。
nexttrace google.com --from Germany
nexttrace google.com --from comcast+california
匿名用户默认每小时限额为 250 次测试。将 GLOBALPING_TOKEN 环境变量设置为你的令牌后,可将限额提升至每小时 500 次。
export GLOBALPING_TOKEN=your_token_here
环境变量总览
NextTrace 当前会读取下列环境变量。对于布尔开关,只识别 1 和 0,其他值会回退到内置默认值。为了避免混淆,修改后建议重启 NextTrace。
核心运行 / 网络
| 变量名 | 默认值 | 说明 |
|---|---|---|
NEXTTRACE_DEVMODE |
0 |
开发调试模式:致命错误改为 panic,并打印堆栈。 |
NEXTTRACE_DEBUG |
未设置 | 在 GetEnv* 解析环境变量时打印检测到的值。 |
NEXTTRACE_DISABLEMPLS |
0 |
全局禁用 MPLS 显示,效果类似 --disable-mpls。 |
NEXTTRACE_ENABLEHIDDENDSTIP |
0 |
隐匿目的 IP,并省略其主机名显示。 |
NEXTTRACE_RANDOMPORT |
0 |
TCP/UDP 每个探测包使用不同的随机源端口。 |
NEXTTRACE_MAXATTEMPTS |
自动计算 | 当未显式传入 --max-attempts 时,提供默认最大重试次数。 |
NEXTTRACE_ICMPMODE |
0 |
当未显式传入 --icmp-mode 时提供默认值(0=自动、1=Socket、2=WinDivert)。 |
NEXTTRACE_UNINTERRUPTED |
0 |
与 --raw 一起使用时,会在一次探测结束后继续循环执行,而不是退出。 |
NEXTTRACE_PROXY |
未设置 | 为 PoW、Geo API、tracemap 等出站 HTTP / WebSocket 请求设置代理 URL。 |
NEXTTRACE_DATAPROVIDER |
未设置 | 覆盖默认 IP 地理信息源,例如 ipinfo。 |
服务 / Web / 后端
| 变量名 | 默认值 | 说明 |
|---|---|---|
NEXTTRACE_HOSTPORT |
api.nxtrace.org |
覆盖 LeoMoeAPI、tracemap、FastIP 等使用的后端地址,支持 host 或 host:port。 |
NEXTTRACE_TOKEN |
未设置 | 预置 LeoMoeAPI Bearer Token;设置后将跳过 PoW 取 token 流程。 |
NEXTTRACE_POWPROVIDER |
api.nxtrace.org |
指定 PoW 服务提供方;当前内置的非默认别名为 sakura。 |
NEXTTRACE_DEPLOY_ADDR |
未设置 | --deploy 模式下,当未传 --listen 时使用的默认监听地址。 |
NEXTTRACE_ALLOW_CROSS_ORIGIN |
0 |
仅对 --deploy 生效:是否允许跨站浏览器访问 Web UI / API。默认关闭以保证安全。 |
IP 数据库 / 第三方服务
| 变量名 | 默认值 | 说明 |
|---|---|---|
NEXTTRACE_IPINFOLOCALPATH |
自动搜索 | IPInfoLocal 离线库 ipinfoLocal.mmdb 的完整路径。 |
NEXTTRACE_CHUNZHENURL |
http://127.0.0.1:2060 |
纯真 IP 查询服务的基础 URL。 |
NEXTTRACE_IPINFO_TOKEN |
未设置 | IPInfo 数据源使用的 token。 |
NEXTTRACE_IPINSIGHT_TOKEN |
未设置 | IPInsight 数据源使用的 token。 |
NEXTTRACE_IPAPI_BASE |
各 provider 内置地址 | 覆盖当前实现里兼容 HTTP 接口的数据源基础地址(IPInfo、IPInsight、ip-api.com)。 |
IPDBONE_BASE_URL |
https://api.ipdb.one |
覆盖 IPDB.One API 基础地址。 |
IPDBONE_API_ID |
未设置 | IPDB.One API ID。 |
IPDBONE_API_KEY |
未设置 | IPDB.One API Key。 |
GLOBALPING_TOKEN |
未设置 | Globalping 鉴权 token;设置后可提升匿名用户的每小时测试额度。 |
配置文件搜索
| 变量名 | 默认值 | 说明 |
|---|---|---|
XDG_CONFIG_HOME |
取决于系统 / Shell | 如果设置了该变量,NextTrace 也会从 $XDG_CONFIG_HOME/nexttrace 搜索 nt_config.yaml。 |
全部用法详见 Usage 菜单
Usage: nexttrace [-h|--help] [--init] [-4|--ipv4] [-6|--ipv6] [-T|--tcp]
[-U|--udp] [--speed] [--nali] [-F|--fast-trace]
[-p|--port <integer>] [--icmp-mode <integer>] [-q|--queries <integer>]
[--max-attempts <integer>] [--parallel-requests <integer>]
[-m|--max-hops <integer>] [-d|--data-provider
(IP.SB|ip.sb|IPInfo|ipinfo|IPInsight|ipinsight|IPAPI.com|ip-api.com|IPInfoLocal|ipinfolocal|chunzhen|LeoMoeAPI|leomoeapi|ipdb.one|disable-geoip)]
[--pow-provider (api.nxtrace.org|sakura)] [-n|--no-rdns]
[-a|--always-rdns] [-P|--route-path] [--dn42] [-o|--output
"<value>"] [-O|--output-default] [--table] [--raw]
[-j|--json] [-c|--classic] [-f|--first <integer>] [-M|--map]
[-e|--disable-mpls] [-V|--version]
[-s|--source "<value>"] [--source-port <integer>] [-D|--dev
"<value>"] [--listen "<value>"] [--deploy] [-z|--send-time
<integer>] [-i|--ttl-time <integer>] [--timeout <integer>]
[--psize <integer>] [--dot-server
(dnssb|aliyun|dnspod|google|cloudflare)] [-g|--language
(en|cn)] [-C|--no-color] [--from "<value>"] [-t|--mtr]
[-r|--report] [-w|--wide] [--show-ips] [-y|--ipinfo <integer>]
[--file "<value>"] [TARGET "<value>"]
Arguments:
-h --help Print help information
--init Windows ONLY: Extract WinDivert runtime to
executable directory
--speed Run CDN speed test mode. See `nexttrace
--speed --help` for details
--nali Annotate IP literals in text using
NextTrace GeoIP data
-4 --ipv4 Use IPv4 only
-6 --ipv6 Use IPv6 only
-T --tcp Use TCP SYN for tracerouting (default
dest-port is 80)
-U --udp Use UDP SYN for tracerouting (default
dest-port is 33494)
-F --fast-trace One-Key Fast Trace to China ISPs
-p --port Set the destination port to use. With
default of 80 for "tcp", 33494 for "udp"
--icmp-mode Windows ONLY: Choose the method to listen
for ICMP packets (1=Socket, 2=WinDivert;
0=Auto)
-q --queries Latency samples per hop. Increase to 5-10
on unstable paths for a steadier view.
Default: 3
--max-attempts Advanced: hard cap on probe packets per
hop. Leave unset for auto sizing; raise on
lossy links if --queries is not enough
--parallel-requests Advanced: total concurrent in-flight
probes across TTLs. Use 1 on
multipath/load-balanced paths; 6-18 is a
good starting range on stable links.
Default: 18
-m --max-hops Set the max number of hops (max TTL to be
reached). Default: 30
-d --data-provider Choose IP Geograph Data Provider [IP.SB,
IPInfo, IPInsight, IP-API.com,
IPInfoLocal, CHUNZHEN, disable-geoip].
Default: LeoMoeAPI
--pow-provider Choose PoW Provider [api.nxtrace.org,
sakura] For China mainland users, please
use sakura. Default: api.nxtrace.org
-n --no-rdns Do not resolve IP addresses to their
domain names
-a --always-rdns Always resolve IP addresses to their
domain names
-P --route-path Print traceroute hop path by ASN and
location
--dn42 DN42 Mode
-o --output Write trace result to FILE
(RealtimePrinter only)
-O --output-default Write trace result to the default log file
(/tmp/trace.log)
--table Output trace results as a final summary
table (traceroute report mode)
--raw Machine-friendly output. With MTR
(--mtr/-r/-w), enables streaming raw event
mode
-j --json Output trace results as JSON
-c --classic Classic Output trace results like
BestTrace
-f --first Start from the first_ttl hop (instead of
1). Default: 1
-M --map Disable Print Trace Map
-e --disable-mpls Disable MPLS
-V --version Print version info and exit
-s --source Use source address src_addr for outgoing
packets
--source-port Use source port src_port for outgoing
packets
-D --dev Use the specified network device for
explicit source selection. On Windows,
this selects the device source address;
routing may still choose the egress
interface
--listen Set listen address for web console (e.g.
127.0.0.1:30080)
--deploy Start the Gin powered web console
-z --send-time Advanced: per-packet gap [ms] inside the
same TTL group. Lower is faster; raise to
100-200ms on rate-limited links. Ignored
in MTR mode. Default: 50
-i --ttl-time Advanced: TTL-group interval [ms] in
normal traceroute. In MTR mode
(--mtr/-r/-w, including --raw), this
becomes per-hop probe interval. 500-1000ms
is a good MTR starting range
--timeout Per-probe timeout [ms]. Raise to 2000-3000
on slow intercontinental or high-loss
paths. Default: 1000
--psize Probe packet size in bytes, inclusive IP
and active probe headers. Default is the
minimum legal size for the chosen
protocol and IP family; raise for MTU or
large-packet testing. Negative values
randomize each probe up to abs(value).
-Q --tos Set the IP type-of-service / traffic class
value [0-255]. Default: 0
--dot-server Use DoT Server for DNS Parse [dnssb,
aliyun, dnspod, google, cloudflare]
-g --language Choose the language for displaying [en,
cn]. Default: cn
-C --no-color Disable Colorful Output
--from Run traceroute via Globalping
(https://globalping.io/network) from a
specified location. The location field
accepts continents, countries, regions,
cities, ASNs, ISPs, or cloud regions.
-t --mtr Enable MTR (My Traceroute) continuous
probing mode
-r --report MTR report mode (non-interactive, implies
--mtr); can trigger MTR without --mtr
-w --wide MTR wide report mode (implies --mtr
--report); alone equals --mtr --report
--wide
--show-ips MTR only: display both PTR hostnames and
numeric IPs (PTR first, IP in parentheses)
-y --ipinfo Set initial MTR TUI host info mode (0-4).
TUI only; ignored in --report/--raw.
0:IP/PTR 1:ASN 2:City 3:Owner 4:Full.
Default: 0
--file Read IP Address or domain name from file
TARGET Trace target: IPv4 address (e.g. 8.8.8.8),
IPv6 address (e.g. 2001:db8::1), domain
name (e.g. example.com), or URL (e.g.
https://example.com)
项目截图


第三方 IP 数据库 API 开发接口
NextTrace 所有的的 IP 地理位置 API DEMO 可以参考这里
你可以在这里添加你自己的 API 接口,为了 NextTrace 能够正确显示你接口中的内容,请参考 leo.go 中所需要的信息
✨NextTrace LeoMoeAPI 的后端 Demo
GitHub - sjlleo/nexttrace-backend: NextTrace BackEnd
NextTrace LeoMoeAPI现已使用Proof of Work(POW)机制来防止滥用,其中NextTrace作为客户端引入了powclient库,POW CLIENT/SERVER均已开源,欢迎大家使用。(POW模块相关问题请发到对应的仓库)
- GitHub - tsosunchia/powclient: Proof of Work CLIENT for NextTrace
- GitHub - tsosunchia/powserver: Proof of Work SERVER for NextTrace
对于中国大陆用户,可以使用 Nya Labs 提供的位于大陆的POW服务器优化访问速度
#使用方法任选其一
#1. 在环境变量中设置
export NEXTTRACE_POWPROVIDER=sakura
#2. 在命令行中设置
nexttrace --pow-provider sakura
OpenTrace
OpenTrace是 @Archeb 开发的NextTrace的跨平台GUI版本,带来您熟悉但更强大的用户体验。
该软件仍然处于早期开发阶段,可能存在许多缺陷和错误,需要您宝贵的使用反馈。
https://github.com/Archeb/opentrace
NEXTTRACE WEB API
NextTraceWebApi是一个MTR风格的NextTrace网页版服务端实现,提供了包括Docker在内多种部署方式。
在 WebSocket 持续探测模式中,MTR 现改为逐事件推送 type: "mtr_raw"(不再使用周期性 mtr 快照消息)。
https://github.com/nxtrace/nexttracewebapi
NextTraceroute
NextTraceroute,一款默认使用NextTrace API的免root安卓版路由跟踪应用,由 @surfaceocean 开发。
感谢所有测试用户的热情支持,本应用已经通过封闭测试,正式进入 Google Play 商店。
https://github.com/nxtrace/NextTraceroute
![]()
Cloudflare Support
本项目受 Alexandria 计划赞助。

AIWEN TECH Support
本项目受 埃文科技 赞助。 很高兴使用埃文科技城市级IP库增强本项目 GEOIP 查询的准确性与完整性,并免费提供给公众。
JetBrain Support
本项目受 JetBrain Open-Source Project License 支持。 很高兴使用Goland作为我们的开发工具。

Credits
Gubo 靠谱主机推荐
IPInfo 无偿提供了本项目大部分数据支持
BGP.TOOLS 无偿提供了本项目的一些数据支持
PeeringDB 无偿提供了本项目的一些数据支持
Globalping 一个开源且免费的项目,提供全球范围内运行 traceroute 等网络测试的访问服务
sjlleo 项目永远的领导者、创始人及核心贡献者
tsosunchia 项目现任管理、基础设施运维及核心贡献者
Yunlq 活跃的社区贡献者
Others
-
其他第三方 API 尽管集成在本项目内,但是具体的 TOS 以及 AUP,请详见第三方 API 官网。如遇到 IP 数据错误,也请直接联系他们纠错。
-
如何获取最新commit的新鲜出炉的二进制可执行文件?
请前往GitHub Actions中最新一次 Build & Release workflow.
-
常见疑问
- Windows 平台下,ICMP 模式须手动放行ICMP/ICMPv6防火墙
- macOS 平台下,仅 ICMP 模式不需要提权运行
- 在一些情况下,同时运行多个 NextTrace 实例可能会导致互相干扰结果(目前仅在 TCP 模式下有观察到)
IP 数据以及精准度说明
对于IP相关信息的纠错反馈,我们目前开放了两个渠道:
- 本项目的GITHUB ISSUES区中的IP 错误报告汇总帖
- 本项目的纠错专用邮箱:
correct#nxtrace.org(请注意此邮箱仅供IP相关信息纠错专用,其他反馈请发送ISSUE)
NextTrace 有多个数据源可以选择,目前默认使用的 LeoMoeAPI 为我们项目维护的数据源。
该项目由 OwO Network 的 Missuo && Leo 发起,由 Zhshch 完成最早期架构的编写和指导,后由 Leo 完成了大部分开发工作,现主要交由 tsosunchia 完成后续的二开和维护工作。
LeoMoeAPI 是 Leo 的作品,归属于 Leo Network,由 Leo 完成整套后端 API 编写,该接口未经允许不可用于任何第三方用途。
LeoMoeAPI 早期数据主要来自 IPInsight、IPInfo,随着项目发展,越来越多的志愿者参与进了这个项目。目前 LeoMoeAPI 有近一半的数据是社区提供的,而另外一半主要来自于包含 IPInfo、IPData、BigDataCloud、IPGeoLocation 在内的多个第三方数据。
LeoMoeAPI 的骨干网数据有近 70% 是社区自发反馈又或者是项目组成员校准的,这给本项目的路由跟踪基础功能带来了一定的保证,但是全球骨干网的体量庞大,我们并无能力如 IPIP 等商业公司拥有海量监测节点,这使得 LeoMoeAPI 的数据精准度无法和形如 BestTrace(IPIP)相提并论。
LeoMoeAPI 已经尽力校准了比较常见的骨干网路由,这部分在测试的时候经常会命中,但是如果遇到封闭型 ISP 的路由,大概率可以遇到错误,此类数据不仅是我们,哪怕 IPInsight、IPInfo 也无法正确定位,目前只有 IPIP 能够标记正确,如对此类数据的精确性有着非常高的要求,请务必使用 BestTrace 作为首选。
我们不保证我们的数据一定会及时更新,也不保证数据的精确性,我们希望您在发现数据错误的时候可以前往 issue 页面提交错误报告,谢谢。
当您使用 LeoMoeAPI 即视为您已经完全了解 NextTrace LeoMoeAPI 的数据精确性,并且同意如果您引用 LeoMoeAPI 其中的数据从而引发的一切问题,均由您自己承担。
DN42 模式使用说明
使用这个模式需要您配置 2 个文件,分别是 geofeed.csv 以及 ptr.csv
当您初次运行 DN42 模式,NT 会为您生成 nt_config.yaml 文件,您可以自定义 2 个文件的存放位置,默认应该存放在 NT 的运行目录下
GeoFeed
对于 geofeed.csv 来说,格式如下:
IP_CDIR,LtdCode,ISO3166-2,CityName,ASN,IPWhois
比如,您可以这么写:
58.215.96.0/20,CN,CN-JS,Wuxi,23650,CHINANET-JS
如果您有一个大段作为骨干网使用,您也可以不写地理位置信息,如下:
202.97.0.0/16,,,4134,CHINANET-BACKBONE
PTR
对于 ptr.csv 来说,格式如下:
IATA_CODE,LtdCode,RegionName,CityName
比如对于美国洛杉矶,您可以这么写
LAX,US,California,Los Anegles
需要注意的是,NextTrace 支持自动匹配 CSV 中的城市名,如果您的 PTR 记录中有 losangeles,您可以只添加上面一条记录就可以正常识别并读取。