Skip to content

Releases: nxtrace/NTrace-core

v1.7.4

Choose a tag to compare

@tsosunchia tsosunchia released this 11 Oct 08:34
8884923

What's Changed

  • 新增 -k/--traceroute,可显式选择传统 traceroute;nexttrace-tiny 新增可选 MTR TUI、报告和 RAW 模式 by @tsosunchia in nxtrace#229
  • 三个 flavor 均支持 MTR JSON:--mtr --json 输出 NDJSON,-r/-w --json 输出最终报告 by @tsosunchia in nxtrace#230
  • 新增 MTR 会话录制与离线回放;录制可与 TUI、报告、RAW、JSON 输出配合,回放不发起探测 by @tsosunchia in nxtrace#237
  • 扩展 MTR 统计列,新增几何均值与抖动指标;支持自定义列、TUI 列编辑,以及将当前统计保存为 TXT、JSON 或 HTML 报告 by @tsosunchia in nxtrace#231, nxtrace#239, nxtrace#240
  • 新增 --doctor 环境自检,在不发送探测包的情况下报告目标解析、源地址选择、路由预测和后端初始化结果 by @tsosunchia in nxtrace#232
  • 新增 Linux --fwmark,为本地 traceroute 和 MTR 探测设置策略路由标记;系统路由规则仍由用户配置 by @tsosunchia in nxtrace#233
  • 加强 deploy/MCP 请求限制:限制探测参数和登录正文大小,并设置 HTTP 读取与空闲连接超时 by @tsosunchia in nxtrace#228
  • 修复 MTR 与 WebUI 对零 RTT 成功响应的统计和显示问题
  • 修正 --tos 策略路由选源与配置失败处理,并改进抓包过滤,避免无关 TOS 流量混入 by @tsosunchia in nxtrace#236, nxtrace#238
  • 改进 Geo HTTP 连接与缓存复用、DN42 GeoFeed 前缀查询和 MTR 聚合快照处理,降低重复查找与热路径开销 by @tsosunchia in nxtrace#218, nxtrace#219, nxtrace#220, nxtrace#221
  • 升级至 Go 1.27.1,macOS 发布构建最低版本提高至 13.0;更新 quic-go、go-runewidth、miekg/dns、testify 等依赖 by @tsosunchia in nxtrace#216

额外的:
本版本尚未切换 nexttrace 和 nexttrace-tiny 的默认模式,默认仍为传统 traceroute。依赖传统 RAW 输出的调用可使用 --traceroute --raw;未来默认模式切换将另行公告。
MTR TUI 和 --mtr --raw 未指定 -q 时持续运行;report/wide 模式(包括与 --raw 组合)默认每跳探测 10 次。自动化调用请显式设置 -q。
Linux --fwmark 仅适用于本地 traceroute/MTR,NextTrace 不会修改系统路由规则;设置标记需要相应 Linux capability。
macOS 最低支持版本为 13.0。源码构建需要 Go 1.27.1+;对齐正式发布构建时使用 GOEXPERIMENT=nojsonv2。

Full Changelog: v1.7.3...v1.7.4

v1.7.3

Choose a tag to compare

@tsosunchia tsosunchia released this 26 Aug 22:30
40ac803

What's Changed

  • 新增 traceroute 终止原因:根据 ICMPv4 / ICMPv6、TCP、UDP 的实际响应语义区分 destination_reached、unreachable 和 max_hops,不再通过响应 IP 是否等于目标 IP 判断终点 by @EveCat29 in nxtrace#205
  • 修复稳定收到不可达响应后仍继续探测更高 TTL 的问题;同一 TTL 存在 transit 响应时会继续探测,避免 ECMP 路径误终止 by @tsosunchia in nxtrace#209
  • 新增标准 ICMP unreachable marker,包括 !N、!H、!P、!F、!X 等;分片 MTU 未知时仅输出 !F
  • 普通终端输出和 Fast Trace 新增 Trace Stopped 终止说明;--output / --output-default 会同步写入无 ANSI 的纯文本原因
  • CLI JSON 新增可选 StopReason,包含 hop、reason、responses、markers;classic / raw / JSON 不追加文本 footer,保持机器可读输出兼容
  • Web、REST、WebSocket 和 MCP 新增结构化 stop_reason;MTR report / raw 新增 path_end,逐 probe 记录可携带 response
  • MTR 改为根据响应证据维护路径边界;无限运行时 unreachable 边界可被后续 transit 响应重新打开,有限运行以最终 path_end 为准
  • MTR TUI、report 和 WebUI 会将 unreachable marker 显示在对应 Host 旁,并按语义终点过滤更高 TTL 的陈旧记录
  • 明确多输出模式优先级:--json > --table > --classic > --raw > --output > 实时输出;日志输出被覆盖时会通过 stderr 提示且不创建无效文件
  • 将官方 GeoIP 数据源统一命名为 NextTrace API,机器可读 data_provider 规范值统一为 NextTrace-API;继续兼容大小写不敏感的 LeoMoeAPI / LeoMoe 输入别名 by @tsosunchia in nxtrace#208
  • 修复配置 NextTrace API v4 token 后部分服务请求仍初始化 v3 WebSocket 连接的问题
  • 更新依赖:github.com/modelcontextprotocol/go-sdk 1.7.0、github.com/stretchr/testify 1.12.0、golang.org/x/mod 0.40.0、golang.org/x/net 0.58.0 等

