如何在Linux中啟用Linux的喚醒(WOL)
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段中):
$ wakeonlan <MAC-address>
或者:
$ etherwake <MAC-address>
收到魔術包後,計算機應醒來。請注意,WOL不需要打開Linux防火牆中的端口。 WOL UDP廣播數據包是由網絡適配器直接接收和處理的,而無需使用Linux網絡堆棧。
