不能,nmcli device show 仅显示逻辑配置(如ip、dhcp状态),不包含物理层速率、双工模式等phy信息;需用 ethtool enp0s3 查看 speed、duplex 等真实链路状态。

nmcli device show 能不能直接看到物理协商速度
不能。nmcli device show 显示的是网络接口的逻辑配置(IP、DHCP 状态、连接名等),不包含底层 PHY 层信息,比如双工模式、速率、自动协商状态。它甚至不会告诉你网卡当前是 100Mbps 还是 2.5Gbps——这些得查内核暴露的物理层接口。
真正有效的命令是 ethtool
nmcli 本身不提供链路协商速度查询能力,必须配合 ethtool。这是 Linux 下查看网卡物理链路状态的事实标准工具,直接读取驱动和 PHY 寄存器。
- 运行
ethtool <code>enp0s3(把enp0s3换成你的实际网卡名,可用nmcli device status查) - 重点关注输出中这几行:
Speed: 1000Mb/sDuplex: FullAuto-negotiation: onLink detected: yes - 如果显示
Speed: Unknown!或Link detected: no,大概率是网线没插、对端未上电、或网卡驱动未正确上报 PHY 状态(常见于某些 Realtek 或虚拟化网卡)
nmcli 和 ethtool 的分工要分清
nmcli 管连接生命周期(启用/禁用连接、切换 profile、查看 IP 分配),ethtool 管硬件链路本身。两者不重叠,也不能互相替代。
- 不要尝试用
nmcli device modify去“设置协商速度”——那是无效的,物理速率由 PHY 自动协商决定,用户空间无法强制(除非用ethtool -s关闭 auto-neg 并手动设速,但极不推荐) -
nmcli connection show里的802-3-ethernet.speed字段只是个提示值,仅在某些旧版 NetworkManager 配合特定驱动时参与初始化,不影响实际协商结果 - 如果
ethtool报错No such device,说明网卡名已变更(如从eth0变为enp0s3),别硬套旧命名;用ip -br link或nmcli device status确认实时名称
遇到 Speed: Unknown! 怎么排查
这不是 nmcli 的问题,而是驱动或硬件反馈异常。优先检查这三点:
- 确认网卡驱动已加载:
lspci -k -s $(lspci | grep Ethernet | head -n1 | awk '{print $1}'),看 Kernel driver in use 是否为空 - 某些 USB 转以太网适配器(如 ASIX AX88179)需额外固件,
dmesg | grep -i firmware查有无加载失败提示 - 虚拟机场景下,确保客户机工具(如 open-vm-tools)和宿主机网络后端(如 vmxnet3、e1000e)匹配,否则
ethtool可能返回模拟值或不可用
nmcli 输出里藏着 “Link Speed” 字段——那块儿根本没设计放这个。











