今天看到一篇文章关于家里内网速度的,便想起了自建speedtest服务进行内网测速。自建服务的话又需要php环境,虽然家里有几台Linux的小主机,但是不想太折腾,就在网上搜了下,有个叫iperf的工具,部署简单,服务端支持Windows、Linux、macOS等系统,客户端支持Windows、Linux、macOS、Android、iOS。
下面我分别记录下Windows和linux服务端的部署方式,以及Windows和手机客户端的使用方式。
一、服务端部署
1、Windows服务端
1.1.iperf3下载地址:https://iperf.fr/iperf-download.php
选择第一个最新版下载即可
1.2.解压并进入目录,在路径这里输入:cmd
1.3.运行iperf3服务端,在弹出的窗口输入:
iperf3.exe -s
回车,下方显示:Server listening on 5201即表明服务端运行成功了。
2、Linux服务端
2.1.Doceker容器
安装docker
#官方一键安装脚本(阿里云的源,不需要可以直接去掉“–mirror Aliyun”) curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2.2.在docker部署iperf3服务端容器
#“--rm”参数:运行完毕就自动删除容器 docker run -it --rm --name=iperf3-server -p 5201:5201 networkstatic/iperf3 -s
同样的,下方显示:Server listening on 5201即表明服务端运行成功了。
2.2.软件仓库(以debian、ubuntu为例)
安装
apt-get install iperf3
运行
iperf3 -s
同样的,下方显示:Server listening on 5201即表明服务端运行成功了。
二、客户端使用
1、Windows客户端
1.1.iperf下载地址:https://iperf.fr/iperf-download.php
选择第一个最新版下载即可
1.2.解压并进入目录,在路径这里输入:cmd
1.3.运行iperf3客户端,在弹出的窗口输入:iperf3 -c {服务端IP}
进行10秒钟的测速,如下图,我测试的平均速率为945Mbits/s(也就是945Mbps),达到了千兆的速率
1.3.1.多条并行数据流一起测速:iperf3 -c {服务端IP} -P 2
这里的2表示2条并行数据流,如下图,两条数据列均分了千兆的速率,总速率还是符合千兆
1.3.2.反向模式运行(Server 端发送,Client 端接收):iperf3 -c {服务端IP} -R
1.3.3.更多的客户端参数说明如下:
Client 端参数 -c, --client ,以 Client 模式运行,并指定 Server 端的地址; -u, --udp,以 UDP 协议进行测试; -b, --bandwidth #[KMG][/#],限制测试带宽。UDP 默认为 1Mbit/秒,TCP 默认无限制; -t, --time #,以时间为测试结束条件进行测试,默认为 10 秒; -n, --bytes #[KMG],以数据传输大小为测试结束条件进行测试; -k, --blockcount #[KMG],以传输数据包数量为测试结束条件进行测试; -l, --len #[KMG],读写缓冲区的长度,TCP 默认为 128K,UDP 默认为 8K; --cport ,指定 Client 端运行所使用的 TCP 或 UDP 端口,默认为临时端口; -P, --parallel #,测试数据流并发数量; -R, --reverse,反向模式运行(Server 端发送,Client 端接收); -w, --window #[KMG],设置套接字缓冲区大小,TCP 模式下为窗口大小; -C, --congestion ,设置 TCP 拥塞控制算法(仅支持 Linux 和 FreeBSD ); -M, --set-mss #,设置 TCP/SCTP 最大分段长度(MSS,MTU 减 40 字节); -N, --no-delay,设置 TCP/SCTP no delay,屏蔽 Nagle 算法; -4, --version4,仅使用 IPv4; -6, --version6,仅使用 IPv6; -S, --tos N,设置 IP 服务类型(TOS,Type Of Service); -L, --flowlabel N,设置 IPv6 流标签(仅支持 Linux); -Z, --zerocopy,使用 “zero copy”(零拷贝)方法发送数据; -O, --omit N,忽略前 n 秒的测试; -T, --title str,设置每行测试结果的前缀; --get-server-output,从 Server 端获取测试结果; --udp-counters-64bit,在 UDP 测试包中使用 64 位计数器(防止计数器溢出)。
2、手机客户端
iperf官方有推荐一部分移动端测速app:
我这里没有用上方清单的app,使用的是TP-Link的“网络百宝箱”app。在这里推荐一下这个app,功能挺丰富,使用起来很简单。
1.1.下载并安装app
苹果可以在商店直接下载安装,安卓的可以到TP官网下载(地址:https://resource.tp-link.com.cn/?&left=[0,14,null]&filterClass=[])
下面以安卓客户端为例,苹果的大同小异
2.1.打开app,点击左上角的“测网速”
2.2.进行测速
点击右边菜单的“局域网测速”,然后“服务器地址”填你部署的服务器IP,“测试时长”填10-30;
点击开始检测,然后等待一段时间即可完成测速;
由于无线存在干扰或阻隔,速度跑不满千兆是正常的。(但不知道为何下载速度跟上传不对等)