wget 在下载文件时会自动显示进度条、已下载量、剩余时间以及实时计算的平均下载速度。
带宽是衡量网络性能的关键指标,直接影响文件传输速度、视频流畅度、在线游戏体验等,在 Linux 系统上,有多种强大且灵活的工具可以帮助你精确测量网络带宽,本文将详细介绍几种常用且可靠的方法,涵盖从简单快速测试到专业级精准测量的不同场景。
理解带宽测试类型

在开始之前,了解两种主要的带宽测试类型很重要:
- 公网带宽测试: 测量你的 Linux 主机连接到互联网(公网)的实际下载和上传速度,这通常是你从 ISP(互联网服务提供商)购买的带宽套餐的速度,常用工具如
speedtest-cli
。 - 内网/局域网带宽测试: 测量你的 Linux 主机与同一局域网(LAN)内另一台设备(如另一台服务器、NAS、路由器)之间的传输速度,这有助于诊断局域网瓶颈、评估网络设备(交换机、网卡)性能或服务器间传输能力,常用工具如
iperf3
或iperf
。
使用 speedtest-cli
测试公网带宽 (简单直观)
speedtest-cli
是流行的 Speedtest.net 网站的命令行版本,由 Ookla 提供,是测试互联网连接(下载/上传)速度的行业标准工具之一。
-
安装
speedtest-cli
:- 基于 Debian/Ubuntu 的系统:
sudo apt update sudo apt install speedtest-cli
- 基于 RHEL/CentOS/Fedora 的系统:
# RHEL/CentOS 7/8 (需启用 EPEL 仓库) / Fedora: sudo yum install speedtest-cli # 或使用 `dnf` 代替 `yum`
- 使用 Python pip (通用方法):
pip install speedtest-cli # 可能需要 `pip3` 和 `sudo`
- 基于 Debian/Ubuntu 的系统:
-
运行测试:
最简单的命令即可开始测试:speedtest-cli
程序会自动选择距离你最近的 Speedtest 服务器,并输出下载速度、上传速度和延迟(Ping)的结果。
(图片来源网络,侵权删除) -
常用选项:
--simple
: 仅输出简洁的 Ping、下载、上传速度。--bytes
: 以字节/秒 (Bytes/s) 而不是比特/秒 (bits/s) 显示速度,注意:1 Byte = 8 bits。--share
: 测试完成后生成一个 Speedtest.net 的结果图片链接,方便分享。--server [ID]
: 指定要测试的服务器 ID,运行speedtest-cli --list
查看可用服务器列表及其 ID。--source [IP]
: 如果主机有多个 IP 地址,指定源 IP 进行测试。
-
结果解读:
输出结果会明确显示:Ping
: 延迟,单位毫秒 (ms),越低越好。Download
: 下载速度,默认单位 Mbit/s (兆比特每秒)。Upload
: 上传速度,默认单位 Mbit/s (兆比特每秒)。
优点: 使用广泛认可的测试平台,结果直观,易于理解,测试公网速度的首选。
缺点: 依赖于 Speedtest.net 的服务器和网络状况,不能直接测试局域网内部速度。
使用 iperf3
/ iperf
测试内网/局域网带宽 (专业精准)
iperf3
(或它的前身 iperf
) 是网络性能测试的黄金标准工具,特别擅长测量两个端点之间的最大可用带宽,它采用客户端-服务器模式工作。
场景: 测试 Server A 和 Server B 之间的带宽。

