应使用ethtool命令查看实时协商速率,因其直接读取网卡驱动与PHY芯片交互结果,输出Speed值即为当前实际链路速率,如1000Mb/s表示千兆,且需结合Link detected和Auto-negotiation状态综合判断。

如果您需要确认当前Linux系统中某块网卡的实际协商速率,但无法从ifconfig或ip link输出中直接获知物理层速率,则应使用专门面向硬件链路层的诊断工具。以下是查看网络接口速率的多种可行方法:
一、使用ethtool命令查看实时协商速率
ethtool是Linux下最权威的以太网卡物理层诊断工具,可直接读取网卡驱动与PHY芯片交互所得的实时协商结果,包括Speed、Duplex、Auto-negotiation状态等关键参数。该方法不依赖上层协议栈,反映真实链路能力。
1、执行ip -br a或ifconfig -a确认目标网卡名称(如eth0、enp0s3、em1等)。
2、以root权限运行ethtool 网卡名,例如:sudo ethtool eth0。
3、在输出中查找Speed:行,其后数值即为当前协商速率(如1000Mb/s表示千兆,10000Mb/s表示万兆)。
4、同时检查Link detected: yes和Auto-negotiation: on是否为预期值,若为no或off需进一步排查物理连接或对端配置。
二、使用mii-tool命令查看基础链路信息
mii-tool通过MII(Media Independent Interface)寄存器访问PHY状态,适用于较老的以太网控制器(如某些Realtek或VIA芯片),输出简洁,但功能有限且部分现代网卡已不支持。
1、确保已安装mii-tool,如未安装,在Debian/Ubuntu系统中执行:sudo apt install net-tools(通常已包含)。
2、以root权限运行mii-tool 网卡名,例如:sudo mii-tool eth0。
3、观察输出中的协商结果,典型格式为:eth0: negotiated 100baseTx-FD, link ok,其中100baseTx-FD表示100Mbps全双工。
4、若显示no link,则表明物理链路未建立,需检查网线、交换机端口及网卡指示灯。
三、通过lspci命令识别网卡理论最大速率
当ethtool无法获取Speed(如显示Unknown!)或网卡尚未建立链路时,可通过PCI设备信息判断网卡硬件规格,从而推断其支持的最大速率等级(如千兆、万兆、25G等),此法不反映当前实际协商状态,仅用于型号确认。
1、执行lspci | grep -i ethernet列出所有以太网控制器。
2、复制对应网卡的PCI地址(如0000:02:00.0),再运行:lspci -vv -s 0000:02:00.0 | grep -A 5 "Capabilities"。
3、查找LnkCap:字段下的Speed值(如8 GT/s对应PCIe 3.0,常搭配万兆网卡;2.5 GT/s常见于千兆网卡)。
4、也可直接搜索型号关键词,例如输出含BCM5709则为千兆网卡,含X710或E810则为万兆及以上。
四、借助ethtool -S统计收发速率(近似实时带宽)
ethtool -S提供驱动级收发计数器,虽不直接显示链路协商速率,但可通过单位时间内的字节数变化估算当前活跃流量带宽,适用于验证网卡是否达到标称速率上限。
1、先记录初始值:sudo ethtool -S 网卡名 | grep rx_bytes与grep tx_bytes。
2、等待1秒后再次执行相同命令,获取新值。
3、计算差值并换算:若rx_bytes增加约125000000字节/秒,则对应1000Mbps(因1 Gbps = 125 MB/s)。
4、注意该方法受CPU调度、中断延迟影响,仅作辅助参考;真实吞吐需配合iperf3等工具测试端到端性能。
五、检查sysfs接口获取只读速率信息
Linux内核通过sysfs向用户空间暴露部分网卡属性,/sys/class/net/路径下可直接读取speed文件,该值由驱动自动更新,无需额外权限(但部分虚拟或老旧驱动可能不提供)。
1、确认网卡处于UP状态:ip link show 网卡名 | grep "state UP"。
2、读取速率文件:cat /sys/class/net/网卡名/speed。
3、正常输出为数字,单位为Mbps,例如1000或10000;若返回-1,表示驱动未实现该接口或链路未就绪。
4、该值与ethtool输出的Speed一致,但不可写,仅作快速只读查询用途。

















