前言
嗨,小伙伴们!今天给大家安利一个使用、选购服务器时非常常用的一个工具——NextTrace!如果你想搞清楚数据包回国出国的具体路径,是直连还是绕地球一圈,这款工具绝对非常适合你!
NextTrace 是一款用 Golang 实现的开源路由追踪工具,功能强大且轻量化,兼容 IPv4 和 IPv6,支持多协议,还带有可视化地图功能,能让你直观地看到数据包的每一步旅程!不管是 BGP 路由表数据、IP归属地,还是 ASN Whois 信息,它都能一站式搞定,简直就是网络诊断工具中的天花板!
好啦,废话不多说,接下来就教给大家,两行命令轻松上手 NextTrace!
教程
1.使用安装脚本,在linux系统上快速安装。
其它系统请参照文末的说明或链接。
curl nxtrace.org/nt | bash2.快速开始
安装完毕后,此时我们就可以开始测试了。
我们先测一下当前服务器与cloudflare的通讯路由是怎样的。
nexttrace 1.1.1.1当服务器返回了信息后,就可以看到详细的去程路线啦。

我们也可以使用浏览器访问返回的MapTrace URL ,来通过地图的可视化方式来查看。
怎么样?是不是非常的简单?

补充
1.NextTrace 默认使用ICMP协议发起TraceRoute请求,该协议同时支持IPv4和IPv6。
# IPv4 ICMP Trace
nexttrace 1.0.0.1
# URL
nexttrace http://example.com:8080/index.html?q=1
# 表格打印,使用 --table / -t 参数,将实时显示结果
nexttrace --table 1.0.0.1
# 一个方便供机器读取转化的模式
nexttrace --raw 1.0.0.1
nexttrace --json 1.0.0.1
# 只进行IPv4/IPv6解析,且当多个IP时自动选择第一个IP
nexttrace --ipv4 g.co
nexttrace --ipv6 g.co
# IPv6 ICMP Trace
nexttrace 2606:4700:4700::1111
# 禁用路径可视化 使用 --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=12.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.53.指定网卡进行路由跟踪
# 请注意 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.94.NextTrace 也可以使用TCP和UDP协议发起Traceroute请求,不过目前UDP只支持IPv4
# 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.15.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字节
nexttrace --psize 1024 example.com
# 设置载荷大小以及DF标志进行TCP Trace
nexttrace --psize 1024 --dont-fragment --tcp 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 --nocolor 1.1.1.1
# 或者使用环境变量
export NO_COLOR=16.NextTrace支持用户自主选择 IP 数据库(目前支持:LeoMoeAPI, IP.SB, IPInfo, IPInsight, IPAPI.com, Ip2region, 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
## 对于离线库 Ip2region 可NextTrace自动下载,也可自行下载并命名为 ip2region.db
## 另外:由于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=ipinfo7.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 -t -P 2001:4860:4860::8888全部用法详见 Usage 菜单(汉化版)
用法: nexttrace [-h|--help] [-4|--ipv4] [-6|--ipv6] [-T|--tcp] [-U|--udp]
[-F|--fast-trace] [-p|--port <整数>] [-q|--queries <整数>]
[--parallel-requests <整数>] [-m|--max-hops <整数>]
[-d|--data-provider
(Ip2region|ip2region|IP.SB|ip.sb|IPInfo|ipinfo|IPInsight|ipinsight|IPAPI.com|ip-api.com|IPInfoLocal|ipinfolocal|chunzhen|LeoMoeAPI|leomoeapi|disable-geoip)]
[--pow-provider (api.nxtrace.org|sakura)] [-n|--no-rdns]
[-a|--always-rdns] [-P|--route-path] [-r|--report] [--dn42]
[-o|--output] [-t|--table] [--raw] [-j|--json] [-c|--classic]
[-f|--first <整数>] [-M|--map] [-e|--disable-mpls]
[-v|--version] [-s|--source "<值>"] [-D|--dev "<值>"]
[-z|--send-time <整数>] [-i|--ttl-time <整数>]
[--timeout <整数>] [--psize <整数>]
[_positionalArg_nexttrace_32 "<值>"] [--dot-server
(dnssb|aliyun|dnspod|google|cloudflare)] [-g|--language
(en|cn)] [--file "<值>"] [-C|--nocolor]
参数说明:
-h --help 显示帮助信息
-4 --ipv4 仅使用IPv4
-6 --ipv6 仅使用IPv6
-T --tcp 使用TCP SYN进行路由跟踪(默认端口为80)
-U --udp 使用UDP SYN进行路由跟踪(默认端口为33494)
-F --fast-trace 一键快速跟踪至中国ISP
-p --port 设置目标端口。默认TCP为80,UDP为33494
-q --queries 设置每跳的探测包数量。默认值:3
--parallel-requests 设置并发请求数量。多路由时应为1。默认值:18
-m --max-hops 设置最大跳数(最大TTL)。默认值:30
-d --data-provider 选择IP地理信息提供商 [IP.SB, IPInfo, IPInsight,
IP-API.com, Ip2region, IPInfoLocal,
CHUNZHEN, disable-geoip]。默认值:LeoMoeAPI
--pow-provider 选择PoW提供商 [api.nxtrace.org, sakura]。
中国大陆用户建议选择sakura。默认值:api.nxtrace.org
-n --no-rdns 禁止解析IP地址为域名
-a --always-rdns 始终解析IP地址为域名
-P --route-path 按ASN和位置打印路由跳路径
-r --report 使用报告模式输出
--dn42 启用DN42模式
-o --output 将跟踪结果写入文件
(仅限RealTimePrinter模式)
-t --table 以表格形式输出跟踪结果
--raw 以易于解析的格式输出
-j --json 以JSON格式输出跟踪结果
-c --classic 使用类似BestTrace的经典输出模式
-f --first 从指定跳数(TTL)开始(默认从1开始)。默认值:1
-M --map 禁止打印跟踪地图
-e --disable-mpls 禁用MPLS
-v --version 显示版本信息并退出
-s --source 指定用于发出数据包的源地址
-D --dev 指定网络设备作为数据包的源地址
-z --send-time 设置每个数据包发送间隔(毫秒)。
有助于处理部分路由器对ICMP消息的速率限制。
默认值:50
-i --ttl-time 设置按TTL分组发送数据包的间隔(毫秒)。
有助于处理部分路由器对ICMP消息的速率限制。
默认值:50
--timeout 设置探测套接字保持打开的时间(毫秒)。
默认值:1000
--psize 设置负载大小。默认值:52
--_positionalArg_nexttrace_32 IP地址或域名
--dot-server 使用DoT服务器解析DNS [dnssb, aliyun,
dnspod, google, cloudflare]
-g --language 选择显示语言 [en, cn]。默认值:cn
--file 从文件读取IP地址或域名
-C --nocolor 禁用彩色输出
--dont-fragment 设置“不分片”标志(仅适用于IPv4 TCP)。
默认值:false
其他操作系统的安装命令
Linux
一键安装脚本
curl nxtrace.org/nt | bashArch Linux AUR 安装命令
直接下载bin包(仅支持amd64)
yay -S nexttrace-bin从源码构建(仅支持amd64)
yay -S nexttraceAUR 的构建分别由 ouuan, huyz 维护
Linuxbrew 安装命令
同macOS Homebrew安装方法(homebrew-core版仅支持amd64)
Deepin 安装命令
apt install nexttraceTermux 安装命令
pkg install nexttrace-enhanced
macOS
macOS Homebrew 安装命令
homebrew-core版
brew install nexttrace本仓库ACTIONS自动构建版(更新更快)
brew tap nxtrace/nexttrace && brew install nxtrace/nexttrace/nexttracehomebrew-core 构建由 chenrui333 维护,请注意该版本更新可能会落后仓库Action自动构建版本
Windows
Windows Scoop 安装命令
scoop-extras版
scoop bucket add extras && scoop install extras/nexttracescoop-extra 由 soenggam 维护
X-CMD
x-cmd 是一个使用 posix shell 实现的轻量级跨平台包管理器。使用单个命令快速下载并执行
nexttrace:x nexttrace您还可以在用户级安装
nexttrace,且不需要 root 权限x env use nexttrace
请注意,以上多种安装方式的仓库均由开源爱好者自行维护,不保证可用性和及时更新,如遇到问题请联系仓库维护者解决,或使用本项目官方编译提供的二进制包。
结语
Nexttrace项目已经在Git上获得了6.1K的Star,已被使用了超过 2929.2K+ 次,足以见得这个工具的受欢迎程度。vivi也已经上手用了很久,仅需2行命令,就能可视化查看自己的服务器线路,真的是宝藏软件。
大家觉得好用,别忘记去Git给作者大佬点个Star哦~
评论区