前言
今天给大家安利一款路由追踪工具,NextTrace ——或许是热爱开源的知友们的路由跟踪软件的新选择。
其实路由跟踪也不是什么新鲜事情了,早在很久之前,就有 mtr 这样的软件,可以很直观的显示路由的情况。直到 BestTrace 的出现,将 IP 和 地理位置完美地结合在了一起,自此说到测路由,基本多数都在使用 BestTrace。
再到后来也有 WorstTrace * 这样的后起之秀,他们都是非常优秀的软件,本软件的灵感也来源于此。
- WorstTrace 将会在新版本推出基于 TCP SYN 的路由跟踪功能,也会成为一个不错的选择,如果大家有兴趣也可以试试。
另外,BestTrace (IPIP)官宣将会推出付费版,于是大佬@sjlleo自己写了这款开源的 NextTrace。
NextTrace 一共有2个版本,专注于轻量的 Lite 版本以及更面向发烧友的 Enhanced 版本。
NextTrace Enhanced
NextTrace Enhanced 是面向发烧友的增强版,Enhanced提供Web API形式的路由跟踪调用,以及一个简单的自带可视化的Looking Glass网页。
Enhanced 版本支持很多lite版本没有的功能,如能够自定义设置超时时间,也能指定TTL作为起点进行路由跟踪等,对于普通用户来说,通常lite版本已经足够完成大部分需要。
项目地址
安装方法
# Linux 一键安装脚本
sudo bash -c "$(curl -Ls https://raw.githubusercontent.com/OwO-Network/nexttrace-enhanced/main/nt_install.sh)"
# GHPROXY 镜像(国内使用)
sudo bash -c "$(curl -Ls https://ghproxy.com/https://raw.githubusercontent.com/OwO-Network/nexttrace-enhanced/main/nt_install.sh)"
# 对于macOS或一些支持brew进行包管理的可以使用此命令安装
brew tap OwO-Network/nexttrace-enhanced && brew install nexttrace
# IPv4 ICMP Trace
nexttrace 1.0.0.1
# 报告打印(生成报告表单,并非实时,一次性输出)
nexttrace -table 1.0.0.1
# IPv6 ICMP Trace
nexttrace 2606:4700:4700::1111
NextTrace 已支持指定网卡进行路由跟踪
# 使用 eth0 网卡
nexttrace -D eth0 2606:4700:4700::1111
# 使用 eth0 网卡IP
# 使用网卡IP进行路由跟踪时需要注意跟踪的IP类型应该和网卡IP类型一致(如都为 IPv4)
nexttrace -S 204.98.134.56 9.9.9.9
NextTrace 现已支持 Web API,可以通过网络端进行路由跟踪测试
# 建议使用前先使用 nexttrace -c 进行API端的 Token 配置
nexttrace -w
NextTrace 现已经支持快速测试,有一次性测试回程路由需求的朋友可以使用
# 北上广(电信+联通+移动+教育网)IPv4 ICMP 快速测试
nexttrace -f
# 也可以使用 TCP SYN 而非 ICMP 进行测试
nexttrace -f -T
NextTrace 也可以使用TCP和UDP协议发起Traceroute请求,不过目前只支持IPv4
# TCP SYN Trace
nexttrace -T www.bing.com
# 可以自行指定端口[此处为443],默认80端口
nexttrace -T -p 443 1.0.0.1
# UDP Trace
nexttrace -U 1.0.0.1
nexttrace -U -p 53 1.0.0.1
NextTrace 现已支持 traceMap,可以将路由显示在地图上
# 测试完成后,将返回一个查看结果的URL
nexttrace -M www.bing.com
NextTrace也同样支持一些进阶功能,如 IP 反向解析、并发数控制、模式切换等
# 每一跳发送2个探测包
nexttrace -q 2 www.hkix.net
# 无并发,每次只发送一个探测包
nexttrace -r 1 www.hkix.net
# 关闭默认开启的IP反向解析(rdns)功能
nexttrace -n www.bing.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 -report www.time.com.my
NextTrace 支持用户自主选择 IP 数据库(目前支持:LeoMoeAPI, IP.SB, IPInfo, IPInsight, IPAPI.com)
# 可以自行指定IP数据库[此处为IP.SB],不指定则默认为LeoMoeAPI
nexttrace -d IP.SB
## 特别的:其中 ipinfo API 需要从ipinfo自行购买服务,如有需要可以clone本项目添加其提供的token自行编译
## TOKEN填写路径:ipgeo/tokens.go
## 另外:由于IP.SB被滥用比较严重,会经常出现无法查询的问题,请知悉。
## IPAPI.com限制调用较为严格,如有查询不到的情况,请几分钟后再试。
NextTrace 自定义 DNS 解析服务器
# 使用 Google DNS 8.8.8.8 解析 www.gstatic.com 的 IP
nexttrace -dns 8.8.8.8 www.gstatic.com
NextTrace支持参数混合使用
Example:
nexttrace -d IPInsight -m 20 -p 443 -q 5 -r 20 -rdns 1.1.1.1
nexttrace -T -q 2 -r 1 -rdns -table -report 2001:4860:4860::8888
NextTrace Lite
Lite 版本追求轻量化,并不提供基于高德地图 / OpenStreetMap 的路由可视化功能,如有需要,请使用 Enhanced 版本。
项目地址
安装方法
# Linux 一键安装脚本
bash <(curl -Ls https://raw.githubusercontent.com/sjlleo/nexttrace/main/nt_install.sh)
# GHPROXY 镜像(国内使用)
bash <(curl -Ls https://ghproxy.com/https://raw.githubusercontent.com/sjlleo/nexttrace/main/nt_install.sh)
# macOS brew 安装命令
brew tap xgadget-lab/nexttrace && brew install nexttrace
Windows 用户请直接前往 Release 下载编译后的二进制 exe 文件。
- Release里面为很多系统以及不同架构提供了编译好的二进制可执行文件,如果没有可以自行编译。
- 一些本项目的必要依赖在Windows上Golang底层实现不完全,所以目前NextTrace在Windows平台出于实验性支持阶段。
NextTrace 默认使用ICMP协议发起TraceRoute请求,该协议同时支持IPv4和IPv6
# IPv4 ICMP Trace
nexttrace 1.0.0.1
# 表格打印(一次性输出全部跳数,需等待20-40秒)
nexttrace -table 1.0.0.1
# IPv6 ICMP Trace
nexttrace 2606:4700:4700::1111
NextTrace 现已经支持快速测试,有一次性测试回程路由需求的朋友可以使用
# 北上广(电信+联通+移动+教育网)IPv4 ICMP 快速测试
nexttrace -f
# 也可以使用 TCP SYN 而非 ICMP 进行测试
nexttrace -f -T
NextTrace 已支持指定网卡进行路由跟踪
# 请注意 Lite 版本此参数不能和快速测试联用,如有需要请使用 enhanced 版本
# 使用 eth0 网卡
nexttrace -D eth0 2606:4700:4700::1111
# 使用 eth0 网卡IP
# 网卡 IP 可以使用 ip a 或者 ifconfig 获取
# 使用网卡IP进行路由跟踪时需要注意跟踪的IP类型应该和网卡IP类型一致(如都为 IPv4)
nexttrace -S 204.98.134.56 9.9.9.9
NextTrace 也可以使用TCP和UDP协议发起Traceroute请求,不过目前只支持IPv4
# TCP SYN Trace
nexttrace -T www.bing.com
# 可以自行指定端口[此处为443],默认80端口
nexttrace -T -p 443 1.0.0.1
# UDP Trace
nexttrace -U 1.0.0.1
nexttrace -U -p 53 1.0.0.1
NextTrace也同样支持一些进阶功能,如 TTL 控制、并发数控制、模式切换等
# 每一跳发送2个探测包
nexttrace -q 2 www.hkix.net
# 无并发,每次只发送一个探测包
nexttrace -r 1 www.hkix.net
# 从TTL为5开始发送探测包,直到TTL为10结束
nexttrace -b 5 -m 10 www.decix.net
# 关闭IP反向解析功能
nexttrace -n www.bbix.net
# 特色功能:打印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 -report www.time.com.my
NextTrace支持用户自主选择 IP 数据库(目前支持:LeoMoeAPI, IP.SB, IPInfo, IPInsight, IPAPI.com)
# 可以自行指定IP数据库[此处为IP.SB],不指定则默认为LeoMoeAPI
nexttrace -d IP.SB
## 特别的:其中 ipinfo API 需要从ipinfo自行购买服务,如有需要可以clone本项目添加其提供的token自行编译
## TOKEN填写路径:ipgeo/tokens.go
## 另外:由于IP.SB被滥用比较严重,会经常出现无法查询的问题,请知悉。
## IPAPI.com限制调用较为严格,如有查询不到的情况,请几分钟后再试。
NextTrace支持参数混合使用
Example:
nexttrace -d IPInsight -m 20 -p 443 -q 5 -r 20 -rdns 1.1.1.1
nexttrace -T -q 2 -r 1 -table -report 2001:4860:4860::8888
它能做什么
其实 NextTrace 经历了这么多版本迭代,功能已经非常复杂了,让我们从最基础的功能说起吧。
基础功能
它拥有2个显示模式
常规模式:它会实时显示路由跟踪的Hop。

图表模式:为了能够计算间隔保证整齐,所以需要等所有的结果都出来以后才会一起显示。

目前 IPv6 电信和移动的骨干网都完成了的大致的校准,这应该是目前第一个提供国内 IPv6 骨干网地理位置的路由跟踪软件。
NextTrace 对电信CN2、联通169骨干网的数据支持其实很糟糕,骨干网标记错误的情况可谓的上是家常便饭,对于该类用户或许还是应该考虑使用 BestTrace 能够获得更好的体验。对于 IPv6 来说,目前只有移动用户方可获得比较好的使用体验。

路由跟踪协议
路由跟踪可以使用 TCP、UDP、ICMP 三种协议进行,NextTrace 在 IPv4 下已经完成了对三者的支持,IPv6目前只完成了 ICMP 协议。
TCP、UDP可以指定端口进行测试,这也是基础特性之一。

使用UDP协议,53端口进行测试
一键测试
使用 -f 参数,一键测试路由的情况

*Enhanced 版本的 Fast Test 会优先使用高阶配置内的偏好设置
进阶功能
Route Path
除了以上基础功能,NextTrace 还拥有一个 Route-Path 功能,使用 -report 参数即可食用

遇到IX会高亮标注哦
可视化显示
如果你是 BestTrace 的忠实粉丝,你一定不会忘记地图可视化带来的直观显示!可惜在 Linux 上面普遍没有这个特性,现在 NextTrace 把它带到了 Linux 上面!

加上 -M 参数,在路由跟踪结束以后,会获得一个地址,打开它以后就是本次的路由跟踪地图路径。

轻量级 Looking Glass
NextTrace 使用 Golang 开发,所以有幸可以直接使用上强大的 Gin 框架,也就有了 Web 端。

具体使用请阅读说明文档,可以自定义端口的,移步至高阶设置就可以看到啦。
终端 json 格式输出
这个没啥好多说的了吧

高阶设置
想要定制化符合自己口味的路由跟踪软件?NextTrace Enhanced Edition 正是为此而来。
使用 -c 参数调出偏好设置页面

在这里,您可以自由改变一些软件的默认偏好,这样就可以不用在每次路由跟踪的时候手动输入参数了。

您也可以在 Web API 设置内修改监听端口。