Releases: nxtrace/NTrace-core
v1.7.0
What's Changed
- 新增 NextTrace API v4 HTTP GeoIP provider:当数据源为
LeoMoeAPI且配置了NEXTTRACE_API_V4_TOKEN时,GeoIP 查询会改用GET https://api.nxtrace.org/v4/ipGeo?ip=<ip>,并通过X-NextTrace-Token请求头传 token - 新增
-x/--setup-api-v4-token:可在当前 shell 会话中粘贴并保存 NextTrace API v4 token,后续从该 shell 启动的nexttrace会自动加载 nexttrace -x使用临时 token 文件,不写 shell profile、永久环境变量或nt_config.yaml;同时提供 parent-PID session 文件和 same-user fallback 文件,兼容go run等 wrapper 启动方式- 没有可用 v4 token 时,
LeoMoeAPI默认仍走旧 v3 WebSocket / PoW 流程;配置 v4 token 后会跳过 v3 WebSocket 初始化 - 优化 NextTrace API v4 GeoIP 性能:缓存并复用 HTTP client / keep-alive 连接,减少连续 GeoIP 查询时的重复 client 创建
- v4 client cache 按 endpoint、token、timeout、当前 GeoDNS resolver 区分,并限制最多 32 个缓存项;淘汰旧项时会关闭 idle connections
- 规范化 v4 endpoint 与 GeoDNS resolver:自动 trim endpoint,GeoDNS resolver 名称统一 trim + lowercase,避免缓存键和嵌套 resolver 作用域因大小写/空格不一致而分裂
- 加固 v4 token 文件处理:使用临时文件原子写入,校验 token 目录 owner、权限、symlink 和文件类型,Unix 下要求同用户拥有且目录权限为
0700 - 加固 v4 GeoIP 请求:补齐最小超时、总耗时限制、网络/超时/5xx 重试、响应体大小限制、错误响应解析和 token 脱敏
- 解析 NextTrace API v4 quota headers:支持读取
X-NextTrace-Quota-Remaining、X-NextTrace-Quota-Expires-At、X-NextTrace-Quota-Cost、X-NextTrace-Quota-Source,但不改变默认输出格式 - 修复 MTR TCP / UDP GeoIP 补全:按 GeoIP / RDNS 配置决定是否标记 pending metadata 与启动异步补全,避免关闭 metadata 时留下无意义的 Geo 占位
- 调整 MTR metadata 立即重试与并发
- 新增 MTR TUI 历史视图:交互式 MTR 中按
d/D可在经典指标表与 History 视图间切换,默认仍保持经典表格 - 新增 History 图表模式切换:历史视图下按
g/G可在 heatmap、bars、sparkline 三种图表间循环 - History 视图会保留最近 3 分钟、按探测时间戳归窗的延迟与超时样本,并显示
Host、Last、Avg、Loss、History - 优化 MTR history 布局、取样、配色与渲染性能,改善宽终端显示、未来时间戳、无色输出、超时样本和临时分配
- 更新依赖:
modelcontextprotocol/go-sdk1.6.0、golang.org/x/net0.54.0、tidwall/gjson1.19.0 等
额外的:
这是集成 nexttrace api v4 的首个版本;未配置 NEXTTRACE_API_V4_TOKEN 时默认行为仍保持旧 v3 WebSocket / PoW。
历史视图只在 TTY 交互式 MTR 下启用;非 TTY / report / raw 输出保持原有行为。
History 列使用固定 100ms 延迟刻度;启用 --no-color 时使用 ASCII,并以 x 表示超时样本。
Full Changelog: v1.6.5...v1.7.0
v1.6.5
What's Changed
- 新增 Deploy MCP 模式:
nexttrace --deploy --mcp会在 deploy 网络服务中挂载 Streamable HTTP MCP endpoint/mcp,供 Agent / MCP Client 直接调用 NextTrace 能力 - 新增 deploy token 鉴权:支持
--deploy-token与NEXTTRACE_DEPLOY_TOKEN;外网监听且未手动设置 token 时会自动生成 token,WebUI / REST API / WebSocket / MCP 均受保护 - 新增浏览器登录页
/auth/login:WebUI 可通过 HttpOnly Cookie 访问受保护页面;Agent / API / MCP 支持Authorization: Bearer <token>与X-NextTrace-Token - 新增共享
internal/service层,为 Web / MCP 提供结构化能力入口,覆盖 traceroute、MTR report/raw、MTU、speed、Nali 标注、Geo lookup 与 Globalping - 新增 MCP tool 集合:
nexttrace_capabilities、nexttrace_traceroute、nexttrace_mtr_report、nexttrace_mtr_raw、nexttrace_mtu_trace、nexttrace_speed_test、nexttrace_annotate_ips、nexttrace_geo_lookup、nexttrace_globalping_trace、nexttrace_globalping_limits、nexttrace_globalping_get_measurement - 增强 Globalping MCP 支持:支持多 location / ASN / magic location 字符串发起全球 traceroute,返回 measurement id、probe 信息、ASN / network / tags、hops 与 raw output,不再只取第一个结果
- 修复 Globalping MCP 默认端口与协议边界:TCP 默认
80,UDP 默认33494,ICMP 保持无端口语义,避免 Agent 调用 ICMP 时生成无效 payload - 补充 NextTrace Agent Skill:新增
skills/nexttrace/,说明 MCP 启动、客户端注册、全工具能力、Globalping 用法、CLI fallback、平台限制、校验流程与输出模板 - 强化 deploy / MCP 安全与稳定性:鉴权默认 fail-closed,禁止 URL query token,CORS 补齐 MCP DELETE 与鉴权 header,WebSocket / MCP / API 未授权访问均拒绝
- 改进取消与 shutdown 行为:修复 WebSocket 重连、Fast Trace prompt、stdin reader、目标解析等路径在 context cancel / deadline 下的日志、阻塞与退出语义
额外的:
--mcp 只能与 --deploy 同用,不提供 stdio MCP 模式。
本地 loopback 监听默认免 token;外网监听建议显式设置 --deploy-token 或 NEXTTRACE_DEPLOY_TOKEN,避免自动生成 token 出现在日志 / CI 输出中。
Globalping 是远端探针能力,不支持本地 source_address / source_device / dot_server / packet_size / tos / ttl_interval 等本机 trace 参数。
nexttrace-tiny / ntr 不注册 WebUI / MCP deploy 参数。
Full Changelog: v1.6.4...v1.6.5
v1.6.4
What's Changed
- 新增独立 CDN 测速模式
--speed:支持 Apple(默认)与 Cloudflare 后端、候选节点选择、指定--endpoint、--source/--dev、TTY 输出、非交互模式和--json机器可读输出 - 新增文本 IP 标注模式
--nali:可标注命令参数或管道输入中的 IPv4 / IPv6 字面量,并复用 NextTrace 现有 GeoIP provider、--data-provider、--language、--dot-server、--dn42、-4/-6 - MTR 的 Geo / RDNS metadata 改为异步补全:先显示基础 hop,再回填 Host / Geo 信息,减少 LeoMoeAPI、RDNS 慢查询对 TUI 启动和刷新的阻塞
- 补强 LeoMoeAPI / WebSocket 链路:避免旧响应串入新请求、缺失 websocket 时解析异常、关闭竞态、失败 lookup 重试过密,以及 MTR API 信息缓存时间不刷新的问题
- 明确 Windows
--dev语义:它只通过 source address 影响路由选择,不代表真实绑定出接口;独立--mtu也遵循该 source-address 语义,并额外使用网卡名查询本地 MTU - 修复 WebUI deploy 监听竞态:服务端会先完成 bind 再输出访问地址,
--listen :0会显示实际监听端口 - 改进 Windows / source-device 相关容错:WinDivert runtime 错误保留原始信息,不支持真实网卡绑定的平台不再把
SourceDevice传入 ICMP 发送路径 - 更新依赖:
x/net、x/term、powclient v0.3.0,并将 release action 升级到 v3
额外的:
--speed 和 --nali 仅在完整版 nexttrace 中提供,nexttrace-tiny 与 ntr 不注册这两个参数。
--speed --json 在 stdout 上只输出一个 JSON 文档;退出码 2 表示测速降级完成。
Windows 上 --dev 不保证真实出接口;如果需要严格控制出口,请以系统路由表和指定 source IP 的实际行为为准。
Full Changelog: v1.6.2...v1.6.4
v1.6.2
What's Changed
- 进一步补强
--source/--dev的跨平台行为:macOS / Linux 上会绑定到指定源网卡;Windows 上--dev继续只用于选择 source address,不再进入不受支持的绑定路径,相关错误提示也更明确 - 补强 Darwin 抓包兼容性:TCP / UDP 的本机定向抓包不再强制请求 promisc,修复部分 macOS 环境下
pcap open failed ... Cannot set as promisc导致--tcp/ UDP 探测不可用的问题 - 改进 Windows 下的 WinDivert 运行时容错:缺少 runtime 时不再直接崩溃,共享打开路径增加 panic 防护,并同步调整
--init的说明与行为 - 收紧 source-device、sniff handle 与相关运行时校验,避免不支持的平台或无效句柄进入错误路径
- 更新依赖:
github.com/fatih/color升级到v1.19.0,github.com/mattn/go-runewidth升级到v0.0.22
额外的:
curl -sL https://nxtrace.org/nt | bash 仍默认安装完整版 nexttrace
如需tiny或 ntr,可分别使用:
curl -sL https://nxtrace.org/nt | bash -s -- --flavor tiny
curl -sL https://nxtrace.org/nt | bash -s -- --flavor ntr
在 macOS 和 Linux 上,--dev 表示绑定指定源网卡;在 Windows 上,--dev 只用于选择 source address,不保证真实出接口
Full Changelog: v1.6.1...v1.6.2
v1.6.1
What's Changed
- 新增 MTR 模式,支持交互式 TUI、
--report报告模式、--raw流式输出,以及--wide、--show-ips、-y/--ipinfo等显示控制 - 重写 MTR 调度与统计逻辑,改为 Per-Hop 独立调度,支持每跳多并发探测,修复高丢包场景下的统计偏差、ghost row、超发残影和已到达目的地后高 TTL 脏数据问题
- Web Console 的 MTR 路径同步升级,新增渲染节流与最终 TTL 截断逻辑;WebSocket 持续探测下的 MTR 消息也改为逐事件推送
mtr_raw - 新增独立的
--mtu模式,用于路径 MTU 探测;该模式独立于普通 traceroute / MTR,引入单独的输出与 JSON schema,并支持 GeoIP、RDNS、--dot-server等常用参数 - 补强
--mtu模式的输出与平台兼容性:TTY 下支持状态与 PMTU 高亮,重定向/管道输出退化为无 ANSI 的逐行流式文本,并补齐 Windows 下的 MTU 处理、WinDivert 超时/过滤与权限提示问题 - 调整
--psize语义为“探测包总大小”(包含 IP 与探测协议头),默认按协议和 IP 族自动取最小合法值;同时支持负值随机化每个 probe 的包大小,并新增-Q/--tos用于设置 IP TOS / traffic class - 常规 traceroute 新增输出文件能力,支持
--output <FILE>和--output-default,便于实时落盘和脚本处理 - Windows 下移除了对 Npcap 的依赖,ICMP/TCP/UDP 监听统一改为 WinDivert SNIFF 模式,并修复上下文取消后句柄未释放导致的卡住问题
--dot-server现在不仅影响目标域名解析,也会影响 GeoIP / LeoMoe FastIP 等相关请求的域名解析,并在失败时回退系统 DNS- 异步化 Geo 查询并调整 traceroute 默认间隔,降低探测过程中的额外等待
- 从本版本开始,NextTrace 在同一 release tag 下同时提供三种构建版本:
nexttrace完整版、nexttrace-tiny精简版、ntrMTR 专用版 - 进一步修复 DNS、trace、WebSocket、Globalping、tracemap、FastIP 等链路中的上下文取消、关闭竞态与缓存同步问题
额外的:
-t 现在用于 --mtr;如果你想要旧的表格输出,请改用 --table
--table 现在是一次探测完成后的最终汇总表,不再是旧的实时 table 刷新模式
nexttrace 包含常规 traceroute、独立 --mtu、MTR、Globalping 和 WebUI;nexttrace-tiny 保留常规 traceroute、独立 --mtu 与快速跟踪;ntr 默认进入 MTR TUI,不提供常规 traceroute / 独立 --mtu / Globalping / WebUI
Windows 下通常只需要 WinDivert,不再像 v1.5.0 那样依赖 Npcap
包管理器当前默认提供的是完整版 nexttrace
Full Changelog: v1.5.0...v1.6.1
NextTrace 在同一 release tag 下发布 三种构建版本,按需选用:
| 功能 | nexttrace(完整版) |
nexttrace-tiny |
ntr |
|---|---|---|---|
| 常规 traceroute | ✅ | ✅ | — |
| MTR TUI | ✅ | — | ✅(默认) |
MTR 报告(-r) |
✅ | — | ✅ |
MTR 宽报告(-w) |
✅ | — | ✅ |
MTR 原始输出(--raw) |
✅ | — | ✅ |
Globalping(--from) |
✅ | — | — |
WebUI(--deploy) |
✅ | — | — |
快速跟踪(-F) |
✅ | ✅ | — |
| 默认运行模式 | traceroute | traceroute | MTR TUI |
| 二进制名 | nexttrace |
nexttrace-tiny |
ntr |
v1.5.0
What's Changed
- 修复 trace 时延迟计时错误的问题 by @Yunlq in nxtrace#94
- 完成了 UDP/UDPv6 模式的 Windows 支持与并发优化 by @Yunlq in nxtrace#96
- 修复 MPLS 功能及特殊情况下的稳定性 by @tsosunchia in nxtrace@c3780f2 nxtrace@8aad34f
- 为 TCP/UDP 等模式引入 MPLS Label 支持 by @Yunlq in nxtrace#100
- 移除了 PrintFunc 中的 status 通道,使用 WithCancelCause 区分中断退出 by @Yunlq in nxtrace#103
- 完善了错误处理 by @Yunlq in nxtrace#105
- 完成了 TCP/TCPv6 模式的 Windows 支持 by @Yunlq in nxtrace#110
- 优化了 UDP 模式,提升了其在NAT环境下的表现 by @Yunlq in nxtrace#114
- 用 RWMutex 统一保护 IPPools,局部缓存 ch,避免 concurrent map read/write panic by @tsosunchia in nxtrace@7580acd
- 优化了 ICMP 模式,提升了其在 Windows 上的表现 by @Yunlq in nxtrace@72a3781
- 增加 GEOIP 查询失败时的重试次数,减少由此引起的 panic 概率 by @Yunlq in nxtrace@114fa5c
- 修复DN42的显示bug by @Cryolitia in nxtrace#119
- 添加web console by @tsosunchia in nxtrace@762579e nxtrace@d46731f
- 增加 Globalping 支持 by @radulucut in nxtrace#123
- 缓解 Leomoeapi 断线导致的卡死问题 by @tsosunchia in nxtrace@2f73e3d
额外的:
若需在 Windows 下使用 TCP/TCPv6 模式需要自行前置应用 Npcap 和 WinDivert
其中的 WinDivert 可通过 --init 参数安装
在 Windows 版中新增参数 --icmp-mode 和新环境变量 NEXTTRACE_ICMPMODE,使用户可以手动控制所有模式中 ListenICMP 函数的选择,默认的自动决策依赖是否有 admin 权限,以及是否成功调用 Npcap ;若强制指定 PCAP 模式但实际无法使用,也会给出报错提示并自动回退到 Socket 模式
Full Changelog: v1.4.2...v1.5.0
v1.4.3-rc.1
What's Changed
- 修复 trace 时延迟计时错误的问题 by @Yunlq in nxtrace#94
- 完成了 UDP/UDPv6 模式的 Windows 支持与并发优化 by @Yunlq in nxtrace#96
- 修复 MPLS 功能及特殊情况下的稳定性 by @tsosunchia in nxtrace@c3780f2 nxtrace@8aad34f
- 为 TCP/UDP 等模式引入 MPLS Label 支持 by @Yunlq in nxtrace#100
- 移除了 PrintFunc 中的 status 通道,使用 WithCancelCause 区分中断退出 by @Yunlq in nxtrace#103
- 完善了错误处理 by @Yunlq in nxtrace#105
- 完成了 TCP/TCPv6 模式的 Windows 支持 by @Yunlq in nxtrace#110
- 优化了 UDP 模式,提升了其在NAT环境下的表现 by @Yunlq in nxtrace#114
- 用 RWMutex 统一保护 IPPools,局部缓存 ch,避免 concurrent map read/write panic by @tsosunchia in nxtrace@7580acd
- 优化了 ICMP 模式,提升了其在 Windows 上的表现 by @Yunlq in nxtrace@72a3781
- 增加 GEOIP 查询失败时的重试次数,减少由此引起的 panic 概率 by @Yunlq in nxtrace@114fa5c
额外的:
若需在 Windows 下使用 TCP/TCPv6 模式需要自行前置应用 Npcap 和 WinDivert
其中的 WinDivert 可通过 --init 参数安装
在 Windows 版中新增参数 --icmp-mode 和新环境变量 NEXTTRACE_ICMPMODE,使用户可以手动控制所有模式中 ListenICMP 函数的选择,默认的自动决策依赖是否有 admin 权限,以及是否成功调用 Npcap ;若强制指定 PCAP 模式但实际无法使用,也会给出报错提示并自动回退到 Socket 模式
Full Changelog: v1.4.2...v1.4.3-rc.1
v1.4.2
What's Changed
- add support for geoip data from ipdb.one by @SaltyfishEd in b5673b6
- add support for custom source ports and optimize some code by @Yunlq in nxtrace#85
- 变更:FastTrace 增加上海/广州单独测试选项 by @tsosunchia in 0f8a646
- 整合:LEOMOEAPI 的 SNI 改用 api.nxtrace.org by @tsosunchia in 3defedd
- chore(deps):
- bump golang.org/x/sync from 0.13.0 to 0.15.0 by @dependabot[bot] in nxtrace#88
- bump golang.org/x/net from 0.39.0 to 0.41.0 by @dependabot[bot] in nxtrace#89
- bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 by @dependabot[bot] in nxtrace#90
- bump golang.org/x/sync from 0.15.0 to 0.16.0 by @dependabot[bot] in nxtrace#93
- bump golang.org/x/net from 0.41.0 to 0.42.0 by @dependabot[bot] in nxtrace#92
- bump golang from 1.24.1 to 1.24.5 by @tsosunchia in ac14ef4
New Contributors
- @Yunlq made their first contribution in nxtrace#85
Full Changelog: v1.4.0...v1.4.2
v1.4.1
Full Changelog: v1.4.0...v1.4.1
v1.4.0
What's Changed
新功能
- 完整支持 IPv6 UDP 模式追踪 in bcd430c
性能优化
- TCP/UDP 模式支持固定源端口,改善负载均衡网络下的追踪效果
可通过NEXTTRACE_RANDOMPORT环境变量切换回随机端口模式
#296 #297 in 90b1a3c 4d8e7e3 - 优化 WebSocket 连接的并发控制 in 9af629b
- 改进 ICMPv6 头部处理机制 in d6de649
- 解决 UDP 模式下的端口竞争问题 in dccc41b
依赖更新
- 升级 Go 至 1.24 版本 in c095599
其他改进
Thanks
Full Changelog: v1.3.7...v1.4.0