如何在 Ubuntu 上启用并使用 Wake-on-LAN(WoL):完整设置与故障排除指南

1. 什么是 Wake‑on‑LAN(WoL)?

Wake‑on‑LAN(WoL)是一项技术,允许您通过发送称为 “Magic Packet” 的特殊网络数据包远程开启电脑。它在多种场景下都很有用,例如远程服务器管理或在家访问工作电脑。

2. 检查硬件是否支持 WoL

要使用 WoL,您的网卡和主板必须支持它。您可以使用 ethtool 命令来验证兼容性。

如何检查网卡

  1. 运行 ethtool <network-device-name> 并确认是否支持 WoL。如果结果中包含 “Supports Wake‑on: g”,则该设备可以通过 Magic Packet 开机。
  2. 如果结果显示 “d: Disabled”,说明 WoL 可能在 BIOS 或网卡驱动设置中被禁用。请参考下面的故障排除章节进行配置修复。

3. 在 BIOS 中配置 WoL

必须在 BIOS 设置中启用 WoL。具体菜单因厂商而异,但以下步骤较为通用:

启用 BIOS 中的 WoL 步骤

  1. 重启电脑并使用 F2F12Del 等键进入 BIOS。
  2. 启用类似 “Wake‑on‑LAN” 或 “Wake on PCI Event” 的选项。
  3. 如有可用选项,禁用 Deep Sleep 模式以提升 WoL 功能。

4. 在 Ubuntu 上配置 WoL

在 Ubuntu 中,您可以通过 NetworkManager 或 ethtool 来启用 WoL。

使用 NetworkManager

  1. 使用 nmcli connection show 查看当前连接名称,然后使用以下命令启用 WoL:
    nmcli connection modify "&lt;connection-name&gt;" 802-3-ethernet.wake-on-lan magic
    

使用 ethtool

  1. 使用 ethtool --change <network-device-name> wol g 启用 Magic Packet。
  2. 为了使配置永久生效,可在 /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 后,您可以使用 wakeonlanetherwake 发送 Magic Packet 并验证功能。

安装并使用 wakeonlan

  1. 安装 wakeonlan 工具:
    sudo apt install wakeonlan
    
  1. 通过指定 MAC 地址发送 Magic Packet:
    wakeonlan &lt;MAC-address&gt;
    
  1. 您也可以使用 etherwake,执行 sudo etherwake <MAC-address>。这会发送 Magic Packet 以验证 WoL 是否正常。

7. 故障排除与附加提示

当 WoL 未按预期工作时,请考虑以下附加提示:

  • 交流电源要求: WoL 通常在电池供电时无效。请确保笔记本电脑已连接交流电源。
  • 网络配置一致性: 在切换 NetworkManager 与 systemd‑networkd 时,设置可能会被重置。请确保两者使用一致的 WoL 配置。