nmcli 无法查看物理网卡协商速率,因其仅管理逻辑连接配置(如IP、DHCP),不访问PHY层;必须用 ethtool 直接与驱动和PHY通信才能获取 Speed、Duplex、Link detected 等真实物理链路信息。

nmcli 不能查看物理网卡的协商速率。它只管理连接配置(如 IP、DHCP、连接启用状态),不接触底层 PHY 层,所以查不到速度、双工模式或自动协商结果。真要看协商速率,必须用 ethtool。
为什么 nmcli 查不到协商速率
nmcli device show 或 nmcli connection show 输出的是 NetworkManager 维护的逻辑信息:IP 地址、网关、DNS、连接名、激活状态等。它不读取网卡驱动上报的物理寄存器,也不和 PHY 芯片通信。即使网卡实际跑在 100Mbps 半双工,nmcli 也不会体现——它甚至不知道链路是否连通。
- nmcli device status 只显示设备是否存在、是否已连接(connected/disconnected)
- nmcli device show enp0s3 不含 Speed、Duplex、Link detected 等字段
- connection 配置里的 802-3-ethernet.speed 是历史遗留提示项,不影响实际协商
正确查看协商速率的方法:用 ethtool
ethtool 是 Linux 查看和调试物理链路的事实标准工具,直接与网卡驱动和 PHY 交互:
- 先确认网卡名:
nmcli device status或ip -br link | grep UP - 再运行:
ethtool enp0s3(把enp0s3换成你的真实接口名) - 重点关注输出中的几行:
-
Speed: 当前协商速率,例如
1000Mb/s、100Mb/s、10Mb/s或Unknown! - Duplex: 全双工(Full)还是半双工(Half)
- Auto-negotiation: 是否开启(on/off)
- Link detected: 物理链路是否连通(yes/no)
-
Speed: 当前协商速率,例如
常见异常及排查方向
如果 ethtool 显示 Speed: Unknown! 或 Link detected: no,说明物理层有问题,和 NetworkManager 无关:
- 检查网线是否插紧、对端设备(交换机/路由器)是否上电
- 确认驱动已加载:
lspci -k -s $(lspci | grep -i ethernet | head -n1 | awk '{print $1}'),看 “Kernel driver in use” 是否有值 - USB 转以太网适配器(如 ASIX、Realtek RTL8153)可能缺固件,运行
dmesg | grep -i firmware查错误 - 虚拟机中,优先选 vmxnet3 或 e1000e 驱动,避免使用老旧的 rtl8139;确保 open-vm-tools 已安装
辅助验证手段(可选)
当需要交叉验证或进一步分析时,可以配合以下命令:
-
mii-tool eth0:较老工具,输出类似negotiated 100baseTx-FD, link ok,但不支持万兆及以上网卡,且部分新驱动已弃用 -
ethtool -i eth0:查看驱动名称和固件版本,有助于判断兼容性 -
lspci | grep Ethernet:确认网卡型号,方便查手册或社区问题 -
cat /sys/class/net/enp0s3/device/speed(部分驱动支持):内核导出的速率值,但不如 ethtool 可靠


















