𝑨𝑻𝒂𝒓𝒂𝒙𝑳

iperf3 主机端与服务器端测速新手教程:测试上传、下载、延迟和常见报错

为什么用 iperf3 测速

如果你想知道一台服务器在你本地网络环境下能跑多快,iperf3 是一个很常用的工具。

它可以测试:

相比浏览器下载文件,iperf3 更适合单独测试网络链路本身。


主机端和服务器端分别是什么

iperf3 测速需要两端配合:

角色 含义 常用命令
服务器端 监听端口,等待连接 iperf3 -s
主机端 / 客户端 主动连接服务器并发起测试 iperf3 -c SERVER_IP

为了避免暴露真实地址,本文统一使用占位符:

占位符 含义
SERVER_IP 服务器 IPv4 或域名
SERVER_IPV6 服务器 IPv6
SERVER_PORT iperf3 端口,默认是 5201

iperf3 默认监听端口是:

1TCP 5201

一、测速前的准备

1. 服务器端安装 iperf3

如果你的服务器是 Debian 或 Ubuntu,可以通过 SSH 登录服务器后执行:

1apt update
2apt install -y iperf3

安装完成后,可以检查版本:

1iperf3 --version

如果能正常显示版本号,说明服务器端已经安装好了。


2. Windows 主机端安装 iperf3

如果你在 Windows 里执行 iperf3 时看到:

1'iperf3' 不是内部或外部命令,也不是可运行的程序

说明本地 Windows 还没有安装 iperf3,或者安装后没有加入 PATH。

可以用 winget 安装:

1winget install --id ar51an.iPerf3 -e

安装完成后,关闭当前 PowerShell 或 CMD,重新打开一个新窗口,再执行:

1iperf3 --version

如果能显示版本号,就说明 Windows 主机端也准备好了。


3. 查询服务器 IP

SSH 登录服务器后,可以查询服务器公网 IPv4:

1curl -4 ip.sb

查询服务器公网 IPv6:

1curl -6 ip.sb

也可以查看服务器网卡地址:

1ip addr

注意:这些命令会显示你的真实服务器 IP。如果要发截图或写教程,建议把 IP 打码。


二、服务器端启动 iperf3

1. 默认启动

在服务器 SSH 里执行:

1iperf3 -s

如果成功,会看到类似:

1-----------------------------------------------------------
2Server listening on 5201
3-----------------------------------------------------------

这表示服务器端已经在 5201 端口监听。

这个 SSH 窗口不要关,保持它运行。


2. IPv6 启动

如果你要用 IPv6 测试,可以明确指定 IPv6:

1iperf3 -s -6

成功时同样会看到:

1Server listening on 5201

3. 指定端口启动

如果默认的 5201 端口被占用,或者你想换一个端口,可以这样:

1iperf3 -s -p SERVER_PORT

例如你把端口换成其他值,本地测试时也要加同样的端口参数:

1iperf3 -c SERVER_IP -p SERVER_PORT -t 30

三、主机端测试命令

下面这些命令都在本地电脑上执行,而不是在服务器上执行。

1. 测延迟

IPv4 或域名:

1ping SERVER_IP

IPv6:

1ping -6 SERVER_IPV6

如果想多测几次:

1ping -n 20 SERVER_IP

IPv6 多测几次:

1ping -6 -n 20 SERVER_IPV6

重点看输出里的:

1time=xx ms

或者 Windows 最后的统计:

1最短 = xxms,最长 = xxms,平均 = xxms

一般主要看平均延迟。


2. 测本地上传到服务器

数据方向是:

1本地电脑 → 服务器

IPv4 或域名:

1iperf3 -c SERVER_IP -P 4 -t 30

IPv6:

1iperf3 -6 -c SERVER_IPV6 -P 4 -t 30

这条命令测试的是你本地网络上传到服务器能跑多少。


3. 测服务器下载到本地

数据方向是:

1服务器 → 本地电脑

IPv4 或域名:

1iperf3 -c SERVER_IP -R -P 4 -t 30

IPv6:

1iperf3 -6 -c SERVER_IPV6 -R -P 4 -t 30

