公众号旧文

我发现有人每天在拿我的服务器测速

作者:胖子阅读 —

前情提要:

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 之后,从来不会去看日志。

但如果你认真翻一翻日志,常常会发现很多有趣的事情:

比如:

  • 谁在扫你的端口
  • 谁在测试你的带宽
  • 谁在访问你的服务器

有时候你甚至能看到:

世界各地的人都在和你的服务器产生联系。

互联网其实比很多人想象的更热闹。

如果你也有一台服务器,建议你也看一下日志。``