解决 Ubuntu Server 关机后 Wake-on-LAN (WOL) 失效的问题
1. 问题描述
在维护 Ubuntu Server 时,我们经常发现:如果系统在运行状态,通过魔法封包(Magic Packet)可以正常唤醒;但一旦执行sudo poweroff彻底关机,远程唤醒就会失效。
根本原因: Ubuntu 的网络管理器(Netplan/NetworkManager)在关机流程中,默认会将网卡的状态设置为禁用唤醒并切断供电,导致网卡无法在关机后监听网络指令。
2. 环境准备
确保你已经在 BIOS 中开启了以下设置:
Wake-on-LAN或Power On By PCIE→EnabledErP Ready或Deep Sleep→Disabled(关键:若开启此项,网卡会完全断电)
3. 核心解决方案:修改 Netplan 配置
在 Ubuntu 18.04 及更新版本中,最标准的方法是通过 netplan 显式开启 WOL。
步骤:
- 使用管理员权限打开配置文件(文件名通常以
.yaml结尾):
sudo nano /etc/netplan/50-cloud-init.yaml
在你的物理网卡配置下添加wakeonlan: true。注意 YAML 的缩进非常严格,建议参考以下格式:
network:
version: 2
ethernets:
enp2s0: # 你的网卡名称
addresses:
- 1.1.1.2/24
nameservers:
addresses:
- 1.1.1.1
routes:
- to: default
via: 1.1.1.1
wakeonlan: true # 核心配置:强制关机后保持监听
- 应用配置:
sudo netplan apply
如果提示Invalid YAML: inconsistent indentation,请检查via或to等行的空格是否对齐。
4. 验证状态
安装 ethtool 工具来确认设置是否生效:
sudo apt install ethtool
sudo ethtool enp2s0 | grep Wake-on
预期输出:
Supports Wake-on: pumbg
Wake-on: g
只有当Wake-on值为g时,魔法封包才能在关机状态下唤醒机器。