MCPcopy
hub / github.com/nxtrace/NTrace-core

github.com/nxtrace/NTrace-core @v1.7.1 sqlite

repository ↗ · DeepWiki ↗ · release v1.7.1 ↗
2,786 symbols 9,039 edges 240 files 322 documented · 12%
README

NextTrace Logo

NextTrace

一款追求轻量化的开源可视化路由跟踪工具。


主页:www.nxtrace.org

Github Actions

IAAS Sponsor

<a href="https://dmit.io">
    <img src="https://assets.nxtrace.org/dmit.svg" width="170.7" height="62.9">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://misaka.io" >
    <img src="https://assets.nxtrace.org/misaka.svg" width="170.7" height="62.9">
</a>
&nbsp;&nbsp;&nbsp;&nbsp;
<a href="https://portal.saltyfish.io" >
    <img src="https://assets.nxtrace.org/snapstack.svg" width="170.7" height="62.9">
</a>

我们非常感谢 DMITMisakaSnapStack 提供了支持本项目所需的网络基础设施。

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-debs APT 源安装

    • 当前支持:amd64i386arm64armelarmhfloong64mipselmips64elppc64elriscv64s390x
    • 添加源并安装默认包: shell 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: shell sudo apt install nexttrace-tiny sudo apt install ntr
    • 三个包可以共存安装,对应命令分别是:nexttracenexttrace-tinyntr
  • Linux / macOS / BSD

  • 一键安装脚本(完整版,默认) shell curl -sL https://nxtrace.org/nt | bash
  • 一键安装脚本(Tiny) shell curl -sL https://nxtrace.org/nt | bash -s -- --flavor tiny
  • 一键安装脚本(NTR) shell curl -sL https://nxtrace.org/nt | bash -s -- --flavor ntr
  • 安装后的命令名:Full nexttrace,Tiny nexttrace-tiny,NTR ntr

  • Arch Linux AUR 安装命令

    • 直接下载bin包(仅支持amd64) shell yay -S nexttrace-bin
    • 从源码构建(仅支持amd64) shell yay -S nexttrace
    • AUR 的构建分别由 ouuan, huyz 维护
  • Linuxbrew 安装命令

    同 macOS Homebrew 安装方法;homebrew-core formula 提供 Full flavor(nexttrace),nxtrace/nexttrace tap 提供三种 flavor。

  • deepin 安装命令

    shell apt install nexttrace

  • x-cmd 安装命令

    shell x env use nexttrace

  • Termux 安装命令 shell pkg install root-repo pkg install nexttrace

  • ImmortalWrt 安装命令 shell opkg install nexttrace

  • macOS

  • macOS Homebrew 安装命令

    • homebrew-core版 shell brew install nexttrace
    • nxtrace/nexttrace tap 版(按 NTrace-core 最新 release 定期同步) shell brew tap nxtrace/nexttrace brew install nxtrace/nexttrace/nexttrace brew install nxtrace/nexttrace/nexttrace-tiny brew install nxtrace/nexttrace/ntr
    • homebrew-core 构建由 chenrui333 维护,请注意该版本更新可能会落后仓库Action自动构建版本
  • Windows

  • Windows WinGet 安装命令

    • WinGet 版 powershell winget install nexttrace
    • WinGet 构建由 Dragon1573 维护
  • Windows Scoop 安装命令

    • scoop-extras 版 powershell scoop bucket add extras && scoop install extras/nexttrace

    • scoop-extra 由 soenggam 维护

请注意:

  • nexttrace-debs APT 源由 nxtrace 和 wcbing 维护。
  • 其它安装方式中的软件源大多由开源爱好者自行维护,不保证可用性和及时更新;如遇到问题请联系对应维护者,或使用本项目官方编译提供的二进制包。

Manual Install

  • 下载预编译的可执行程序

对于以上方法没有涵盖的用户,请直接前往 Release 下载编译好的二进制可执行文件。 - Release里面为很多系统以及不同架构提供了编译好的二进制可执行文件,如果没有可以自行编译。 - 一些本项目的必要依赖在WindowsGolang底层实现不完全,所以目前NextTraceWindows平台出于实验性支持阶段。

版本说明

从本版本开始,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)/ MCP(--deploy --mcp
快速跟踪(-F
默认运行模式 traceroute traceroute MTR TUI
二进制名 nexttrace nexttrace-tiny ntr

注意: APT (nexttrace-debs)Homebrew tap (nxtrace/nexttrace) 目前提供 Fullnexttrace)、Tinynexttrace-tiny)和 NTRntr)三种包;homebrew-core、AUR、Scoop 等其它包管理器目前仍仅提供 完整版nexttrace)。

