公众号旧文
我发现有人每天在拿我的服务器测速
前情提要:
9天前,我写了一篇:家庭宽带国际出口差异实测
为了测速,我在自己的服务器上创建了测速文件,并开启了服务。
3天前,我写了一篇:为什么你的服务器登录后没有欢迎信息?
文中分享了我自己在用的欢迎信息脚本。
结果今天刚发现了一件挺有意思的事情:

看右上角红框里的流量统计,我自己不怎么用这台服务器,却跑出来这么多流量。
这说明有人在拿我的服务器测速。
而且还不是一次两次,是每天都会来几次。
这件事很有代表性,因为很多 VPS 都会被各种测速工具、测速脚本当作测速节点使用。
很多人甚至不知道,自己的服务器其实一直在被别人拿来测速。
今天我就顺着这件事,给大家讲讲:
测速服务器到底是怎么工作的,以及我是怎么发现有人在用我的服务器测速的。
一、测速服务器其实非常简单
很多人以为测速服务器是很复杂的东西,其实完全不是。
绝大多数测速的核心原理只有一句话:
下载一个大文件,然后计算下载速度。
比如常见的测速文件:
100M.
bin
50M.
bin
当测速程序访问:
http
:
//服务器IP:端口/100M.bin
服务器就会开始传输这个 100MB 的文件。
测速工具只需要记录:
- 文件大小
- 下载时间
就能算出带宽速度。
公式非常简单:
速度 = 文件大小 ÷ 下载时间
所以很多测速服务器,本质上只是一个能下载大文件的 HTTP 服务。
二、我的测速服务器是怎么搭起来的
我服务器上的下载测速是一个非常简单的服务:
/usr/bin/python3 -m http.server 18080 --
bind
::
这行命令做的事情只有一件:
启动一个 Python 自带的 HTTP 文件服务器。
监听端口:18080``
目录里放着两个文件:50M.bin 和 100M.bin``
任何人访问:http://服务器IP:18080/``
都会看到这样的目录:
Directory listing
for
/
100M.
bin
50M.
bin
点一下文件就会开始下载,测速就完成了。
三、我是怎么发现有人在测速的
开头说是通过流量统计发现的,但日志显然更明确。
服务器是用 systemd(关于system后面的d,可以看为什么 Linux 里很多程序后面都带一个 d)启动的服务:
speedtest.service
所以所有访问日志都会被记录到 systemd 的日志里。
我用这条命令查看日志:
journalctl -u speedtest.service
很快就看到了这样的记录:
GET /100M.
bin
HTTP/
1.1
GET /50M.
bin
HTTP/
1.1
这就是典型的测速行为。
接着我统计了一下这些请求来自哪些 IP。
journalctl
-u speedtest.service \
| grep GET \
| awk
'{print
$6
}'
\
| sed
's/::ffff://'
\
| sort | uniq -c | sort -nr | head
结果非常有意思:
42
113.196.59.51
39
113.196.56.150
16
67.159.52.83
7
51.161.137.121
也就是说:
有人反复从同一个 IP 在测试我的服务器带宽。
四、他们一共用了我多少流量
既然都看到了日志,那我顺便算了一下流量。
统计方法也很简单:
- 每次下载
50M.bin就是 50MB - 每次下载
100M.bin就是 100MB
我写了一段 awk 统计:
journalctl
-
u speedtest.service \
|
grep
-
E
'50M.bin
|
100M.bin' \
|
awk '
{
ip
=
$6
gsub(
"::ffff:"
,
""
,ip)
count[ip]
++
if
(
$0
~
/50M.bin/
) traffic[ip]
+=
50
if
(
$0
~
/100M.bin/
) traffic[ip]
+=
100
}
END
{
printf
"%-15s %-8s %-8s
\n
"
,
"IP"
,
"Times"
,
"Traffic"
for
(i
in
traffic){
printf
"%-15s %-8d %.2fGB
\n
"
,i,count[i],traffic[i]
/
1024
}
}'
|
sort
-
nr
-
k3
统计结果是:
IP
Times
Traffic
113.196
.
59.51
28
2
.05GB
113.196
.
56.150
26
1
.90GB
150.230
.
60.211
2
0
.15GB
五、为什么会有人拿我的服务器测速
原因很简单:
许多测速脚本都会自动寻找测速节点。
比如一些常见的测速脚本:
- VPS 测速脚本
- 网络质量测试脚本
- 线路测试脚本
它们会扫描互联网上开放的测速文件,例如:
100M.
bin
10G.
bin
speedtest
bench
只要发现可以下载,就会把它当成测速节点。
所以只要你的服务器:
- 开了 HTTP
- 放了测速文件
- 没有限制访问
就很可能会被别人拿来测速。
六、这件事其实挺有意思
很多人买了 VPS 之后,从来不会去看日志。
但如果你认真翻一翻日志,常常会发现很多有趣的事情:
比如:
- 谁在扫你的端口
- 谁在测试你的带宽
- 谁在访问你的服务器
有时候你甚至能看到:
世界各地的人都在和你的服务器产生联系。
互联网其实比很多人想象的更热闹。
如果你也有一台服务器,建议你也看一下日志。``