-
安装
iperf3
:- 在 Server A (作为 iperf 服务器端) 和 Server B (作为 iperf 客户端) 上都需要安装:
- 基于 Debian/Ubuntu:
sudo apt update sudo apt install iperf3
- 基于 RHEL/CentOS/Fedora:
sudo yum install iperf3 # 或使用 `dnf`
- 基于 Debian/Ubuntu:
- 在 Server A (作为 iperf 服务器端) 和 Server B (作为 iperf 客户端) 上都需要安装:
-
启动 iperf3 服务器端:
在 Server A 上运行:iperf3 -s
-s
表示以服务器模式运行。- 默认监听 TCP 端口 5201,使用
-p [port]
指定其他端口(需确保防火墙允许该端口)。
-
在客户端发起测试:
在 Server B 上运行:iperf3 -c [Server_A的IP地址]
-c [IP]
表示以客户端模式运行,并连接到指定 IP 的服务器。
-
理解输出:
测试完成后,客户端会输出类似以下的结果摘要:[ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.10 GBytes 941 Mbits/sec receiver
Transfer
: 在测试间隔 (Interval
) 内传输的数据总量。Bitrate
: 平均带宽速率,这是最关键的结果,单位通常是bits/sec
(比特每秒) 或根据数据量自动调整 (Gbits/sec, Mbits/sec)。Retr
: 重传次数(TCP 测试中),高重传可能表示网络不稳定。
-
常用选项 (客户端):
-t [秒数]
: 设置测试时长(默认 10 秒)。-t 30
测试 30 秒。-P [并行数]
: 使用多个并行连接流进行测试(模拟多线程下载)。-P 4
使用 4 个连接,这有助于发现单流无法达到的更高带宽(常见于高带宽链路)。-R
/--reverse
: 反转测试方向,默认是客户端发送数据(测上传),服务器接收。-R
让服务器发送数据,客户端接收(测下载)。非常重要! 明确你想测的是从客户端到服务器(上传)还是从服务器到客户端(下载)。-u
: 使用 UDP 协议代替 TCP,UDP 测试能测量最大吞吐量、丢包率和抖动(延迟变化),常用于 VoIP、视频流等场景的评估,需要配合-b
指定目标带宽 (如-b 100M
表示 100Mbps)。-p [端口]
: 指定服务器监听的端口(如果服务器端更改了默认端口)。-i [秒数]
: 设置带宽报告输出的间隔时间(默认 1 秒)。
优点: 非常精准,可控性强(时长、协议、方向、并行流),是测试局域网、数据中心内部网络、点对点连接带宽的行业标准。
缺点: 需要两端配合安装和配置,对新手来说命令行选项稍显复杂。
使用系统内置工具进行快速检查
Linux 本身提供了一些工具可以实时查看网络接口的流量速率,虽然不是严格的“带宽测试”,但对于快速检查当前活动或初步判断瓶颈很有用。
-
nload
(推荐):
一个简洁、实时的控制台网络流量监控工具,按接口显示入站 (Incoming) 和出站 (Outgoing) 的实时速率(bps)和总数据量。- 安装:
# Debian/Ubuntu sudo apt install nload # RHEL/CentOS (EPEL) / Fedora sudo yum install nload
- 使用:
nload # 显示所有接口 nload eth0 # 指定监控 eth0 接口
按左右方向键切换接口,按
q
退出。
- 安装:
-
iftop
:
类似top
命令,实时显示网络连接的带宽使用情况(按主机对或端口对排序)。- 安装:
# Debian/Ubuntu sudo apt install iftop # RHEL/CentOS (EPEL) / Fedora sudo yum install iftop
- 使用:
sudo iftop # 需要 root 权限 sudo iftop -i eth0 # 指定接口
界面显示当前活动的连接及其实时速率,按
P
切换端口显示,按T
切换显示累计/实时流量,按q
退出。
- 安装:
-
ip
命令 +watch
:
利用内核统计信息。- 查看特定接口 (如
eth0
) 的统计:ip -s link show eth0
- 结合
watch
命令进行动态刷新(每 1 秒):watch -n 1 "ip -s link show eth0"
关注
RX
(接收) 和TX
(发送) 部分的bytes
计数,通过计算两次刷新之间字节数的差值除以时间间隔,可以估算出瞬时速率(需要手动计算)。
优点: 无需额外安装(
ip
/watch
),或安装简单(nload
/iftop
),实时性强。
缺点: 显示的是当前实际流量,并非链路的最大承载能力(带宽),受限于当前应用的网络活动。 - 查看特定接口 (如
使用 wget
或 curl
进行简单下载测试
虽然不是专业的带宽测试工具,但通过从已知的大文件源(如大型开源镜像站、云存储)下载文件,可以粗略估计下载速度。
# 使用 curl (需要 -o /dev/null 丢弃输出,并用 -w 格式化输出速度) curl -o /dev/null -w 'Download speed: %{speed_download} bytes/secn' http://example.com/largefile.iso
注意: 结果受限于源服务器的上传带宽、网络拥塞程度、本地磁盘 I/O(如果保存文件)等因素,只能作为参考,不如 speedtest-cli
或 iperf3
准确和稳定。
选择哪种方法?
- 想知道你的互联网套餐速度? 用
speedtest-cli
。 - 要测试办公室/家里两台电脑或电脑与 NAS 之间的传输速度? 用
iperf3
。 - 想实时看看哪个程序或连接在占用网络? 用
nload
或iftop
。 - 快速粗略估计下载速度? 用
wget
或curl
下载大文件。
测试注意事项与最佳实践
- 关闭无关应用: 测试前关闭可能占用带宽的程序(如云同步、在线视频、大文件下载/上传、其他用户的流量),确保测试结果反映的是网络链路本身的能力。
- 有线连接优先: 对于需要准确性的测试(尤其是
iperf3
),尽量使用有线以太网 (Ethernet) 连接,Wi-Fi 信号强度、干扰、协议限制会极大影响结果稳定性。 - 多次测试取平均: 网络状况可能有波动,进行 3-5 次测试取平均值结果更可靠。
- 明确测试方向: 使用
iperf3
时,务必清楚-R
参数的作用,明确你是在测上传 (Upload) 还是下载 (Download)。 - 考虑协议开销: 工具报告的速率通常是应用层速率,实际线路上传输的数据还包含 TCP/IP 包头等开销(大约 2-5%),物理链路的最大理论速率(如 1Gbps)会略高于实际可用的应用层带宽。
- 防火墙设置: 使用
iperf3
时,确保服务器端的防火墙开放了指定的监听端口(默认 5201/TCP 或 5201/UDP)。 - MTU 设置: 局域网内两端设备的 MTU 设置不一致可能导致性能下降,确保一致(通常默认 1500 即可)。
- 硬件能力: 确保测试机器的 CPU、内存、网卡本身不是瓶颈,测试高带宽(如 10Gbps+)时,需要足够性能的硬件支持。
- 结果单位: 注意工具输出速度的单位是
bits per second
(bps, Kbps, Mbps, Gbps) 还是Bytes per second
(B/s, KB/s, MB/s, GB/s),1 Byte/s = 8 bits/s,网络带宽通常以 bits/s 为单位销售和讨论。
其他有用工具
mtr
(traceroute
+ping
): 诊断网络路径和延迟问题,有助于理解带宽瓶颈发生在哪里。ethtool
: 查看和配置网卡参数(如速度、双工模式),确认网卡协商速率是否正确(如ethtool eth0
)。vnstat
: 轻量级的网络流量监控守护进程,记录接口的长期流量统计(小时/天/月)。bmon
: 另一个功能丰富的实时网络带宽监控和调试工具。
安全提示:
- 从官方仓库或项目官网下载工具,避免使用来源不明的脚本或二进制文件。
- 运行
iperf3
服务器时,如果暴露在公网,请使用-p
更改默认端口并确保防火墙严格限制访问来源,避免被滥用,测试完成后及时停止服务器端。
通过熟练掌握以上工具和方法,你将能够有效地诊断 Linux 系统的网络带宽性能,无论是评估互联网连接质量,还是优化内部网络架构,都能做到心中有数。
引用说明:
iperf3
项目官网: https://software.es.net/iperf/ (ESnet)speedtest-cli
项目仓库: https://github.com/speedtest-cli/speedtest-cli (Ookla Speedtest 命令行客户端)nload
项目信息: 通常通过系统包管理器 (apt
,yum
,dnf
) 安装,项目主页可查找。iftop
项目信息: 通常通过系统包管理器 (apt
,yum
,dnf
) 安装,项目主页可查找。- Linux
ip
命令手册页 (man ip
) - RFCs (定义 TCP/UDP/IP 协议): https://www.rfc-editor.org/ (RFC 793 – TCP, RFC 768 – UDP)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4288.html