目次
1. 什么是 Wake‑on‑LAN(WoL)?
Wake‑on‑LAN(WoL)是一项技术,允许您通过发送称为 “Magic Packet” 的特殊网络数据包远程开启电脑。它在多种场景下都很有用,例如远程服务器管理或在家访问工作电脑。
2. 检查硬件是否支持 WoL
要使用 WoL,您的网卡和主板必须支持它。您可以使用 ethtool 命令来验证兼容性。
如何检查网卡
- 运行
ethtool <network-device-name>并确认是否支持 WoL。如果结果中包含 “Supports Wake‑on: g”,则该设备可以通过 Magic Packet 开机。 - 如果结果显示 “d: Disabled”,说明 WoL 可能在 BIOS 或网卡驱动设置中被禁用。请参考下面的故障排除章节进行配置修复。
3. 在 BIOS 中配置 WoL
必须在 BIOS 设置中启用 WoL。具体菜单因厂商而异,但以下步骤较为通用:
启用 BIOS 中的 WoL 步骤
- 重启电脑并使用
F2、F12或Del等键进入 BIOS。 - 启用类似 “Wake‑on‑LAN” 或 “Wake on PCI Event” 的选项。
- 如有可用选项,禁用 Deep Sleep 模式以提升 WoL 功能。
4. 在 Ubuntu 上配置 WoL
在 Ubuntu 中,您可以通过 NetworkManager 或 ethtool 来启用 WoL。
使用 NetworkManager
- 使用
nmcli connection show查看当前连接名称,然后使用以下命令启用 WoL:nmcli connection modify "<connection-name>" 802-3-ethernet.wake-on-lan magic
使用 ethtool
- 使用
ethtool --change <network-device-name> wol g启用 Magic Packet。 - 为了使配置永久生效,可在
/etc/network/interfaces文件中添加up ethtool -s <device-name> wol g,或创建 systemd 单元在启动时应用该设置。
5. 常见错误信息及解决方案
以下列出常见的 WoL 相关错误及其原因和解决办法。
netlink error: cannot enable unsupported WoL mode
- 原因: 您的网卡或 BIOS 不支持 WoL。
- 解决方案: 确认 BIOS 中已启用 WoL。如果硬件不支持,请更换为支持 WoL 的网卡。
如果显示 “Wake‑on: d”
- 原因: WoL 被禁用。
- 解决方案: 在 BIOS 中启用 WoL,并运行
ethtool --change <device-name> wol g。如果仍然显示禁用,请检查持久化网络配置是否正确。
未收到 Magic Packet
- 原因: 路由器或网络配置可能阻止了广播数据包。
- 解决方案: 使用
tcpdump -i <network-device-name> 'udp and port 9'检查数据包接收情况。同时确保 WoL 在同一局域网内使用。
网络端口没有链路指示灯
- 原因: 网卡未获得供电。
- 解决方案: 在 BIOS 中禁用 Deep Sleep 或其他省电功能,以允许 WoL 正常工作。
6. 测试与远程执行 WoL
配置好 WoL 后,您可以使用 wakeonlan 或 etherwake 发送 Magic Packet 并验证功能。
安装并使用 wakeonlan
- 安装
wakeonlan工具:sudo apt install wakeonlan
- 通过指定 MAC 地址发送 Magic Packet:
wakeonlan <MAC-address>
- 您也可以使用 etherwake,执行
sudo etherwake <MAC-address>。这会发送 Magic Packet 以验证 WoL 是否正常。
7. 故障排除与附加提示
当 WoL 未按预期工作时,请考虑以下附加提示:
- 交流电源要求: WoL 通常在电池供电时无效。请确保笔记本电脑已连接交流电源。
- 网络配置一致性: 在切换 NetworkManager 与 systemd‑networkd 时,设置可能会被重置。请确保两者使用一致的 WoL 配置。