这里的 -R 表示 Reverse,也就是反向测试。

注意:命令仍然是在本地电脑执行,但是加了 -R 后,数据方向会反过来,由服务器向本地电脑发送数据。

所以:


四、常用参数解释

参数 含义
-s 启动 iperf3 服务端
-c SERVER_IP 作为客户端连接服务器
-R 反向测试,服务器向本地发送数据
-P 4 使用 4 个并发连接
-t 30 测试 30 秒
-p SERVER_PORT 指定端口
-6 强制使用 IPv6
-4 强制使用 IPv4
-V 显示更详细日志
-u 使用 UDP 测试
-b 100M UDP 目标带宽为 100 Mbps

要特别注意:

1-t 30

是小写 t,表示测试 30 秒。

不要写成:

1-T 30

大写 -T 不是测试时间参数。


五、怎么看 iperf3 测试结果

测试完成后,你会看到类似输出:

1[ ID] Interval           Transfer     Bitrate
2[  5]   0.00-30.00 sec   3.20 GBytes   916 Mbits/sec  sender
3[  5]   0.00-30.00 sec   3.19 GBytes   913 Mbits/sec  receiver

主要看这一列:

1Bitrate

常见单位:

显示 含义
100 Mbits/sec 约 100 Mbps
916 Mbits/sec 约 916 Mbps
1.10 Gbits/sec 约 1.1 Gbps

一般更建议看最后的 receiver,因为它表示接收端实际收到的数据速度。


六、防火墙和安全组设置

iperf3 默认使用:

1TCP 5201

所以服务器需要放行 TCP 5201。

如果服务器使用 ufw,可以执行:

1ufw allow 5201/tcp

如果你换了端口,例如 SERVER_PORT

1ufw allow SERVER_PORT/tcp

如果要测 UDP,再放行:

1ufw allow 5201/udp

如果是云服务器,还需要到云厂商控制台的安全组里放行:

1入站 TCP 5201

如果你用 IPv6,还要确认安全组允许 IPv6 入站。

安全建议:


七、常见报错排查

1. Windows 报错:不是内部或外部命令

报错:

1'iperf3' 不是内部或外部命令,也不是可运行的程序

原因是 Windows 没安装 iperf3,或者没有加入 PATH。

解决方法:

1winget install --id ar51an.iPerf3 -e

安装完成后重新打开 PowerShell 或 CMD:

1iperf3 --version

2. Linux 服务器报错:command not found

报错:

1-bash: iperf3: command not found

原因是服务器没安装 iperf3

解决方法:

1apt update
2apt install -y iperf3

然后启动服务端:

1iperf3 -s

3. 服务器显示 Server listening on 5201

如果服务器显示:

1Server listening on 5201

说明服务器端已经成功开启。

这时候不要关闭 SSH 窗口,直接去本地 Windows 运行客户端测试命令。


4. iperf3: exiting

如果只看到:

1iperf3: exiting

要看它前面一两行真正的报错。

常见原因是端口被占用,例如:

1Address already in use

可以检查 5201 是否已经被占用:

1ss -lntp | grep 5201

如果已经有 iperf3 在监听,说明服务可能已经开着。

如果想重新启动:

1pkill iperf3
2iperf3 -s

也可以换端口:

1iperf3 -s -p SERVER_PORT

本地连接时也指定端口:

1iperf3 -c SERVER_IP -p SERVER_PORT -R -P 4 -t 30

5. unable to connect to server

如果本地报:

1unable to connect to server

通常是以下原因:

可以在 Windows 里检查端口:

1Test-NetConnection SERVER_IP -Port 5201

IPv6:

1Test-NetConnection SERVER_IPV6 -Port 5201

如果看到:

1TcpTestSucceeded : True

说明 TCP 5201 是通的。

如果是:

1TcpTestSucceeded : False

说明端口不通,需要检查服务器防火墙、云安全组和 iperf3 服务状态。


6. control socket has closed unexpectedly

报错:

1iperf3: error - control socket has closed unexpectedly

意思是 TCP 连接可能建立成功了,但 iperf3 控制连接被对端关闭。

