一、前言
对于一些网络排障场景,需要借助各类网络排障工具来做一些基础类信息排障和信息收集,本文将从多平台讲述各类网络排障工具的安装及使用方法。
此文将会手机各大平台的主流网络探测工具,如果你对探测原理比较感兴趣,可以查阅笔者的此篇文章。
在测试过程中某些节点可能会返回*号,这是正常的,mtr、traceroute等路径跟踪工具都是根据递增TTL,来拿到每个沿途节点返回的Time-to-live exceeded(TTL耗尽,超过生存时间),从而在IP头部中拿到节点的IP地址;
除非此网关节点不响应任何信息(包括TTL耗尽),则用*表示,响应*并不代表节点不通,路由节点有QoS策略,对于优先级低的协议可以选择响应或者直接DROP,但并不影响它往后给你转发,只要TTL是够的依然会给你查路由转发,因此只需要关注最后一跳的质量。
二、安卓端
1.PingTools
PingTools为安卓端比较常见的网络探测工具,支持traceroute路由跟踪、ping、端口扫描、whois查询等功能。
1)安装
在各手机厂商的应用市场基本可以搜索到,如果无法搜索到,可以在此下载。
2)使用
以路由跟踪为例,来到路由跟踪界面,点击右上角的设置选项:
模式可选UDP、ICMP,默认UDP模式,按需选择,并勾选“不解析主机名称”,防止IP被解析成域名。
保存后,trace到百度的域名为例:
如果是IP则填写IP即可,中间节点未响应并不表示真正意义上的超时,中间路由节点对于ICMP/UDP的QoS优先级不高或者节点本身禁ping状态,即使是通过TTL递增来发ICMP/UDP探测,对端如果静默不做任何TTL耗尽的响应,则会表现为未响应,但并不影响节点转发数据,因此只要看最新的跳数即可。
如上图,最新跳数为18,IP为:39.156.66.10,我们trace解析到的也是这个IP,说明已经到达目的端。
如果想显示更多中间节点提升准确率,可以尝试在设置里面把Ping次数设置高一点(一般2-3次就够)。
2.网络万用表
1)安装
在各手机厂商的应用市场基本可以搜索到,如果无法搜索到,可以在此下载。
主界面如下,支持MTR、Traceroute、端口扫描、Ping探测等主流功能。
2)使用
以mtr和traceroute为例。
mtr:
traceroute:
经过的节点以及对应的域名都会展示。
3.Termux
前两种在安卓端已经基本够用,如果需要命令行版本,那么可以尝试下termux。
下载链接:https://github.com/termux/termux-app/releases/tag/v0.118.0
1)安装
GUI选择源:termux-change-repo
安装root源:
pkg install root-repo
安装traceroute:
pkg install traceroute
2)使用
①禁止反向解析(-n)
traceroute -n <目标地址> # -n 禁止将IP反解成域名
默认使用UDP协议跟踪。
②使用ICMP协议跟踪(-I)
使用ICMP协议跟踪,则可以使用-I(大写的i)参数:
traceroute -n -I <目标地址>
一次没回显,或者很多*****号可以多尝试几次:
带端口的测试需要root权限,不然无法有效进行TCP带端口的跟踪:
所以手机端在非root的情况下几乎没有任何APP能够实现带端口的trace。
三、ios端
以下ios端的路径跟踪工具全部在App Store免费下载,因此只介绍用法。
1.Best NetTools
1)traceroute
输入对端主机后,执行traceroute:
2)mtr
同理,输入目的主机后,执行MTR路径跟踪,将以ICMP协议进行路径跟踪:
2.iNetTools
选择路由轨迹功能,输入目的服务器即可:
3.Network Ping Lite
以traceroute为例,输入目的主机后Start即可:
四、Windows端
1.tracert
windows自带的路由追踪命令,打开DOS窗口后,直接执行即可
tracert -d <目标地址># -d禁止反向解析
2.WinMtr
1)安装
为数不多的windows下可视化的路径追踪工具。
可在官网下载:http://winmtr.net/WinMTR-v092.zip
如无法打开,可点此链接下载,解压后即可运行。
2)使用
主界面参数说明:
选项这里只需要把反向解析的勾选去掉后,其它参数保持默认即可。
探测百度为例:
丢包指标只看最后一跳的Loss%即可,显示为0说明没有丢包。
3.tracetcp
1)安装
winpcap(依赖环境,必须安装):https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe,如无法打开,可[点此下载](https://data.linux-code.com/?dir=filelist/Software/tracetcp)。
winpcap双击安装,tracetcp解压即可。
解压后,在文件路径下,输入cmd回车:
即可打开DOS窗口,此路径下可直接调用tracetcp命令:
当然你把它解压后放到windows的环境变量目录(比如C:/Windows/system32)下,之后管理员身份运行cmd也能直接使用tracetcp,二者选其一即可。
2)使用
使用tracetcp -?
帮助命令,可以看到各个参数含义以及示例:
Examples:
tracetcp www.microsoft.com:80 -m 60
tracetcp post.sponge.com:smtp
tracetcp 192.168.0.1 -n -t 500
这里只讲述带端口的TCP路径跟踪,其它用法根据参数说明使用即可。
①使用TCP指定端口进行路径跟踪
tracetcp <目标IP>:<端口> -n # -n禁止反向解析,-n要加在后面,加在前面会报错
②指定探测次数
-p参数可以指定每个节点的探测次数,不指定默认为3次,比如指定5次可以是:
tracetcp <目标IP>:<端口> -n -p 5
4.BestTrace
1)安装
下载链接:https://www.ipip.net/product/client.html
双击安装即可。
2)使用
①traceroute跟踪
以百度为例,目的主机如果填写的是域名并且返回了多个解析记录,会让你选择其中一个进行路径跟踪:
经过的路由节点的IP归属地信息需要去官网申请Token才能使用,无此类需求可忽略。
带端口的跟踪,只支持勾选TCP(80端口,IPv4),不支持指定其它协议和端口:
②MTR跟踪
打开Best Trace主界面,点击MTR:
填写目的主机后即可开始:
五、Linux端
1.traceroute
1)不加参数,默认使用UDP跟踪
traceroute <目标主机>
加上 -n 参数可禁止反向解析,防止将IP反解成域名。
2)使用ICMP跟踪(-I)
加上-I(大写i)参数,则通过ping请求来探测:
traceroute -I <目的主机>
3)使用TCP端口跟踪(-T/–tcp,-p)
-T或者–tcp指定协议为tcp,-p指定端口,-n禁止反解:
traceroute -n -T -p <目的端口> <目的主机>
4)使用UDP端口跟踪(-U/–udp,-p)
-U或–udp指定协议为udp,-p指定端口,-n禁止反解:
traceroute -n -U -p <目的端口> <目的主机>
2.mtr
1)禁止反向解析(-n)
mtr -n <目的主机>
2)输出结果(-r)
-r参数生成最终的结果,默认只探测10个包,结束后输出报告:
mtr -n <目的主机>
如要指定包量,可以加上-c参数,比如探测100个包后输出报告:
mtr -nr -c 100 <目的主机>
3)指定TCP端口跟踪(-T/–tcp,-P)
比如指定百度的443端口进行跟踪,并且输出报告:
mtr -T -P 443 -nr www.baidu.com
4)指定UDP端口跟踪(-U/–udp,-P)
同理,指定UDP端口跟踪,可以是:
mtr -U -P 80 -nr www.baidu.com
3.nexttrace
基于Golang开发的开源可视化路径跟踪工具,nexttrace的详细介绍,可参考笔者此篇文章。
六、MacOS端
1.mtr
1)安装
brew install mtr
如果macOS没有安装brew命令,则需要先提前安装下brew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2)使用
①禁止反向解析(-n)
sudo mtr <目的主机> -n
没有指定协议,默认使用ICMP进行ping探测。
②输出统计结果(-r)
-r参数生成最终的结果,默认只探测10个包,结束后会输出报告:
sudo mtr -nr <目的主机>
③指定TCP端口跟踪(–tcp,–port)
比如跟踪80端口:
sudo mtr --tcp --port 80 -nr <目的主机>
④指定TCP端口跟踪(–udp,–port)
比如跟踪udp 53端口:
mtr --udp -port 53 -nr <目的主机>
2.traceroute
无需安装,MacOS自带的工具。
1)不加任何参数
不加参数默认用UDP探测:
traceroute <目的IP>
2)指定TCP端口跟踪
比如跟踪TCP 443端口:
traceroute -P tcp -p 443 <目的主机>
3)指定UDP端口跟踪
比如跟踪UDP 53端口:
traceroute -P udp -p 53 <目的主机>