品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

深度剖析轻量且强大的网络路径追踪工具NextTrace - 路径探测的囊中利器

2023-04-15 17:42:43 来源:腾讯云

一、前言

NextTrace为一款轻量化的开源可视化路由跟踪工具,目前支持ICMP、TCP、UDP等多种协议,并通过地址库显示每一跳节点的AS号、归属地情况,并通过路由可视化生成地图路径标注,光是这几样功能可谓对于网络故障定位起到非常大的作用,不排除后续会纳入到各个Linux发行版软件源中。

截止到目前(2023.4),最新版本为v1.1.3,本文将从各个参数讲解NextTrace用法。

二、细究探测原理

探测原理很简单,通过TTL=1一直往上递增,每经过一跳,TTL减1,TTL耗尽后对端网关触发Time-to-live exceeded(TTL耗尽,超过生存时间)就能拿到节点的IP地址,除非此网关节点不响应任何信息,则用*表示,响应*并不代表节点不通,路由节点有QoS策略,对于优先级低的协议可以选择响应或者直接DROP,但并不影响它往后给你转发,只要TTL是够的依然会给你查路由转发。


(资料图)

TTL是IP头部特有字段,RFC791对于IP头部格式的定义如下:

RFC792对于Time-to-live exceededICMP TYPE=11,CODE=0)的定义:如果处理数据包的网关发现TTL字段为零,它必须丢弃该数据包, 网关也可以通过time exceeded消息通知源主机,

通过以上说明,你应该知道怎么手动拿到每一跳的地址,没错,就是指定TTL值,不管是ICMP、TCP、UDP都能指定TTL,让它从1开始递增,只要属于IP协议就行,都会有TTL头部字段,把TTL从1依次递增就能拿到每一跳的地址,比如下面的示例:

for ttl in 1 2 3;do ping -t $ttl 1.1.1.1 -c 1;donefor ttl in 1 2 3;do nping --tcp --ttl $ttl -c 1 -p 80 qq.com;done

上面的示例中,不管是ping测试还是TCP测试,从TTL=1 递增到TTL=3,拿到了三个节点返回的TTL exceeded。

估计很多人会问到,“我发的是TCP/UDP请求,为什么给我返回ICMP协议的TTL耗尽?”,在这里统一回复下:ICMP具备承载网络状态信息的能力,不同ICMP TYPE + CODE组合表示不同状态信息,具体可参考维基百科的ICMP状态码表,比如ttl exceeded,对应的是ICMP TYPE=11,CODE=0

三、安装

1.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)

2.Windows

在 Release页面 下载编译后的二进制文件,在CMD内执行。

3.macOS

brew tap xgadget-lab/nexttrace && brew install nexttrace

四、参数详解

1.无参数追踪

没有明确指定协议的情况下,NextTrace默认会使用ICMP探测,同时支持IPv4、IPv6,比如测试到1.1.1.1的路径:

nexttrace 1.1.1.1

探测原理也很简单,通过TTL递增来拿到每一跳的地址,并默认通过地址库LeoMoeAPI拿到每个IP的AS号、运营商、归属地等信息。

当然也可以直接接域名,如果域名解析返回了多个记录,则会让你手动选取一个:

2.TCP模式路径追踪(-T/--tcp)

不接端口的情况下,默认探测80,可以通过-p指定端口:

nexttrace -T <目的地址> -p 443

很显然,即使是TCP,发往的目的IP从未变过,而是通过递增TTL值,拿到每个节点Time-to-live exceeded返回,最后汇总呈现数据。

3.UDP模式路径追踪(-U/--udp)

不接端口情况下,默认使用53端口探测,同理可通过-p指定端口,比如追踪目的地址2115端口:

nexttrace --udp <目的地址> -p 2115

同理,发送的是UDP探测,通过递增TTL来判断每一跳的节点。

这里服务端通过socat命令在目的端监听了udp 2115端口,收到什么则回显什么,可以看到NextTrace向目的端发送的是无意义的字符串:

4.FAST快速模式(-F/--fast-trace)

适合新手使用,可测试到北上广电信、移动、联通、教育网的trace路径,主要用于定位请求是否出网或者在哪断了,类似于一对多的拨测请求,同时也支持IPv4、IPv6 双栈。

默认ICMP模式:

nexttrace --fast-trace

TCP模式:

nexttrace -F -T

此模式下,当前版本暂不支持UDP。

5.指定端口(-p/--port)

