nmcli 不能配置物理网卡的协商速率,因其仅管理逻辑层配置(如IP、DNS、路由),不处理PHY层参数(速率、双工、自动协商等);真实链路状态需用 ethtool 查看并调整。

nmcli 不能配置物理网卡的协商速率。
nmcli 不处理物理层参数
nmcli 是 NetworkManager 的命令行工具,专用于管理网络连接的逻辑配置:比如 IP 地址、DNS、路由、连接启停、profile 切换等。它不接触、也不暴露 PHY 层信息——包括链路速率(100Mbps / 1Gbps / 2.5Gbps)、双工模式(Full/ Half)、自动协商状态(autoneg on/off)或 Link 检测结果。这些是硬件驱动与物理收发器(PHY)之间协商决定的,属于内核网络子系统底层行为。
试图用 nmcli device modify 或 connection modify 设置 speed/duplex 字段(如 802-3-ethernet.speed)不会生效。该字段仅在极少数旧版驱动初始化阶段作为提示值参考,不影响实际链路建立过程。
排查瓶颈应先查真实协商状态
要确认当前物理链路是否成为内网传输瓶颈,第一步是获取准确的 PHY 状态:
- 用
nmcli device status或ip -br link查出物理网卡名(如enp0s3、ens33) - 运行
ethtool <devname>(例如ethtool enp0s3) - 重点关注输出中三行:
-
Speed: 实际协商速率(如
1000Mb/s),若显示Unknown!表示驱动未正确上报 PHY 状态 -
Duplex: 应为
Full;若为Half,极易引发冲突与重传,显著降低吞吐 -
Link detected: 必须为
yes;若为no,说明物理链路未通(线没插、对端关机、模块故障)
-
Speed: 实际协商速率(如
需要强制设定时,用 ethtool 并谨慎持久化
仅当确认两端设备协商失败(如一端 forced 100M/full,另一端 autoneg),且已知对端固定配置时,才考虑手动设速:
- 关闭自动协商:
sudo ethtool -s enp0s3 autoneg off - 设为千兆全双工:
sudo ethtool -s enp0s3 speed 1000 duplex full - 验证:
ethtool enp0s3 | grep -E "(Speed|Duplex|Auto-negotiation|Link)" - 若需重启后仍生效,不要依赖 nmcli,而是创建 systemd 服务或写入 NetworkManager 的
connection.interface-name脚本调用 ethtool
常见 Speed: Unknown! 的排查方向
这不是配置问题,而是驱动或硬件反馈异常,优先检查:
- 驱动是否加载:
lspci -k -s $(lspci | grep Ethernet | head -n1 | awk '{print $1}'),看Kernel driver in use是否为空 - USB 网卡是否缺固件:
dmesg | grep -i firmware - 虚拟机场景下,客户机工具(open-vm-tools)和虚拟网卡类型(vmxnet3/e1000e)是否匹配


















