必须打通BIOS固件、内核驱动、系统服务与测试验证四层:BIOS启用Wake-on-LAN并禁用ErP/EuP等节能选项以保障+3.3V待机电压;用ethtool确认网卡支持g模式并临时启用;通过systemd服务持久化配置且将网卡设为NetworkManager非托管;最后用etherwake或wakeonlan发送魔术包验证,同时确保交换机端口未启EEE、使用主板原生网口。
服务器要稳定启用网络唤醒(magic packet)功能,不能只在系统里敲几条命令,得从硬件固件、驱动控制、系统服务到测试验证,四层全部对齐。缺任何一层,都会出现“发包没反应”或“开机又立刻断电”的问题。
BIOS/UEFI 必须开启并切断节能干扰
这是最底层前提:服务器主板必须在 S5(完全关机)状态下,持续给网卡提供 +3.3V AUX 待机电压。否则网卡根本听不到魔术包。
- 开机时狂按 Delete/F2 进 BIOS,找到 Advanced → Power Management 或类似路径
- 启用以下任一选项:Wake on LAN、PME Event Wake Up、Resume by PCI Device(不同厂商命名不同,认准含 “LAN”“PCI”“PME” 关键词)
- 必须禁用 ErP Ready、EuP 2013、Deep Sleep Control、Fast Boot(部分型号需关)——这些会直接切断网卡待机电压
- 保存退出,重启后该设置才固化生效
确认网卡支持并启用 Magic Packet 监听
不是所有服务器网卡都默认支持,尤其某些国产化平台或旧型号 Realtek 芯片,需先验证再操作。
- 终端执行:
ip -br a | grep UP,记下有线接口名(如 enp1s0f0、eno1) - 运行:
sudo ethtool 接口名,重点看两行:- Supports Wake-on: 后是否含 g(表示支持 Magic Packet)
- Wake-on: 当前值是否为 g(d 表示禁用)
- 若为 d,立即执行:
sudo ethtool -s 接口名 wol g - 再次检查输出,确认 Wake-on: g 已生效(此为临时设置,重启即丢)
绕过 NetworkManager,持久化 WOL 配置
麒麟或多数 Linux 服务器默认用 NetworkManager 管理网卡,但它每次重连都会覆盖 ethtool 设置。必须用脱离 NM 的方式固化。
-
推荐 systemd 方式(生产环境首选):
创建服务文件:sudo nano /etc/systemd/system/wol@.service
填入内容(注意替换接口名为你的真实名称):[Unit] Description=Enable Wake-on-LAN for %I After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ethtool -s %I wol g [Install] WantedBy=multi-user.target
- 启用服务:
sudo systemctl daemon-reload && sudo systemctl enable wol@eno1.service(eno1 替换为你自己的接口名) - 额外建议:将该网卡设为 NetworkManager 非托管状态,避免冲突:
sudo nmcli dev set eno1 managed no
发送魔术包验证与常见避坑点
配置完别急着关机测试,先本地验证链路是否通、包是否发得出。
- 安装工具:
sudo apt install etherwake(麒麟适配 Debian/Ubuntu 源)或wakeonlan - 获取目标 MAC:
ip link show eno1 | grep ether | awk '{print $2}' - 本机测试(关机前):
sudo etherwake -i eno1 aa:bb:cc:dd:ee:ff - 关机后,从另一台局域网设备(如笔记本)发送:
wakeonlan aa:bb:cc:dd:ee:ff - 关键提醒:确保交换机端口未启用节能模式(如 EEE)、网线插在主板原生网口(非 USB 或 PCIe 扩展卡)、服务器电源未设为“彻底断电”模式


