四层才有端口的概念,因此TCP、UDP模式均支持使用此参数,前面的示例中也已经体现,不再重复赘述。

nexttrace -p <端口> <目的地址> --tcpnexttrace -p <端口> <目的地址> --udp

6.指定到每个节点的探测次数(-q/--queries)

不指定的情况下从TTL=1开始递增,每一跳默认探测三次:

通过-q参数可以指定探测次数,因此如果需要更精确的结果,建议适当增加探测次数,如果只希望快速得到结果,也可以适当缩小探测次数,一般默认三次足够了。

nexttrace <目标地址> -q 5  # 指定探测次数为五次

通过wireshark、tshark也能清晰观测到次数的变化,同时从NextTrace的输出结果来看,每个节点的耗时统计也增加到5次。

7.指定最大跳数(-m/-max-hops)

默认30,这里理解成指定最大TTL值更为恰当,因为TTL探测的初始值是可以通过--first参数指定的,不一定从1开始,如果不指定--first参数,则默认从第一个节点往下数N跳。

nexttrace -m 2 <目标地址> # 只跟踪前两跳

8.指定初始TTL值(-f/--first)

前面说过,ttl默认从1开始递增,如果只想看某几跳之后怎么走,比如忽略内网节点,这时候就能通过此参数来指定初始TTL值。

从TTL=3开始探测:

nexttrace -f 3 <目标地址>

可以看到从TTL=3开始递增探测,直接略过了内网网段,第一个外网节点113.87.48.1正好是出口公网运营商的网关。

同时可以配合-m参数,来获取某几跳之间的路径情况,比如从第三跳开始到第六跳可以是:

nexttrace -f 3 -m 6 <目标地址>

9.禁止反向解析(-n/--no-rdns)

防止将IP解析成域名,可以使用此参数。

nexttrace -n <目标地址>

比如下图示例,不加-n参数,1.1.1.1被解析成了域名,加了-n参数后,则没有出现域名。

1.1.1.1是CloudFlare的公共DNS,并且反向解析出来的域名提供web访问能力:

反向解析将会查找IP是否存在PTR记录,并呈现在nexttrace每个节点的输出结果上。

所以可想而知,如果不加-n参数,不光是给每个节点发探测请求,还随之附带PTR记录的DNS query,看是否存在域名的可能性,这将花费一部分不必要的时间,因此没有反向解析域名的需求下,强烈建议默认加上-n参数。

10.启用反向解析(-a/--always-rdns)

默认行为,从上面的抓包可知,NextTrace每次拿到节点后,都会发起PTR查询,-a参数只要查询到了就呈现在结果上:

没有特殊需求一般不建议使用此参数,只会影响探测速度。

11.指定IP数据库(-d/--data-provider )

可以是:IP.SBIPInfoIPInsight,、IP-API.comIp2regionIPInfoLocalCHUNZHEN,默认为LeoMoeAPI

其中ipinfo和IPInsight API对于免费版查询有频率限制,可从这些服务商自行购买服务以解除限制,如有需要可以 clone nexttrace项目添加其提供的token自行编译。TOKEN填写路径为ipgeo/tokens.go:

使用ipinfo的执行效果:

nexttrace -n -d ipinfo <目标地址> # 使用ipinfo IP数据库作为数据源,-n禁止反向解析

Ip2region在第一次执行nexttrace -d Ip2region时会自动下载,也可自行下载并命名为 ip2region.db。

执行效果:

nexttrace -n -d ipinfo <目标地址> # 使用ip2region IP数据库作为数据源,-n禁止反向解析

纯真IP数据库默认使用http://127.0.0.1:2060作为查询接口,可以使用环境变量控制,比如指定纯正数据库API地址为本地2070端口:

export NEXTTRACE_CHUNZHENURL=http://127.0.0.1:2070

此方式需要搭建CHUNZHEN API提供服务,可参考此项目自行搭建,运行效果:

nexttrace -n -d chunzhen <目标地址> # 使用纯正IP数据库作为数据源,-n禁止反向解析

前面说过,不指定的情况下,默认是LeoMoeAPI作为数据源,可以修改环境变量来更改默认IP数据库,比如改成ipipinfo可以是:

export NEXTTRACE_DATAPROVIDER=ipinfo

想永久生效则写进~/.bashrc/etc/profile等配置文件里。

当然你也可以修改源码后重新编译成二进制文件:

12.输出Router-Path路径(-P/--route-path)

此参数可详细显示ASN号路径走向。

nexttrace -nP <目标地址> # -n禁止反向解析,-P打印AS PATH走向,可以混合使用

13.表格形式输出结果(-t /--table)

nexttrace -t -n <目标地址> # -t表格形式输出,-n禁止反向解析

可以看到每个节点都有三次探测数据,前面说过这是默认行为,不要理解为回环。

如果觉得次数太多或者输出不友好,可以使用-q指定次数,比如每一跳只探测1次:

nexttrace -n -t -q 1 <目标地址> # -q 1每一跳只探测一次,-n禁止反向解析

14.经典输出(-c/--classic)

nexttrace -n -c -q 1 <目标地址> # -q 1每一跳只探测一次,-n禁止反向解析

输出结果有点类似BestTrace,较为简略。

15.禁用地图视图(-M/--map)

聪明的读者早已发现,上面的示例中,几乎每次输出都会附带一个MapTrace URL,这个地址将会在地图上标注每一跳的地址,能更直观看到路径走向,判断是否绕路。

首先来看看不禁用地图的展示效果

nexttrace -nP 2.16.150.1  #-n禁止反向解析,-P输出AS PATH走向

最后拿到了一个URL地址,浏览器访问这个地址:

默认为平铺视图,会在地图上绘制各个节点,行程一跳路径走向图,鼠标单击坐标点,可以看到节点IP和TTL延时等信息,鼠标右击则有放大、缩小、3D视角、启用/禁用 路由表显示、启用/禁用 二维码显示等功能:

禁用路由表展示后,更多节点将一览无余:

切换成3D视角则为地球视角:

如需禁用地图功能,使用-M参数即可

nexttrace -n -M <目标地址> # -n禁止反向解析,-M禁用地图

16.指定源地址探测(-s/--source)

一个系统上可能有多个网卡或IP地址,在多外网出口情况下,不同地址所走出口可能不一样(取决于内网有没有配置这些策略),使用此参数可指定某个固定IP作为源地址往外探测。

比如我的网卡上有两个内网IP,我想指定其中一个往外发包,可以是:

nexttrace -n -s 192.168.1.8 <目标地址>

17.指定网卡设备(-D/--dev)

如果系统有多张网卡,通过-D参数可选其中一个网卡作为出向。

nexttrace -n -D <网卡名> <目的IP>

而如果想指定网卡的某个内网IP,也能配合-s参数:

nexttrace -n -D <网卡名> -s  <目的IP>

18.展示路由表信息(-R/--route)

数据源来自BGP.Tools官网,BGP.Tools提供了BGP路由追踪、AS路径分析、寻找最短路径、IP地址定位等多种功能,

nexttrace -n -R <目标地址>

将每一个节点的AS号以及所连接到的AS号信息全部展示,可以看到和bgp.tool查询的一致:

19.指定发包时间间隔(-z/--send-time)

默认为100ms的发包时间间隔,有些节点可能有频率限制,比如1分钟内只允许ping 3次,超过次数则DROP不返回任何报文(包括TTL耗尽的报文),NextTrace呈现上就是显示*号,不回显,但仍然给你转发数据包,这时候探测间隔起到了至关重要的作用。

比如设置发包速率为1000ms,可以是:

nexttrace -n -z 1000 <目标地址>

抓包可以看到每个发送包之间间隔为1s,符合预期。

20.指定每一组探测包的时间间隔(-i/--ttl-time)

前一个参数-z是指定每一个包之间的发包间隔,而-i是指定每一组(不同TTL为一个组)包的时间间隔,默认值500ms,不要搞混。

比如指定组之间的探测间隔为1s:

nexttrace -n -i 1000 <目标地址>

从抓包可以看到,因为没有指定-z参数,所以组内的包与包之间,探测间隔为100ms,而组与组之间(第三个包属于TTL=1的组,第四个包属于TTL=2的组)的探测间隔为1s,符合设定的1000ms。

结合上面学到的参数,以下几个参数可以同时混合搭配控制速率及频率,比如每个节点只探测一次,每个组内发包间隔为200ms,组间发包间隔为1s:

nexttrace -n -q 1 -z 200 -i 1000 <目标地址>

这些控制速率和频率的参数主要为了尽量让更多的节点得到回显,便于精准定位请求在哪个节点断连。

21.首选语言项(-g/--language)

指定输出使用的语言,可选:encn,即英文或中文,默认为中文。

nexttrace -n -g en <目标地址>  #指定输出语言为英文

五、总结

以上所有参数可以混合搭配使用,鉴于不同使用场景,灵活变通,权当是种历练。鉴于NextTrace轻量、强大且全面的功能,日常使用上基本可以覆盖traceroute、mtr等工具的能力,且某些功能甚至能更胜一筹(譬如展示AS号、运营商归属地、地图路径等),如果条件允许的情况下,更建议迭代替换到NextTrace;如此这般,没有理由不把这一排错利器收入囊中。

标签:

(责任编辑:)

相关文章

深度剖析轻量且强大的网络路径追踪工具NextTrace - 路径探测的囊中利器

​NextTrace为一款轻量化的开源可视化路由跟踪工具,目前支持ICMP、TCP、UDP等多种协议,并通过地址库显示每一跳节点的AS号、归属地情况,并通过

2023-04-15 17:42:43

统筹账户和个人账户怎么区分?农民参保有统筹账户的钱吗?

​统筹账户和个人账户怎么区分?农民参保有统筹账户的钱吗?社保网小编整理如下统筹账户和个人账户,最初建立于城镇职工基本养老保险。我们在参

2023-04-15 15:56:17

楼市企稳信号!70城房价数据来了

​国家统计局15日发布数据显示,2023年3月份,70个大中城市中,商品住宅销售价格上涨城市个数增加,各线城市商品住宅销售价格环比上涨,一线城市

2023-04-15 14:20:39

福建三明连下2天雨春笋暴长50cm顶起桌子 当事人:怎么处理成难题 今日播报

​00:34原标题:福建三明连下2天雨春笋暴长50cm顶起桌子当事人:怎么处理成难题4月13日,福建三明,男子发现下2天

2023-04-15 12:37:47

全省重点园区产业链发展和招商工作现场会召开-环球动态

​14日,全省重点园区产业链发展和招商工作现场会在福州市连江县召开。省政府党组成员康涛出席会议并讲话。

2023-04-15 10:54:05

周末起大规模升温强势来袭 最高气温30℃线将北扩至西北-环球热点

​本周末(4月15日至16日),华北、东北地区的沙尘天气将减弱缓解,南方大部迎来短暂降水间歇期,大范围晴天上线。随着雨水停歇,阳光“上岗...

2023-04-15 09:52:05

观天下!沙尘再起!申城今有轻度污染

​沙尘天气又要“卷土重来”了!根据上海中心气象台发布的数据,受新一轮沙尘天气影响,本市今天有轻度霾,将出现轻度污染过程。与

2023-04-15 08:15:22

IMF第一副总裁:美联储应该调整其政策框架_每日热点

​国际货币基金组织(IMF)第一副总裁GitaGopinath周五表示,美联储应该调整货币政策框架来适应供应冲击更频繁和通胀高级风险更大的局面。“我们

2023-04-15 06:09:09

每日速讯:间接费包含哪些税金_间接费包括哪些

​1、间接费包括规费及企业管理费组成。2、规费包括:工程排污费、定额测定费、社会保险费(养老保险、失业保险、医疗保险)、住

2023-04-15 03:40:33

中国成功实施陆基中段反导拦截技术试验_全球观速讯

​2023年4月14日晚,中国在境内进行了一次陆基中段反导拦截技术试验,试验达到了预期目的。这一试验是防御性的,不针对任何

2023-04-14 23:06:41

河南提出建立健全院前急救体系 争取“黄金急救时间”

​中新网郑州4月14日电(刘鹏李雯)院前急救对于急危重症患者的重要性不言而喻。近日,河南省官方审议通过的《河南省基本医疗卫生与健康促进条例》

2023-04-14 21:30:49

迪卡517 dk517|每日动态

​今天来聊聊关于迪卡517,dk517的文章,现在就为大家来简单介绍下迪卡517,dk517,希望对各位小伙伴们有所帮助。

2023-04-14 20:01:11

即时焦点:玛蒂尔德·哈尔塞_关于玛蒂尔德·哈尔塞介绍

​玛蒂尔德·哈尔塞,关于玛蒂尔德·哈尔塞介绍这个很多人还不知道,我们一起来看看!1、玛蒂尔德·哈尔塞(MathildeHALSE),女,1999年5月2日出

2023-04-14 19:02:32

瑞丰农商行一季度实现归母净利3.47亿元,同比增长16.05%_世界短讯

​4月14日,瑞丰农商行发布2023年第一季度业绩快报数据显示,2023年1-3月,该行实现营业收入9 14亿元,同比增长8 04%;归属于上市公司股东的净利

2023-04-14 18:04:31

Mysteel调研:华中钢厂产库多增 发货有所打折(2023年4月14日)|天天短讯

​本周华中区域钢厂排产呈现河南、湖南区域周环比增加、湖北区域周环比继续减少。库存方面,河南、湖北区域钢厂库存周环比继续增加,湖南区域钢

2023-04-14 17:16:10

世界今日讯!图片报:利物浦想要赫拉芬贝赫,本周已派代表与经纪公司进行对话

​直播吧4月14日讯德媒《图片报》报道称,拜仁队中年轻的中场赫拉芬贝赫是利物浦有意的目标,他们已经尝试进行初步接触。日前

2023-04-14 16:13:03

恩凯蒂亚回归训练 或在周末联赛中复出

​据阿森纳随队记者透露,前锋恩凯蒂亚已经恢复了训练,有望在周末阿森纳客场对阵西汉姆联的联赛中迎来复出。

2023-04-14 15:41:56

4月起江西医保“省内无异地”,这些你需要了解! 世界新动态

​什么是“省内无异地”?“省内无异地”是指江西参保人在江西省内医保定点医药机构就医购药,无需办理异地备案手续,可享受与参保地同等的医...

2023-04-14 14:58:16

天天看点:工商银行喜结良缘金条30克价格今天多少一克(2023年04月14日)

​金投网提供工商银行喜结良缘金条30克价格今天多少一克(2023年04月14日),工商银行喜结良缘金条30克价格最新消息(2023年04月14

2023-04-14 13:37:31

小厨宝是什么材料的(小厨宝什么牌子好)|世界时讯

​小厨宝是什么物品对于现在人们的追求就是特别的小巧方便,节能让我们的生活更加的美好。有的人对于厨房的物品不是很了解这个产品,也不知道我

2023-04-14 11:30:24

高校“2元盖浇饭”18年未涨价,彰显教育的温度-新资讯

​面对“2元盖浇饭”,学子应有敬畏心

2023-04-14 10:43:29

马特乌斯:马内在萨尔茨堡就为转会罢训,拜仁早该知他非简单人物_播资讯

​报道中表示,在2014年萨尔茨堡红牛对阵马尔默的欧冠附加赛前,一心想离队的马内就已经单方面没有参加训练,在球队失利无缘欧冠正赛之后,他也

2023-04-14 10:15:59

焦点速看:澳部长称希望对华贸易尽快正常,将在未来几周访华

​【环球网报道记者索炎琦】据《卫报》澳大利亚版13日报道,澳贸易部长法雷尔当天接受采访时表示,希望中国对澳大利亚商品实

2023-04-14 09:10:29

天天要闻:离谱!网店兜售“三寸金莲”一双几百上千元 回应:是非遗收藏品

​离谱!网店兜售“三寸金莲”一双几百上千元,回应:是非遗收藏品

2023-04-14 08:22:00

国联证券给予旭光电子买入评级,募投项目有望提前完成促业务快速放量

​每经AI快讯,国联证券04月14日发布研报称,给予旭光电子(600353 SH,最新价:13 03元)买入评级。评级理由

2023-04-14 07:17:03

手机屏幕暗和亮哪个好?_世界讯息

​需要分两种情况。1 外部环境光线较强时,例如白天,手机暗屏幕因为看不清楚所以较伤害眼睛。2 外部环境较暗时。例如晚上关灯以后,手机屏幕亮

2023-04-14 05:53:15

srand_time_NULL_srand 天天热闻

​1、srand函数是随机数发生器的初始化函数,通过参数srand里的参数,改变系统提供的种子值,从而可以使得每次调用ra

2023-04-14 01:56:22

关注:万亿储能风起 一级市场投资人怎么看投资机会

​从政策端和产业端的动向中,均能看到业界正在密集加速布局储能,整个市场已临近爆发的“奇点”。4月12日,国家能源局印发《2023年能源工作...

2023-04-13 22:08:49

山东资本市场月报(2023年3月):泓淋电力上市,37鲁企更新上市审核状态 全球速讯

​记者|王雅洁实习生|杨佳琪●013月山东新增A股上市公司1家OnShandongCapitalMarket

2023-04-13 21:11:29

【全球时快讯】* 巴奴“天价土豆”换名后重新上架,曾被质疑虚假宣传

​4月13日,南方都市报消息,有来自西安的消费者发现,巴奴毛肚火锅此前宣称要下架的富硒土豆又重新换了名字在门店上架。

2023-04-13 19:59:04