功能对比

  • nexttrace — 完整版。包含 traceroute、独立 MTU、CDN 测速、IP 文本标注、MTR、Globalping、Fast Trace、WebUI(--deploy)与 MCP(--deploy --mcp)。
  • nexttrace-tiny — 精简版。保留常规 traceroute、独立 MTU 和 Fast Trace;不含 CDN 测速 / IP 文本标注 / MTR / Globalping / WebUI / MCP。适合嵌入式或极简环境。
  • ntr — MTR 专用版。默认启动 MTR TUI。不含常规 traceroute、独立 --mtu、CDN 测速、IP 文本标注、Globalping、Fast Trace、WebUI 或 MCP。

手动编译

需要 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" .

tinyntr 版本通过 编译期 build tags 裁剪模块——不是运行时开关。可通过 go version -m <binary> 验证 nexttrace-tinyntr 中不包含 ginglobalping-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_amd64nexttrace-tiny_linux_amd64ntr_linux_amd64
  • nexttrace_darwin_universalnexttrace-tiny_darwin_universalntr_darwin_universal
  • nexttrace_windows_amd64.exentr_windows_amd64.exe

Get Started

NextTrace 默认使用ICMP协议发起TraceRoute请求,该协议同时支持IPv4IPv6

# 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/ICMPv6powershell 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=Socket2=WinDivert0=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 也可以使用TCPUDP协议发起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-tinyntr 不注册该参数。
  • 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-tinyntr 不注册该参数。
  • 仅标注 IPv4/IPv6 字面量,并复用 NextTrace 现有 GeoIP provider;不内置 CDN/CNAME 匹配、离线数据库、更新逻辑或 nali 专属路径。
  • 复用的公共参数:--data-provider--language--dot-server--timeout--dn42-4-6
  • 该文本标注模式参考 zu1k/nali 的使用体验;nali 使用 MIT License

NextTrace也同样支持一些进阶功能,如 TTL 控制、并发数控制、模式切换等

```bash

每一跳发送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 exam

Extension points exported contracts — how you extend this code

Tracer (Interface)
(no doc) [6 implementers]
trace/trace.go
Renderer (Interface)
(no doc) [3 implementers]
internal/speedtest/render/render.go
MTROnSnapshot (FuncType)
MTROnSnapshot 每轮完成后的回调,用于刷新 CLI 表格。 iteration 是当前轮次(从 1 开始),stats 是截至当前的聚合快照。
trace/mtr_runner.go
MTRRawOnRecord (FuncType)
MTRRawOnRecord is called for each probe event.
trace/mtr_raw.go
Reporter (Interface)
(no doc) [1 implementers]
reporter/reporter.go
StreamSink (FuncType)
(no doc)
trace/mtu/types.go
Provider (Interface)
(no doc) [2 implementers]
internal/speedtest/provider/provider.go
ProbeFunc (FuncType)
(no doc)
internal/speedtest/latency/latency.go

Core symbols most depended-on inside this repo

Error
called by 160
trace/mtu/runner.go
Close
called by 148
trace/mtu/runner.go
NewMTRAggregator
called by 92
trace/mtr_stats.go
Snapshot
called by 56
trace/mtr_stats.go
t
called by 51
server/web/assets/app.js
Update
called by 51
trace/mtr_stats.go
Error
called by 47
ipgeo/nexttrace_api_v4.go
Text
called by 45
internal/speedtest/text.go

Shape

Function 1,916
Method 598
Struct 230
Interface 18
TypeAlias 14
FuncType 10

Languages

Go98%
TypeScript2%

Modules by API surface

printer/mtr_table_test.go107 symbols
cmd/cmd.go104 symbols
trace/mtr_runner.go68 symbols
trace/mtr_scheduler_test.go65 symbols
printer/mtr_tui.go65 symbols
wshandle/client.go57 symbols
trace/trace.go53 symbols
util/util_test.go51 symbols
internal/service/service.go50 symbols
cmd/mtr_mode_test.go50 symbols
trace/mtr_scheduler_runtime.go47 symbols
util/util.go44 symbols

Dependencies from manifests, versioned

github.com/akamensky/argparsev1.4.0 · 1×
github.com/andybalholm/brotliv1.2.0 · 1×
github.com/bytedance/gopkgv0.1.3 · 1×
github.com/bytedance/sonicv1.15.0 · 1×
github.com/bytedance/sonic/loaderv0.5.0 · 1×
github.com/clipperhouse/uax29/v2v2.2.0 · 1×
github.com/cloudwego/base64xv0.1.6 · 1×
github.com/davecgh/go-spewv1.1.2-0.20180830191 · 1×
github.com/fsnotify/fsnotifyv1.9.0 · 1×
github.com/gabriel-vasile/mimetypev1.4.12 · 1×
github.com/gin-contrib/ssev1.1.0 · 1×

For agents

$ claude mcp add NTrace-core \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact