nmcli 不直接控制 WOL 硬件设置,需先用 ethtool 启用网卡 WOL(如 sudo ethtool -s eth0 wol g),再通过 nmcli 修改连接配置为 802-3-ethernet.wake-on-lan ignore 防止覆盖,最后用 systemd 服务持久化 ethtool 设置并验证远程唤醒。

nmcli 本身不直接控制网卡的 Wake-on-LAN(WOL)硬件级设置,它管理的是 NetworkManager 的连接层配置。要启用 WOL,需分两步:先用底层工具(如 ethtool)开启网卡的唤醒能力,再确保 NetworkManager 不在接管后意外关闭该功能。以下是清晰、可落地的操作流程:
确认并启用网卡的 WOL 硬件支持
WOL 是网卡固件和内核驱动协同工作的功能,必须由 ethtool 配置:
- 查看当前网卡(例如 eth0)是否支持及当前唤醒状态:
sudo ethtool eth0 | grep -i "wake\|supports" - 若显示 Supports Wake-on: g(推荐)或 u m,说明硬件支持;若为 d 或空,则不支持
- 临时启用 WOL(g 模式兼容性最好):
sudo ethtool -s eth0 wol g - 验证生效:
sudo ethtool eth0 | grep "Wake-on:"—— 应输出 Wake-on: g
防止 NetworkManager 覆盖 WOL 设置
NetworkManager 默认可能在连接启停时重置网卡参数,需通过连接配置锁定 WOL 状态:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 查出当前激活的有线连接名:
nmcli connection show --active | grep ethernet - 为该连接添加“禁用连接管理时对 WOL 的干扰”规则:
sudo nmcli connection modify "有线连接1" 802-3-ethernet.wake-on-lan ignore - 该设置告诉 NetworkManager:不要动网卡的 WOL 状态,由用户手动管理
- 重启连接使配置生效:
nmcli connection down "有线连接1" && nmcli connection up "有线连接1"
持久化 WOL 配置(重启后不失效)
ethtool 的设置在重启后会丢失,需固化到系统启动流程中:
- 创建 systemd 服务(推荐方式):
sudo tee /etc/systemd/system/wol-enable@.service <<'EOF'<br>[Unit]<br>Description=Enable Wake-on-LAN for %i<br>After=network.target<br><br>[Service]<br>Type=oneshot<br>ExecStart=/usr/bin/ethtool -s %i wol g<br>RemainAfterExit=yes<br><br>[Install]<br>WantedBy=multi-user.target<br>EOF
- 启用服务(以 eth0 为例):
sudo systemctl daemon-reload<br>sudo systemctl enable wol-enable@eth0.service<br>sudo systemctl start wol-enable@eth0.service
- 验证开机后是否仍有效:
sudo systemctl status wol-enable@eth0+ethtool eth0 | grep "Wake-on:"
验证远程唤醒是否可用
完成配置后,还需实际测试闭环:
- 关机前确认:
sudo shutdown -h now(不是重启),确保系统完全断电但网卡仍供电(主板 BIOS 中需开启 “PCIe/Onboard LAN Power On” 类似选项) - 从另一台设备发送魔术包(如使用
wakeonlan工具):wakeonlan aa:bb:cc:dd:ee:ff(替换为目标网卡 MAC 地址) - 若机器成功上电并进入 BIOS/启动界面,说明 WOL 已通;后续再配合 SSH 自启服务,即可实现完整远程运维链路

















