服务器线路和速度测试

少年已成人,忘却了诗人和牧笛,心中偶尔渴望原野,只是当年的风不再。

V2Ray 从 VMess 协议升级到 VLess 协议,和 TLS 公用车道去除了冗余的算法加密,然而真实场景下代理的体验还是取决于实际线路速度和抖动等多方面因素。查阅资料,总结一下服务器自身速度和线路速度的测试方法。

一、服务器回程线路测试

对于一台服务器的代理性能而言,回程的线路尤为重要,因为大部分时间是服务器在给你传输数据

同为 CN2 GIA,为什么别人的速度快你的慢,就得测试出具体的绕行情况才能知道

例如从美国加州洛杉矶到天津电信,有些商家的路由是:洛杉矶——上海——北京——天津

而有些却是:洛杉矶——广州——北京——天津。实测广州出口在大部分时间速度是要超过上海出口的

因此通过 Traceroute 路由跟踪,你可以很直观的看到自己的线路,以选择更优的商家

下面将以 Debian(Ubuntu)系统为例,使用两种软件,分别是 My Traceroute 和来自 IPIP.Net 开发的
软件 BestTrace 进行路由分析

IPIP.net 的数据库并不能实时反应 IP 的真实状态,因为很多 CN2 商家有广播 IP 的习惯,随便切换一下路由表,一个 IP 可能今天在香港,明天就在美国了。因此 BestTrace 偶尔并不能反映线路的真实状况。利用 My Traceroute 你只能看到 IP 地址,并不能看到归属地,因此需要自己在几个数据库中手动查询 IP 所在地,确定自己的路由

  1. My Traceroute
1
2
3
4
5
6
7
# 编译和安装
apt update && apt install -y git wget make gcc automake autoconf pkg-config
git clone https://github.com/traviscross/mtr.git && cd mtr
./bootstrap.sh && ./configure && make
make install
# 测试 (假设你要测试的 IP 为 1.1.1.1)
mtr 1.1.1.1

你可以很直观的看到路由跟踪和各节点的丢包率,你需要复制 IP 地址并手动查询该 IP 的位置,以确定路由的去向。这里推荐两个网站以查询 IP 所在地:

IPIP.net : https://www.ipip.net/ip.html

站长之家 :http://ip.tool.chinaz.com/

  1. BestTrace
1
2
3
4
5
6
# 下载 BestTrace
apt update && apt install -y wget
wget https://github.com/charlieethan/docker/releases/download/1.0/besttrace && chmod +x besttrace
mv besttrace /usr/local/bin
# 使用 BestTrace (还是假设你要测试的 IP 为 1.1.1.1)
besttrace -g cn 1.1.1.1

由于 IPIP.net 自带数据库,因此你可以看到路由的走向。但由于这不是商业版,数据库上次更新还是在 2019 年底,因此可能部分 IP 会不准确。

  1. 几个实用的网站

全球丢包测试

全球去程路由测试

二、服务器速度测试

很多人习惯搭一个代理软件然后用 Speedtest 测试,但是这种方法时常有问题: Speedtest 测速需要选择服务器,然而很多商家在 广播 IP 后导致服务器定位有误,这样你选择的测速服务器可能并不能准确的测出连接的速度。

再者就 Speedtest 的服务器而言网络情况也可能参差不齐,很多服务器是各个商家赞助的,这也就意味着可能有的服务器能跑满宽带,而有些就被商家限速。因此如果在你的服务器端和本地分别使用同样的软件测试是最有效的。 IPerf3 就是一个很好的软件,其不仅可以对网速进行测试,还可以分别对 TCP 和 UDP 的情况进行测试,更多功能欢迎去读官方的文档。

这里就 Debian (Ubuntu) 下的软件使用做介绍:

1
2
3
4
5
6
# 安装依赖
apt update && apt install -y git wget make gcc automake autoconf pkg-config build-essential libtool
# 下载源码并编译安装
git clone https://github.com/esnet/iperf.git && cd iperf
./bootstrap.sh && ./configure && make
make install && sudo /sbin/ldconfig

下载对应系统的客户端,推荐 3.1.3 版本

在服务器端使用 iperf3 -s 命令,不要退出 shell 连接界面,保持和服务器的连接。以 Windows 系统为例,在 Powershell 输入 .\iperf3.exe -c 1.1.1.1 命令(假设你的服务器 IP 地址为 1.1.1.1),这样 IPerf 就会开始测试你和服务器之间的连接速度。

你还可以就 UDP 单独发包测试,只需加上 -u 参数即可。如此一来便较为准确的测出了服务器与本地连通的速度

Reference

  1. 服务器回程测试
  2. 服务器速度测试