Logo systemu Linux: Pingwinek
Opublikowany 2024-01-27 10:32:49 UTC przez: Redaktor

Problem z uruchamianiem komputerów za pomocą WOL (Wake On Lan)

Nie działa "Wake On Lan" (WOL) - DEll Wyse i karta NIC RTL8111/8168B

Rozwiązanie problemu Wake on Lan na niektórych płytach z kartą sieciową Realtek. Zakupiłem Dell Wyse i napotkałem, pewien problem: co prawda, w menu BIOS-u znajduje się opcja umożliwiająca wybudzenie z zamknięcia, lecz komputer nie reaguje na [magiczne pakiety] -> pakiety WOL. Jak zatem wybudzić komputer z uśpienia (APM S3), hibernacji  (S4), wyłączenia (S5)?

Na początku trzeba zrozumieć w jaki sposób karta sieciowa zachowuje się podczas usypiania / hibernowania lub wyłączania komputera.


Rozwiązanie:

Na początek zainstalujmy niezbędene pakiety (zaloguj sie do systemu jako root):

apt install ethtool

Wyświetlamy konfigurację interfejsu poleceniem:

ip l

Ponieważ mój komputer wyświetla kilka interfejsów, poniżej podaję  jeduynie dane wyjściowe interfejsu, który mnie interesuje, a nie całe dane wyjściowe polecenia.

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether bc:24:11:09:9c:7d brd ff:ff:ff:ff:ff:ff
    altname enp0s18
Ethtool używa nazwy interfejsu, w tym przypadku jest to "enp4s0". Maszyna, której użyłem do wybudzenia, posiada adres MAC (bc:24:11:09:9c:7d), więc warto go gdzieś zapisać. Budzę go z sieci LAN, więc adres IP nie jest tak ważny, a żeby móc się z nim połączyć przez SSH, i tak muszę go znać, więc tak naprawdę potrzebuję tych dwóch informacji. Teraz sprawdź, czy obsługuje Wake-On-LAN.
sudo ethtool enp4s0

Ethtool poda konfigurację informacje Wake-On-LAN, ale musisz uruchomić go jako root. Ważne linie na wyjściu znajdują się na dole i wyglądają mniej więcej tak, jeśli obsługują funkcję Wake-On-LAN.

Supports Wake-on: pumbg
Wake-on: d

Strona podręcznika dla ethtool wyjaśnia, co oznacza ten tajemniczy "pumbg" - litery oznaczają różne opcje obsługiwane przez ten interfejs dla Wake-On-LAN. W tym przypadku są to:

Option Description p Wake on PHY activity u Wake on unicast messages m Wake on multicast messages b Wake on broadcast messages a Wake on ARP g Wake on MagicPacket messages s Enable SecureOn™ password for MagicPacket™ f Wake on filter(s) d Disable  (wake  on  nothing).  This option clears all previous options.

 

Ostatnia opcja, na której ustawiono interfejs: d. Oznacza to (obudź się bez niczego). Ta opcja usuwa wszystkie poprzednie opcje. Teraz, gdy wiem, że karta to obsługuje, nadszedł czas, aby to wypróbować. Uruchamiamy zatem:

ethtool --change enp4s0 wol g

Opcja Wake-on powina zmienić cię na:

Wake-on: g

Teraz czas wyłączyć nasz komputer i z innej maszyny wysłac pakiet:

wakeonlan bc:24:11:09:9c:7d

Pamiętaj wcześniej o instalcji pakietu wakeonlan na innej maszynie np:

apt install wakeonlan

Komputer obudził się, zatem:

Czas zrobić to trwale

Ustawienia

Przyczynami nie działania WOL jest, to że karata po każdym restarcie włącza opcję:

Wake-on: d

Zatem utwórzmy serweri, który za każdym razem będzie przełączał kartę w tryb g

Komenda which ethtool wskaże gdzie znajduje się polecenie ethtool. W Debianie będzie to: /usr/sbin/ethtool, tworzymy zatem plik /etc/systemd/system/wol.service. Wklejamy poniższą treść:

[Unit]
Description=Enable Wake On Lan

[Service]
Type=oneshot
ExecStart = /usr/sbin/ethtool --change enp4s0 wol g

[Install]
WantedBy=basic.target

Pamiętaj by podać nazwę interfejsu sieciowego w twoim komputerze u mnie to: enp4s0, ścieżka do ethtool może także się różnić, jeśli to Debian będzie taka sama

Uruchomienie serwisu

By uruchomić serwis wykonaj poniższe polecenia:

systemctl daemon-reload
systemctl enable wol.service

wol.service jest nazwą swerisu i jednocześnie to nazwa pliku w którym go zdefiniowaliśmy. Możesz sprawdzić status:

systemctl status wol

To wszystko.

Powrót do Listy artykułów