玩VPS的同学们不可避免的会遇到网络不通的问题,这时候就需要用网络诊断工具进行诊断,看看到底是哪里的问题。网络诊断工具包括 ping
、traceroute
以及 mtr
,主要都是通过发送 ICMP 包,来测试网络连通性。简单地说,mtr
集成了 ping
和 traceroute
,使用更为方便。
安装 MTR
Ubuntu/debian:
apt update apt upgrade apt install mtr-tiny
yum update
yum install mtr
Arch Linux:
pacman -Syu pacman -S mtr
Mac OS X:
brew install mtr
安装 WinMTR,之后的文章可能会介绍。
使用 MTR
在基于 Unix 的系统上(Linux 和 MacOS),我们可以使用下面命令产生报告:
mtr -rw [destination_host]
其中 destination_host
请替换成自己需要测试的IP或者域名地址,比如:
mtr -rw www.google.com
或者:
mtr -rw 8.8.8.8
如果没有显示任何丢包,但是你又确信你的网络存在问题,可以加快发包速度:
mtr -rwc 50 -i 0.2 -rw 12.34.56.78
参数说明:-c
表示发包次数,-i
表示发包间隔。
更多的参数设定,可以通过 mtr -h
进行查看。
阅读 MTR 报告
在我的搬瓦工 THE PLAN v2 限量版套餐:$119美元/年,17个机房可选,流量翻倍的 VPS 上操作一下:
root@amazing-action-11:~# mtr --report google.com Start: 2023-07-10T08:18:47+0000 HOST: amazing-action-11.localdoma Loss% Snt Last Avg Best Wrst StDev 1.|-- 172.22.65.200 0.0% 10 17.8 20.5 14.1 56.2 12.7 2.|-- 172.22.61.150 0.0% 10 15.4 19.5 12.1 37.0 7.2 3.|-- 72.14.222.37 0.0% 10 1.2 1.4 1.2 1.5 0.1 4.|-- 142.251.228.175 0.0% 10 0.4 0.4 0.4 0.5 0.0 5.|-- 142.250.226.51 0.0% 10 1.4 1.3 1.0 1.5 0.2 6.|-- lax31s12-in-f14.1e100.net 0.0% 10 0.4 0.4 0.3 0.4 0.0
其中 --report
参数默认会发送10个 ICMP 包,如果不加任何参数,会进入一个动态界面,mtr
会不断的发包,查看实时丢包率。大多数情况使用 --report
就够了。
一般 MTR 报告由一系列跳数组成(上面有8跳)。一跳就是一个节点,包括路由器、交换机等。一般都是从内网触发,到外网,最后到目的节点。主机的域名都是通过反向 DNS(rDNS)查找获得,如果想看到原始的IP,使用 --no-dns
参数即可,如下所示:
root@amazing-action-11:~# mtr --no-dns --report google.com Start: 2023-07-10T08:19:41+0000 HOST: amazing-action-11.localdoma Loss% Snt Last Avg Best Wrst StDev 1.|-- 172.22.65.200 0.0% 10 18.3 16.6 12.1 21.8 2.8 2.|-- 172.22.61.150 0.0% 10 22.1 18.4 12.2 22.4 3.3 3.|-- 72.14.222.37 0.0% 10 1.5 1.5 1.3 1.6 0.1 4.|-- 142.251.228.175 0.0% 10 0.5 0.4 0.4 0.5 0.0 5.|-- 142.250.226.51 0.0% 10 1.5 1.3 1.0 1.7 0.2 6.|-- 142.250.68.110 0.0% 10 0.3 0.3 0.3 0.4 0.0
简单说一下怎么看这个报告。第一列就是各个节点的 IP 地址,第二列(Loss%)是丢包率,第三列(Snt)是发包书,第四列(Last)是最后一次发包的时延,第五列(Avg)是平均时延,第六列(Best)是最好的一次的时延,然后是最差的一次的时延(Wrst),以及最后一列(StDev)是数据包在每个节点上的标准偏差。标准偏差越高,说明在这个节点上的时延越不稳定。如果标准偏差较高,那么可以考虑查看最高时延和最低时延来判断该节点的网络状况。
分析 MTR 报告
分析一个 MTR 报告,主要是看丢包率和时延。丢包率看百分比就行,看看哪个节点上有丢包或者丢包比较多,那就是那个节点有问题,通过IP地址查看该节点位置,确定是内网还是外网问题。
时延先看平均时延,看一下哪个节点之后平均时延陡然变大,那么通常就是那个节点的问题。如果某个节点的时延标准偏差很大,那么说明那个节点负载很大,或者网络状况很不稳定。这种时候,如果是内网节点,可以检查路由器/交换机的配置,如果是外网节点,联系 ISP 进行解决。
当然,延迟很大也可能是在返回过程中产生的,如果看上面发现没有问题,但是网络问题还是存在,那就有必要检查一下返程路径的 MTR 报告,因为返程很可能走的是完全不同的路线。
此外,也有可能是 ICMP 速率限制造成时延增加,比如中间某个节点时延突然变大,但是之后节点又恢复,这种时候一般看最后一个节点上的时延即可。
总结
介绍了一下 MTR 网络诊断工具的安装、使用以及如何阅读 MTR 报告、分析 MTR 报告。接下来的文章会介绍一些常见的 MTR 报告类型对应的网络问题,之后再写。