测试本地网络到远程IP网络状况

购买VPS或者服务器尤其是国外的主机之前,或者是测试远端主机,有的时候需要先行了解本地主机到远程主机的网络路由线路及网络丢包情况,作为一个资深VPS剁手族,经常要用到这些工具及命令,于是花了点时间整理了下我常用的一些测试方法。

AD:针对国内的实际路由情况,如果用户群大多数在国内,推荐使用搬瓦工提供的CN2GIA线路VPS,三网走电信CN2 GIA线路,相比常规的163网络,拥挤程度相对较低,ping值稳定且丢包少,官网:BandwagonHost CN2 GIA

ping命令检测主机是否在线

ping命令应该是每个对电脑知识有了解的人都知道的一个基本命令,虽然简单,但是很有用。ping命令不仅可以检查对方主机网络是否联通,而且可以检测主机是否在线,用法很简单,只需要在ping命令后面跟上对应的域名或者IP就行,本地主机也可以直接是主机名,基本用法如下。
IPv4检测:

root@BWHCN2GIA:~# ping cloudbool.com
PING cloudbool.com (119.28.xxx.xxx) 56(84) bytes of data.
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=1 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=2 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=3 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=4 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=5 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=6 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=7 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=8 ttl=55 time=162 ms
64 bytes from 119.28.xxx.xxx (119.28.xxx.xxx): icmp_seq=9 ttl=55 time=162 ms
^C
--- cloudbool.com ping statistics ---
10 packets transmitted, 9 received, 10% packet loss, time 9014ms
rtt min/avg/max/mdev = 162.196/162.349/162.773/0.311 ms

IPv6检测:

root@BWHCN2GIA:~# ping6 ipv6.google.com
PING ipv6.google.com(lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e)) 56 data bytes
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=1 ttl=57 time=1.13 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=2 ttl=57 time=1.12 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=3 ttl=57 time=1.28 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=4 ttl=57 time=1.72 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=5 ttl=57 time=1.12 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=6 ttl=57 time=1.24 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=7 ttl=57 time=0.856 ms
64 bytes from lax17s15-in-x0e.1e100.net (2607:f8b0:4007:80c::200e): icmp_seq=8 ttl=57 time=1.62 ms
^C
--- ipv6.google.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7010ms
rtt min/avg/max/mdev = 0.856/1.264/1.727/0.265 ms

除了用ping4ping6外,也可以使用ping命令加上参数指定IP协议,比如ping -4 cloudbool.comping -6 cloudbool.com,因为ping命令在每种操作系统的参数不一样,具体用法可以查看命令帮助。

BestTrace路由追踪

BestTrace是国内IPIP推出的一款路由追踪软件,包含命令行版和GUI版,命令行适合没有桌面环境的情况下使用,比如远程服务器测试回程路由,而GUI版可以调用Google地图、Apple地图等图形化工具简明的展示路由情况。
BestTrace官网:https://www.ipip.net/product/client.html#besttrace
GUI版很简单,只需要输入想要追踪的IP地址或者域名就能看到具体的路由情况,如图所示:
besttrace-trace-route
GUI版提供macOS、Windows、iOS及Android版的客户端,Linux貌似提供命令行版,而且可选IPv4跟踪或者IPv6跟踪,跟踪过程能清晰的展示对应的主机的主机名及所在的大概地理位置。

在线多节点路由跟踪

于此同时,IPIP还提供了在线的路由追踪服务,提供全球众多节点的路由追踪服务,且和GUI版一样,提供路由地理位置及地图路由信息展示,官网地址:
https://tools.ipip.net/traceroute.php
https://tools.ipip.net/ping.php

tracert/traceroute命令简单路由追踪

跟BestTrace相比,Windows自带的tracert及Linux和macOS系统提供的traceroute也能简单的展示路由的走向,只是没有BestTrace那么强大简单明了,只提供基本的路由追踪功能。
这是Linux系统下使用traceroute的路由追踪结果:

root@BWHCN2GIA:~# traceroute www.google.com
traceroute to www.google.com (172.217.11.164), 30 hops max, 60 byte packets
 1  * * *
 2  218.30.48.61 (218.30.48.61)  0.907 ms 218.30.48.129 (218.30.48.129)  0.759 ms  0.772 ms
 3  59.43.189.13 (59.43.189.13)  0.786 ms las-b3-link.telia.net (213.248.79.252)  0.705 ms 59.43.182.57 (59.43.182.57)  1.049 ms
 4  * las-b3-link.telia.net (213.248.79.252)  0.642 ms  0.611 ms
 5  google-ic-303605-las-b24.c.telia.net (62.115.36.170)  0.594 ms 108.170.247.129 (108.170.247.129)  1.440 ms google-ic-303605-las-b24.c.telia.net (62.115.36.170)  4.686 ms
 6  108.170.247.129 (108.170.247.129)  1.406 ms 108.170.247.161 (108.170.247.161)  0.506 ms  0.667 ms
 7  108.170.225.69 (108.170.225.69)  0.527 ms 108.170.225.75 (108.170.225.75)  0.631 ms lax28s15-in-f4.1e100.net (172.217.11.164)  0.499 ms

这是Windows下使用tracert的路由追踪截图:
windows-cmd-tracert
于此同时tracert/traceroute也支持IPv4及IPv6的追踪,和ping一样可通过加参数进行指定,如tracert -6 ipv6.google.com

mtr/winmtr路由丢包测试

上面说的pingtracert/traceroute都只是独立的功能,如果有的时候比如晚高峰我们要测试国外的一些主机的丢包情况,单独使用pingtracert/traceroute就实现不了,这就要借助mtr来帮助查看了。
mtrwinmtr各个系统默认不自带,需要我们独立安装。
Linux及macOS安装命令:

apt install mtr-tiny ## Debian/Ubuntu
yum install mtr ## CentOS
brew install mtr ## macOS

Windows安装包:
https://sourceforge.net/projects/winmtr/
这是CentOS7下mtr命令的运行截图:
centos7-debian-linux-mtr
从上面可以简单的看出路由经过及对应节点的丢包情况。
Linux及macOS的mtr同时支持IPv4及IPv6,只需加上参数即可,默认跟踪IPv4,IPv6跟踪需加上参数-6

ping.pe全球多节点同时mtr

本地运行mtr只能单独的看到本地的路由走向及对应的丢包情况,如果我们的服务器需要向别的客户端提供服务比如用来建站,我们还需要关心一下别的网络下远程主机的网络丢包及路由情况,这就要用到ping.pe提供的全球多节点同时路由及丢包检测了。
官网:https://ping.pe
使用很简单,只需要输入IP地址或者域名即可得到包括中国大陆及海外的众多节点的实时检测结果。

如何确定是否是CN2 GIA网络

CN2 GIA可以说是国内民用领域最好的线路,相比电信其他线路负载较轻,丢包延迟等都更优秀,因而价格也相对163、CN2 GT等线路更高。
如果路由追踪过程中,在非出口节点城市,如果只有一跳经过202.97就直接进入59.43说明可能是CN2 GIA,如果大于一跳则可能是CN2 GT线路,如果不经过59.43,则可能不是CN2线路。
针对国内用户建站或者本地电信网络科学上网,推荐使用搬瓦工CN2 GIA线路VPS,了解详情:BandwagonHost CN2 GIA