额外的:
本版本重点调整 traceroute / MTR 的路径终止判断。程序不再通过最后一个响应地址是否等于目标地址推断是否到达终点,而是使用协议响应语义。
依赖结构化输出的程序应优先读取 traceroute 的 stop_reason / StopReason 和 MTR 的 path_end。
MTR raw stdout 仍保持固定 12 列,不可达边界诊断写入 stderr。
旧的 LeoMoeAPI / LeoMoe provider 输入仍然有效,但输出已统一为 NextTrace-API。

Full Changelog: v1.7.2...v1.7.3

v1.7.2

Choose a tag to compare

@tsosunchia tsosunchia released this 13 Aug 01:36
57e8723

What's Changed

  • 新增独立 DNS 客户端模式:完整版 nexttrace 支持 -l / --dns,通过 NextTrace adapter 复用 natesales/q v0.19.12 公共子包,提供 q-compatible DNS 查询体验
  • DNS 模式支持 UDP/TCP、DoT、DoH、DoQ、ODoH、DNSCrypt,并支持 plain DNS、DoT、DoH、DNSCrypt 的 DNS Stamp server 形式
  • DNS 模式支持 pretty、column、raw、json、yaml 输出,以及多 server、多 RR type、reverse lookup、DNSSEC/EDNS、NSID、A/AAAA 应答 PTR 补查与 recursive AXFR
  • DNS 模式兼容 q 配置习惯:支持 ~/.qrc、Q_DEFAULT_SERVER、NO_COLOR、SSLKEYLOGFILE 等输入
  • DNS 客户端仅包含在 full nexttrace;nexttrace-tiny / ntr 不注册该功能,传入 -l / --dns 会提示使用 full build
  • 加固 DNS 客户端边界:修复 ECS、QUIC、敏感 HTTP header 日志、bootstrap resolver 递归、CHAOS marker、IPv6 zone、非正 timeout、AXFR 文件路径等边界问题
  • 新增 DNS 客户端架构文档,记录 q adapter 边界、依赖体积、差分测试、已知语义差异和后续升级协议
  • 修复 NextTrace API v4 GeoIP 输出中组织信息与 v3 输出不一致的问题,优先使用 domain 作为 owner,缺失时回退 owner
  • 修复 MTR 探测结果 hop 切片分配上限,避免异常 hop 数导致过大分配
  • 更新依赖:github.com/natesales/q 0.19.12、github.com/quic-go/quic-go 0.61.0、golang.org/x/net 0.57.0、github.com/mattn/go-runewidth 0.0.27、github.com/charmbracelet/log 1.0.0 等

额外的:
DNS 模式是独立 CLI 工作流,-l / --dns 必须作为第一个参数;它不会替换 traceroute、GeoIP/RDNS、WebUI、MCP 或其他服务路径使用的 resolver。
从源码构建现在要求 Go 1.26.5+;macOS 原生构建 TCP/UDP 抓包仍需要 Xcode Command Line Tools 与 cgo / libpcap。
tiny / ntr 仍保持轻量 flavor 边界,不包含 DNS 客户端依赖。

Full Changelog: v1.7.1...v1.7.2

v1.7.1

Choose a tag to compare

@tsosunchia tsosunchia released this 16 Jun 12:29
c991982

What's Changed

  • 修复 Fast Trace 初始化流程:--fast-trace / --file 现在会先准备 LeoMoeAPI runtime,再进入快速测试,避免 GeoIP / FastIP 相关初始化缺失
  • 修复配置 NEXTTRACE_API_V4_TOKEN 时 Fast Trace 仍初始化旧 v3 WebSocket 的问题;v4 token runtime 准备成功后会跳过 v3 WS
  • 修复 Fast Trace 中重复注册 signal / interrupt 处理的问题,减少 Ctrl-C、退出和 WebSocket 清理路径的副作用
  • 修正 Fast Trace runtime prepared 判定,避免已由上层准备 runtime 后仍重复创建 / 关闭 LeoMoe WebSocket
  • Fast Trace IPv4 / IPv6 路径统一复用 runtime 初始化与 WebSocket 清理逻辑,降低不同路径行为不一致的风险
  • 升级 Go toolchain 到 1.26.4,CI / build / regression workflow 同步固定使用 Go 1.26.4
  • 更新依赖:golang.org/x/net 0.56.0、golang.org/x/sys 0.46.0、golang.org/x/term 0.44.0、golang.org/x/sync 0.21.0、github.com/quic-go/quic-go 0.59.1、github.com/mattn/go-runewidth 0.0.24 等

额外的:
本版本主要是 Fast Trace 初始化稳定性修复和依赖 / 工具链更新。
配置 NextTrace API v4 token 的用户,Fast Trace 会优先走 v4 runtime,不再无意义初始化旧 v3 LeoMoe WebSocket。
--from 路径不受 Fast Trace runtime 初始化影响。

Full Changelog: v1.7.0...v1.7.1

v1.7.0

Choose a tag to compare

@tsosunchia tsosunchia released this 29 May 14:05
4c4c07c

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-sdk 1.6.0、golang.org/x/net 0.54.0、tidwall/gjson 1.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

Choose a tag to compare

@tsosunchia tsosunchia released this 12 May 03:28
21fdd74

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

Choose a tag to compare

@tsosunchia tsosunchia released this 23 Apr 01:47
3ba3d0f

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

Choose a tag to compare

@tsosunchia tsosunchia released this 10 Apr 08:46

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

Choose a tag to compare

@tsosunchia tsosunchia released this 21 Mar 02:59

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 精简版、ntr MTR 专用版
  • 进一步修复 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

Choose a tag to compare

@tsosunchia tsosunchia released this 28 Nov 03:45
82cebb7

What's Changed

额外的:
若需在 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