在 Linux 系统中,nmcli 无法直接配置网卡节能选项,因为它只负责管理网络连接这一抽象层,例如 IP、路由、DHCP 等参数,并不会下探到 MAC/PHY 层寄存器或驱动私有 ioctl 接口;像 EEE、LPI、ASPM 这类硬件级网络节能功能,通常必须借助 ethtool、setpci 或内核启动参数来完成设置。

nmcli 不能设置网卡节能参数,包括 EEE、LPI、ASPM 等常见省电特性。这些功能属于硬件层或驱动层的电源管理能力,通常需要使用 ethtool、setpci 或内核参数进行控制与优化。
为什么 nmcli 对网卡节能无效
nmcli 所能管理的,本质上是 NetworkManager 这一层的“网络连接配置”,例如 IP 地址、路由规则、DHCP、认证信息,以及 Wi‑Fi 连接等内容。但再往底层走,它就不再负责:既不会访问 MAC/PHY 层寄存器,也不会调用网卡驱动私有的 ioctl 接口。像 EEE、TX/RX LPI、Autosuspend 这类网卡省电开关,本质上都位于驱动、固件或硬件层面,因此 NetworkManager 默认不会参与这些节能项的配置。
- 执行
nmcli device show enp0s3时,不会看到任何与网卡节能设置相关的字段 nmcli connection modify也没有eee、lpi、aspm等节能参数可供设置- 如果尝试在
ifcfg-或 Netplan 配置中加入节能选项,通常也会被系统静默忽略
用 ethtool 启用 EEE 和 LPI(最常见场景)
EEE(Energy Efficient Ethernet,节能以太网)以及 TX/RX LPI(Low Power Idle,低功耗空闲)通常需要通过 ethtool --set-eee 来控制,并且依赖链路两端协商成功。也就是说,它并不是“开启后立刻省电”,而是在链路空闲时自动降低频率并减小信号幅度,从而达到节能目的。
- 先检查网卡是否支持:
ethtool --show-eee enp0s3—— 如果显示Supports EEE: Yes但EEE active: no,通常说明对端设备(如交换机或另一台主机)未启用或不支持 EEE - 启用 EEE + TX LPI:
sudo ethtool --set-eee enp0s3 eee on tx-lpi on - 部分网卡(例如某些 Realtek RTL8125/RTL8168)还需要额外启用 RX LPI:
sudo ethtool --set-eee enp0s3 rx-lpi on - 如需关闭用于调试:
sudo ethtool --set-eee enp0s3 eee off - 需要注意:
--set-eee在较旧内核(<5.4)或部分老版本驱动(如 igb、e1000e)上,可能会报出Operation not supported,这时往往只能依赖 BIOS 设置或固件升级解决
让节能设置重启后仍生效
ethtool 命令默认只对当前运行环境生效,系统重启后设置通常会丢失。若想让 Linux 网卡节能配置永久生效,不能依赖 NetworkManager 或 nmcli,而是需要绕过它,直接在系统启动流程中执行相关命令。
- Systemd 服务(推荐,兼容性最好):创建
/etc/systemd/system/enable-eee@.service,让ExecStart调用ethtool --set-eee %I eee on tx-lpi on,然后执行sudo systemctl enable enable-eee@enp0s3 - Debian/Ubuntu:可在
/etc/network/interfaces中使用post-up写入命令(仅适用于由 ifupdown 管理的接口,不适用于默认由 NetworkManager 接管的环境) - RHEL/CentOS:可将
ETHTOOL_OPTS="--set-eee eee on tx-lpi on"写入/etc/sysconfig/network-scripts/ifcfg-enp0s3(同样要求该连接未被 NetworkManager 接管) - 关键点在于:NetworkManager 与 ifupdown 通常是互斥的;如果你的网络连接是通过
nmcli管理,上述 ifcfg 或 post-up 方式一般不会生效,此时应优先选择 systemd 服务或 dispatcher 脚本
其他节能项:ASPM、PCIe LTR、USB autosuspend
除了以太网 PHY 层节能之外,Linux 网络适配器的省电机制还包括 PCIe 总线级的电源管理能力,例如 ASPM(Active State Power Management)。这类功能通常由内核与固件协同控制,ethtool 并不负责这些参数。
- 查看 ASPM 当前状态:
lspci -vv -s 0000:00:1f.6 | grep ASPM(请替换为你自己网卡的 PCI 地址) - 强制启用 ASPM(前提是 BIOS 允许):
echo "powersa ve" | sudo tee /sys/module/pcie_aspm/parameters/policy(临时设置) - USB 网卡节能可通过:
echo auto | sudo tee /sys/bus/usb/devices/*/power/level,但可能带来唤醒延迟问题 - 风险提示:强制开启 ASPM 或 LTR,可能导致某些网卡,尤其是 Intel I210/I225,出现链路不稳定、频繁重连甚至丢包,建议务必在业务低峰期先验证稳定性
真正能够显著改善网卡节能效果的配置,往往并不在 NetworkManager 的图形界面或 nmcli 命令中。很多关键设置更靠近底层:可能是 ethtool 对寄存器的写入,也可能是 setpci 对 PCI 偏移地址的调整,甚至需要通过内核启动参数来实现。更容易被忽略的一点是:EEE 是否真正生效,不能只看本机是否开启,而要看链路两端是否完成协商。如果交换机或对端设备没有启用对应节能能力,那么本地单独打开 EEE,通常也无法获得预期的节能效果。
