:全面技术指南)
网络接口卡NICNetwork Interface Card通常简称“网卡”是计算机与网络通信的核心硬件组件。网卡速度即链路速度Link Speed指的是网卡与交换机或路由器之间协商的最大数据传输速率如 100Mbps、1Gbps、10Gbps 等是衡量网络性能的基础指标之一。学习C语言课程在 Linux 系统中准确检查网卡速度对以下场景至关重要网络故障排查当网络延迟高或吞吐量低时确认网卡是否工作在预期速度如千兆网卡是否降级为百兆。性能优化验证服务器或工作站是否达到硬件规格如是否启用 10Gbps 链路。资源规划评估现有网络带宽是否满足业务需求如文件传输、数据库同步等。本文将详细介绍10 种在 Linux 中检查网卡速度的方法涵盖命令行工具、系统文件、内核日志等多维度并对比“标称速度”与“实际吞吐量”的差异帮助读者快速定位和解决网络问题。目录#前置准备1.1 确认网卡接口名称1.2 必要权限与工具依赖方法一使用 ethtool推荐方法二使用 mii-tool deprecated仅兼容旧系统方法三使用 nmcliNetworkManager 用户方法四使用 lshw硬件信息查询工具方法五读取 /sys/class/net 系统文件方法六通过 dmesg 查看内核启动日志方法七使用 ifconfig 与 grep 组合基础状态检查方法八使用 ip link 命令链路状态查询方法九测试实际吞吐量而非标称速度10.1 使用iperf3测试点对点吞吐量10.2 使用speedtest-cli测试公网速度常见实践与最佳实践11.1 区分“标称速度”与“实际吞吐量”11.2 多工具交叉验证结果11.3 排查速度异常的常见原因总结参考资料1. 前置准备#在检查网卡速度前需完成以下准备工作1.1 确认网卡接口名称#Linux 中的网卡接口名称通常遵循以下命名规则传统命名eth0、eth1以太网、wlan0无线。现代一致性命名enp0s3基于主板 PCI 位置、ens33基于 BIOS 设备索引等由systemd引入。查看所有网卡接口# 方法 1使用 ip 命令推荐现代 Linux 标配ip link show # 方法 2使用 ifconfig需安装 net-tools 包部分系统默认不包含ifconfig -a # 方法 3使用 NetworkManager图形化系统常用nmcli device status示例输出ip link show1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff此处eth0即为目标网卡接口名称。1.2 必要权限与工具依赖#权限部分命令如ethtool、lshw需要 root 权限建议使用sudo执行。工具安装若命令不存在通过包管理器安装# Debian/Ubuntusudo apt install ethtool net-tools lshw iperf3 # CentOS/RHELsudo yum install ethtool net-tools lshw iperf3 # Arch Linuxsudo pacman -S ethtool net-tools lshw iperf32. 方法一使用ethtool推荐#ethtool是 Linux 中最常用的网卡配置与诊断工具几乎支持所有主流网卡驱动可直接查询链路速度、双工模式、链路状态等核心信息。基本用法#sudo ethtool 网卡接口名称示例检查eth0速度#sudo ethtool eth0输出解读关键部分#Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full # 网卡支持的最大速度1Gbps Supported pause frame use: No Supports auto-negotiation: Yes # 支持自动协商速度 Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Speed: 1000Mb/s # 当前协商的链路速度关键信息 Duplex: Full # 双工模式全双工/半双工 Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on Link detected: yes # 链路是否已连接核心参数说明#Speed: 1000Mb/s当前网卡速度即链路速度1Gbps。Duplex: Full全双工模式可同时收发 数据半双工Half会严重影响性能。Link detected: yes网卡与交换机/路由器物理连接正常若为no需检查网线或接口。进阶仅显示速度相关信息#sudo ethtool eth0 | grep -iE speed|duplex|link3. 方法二使用mii-tool deprecated仅兼容旧系统#mii-toolMedia Independent Interface Tool是早期 Linux 用于配置网卡物理层PHY的工具已被ethtool取代但部分老旧系统如 CentOS 6、Debian 7仍可能保留。学习C语言课程基本用法#sudo mii-tool 网卡接口名称示例输出#sudo mii-tool eth0eth0: negotiated 1000baseT-FD flow-control, link ok输出解读#1000baseT-FD1000MbpsT 表示双绞线FD 表示全双工Full Duplex。link ok链路正常。注意mii-tool不支持 10Gbps 及以上速度且无法显示部分高级参数如自动协商状态建议优先使用ethtool。4. 方法三使用nmcliNetworkManager 用户#nmcli是 NetworkManager 的命令行工具适用于使用 NetworkManager 管理网络的系统如 Fedora、Ubuntu 桌面版、CentOS 8。学习C语言课程基本用法#nmcli device show 网卡接口名称示例检查eth0速度#nmcli device show eth0 | grep -i speed示例输出#GENERAL.SPEED: 1000 Mbit/s说明#GENERAL.SPEED字段直接显示当前链路速度单位Mbit/s。若输出为0 Mbit/s表示链路未连接或速度协商失败。5. 方法四使用lshw硬件信息查询工具#lshwList Hardware是一款功能强大的硬件信息查询工具可显示网卡的硬件规格如支持的最大速度及当前状态。基本用法#sudo lshw -class network # 查看所有网络设备信息示例输出过滤网卡部分#sudo lshw -class network | grep -A 10 eth0 *-network description: Ethernet interface product: 82545EM Gigabit Ethernet Controller (Copper) vendor: Intel Corporation physical id: 0 bus info: pci0000:02:00.0 logical name: eth0 version: 01 serial: 52:54:00:12:34:56 size: 1Gbit/s # 当前速度 capacity: 1Gbit/s # 网卡支持的最大速度 width: 64 bits关键字段#size: 1Gbit/s当前协商速度。capacity: 1Gbit/s网卡硬件支持的最大速度若size capacity可能存在链路协商问题。6. 方法五读取/sys/class/net系统文件#Linux 的sysfs文件系统/sys提供了内核与用户空间的接口部分网卡驱动会在/sys/class/net/接口/speed文件中暴露当前速度。基本用法#cat /sys/class/net/网卡接口名称/speed示例## 查看 eth0 速度cat /sys/class/net/eth0/speed1000 # 单位Mbps注意事项#并非所有网卡驱动都支持此接口如部分虚拟网卡或老旧驱动若文件不存在或返回0需使用其他方法。若链路未连接可能返回0或报错。7. 方法六通过dmesg查看内核启动日志#内核启动时会记录网卡初始化信息包括驱动加载、速度协商结果等可通过dmesg命令查看历史日志。基本用法#dmesg | grep -iE 网卡接口名称.*speed示例#dmesg | grep -iE eth0.*speed[ 3.456789] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX输出解读#Link is Up 1000 Mbps Full Duplex启动时协商的速度为 1Gbps 全双工。若日志中无速度信息可能是驱动未记录或日志已轮转可查看/var/log/dmesg文件。8. 方法七使用ifconfig与grep组合基础状态检查#ifconfig是传统网络状态查询工具需安装net-tools包本身不直接显示速度但可辅助判断网卡是否“启动”UP为速度检查提供前提。基本用法#ifconfig 网卡接口名称示例输出#ifconfig eth0eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500 inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 ether 52:54:00:12:34:56 txqueuelen 1000 (Ethernet) RX packets 12345 bytes 12345678 (11.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6789 bytes 7890123 (7.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0说明#flags4163UP,...UP表示网卡已启用RUNNING表示链路已连接若缺失速度检查无意义。collisions 0无冲突半双工模式下可能出现非零值需关注。9. 方法八使用ip link命令链路状态查询#ip link是iproute2工具集的一部分现代 Linux 推荐用于管理网络接口状态可间接判断链路是否正常但不直接显示速度。基本用法#ip link show 网卡接口名称示例输出#ip link show eth02: eth0: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff关键状态字段#UP,LOWER_UPUP 软件层启用LOWER_UP物理层链路正常即网线已连接。若缺失LOWER_UP需先排查物理连接网线、交换机端口。10. 方法九测试实际吞吐量而非标称速度#上述方法均显示“链路速度”如 1Gbps即网卡与交换机协商的理论最大速度。但实际 数据传输速率吞吐量受协议开销、网络拥塞、硬件性能等影响可能远低于标称值。学习计算机课10.1 使用iperf3测试点对点吞吐量#iperf3是一款专业的网络吞吐量测试工具需在两台设备上配合使用一台作为服务器一台作为客户端。步骤 1在服务器端启动iperf3服务#iperf3 -s # -s 表示 server 模式步骤 2在客户端连接服务器测试#iperf3 -c 服务器 IP # -c 表示 client 模式指定服务器 IP示例输出客户端#[ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 1.09 GBytes 938 Mbits/sec 0 1.27 MBytes输出解读#938 Mbits/sec实际吞吐量约为 938Mbps接近 1Gbps 标称速度正常因存在协议开销。若吞吐量远低于标称值如 1Gbps 网卡仅 100Mbps需排查交换机端口速度限制如强制为 100Mbps。网线类型Cat5e 支持 1GbpsCat5 仅支持 100Mbps。服务器/客户端 CPU 瓶颈iperf3 测试会消耗 CPU。10.2 使用speedtest-cli测试公网速度#若需测试与公网的实际速度如下载/上传速度可使用speedtest-cli基于 Speedtest.net 服务。安装## 方法 1使用 pipPython 包管理器pip install speedtest-cli # 方法 2直接下载脚本需 curl/wgetcurl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -基本用法#speedtest-cli示例输出#Download: 94.58 Mbit/s Upload: 45.23 Mbit/s说明#公网速度受 ISP 带宽限制与网卡标称速度无关如 1Gbps 网卡若 ISP 仅提供 100Mbps 宽带实际下载速度约 90-100Mbps。11. 常见实践与最佳实践#11.1 区分“标称速度”与“实际吞吐量”#标称速度Link Speed网卡与交换机协商的物理链路速度如 1Gbps通过ethtool等工具查询。实际吞吐量真实数据传输速率如 iperf3 测试的 938Mbps受协议、硬件、网络环境影响。经验值1Gbps 链路的实际吞吐量通常为 900-950MbpsTCP 协议UDP 可接近 1Gbps。11.2 多工具交叉验证结果#若某工具显示速度异常如标称 1Gbps 但ethtool显示 100Mbps建议用其他工具交叉验证# 示例同时使用 ethtool、nmcli、sysfs 验证sudo ethtool eth0 | grep Speednmcli device show eth0 | grep SPEEDcat /sys/class/net/eth0/speed若结果一致则速度正常若不一致可能是驱动或工具兼容性问题。11.3 排查速度异常的常见原因#当网卡速度低于预期如 1Gbps 网卡仅工作在 100Mbps按以下步骤排查检查网线确保使用 Cat5e 及以上规格支持 1Gbps避免过长建议 ≤100 米。检查交换机端口登录交换机管理界面确认端口未被强制限速如配置为 100Mbps。重启网络设备重启网卡、交换机或路由器重新触发速度协商。更新驱动老旧网卡驱动可能存在兼容性问题可通过lshw -class network查看网卡型号到厂商官网下载最新驱动。检查双工模式半双工Half Duplex会导致严重性能下降通过ethtool确认双工模式为Full。12. 总结#本文介绍了 9 种检查 Linux 网卡速度的方法含 1 种吞吐量测试各工具特点总结如下工具/方法优势局限性适用场景ethtool功能全面支持所有速度参数丰富需要 root 权限所有 Linux 系统推荐首选nmcli简洁适合 NetworkManager 用户依赖 NetworkManager桌面版 Linux如 Ubuntu、Fedoralshw可查看硬件最大支持速度输出冗长需过滤硬件规格验证/sys/class/net无需额外工具直接读取内核信息部分驱动不支持脚本自动化检查iperf3测试实际吞吐量定位性能瓶颈需要两台设备配合网络性能优化根据实际需求选择合适工具并结合多维度验证可快速准确判断网卡速度状态。13. 参考资料#Linux 内核文档sysfs 网络接口ethtool 官方手册iperf3 官方文档NetworkManager 文档nmcliLinux 网卡命名规则