如何在 Linux 中启用 LAN 唤醒 (WOL)
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 网络堆栈。
