如何在 Linux 中启用 LAN 唤醒 (WOL)

Jacki

LAN 唤醒 (WoL) 功能允许您通过发送包含要打开的主机的 MAC 地址的特殊广播以太网数据包(魔术数据包)来远程唤醒 Linux 计算机。

在 Linux 上启用 WoL 之前,您需要确保您的主板支持此功能并在 BIOS 设置中启用它。重新启动主机并打开 BIOS (UEFI) 设置。 WoL 选项的名称可能会有所不同,具体取决于供应商、主板型号和固件版本。该选项可以称为Wake on PCI/PCI-E,Power or Resume on PCI/PCI-E,S5 Wake on LAN。找到并启用此选项。保存 BIOS 设置。

网络工具工具通常用于管理 Linux 中的 LAN 唤醒。安装它:

$ sudo apt install ethtool

列出网络接口:

$ ifconfig

复制以太网 LAN 适配器的接口名称并运行以下命令:

$ sudo ethtool enp3s0 | grep "Wake-on"

在这种情况下,WoL 被禁用(d)。

为特定适配器启用 LAN 唤醒:

$ sudo ethtool --change enp3s0 wol g

Wake On Lan 选项应更改为(通过 MagicPacket 唤醒)。

这 'netlink error: cannot enable unsupported WoL mode (offset 36)' 表示网络适配器不支持 WoL 或在 BIOS 中禁用了 WoL。

您现在可以远程唤醒您的 Linux 主机。但是,网络接口的 WoL 选项将在重新启动时重置。有多种方法可以在计算机启动时自动为适配器启用 LAN 唤醒。

网络管理器是许多 Linux 发行版(包括 Ubuntu、Rocky 和 ​​Debian)中的默认网络管理工具。在 NetworkManager 中,您可以使用以下命令为适配器启用 WoL纳米克利命令:

$ nmcli con show

复制以太网连接的名称(本例中为有线)并启用 WoL:

$ sudo nmcli c modify "wired" 802-3-ethernet.wake-on-lan magic

检查接口上是否启用了 LAN 唤醒:

$ nmcli c show "wired" | grep 802-3-eth

有关的:如何在 Windows 10 中创建 Linux Mint 可启动 USB

对于其他 Linux 发行版,您可以使用系统在启动时启用 WakeOnLan。创建一个新的 systemd 单元:

$ sudo systemctl edit wol.service --full --force

添加以下配置:

[Unit]
Description=Enable Wake-on-LAN
After=network-online.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool --change enp3s0 wol g
[Install]
WantedBy=network-online.target

启用该服务:

$ sudo systemctl daemon-reload
$ sudo systemctl enable wol.service
$ sudo systemctl start wol.service

检查服务是否正在运行:

$ systemctl status wol

您现在可以测试 LAN 唤醒如何在此主机上工作。复制已启用 WoL 的网络适配器的 MAC 地址。

检查 Linux 上的睡眠模式是否已启用:

$ sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target

让你的 Linux 主机进入睡眠状态:

$ sudo systemctl suspend

要在 Linux 上发送魔术包,您可以使用周_al或者以太唤醒工具:

$ sudo apt-get install wakeonlan etherwake

要远程唤醒计算机,请输入其 MAC 地址(WoL 数据包不会被路由,因此计算机必须位于同一 LAN 网段):

$ wakeonlan <MAC-address>
或者:
$ etherwake <MAC-address>

收到魔法包后,计算机应该被唤醒。请注意,WoL 不需要在 Linux 防火墙中打开端口。 WoL UDP 广播数据包由网络适配器直接接收和处理,无需使用 Linux 网络堆栈。