iperf3 服务器测速服务搭建指南

iperf3 服务器测速服务搭建指南

目录

  1. 概述
  2. [安装 iperf3](#安装 iperf3)
  3. 启动服务器测速服务
  4. 客户端连接并测速
  5. 测试结果解读
  6. 常见问题与进阶
  7. 最佳实践

概述

iperf3 是一个开源的网络性能测试工具,可以用于测量网络带宽、延迟、丢包率、抖动等关键指标。本文档介绍如何在服务器上搭建 iperf3 测速服务,并让客户端连接进行网络测速。

主要特性

  • 跨平台支持:支持 Linux、Windows、macOS、Android、iOS 等多个平台
  • 协议支持:支持 TCP 和 UDP 协议测试
  • 测试方向:可以测试上行、下行以及双向带宽
  • 高精度:提供详细的性能指标,包括带宽、延迟、丢包率、抖动等
  • 灵活配置:支持多种参数配置,适应不同测试场景

应用场景

场景 说明
网络带宽测试 测量实际可用带宽,验证网络服务商承诺的带宽
网络质量评估 检测网络延迟、丢包率、抖动等质量指标
服务器性能测试 评估服务器网络处理能力和吞吐量
网络故障排查 定位网络瓶颈,诊断网络问题
CDN 性能测试 测试 CDN 节点的网络性能
VPN 性能测试 评估 VPN 连接对网络性能的影响

安装 iperf3

各平台安装方法

在服务器上安装 iperf3(支持 Linux/Windows/macOS):

Debian/Ubuntu
bash 复制代码
sudo apt-get update && sudo apt-get install iperf3
CentOS/RHEL
bash 复制代码
sudo yum install epel-release && sudo yum install iperf3
Fedora
bash 复制代码
sudo dnf install iperf3
macOS
bash 复制代码
brew install iperf3
Windows
  1. 访问 iperf3 官方下载页面
  2. 下载 Windows 版本的预编译二进制文件
  3. 解压后将 iperf3.exe 添加到系统 PATH 环境变量
其他平台

其他平台可直接下载官方预编译二进制使用。安装完成后两端均可用 iperf3 命令。

验证安装

安装完成后,可以通过以下命令验证:

bash 复制代码
iperf3 --version

正常输出示例:

复制代码
iperf 3.13 (cJSON 1.7.18)
Linux server 5.4.0-74-generic #83-Ubuntu SMP x86_64 GNU/Linux

启动服务器测速服务

最简方式

在服务器执行:

bash 复制代码
iperf3 -s

默认监听 TCP 5201 端口,日志会打印监听地址与端口。

服务器端输出示例:

复制代码
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

常用服务器参数

参数 说明 示例
-s 以服务器模式运行 iperf3 -s
-p <port> 指定监听端口(默认 5201) iperf3 -s -p 1314
-B <IP> 绑定到指定 IP 地址或网卡 iperf3 -s -B 192.168.1.10
-D 以守护进程模式运行(后台) iperf3 -s -D
--logfile <file> 将日志输出到文件 iperf3 -s --logfile server.log
-1 只接受一个客户端连接 iperf3 -s -1
-V 显示版本信息并退出 iperf3 -V

常用增强参数

指定端口
bash 复制代码
iperf3 -s -p 1314
指定网卡/IP
bash 复制代码
iperf3 -s -B 192.168.1.10
后台/守护进程

Linux 可用:

bash 复制代码
iperf3 -s -D

Windows 有相应服务模式选项。

输出到文件
bash 复制代码
iperf3 -s --logfile server.log
仅允许指定客户端
bash 复制代码
iperf3 -s -c 203.0.113.5

仅该客户端可连,UDP 模式不支持该限制。

使用 systemd 管理服务(Linux)

创建 systemd 服务文件 /etc/systemd/system/iperf3.service

ini 复制代码
[Unit]
Description=iperf3 server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/iperf3 -s
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用并启动服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable iperf3
sudo systemctl start iperf3
sudo systemctl status iperf3

防火墙配置

防火墙放行(示例为 firewalld,放通 5201/tcp):

bash 复制代码
sudo firewall-cmd --zone=public --add-port=5201/tcp --permanent
sudo firewall-cmd --reload

安全建议

重要:不要长期将 iperf3 暴露在公网,必要时限制来源 IP、改用非默认端口并配合防火墙。


客户端连接并测速

客户端常用参数

参数 说明 示例
-c <host> 客户端模式,连接到指定服务器 iperf3 -c 192.168.1.100
-p <port> 指定服务器端口(默认 5201) iperf3 -c 192.168.1.100 -p 1314
-t <seconds> 测试持续时间(秒) iperf3 -c 192.168.1.100 -t 30
-i <seconds> 报告间隔(秒) iperf3 -c 192.168.1.100 -i 1
-u 使用 UDP 协议 iperf3 -c 192.168.1.100 -u
-b <bandwidth> 目标带宽(UDP 或 TCP 限制) iperf3 -c 192.168.1.100 -b 100M
-P <num> 并行流数量 iperf3 -c 192.168.1.100 -P 4
-R 反向测试(服务器发送,客户端接收) iperf3 -c 192.168.1.100 -R
-w <size> TCP 窗口大小 iperf3 -c 192.168.1.100 -w 1M
-J 输出 JSON 格式 iperf3 -c 192.168.1.100 -J
-V 显示版本信息 iperf3 -V

基本 TCP 测试(客户端上行,服务端下行)

基本命令:

bash 复制代码
iperf3 -c 服务器IP

常用参数组合:

bash 复制代码
iperf3 -c 服务器IP -t 30 -i 1

测试 30 秒 ,每 1 秒 输出一次。

输出示例:

复制代码
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.50 port 54321 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.3 MBytes  94.6 Mbits/sec    0    1.25 MBytes
[  4]   1.00-2.00   sec  11.2 MBytes  94.0 Mbits/sec    0    1.25 MBytes
[  4]   2.00-3.00   sec  11.3 MBytes  94.8 Mbits/sec    0    1.25 MBytes
[  4]   3.00-4.00   sec  11.2 MBytes  94.1 Mbits/sec    0    1.25 MBytes
[  4]   4.00-5.00   sec  11.3 MBytes  94.7 Mbits/sec    0    1.25 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-5.00   sec  56.3 MBytes  94.4 Mbits/sec    0             sender
[  4]   0.00-5.00   sec  56.2 MBytes  94.3 Mbits/sec                  receiver

iperf Done.

反向测试(客户端下行,服务端上行)

bash 复制代码
iperf3 -c 服务器IP -R

输出示例:

复制代码
Connecting to host 192.168.1.100, port 5201
Reverse mode, remote host 192.168.1.100 is sending
[  4] local 192.168.1.50 port 54322 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  11.4 MBytes  95.6 Mbits/sec
[  4]   1.00-2.00   sec  11.3 MBytes  94.8 Mbits/sec
...

UDP 测试(指定目标带宽,例如 100M)

bash 复制代码
iperf3 -c 服务器IP -u -b 100M -t 20

输出示例:

复制代码
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.50 port 54323 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  11.9 MBytes  99.8 Mbits/sec  15243
[  4]   1.00-2.00   sec  11.9 MBytes  99.9 Mbits/sec  15243
[  4]   2.00-3.00   sec  11.9 MBytes  99.8 Mbits/sec  15243
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-3.00   sec  35.6 MBytes  99.8 Mbits/sec  0.000 ms  0/45729 (0%)
[  4] Sent 45729 datagrams

并行多流(提升吞吐,需服务端/客户端一致)

bash 复制代码
iperf3 -c 服务器IP -P 4 -t 20

输出示例:

复制代码
Connecting to host 192.168.1.100, port 5201
[  4] local 192.168.1.50 port 54324 connected to 192.168.1.100 port 5201
[  6] local 192.168.1.50 port 54325 connected to 192.168.1.100 port 5201
[  8] local 192.168.1.50 port 54326 connected to 192.168.1.100 port 5201
[ 10] local 192.168.1.50 port 54327 connected to 192.168.1.100 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec    0    320 KBytes
[  6]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec    0    320 KBytes
[  8]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec    0    320 KBytes
[ 10]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec    0    320 KBytes
[SUM]   0.00-1.00   sec  11.2 MBytes  94.4 Mbits/sec    0
...

测试场景对比

测试类型 命令 适用场景
基本 TCP 测试 iperf3 -c 服务器IP 快速测试基本带宽
详细 TCP 测试 iperf3 -c 服务器IP -t 30 -i 1 需要详细统计信息
反向测试 iperf3 -c 服务器IP -R 测试下载带宽
UDP 测试 iperf3 -c 服务器IP -u -b 100M 测试 UDP 性能和丢包
并行多流 iperf3 -c 服务器IP -P 4 测试多连接吞吐量
双向测试 iperf3 -c 服务器IP -d 同时测试上下行
交互式双向 iperf3 -c 服务器IP -r 先测上行再测下行

测试结果解读

TCP 测试结果解读

关键指标说明:

指标 说明 示例值
Transfer 传输的数据量 56.3 MBytes
Bandwidth 带宽(发送端/接收端) 94.4 Mbits/sec
Retr 重传次数 0
Cwnd 拥塞窗口大小 1.25 MBytes

结果解读要点:

  • sender:发送端观测到的吞吐量
  • receiver:接收端观测到的吞吐量
  • 正常情况下,sender 和 receiver 的值应该接近
  • 如果 sender 明显大于 receiver,可能存在网络丢包或拥塞

UDP 测试结果解读

关键指标说明:

指标 说明 示例值
Transfer 传输的数据量 35.6 MBytes
Bandwidth 带宽 99.8 Mbits/sec
Jitter 抖动(延迟变化) 0.000 ms
Lost/Total Datagrams 丢包率 0/45729 (0%)

结果解读要点:

  • Jitter(抖动):越小越好,通常 < 1ms 为优秀
  • 丢包率:应该接近 0%,如果丢包率高,说明网络不稳定
  • UDP 测试可以更好地反映网络质量,因为 UDP 不保证可靠性

性能评估标准

网络类型 典型带宽 延迟要求 丢包率要求
局域网(千兆) 900+ Mbits/sec < 1ms < 0.1%
局域网(百兆) 90+ Mbits/sec < 1ms < 0.1%
家庭宽带(100M) 80-95 Mbits/sec < 20ms < 0.5%
4G 移动网络 10-50 Mbits/sec < 50ms < 1%
3G 移动网络 1-5 Mbits/sec < 100ms < 2%

常见问题与进阶

端口与连通性

确认服务器监听端口(默认 5201/tcp)已在安全组/防火墙放行;云上环境需同时放通云安全组与系统防火墙。

常见防火墙配置:

firewalld (CentOS/RHEL/Fedora)
bash 复制代码
sudo firewall-cmd --zone=public --add-port=5201/tcp --permanent
sudo firewall-cmd --reload
ufw (Ubuntu/Debian)
bash 复制代码
sudo ufw allow 5201/tcp
sudo ufw reload
iptables
bash 复制代码
sudo iptables -A INPUT -p tcp --dport 5201 -j ACCEPT
sudo iptables-save
云服务器安全组

需要在云服务商控制台配置安全组规则,放行 5201 端口。

连通性测试:

bash 复制代码
# 测试端口是否开放
telnet 服务器IP 5201

# 或使用 nc (netcat)
nc -zv 服务器IP 5201

结果单位换算

带宽单位换算表:

单位 换算关系 示例
Mbits/sec 1 Mbits/sec = 0.125 MBytes/sec 100 Mbits/sec = 12.5 MBytes/sec
MBytes/sec 1 MBytes/sec = 8 Mbits/sec 12.5 MBytes/sec = 100 Mbits/sec
Gbits/sec 1 Gbits/sec = 1000 Mbits/sec 1 Gbits/sec = 125 MBytes/sec

快速换算公式:

  • Mbits/sec ÷ 8 ≈ MBytes/s
  • MBytes/sec × 8 = Mbits/sec

便于与常见下载器显示单位对齐。

双向与并行

交互式双向
bash 复制代码
iperf3 -c 服务器IP -r

先测上行,再测下行。

同时双向
bash 复制代码
iperf3 -c 服务器IP -d
多线程
bash 复制代码
iperf3 -c 服务器IP -P N

N 为并发流数,建议服务端也用相同 -P

自动化与留存

JSON 报告便于分析
bash 复制代码
iperf3 -c 服务器IP -t 10 -J > result.json
服务端日志
bash 复制代码
iperf3 -s --logfile server.log

其他平台客户端

Windows
  1. 下载 iperf3.exe(从 iperf3 官网
  2. 在 CMD 或 PowerShell 中进入 iperf3.exe 所在目录
  3. 执行测试命令:
bash 复制代码
iperf3.exe -c 服务器IP
Android

推荐使用以下 APP:

  • Magic iPerf:功能完整,支持 iperf3
  • Network Signal Info:包含网络测试功能
  • Termux:在 Android 上运行完整的 Linux 环境,可直接安装 iperf3

使用步骤:

  1. 安装 Magic iPerf 等 APP
  2. 切换到 iperf3 模式
  3. 输入服务器 IP 和端口
  4. 选择测试类型(TCP/UDP,上行/下行)
iOS

可以使用 Terminal 类 APP(如 iTerminal、Termius)通过 SSH 连接到服务器进行测试,或使用支持 iperf3 的网络测试 APP。

常见错误及解决方案

错误信息 可能原因 解决方案
connect failed: Connection refused 服务器未启动或端口未开放 检查服务器是否运行,防火墙是否放行
connect failed: No route to host 网络不通或路由问题 检查网络连通性,ping 服务器 IP
bind failed: Address already in use 端口被占用 更换端口或停止占用端口的进程
error - unable to connect to server 服务器地址错误或服务未启动 检查服务器 IP 和端口,确认服务运行
error - the server is busy running a test 服务器正在处理其他测试 等待当前测试完成或使用 -1 参数限制连接
WARNING: did not receive ack of last datagram after 10 tries UDP 测试时网络不稳定 检查网络质量,降低测试带宽

性能优化建议

1. TCP 窗口大小优化
bash 复制代码
# 增大 TCP 窗口大小(适用于高带宽网络)
iperf3 -c 服务器IP -w 2M
2. 并行流优化
bash 复制代码
# 使用多个并行流提升吞吐量
iperf3 -c 服务器IP -P 8
3. 测试时间优化
  • 短时间测试(10-30秒):快速评估
  • 长时间测试(60-300秒):稳定性和一致性评估
  • 建议至少测试 30 秒以上以获得稳定结果
4. 网络环境优化
  • 关闭其他占用带宽的应用
  • 使用有线网络而非 Wi-Fi(更稳定)
  • 在低网络负载时段测试

最佳实践

测试流程建议

  1. 准备阶段

    • 确认服务器和客户端都已安装 iperf3
    • 检查防火墙和安全组配置
    • 关闭不必要的网络应用
  2. 基础测试

    bash 复制代码
    # 快速测试连通性
    iperf3 -c 服务器IP -t 10
  3. 详细测试

    bash 复制代码
    # 详细测试,记录结果
    iperf3 -c 服务器IP -t 60 -i 1 > test_result.txt
  4. 多方向测试

    bash 复制代码
    # 测试上行
    iperf3 -c 服务器IP -t 30
    # 测试下行
    iperf3 -c 服务器IP -R -t 30
    # 测试双向
    iperf3 -c 服务器IP -d -t 30
  5. UDP 质量测试

    bash 复制代码
    # UDP 测试网络质量
    iperf3 -c 服务器IP -u -b 100M -t 30

自动化测试脚本示例

Linux/macOS 脚本:

bash 复制代码
#!/bin/bash
SERVER_IP="192.168.1.100"
TEST_DURATION=30

echo "=== iperf3 网络测试报告 ==="
echo "测试时间: $(date)"
echo "服务器: $SERVER_IP"
echo ""

echo "--- TCP 上行测试 ---"
iperf3 -c $SERVER_IP -t $TEST_DURATION -i 1

echo ""
echo "--- TCP 下行测试 ---"
iperf3 -c $SERVER_IP -R -t $TEST_DURATION -i 1

echo ""
echo "--- UDP 测试 ---"
iperf3 -c $SERVER_IP -u -b 100M -t $TEST_DURATION -i 1

echo ""
echo "=== 测试完成 ==="

JSON 格式输出(便于分析):

bash 复制代码
#!/bin/bash
SERVER_IP="192.168.1.100"
DATE=$(date +%Y%m%d_%H%M%S)

# 生成 JSON 报告
iperf3 -c $SERVER_IP -t 30 -J > "iperf3_report_${DATE}.json"

# 也可以同时保存文本格式
iperf3 -c $SERVER_IP -t 30 > "iperf3_report_${DATE}.txt"

监控和日志

服务器端日志配置:

bash 复制代码
# 启动带日志的服务器
iperf3 -s --logfile /var/log/iperf3.log

# 使用 logrotate 管理日志
# /etc/logrotate.d/iperf3
/var/log/iperf3.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

安全建议总结

  1. 不要长期暴露在公网:测试完成后及时关闭服务
  2. 使用非默认端口:避免使用 5201 默认端口
  3. 限制客户端 IP :使用 -c 参数限制允许连接的客户端
  4. 配合防火墙:使用防火墙规则限制访问来源
  5. 定期更新:保持 iperf3 版本更新,修复安全漏洞

总结

iperf3 是一个功能强大的网络性能测试工具,通过简单的命令即可搭建测速服务。在实际使用中,建议:

  1. 安全第一:不要长期暴露在公网,使用防火墙限制访问
  2. 参数调优:根据实际需求选择合适的测试参数(时间、并发数等)
  3. 结果分析:关注 sender 和 receiver 的差异,UDP 测试时注意丢包率
  4. 多平台支持:iperf3 支持多种平台,可以灵活选择客户端进行测试
  5. 定期测试:建立定期测试机制,监控网络性能变化
  6. 文档记录:保存测试结果,建立性能基线,便于对比分析

通过合理使用 iperf3,可以准确评估网络性能,为网络优化提供数据支持。无论是网络故障排查、性能评估还是容量规划,iperf3 都是一个不可或缺的工具。

相关资源

相关推荐
北辰当尹8 分钟前
【实习之旅】Kali虚拟机桥接模式ping通百度
java·服务器·桥接模式
济6179 分钟前
linux(第十三期)--filezilla使用方法(实现ubuntu和windows11文件互传)-- Ubuntu20.04
linux·运维·ubuntu
HIT_Weston10 分钟前
91、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(五)
linux·运维·ubuntu
qq_2562470511 分钟前
除了“温度”,如何用 Penalty (惩罚) 治好 AI 的“复读机”毛病?
后端
阿巴~阿巴~12 分钟前
从不可靠到100%可靠:TCP与网络设计的工程智慧全景解析
运维·服务器·网络·网络协议·tcp/ip·智能路由器
飞翔的小->子>弹->14 分钟前
CMK、CEK
服务器·数据库·oracle
内存不泄露21 分钟前
基于Spring Boot和Vue 3的智能心理健康咨询平台设计与实现
vue.js·spring boot·后端
一殊酒22 分钟前
【Figma】Figma自动化
运维·自动化·figma
qq_124987075322 分钟前
基于Spring Boot的电影票网上购票系统的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·spring·毕业设计·计算机毕业设计
麦兜*26 分钟前
【Spring Boot】 接口性能优化“十板斧”:从数据库连接到 JVM 调优的全链路提升
java·大数据·数据库·spring boot·后端·spring cloud·性能优化