如何在Linux中啟用Linux的喚醒(WOL)

Jacki

LAN-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設置。

Ethtool工具通常用於管理Linux的LAN上的Wake。安裝它:

$ sudo apt install ethtool

列表網絡接口:

$ ifconfig

複製以太網LAN適配器的接口名稱並運行命令:

$ sudo ethtool enp3s0 | grep "Wake-on"

在這種情況下,WOL被禁用(d)。

在LAN上啟用特定適配器的Wake:

$ sudo ethtool --change enp3s0 wol g

LAN選項的喚醒應更改為g(在MagicPacket上喚醒)。

這 'netlink error: cannot enable unsupported WoL mode (offset 36)'表明WOL不受網絡適配器的支持或在BIOS中被禁用。

現在,您可以遠程喚醒Linux主機。但是,網絡接口的WOL選項將在重新啟動時重置。當計算機啟動時,有幾種方法可以自動啟用適配器的LAN喚醒。

NetworkManager是許多Linux發行版中的默認網絡管理工具,包括Ubuntu,Rocky和Debian。在NetworkManager中,您可以使用該適配器啟用WOLNMCLI命令:

$ 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

對於其他Linux發行版,您可以使用Systemd在啟動時啟用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上的Wake在此主機上的工作方式。複製已啟用WOL的網絡適配器的MAC地址。

檢查在Linux上啟用睡眠模式:

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

讓您的Linux主機入睡:

$ sudo systemctl suspend

要在Linux上發送魔術包,您可以使用wk_al或者以太沃克工具:

$ sudo apt-get install wakeonlan etherwake

要遠程喚醒計算機,請輸入其MAC地址(WOL數據包沒有路由,因此計算機必須在同一LAN段中):

閱讀更多:如何在Windows中啟用和配置LAN(WOL)

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

收到魔術包後,計算機應醒來。請注意,WOL不需要打開Linux防火牆中的端口。 WOL UDP廣播數據包是由網絡適配器直接接收和處理的,而無需使用Linux網絡堆棧。