应使用ethtool命令查看当前实际链路速率,因其直接读取phy芯片协商结果,speed行显示1000mb/s为千兆、100mb/s为百兆;ifconfig和ip link show不提供速率信息,仅显示状态与统计。

直接看 ethtool 输出里的 Speed 行,100Mb/s 是百兆,1000Mb/s 是千兆——这是唯一反映当前实际链路速率的依据。
为什么不能用 ifconfig 或 ip link show
这两个命令只显示接口状态(如 RUNNING、LOWER_UP)、MTU 和收发包计数,完全不输出速率信息。有人误以为 ip -s link show eth0 里“bytes”增长快就是千兆,其实那只是流量累计值,和物理层速率无关。
- 哪怕网卡是万兆芯片,插着百兆网线、连着百兆交换机口,
ifconfig也看不出降速 -
ip link show中的speed字段根本不存在——那是常见误解
ethtool 的 Speed 和 Supported link modes 区别在哪
Speed 是当前协商成功的物理链路速率;Supported link modes 只是网卡硬件支持的能力列表,比如含 1000baseT/Full 说明它能跑千兆,但不代表现在就在跑。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 常见误判:看到
Supported link modes有1000baseT/Full就认为“是千兆卡”,却忽略Speed: 100Mb/s——实际链路已被对端(如老交换机)拉低 -
Link partner advertised link modes显示对端通告的支持模式,如果它没列1000baseT,那本端再强也没用 -
Auto-negotiation: on是关键前提;若为off,Speed值可能不准或固定为手动设置值
不用 ethtool 时的备选方案:读 /sys/class/net/eth0/speed
这个文件内容等价于 ethtool eth0 的 Speed 值,单位是 Mbps(纯数字),但有硬性限制:
- 仅当链路已建立(
Link detected: yes)且驱动正常导出该属性时才可读,否则报No such device或输出N/A - 执行
cat /sys/class/net/eth0/speed,返回1000就是千兆,100是百兆,10是十兆 - 注意:该路径中的
eth0需替换为真实接口名,可用ls /sys/class/net/查看,常见名包括enp0s3、ens33等
遇到 command not found 或 mii-tool 结果矛盾怎么办
ethtool 不是默认安装项,且 mii-tool 已被明确标记为 obsolete(过时),它根本不识别千兆速率,输出类似 100baseTx-FD 时,你无法判断是否其实是 1000baseT 被降级了。
- Debian/Ubuntu:运行
sudo apt install ethtool - RHEL/CentOS/Rocky:用
sudo dnf install ethtool或sudo yum install ethtool - 如果
ethtool和mii-tool输出不一致,无条件信ethtool——后者是内核通过 PHY 寄存器读取的真实协商结果 - 某些嵌入式设备(如 ARM 板)驱动未启用
ethtool支持,此时只能查/sys/class/net/*/speed,或回退到lspci -vv看芯片型号(仅作硬件能力参考)
真正容易被忽略的是:速率不是网卡单方面决定的,而是两端(本机 PHY + 对端设备)自动协商的结果。Speed 值跳变或长期卡在 100Mb/s,大概率是网线质量差、交换机端口配置锁定、或对端设备不支持千兆协商——这时候光看本机配置没用。