常见原因:

可以加 -V 查看详细日志:

1iperf3 -c SERVER_IP -t 5 -V

IPv6:

1iperf3 -6 -c SERVER_IPV6 -t 5 -V

八、全局代理对 iperf3 的影响

如果你开了全局代理、TUN 模式、mihomo、Clash 等,iperf3 流量可能会走代理,而不是走你的真实本地网络。

例如执行:

1Test-NetConnection SERVER_IPV6 -Port 5201

如果看到类似:

1InterfaceAlias : mihomo
2SourceAddress  : 代理虚拟网卡地址
3TcpTestSucceeded : True

说明流量走的是代理虚拟网卡。

这时候即使端口是通的,iperf3 也可能报:

1control socket has closed unexpectedly

因为代理节点、TUN 虚拟网卡或代理规则可能不适合 iperf3 这种大流量测速。

更重要的是,如果走代理,你测到的不是:

1本地电脑 → 服务器

而是:

1本地电脑 → 代理节点 → 服务器

这个结果不能代表你的真实本地网络到服务器的速度。


九、测速时建议关闭代理

如果你要测真实网络,建议:

mihomo / Clash 规则示例:

1- IP-CIDR,SERVER_IP/32,DIRECT,no-resolve

IPv6 规则示例:

1- IP-CIDR6,SERVER_IPV6/128,DIRECT,no-resolve

重载配置后,再检查:

1Test-NetConnection SERVER_IP -Port 5201

IPv6:

1Test-NetConnection SERVER_IPV6 -Port 5201

确认不再显示代理虚拟网卡后,再进行 iperf3 测试。


十、UDP 测试,可选

默认 iperf3 使用 TCP。

如果你要测 UDP 丢包和抖动,可以用:

1iperf3 -c SERVER_IP -u -b 100M -t 30

反向 UDP:

1iperf3 -c SERVER_IP -u -b 100M -R -t 30

IPv6 反向 UDP:

1iperf3 -6 -c SERVER_IPV6 -u -b 100M -R -t 30

参数说明:

参数 含义
-u 使用 UDP
-b 100M 目标带宽 100 Mbps
-R 反向测试

注意:UDP 一定要指定 -b,否则默认带宽很低,不适合测速。


十一、新手推荐命令总结

服务器端

默认启动:

1iperf3 -s

IPv6 启动:

1iperf3 -s -6

指定端口启动:

1iperf3 -s -p SERVER_PORT

本地电脑测延迟

IPv4 或域名:

1ping SERVER_IP

IPv6:

1ping -6 SERVER_IPV6

本地电脑测上传

IPv4 或域名:

1iperf3 -c SERVER_IP -P 4 -t 30

IPv6:

1iperf3 -6 -c SERVER_IPV6 -P 4 -t 30

本地电脑测下载

IPv4 或域名:

1iperf3 -c SERVER_IP -R -P 4 -t 30

IPv6:

1iperf3 -6 -c SERVER_IPV6 -R -P 4 -t 30

十二、最容易记住的版本

服务器端运行:

1iperf3 -s

本地测上传:

1iperf3 -c SERVER_IP -P 4 -t 30

本地测下载:

1iperf3 -c SERVER_IP -R -P 4 -t 30

本地测延迟:

1ping SERVER_IP

如果是 IPv6:

1ping -6 SERVER_IPV6
2iperf3 -6 -c SERVER_IPV6 -P 4 -t 30
3iperf3 -6 -c SERVER_IPV6 -R -P 4 -t 30

总结

如果你的目标是:

我想知道这台服务器在我本地网络下,上传、下载、延迟分别是多少。

最标准流程是:

  1. 服务器安装 iperf3。

  2. 服务器运行:

    1iperf3 -s
    
  3. 本地电脑关闭全局代理 / TUN。

  4. 本地电脑测延迟:

    1ping SERVER_IP
    
  5. 本地电脑测上传:

    1iperf3 -c SERVER_IP -P 4 -t 30
    
  6. 本地电脑测下载:

    1iperf3 -c SERVER_IP -R -P 4 -t 30
    

最后记住这几个重点:

#VPS