Wake on LAN

Wake up!
Photo by Kinga Howard / Unsplash

Jak uruchomić zdalnie maszynę która posiada kartę sieciową obsługującą wake on LAN? Jak skonfigurować maszynę tak, aby reagowała na specjalne pakiety? Wszystkiego dowiesz się w tym artykule.

Zdalne uruchomienie

Jak uruchomić zdalnie maszynę która posiada kartę sieciową obsługującą wake on LAN? Pod systemami opartymi na Debianie używasz do tego komendy wakeonlan. Jeśli nie posiadasz tego narzędzia w systemie to zainstalujesz je komendą:

sudo apt install wakeonlan

Aby uruchomić maszynę zdalnie potrzebujesz wiedzieć jaki adres MAC posiada jego karta sieciowa. Jeśli chcesz uruchomić maszynę o adresie 00:00:00:00:00:00 to wydajesz komendę:

wakeonlan 00:00:00:00:00:00
Pamiętaj że komendę musisz wykonać znajdując się w tej samej sieci w której znajduje się maszyna docelowa.

Konfiguracja WOL

Konfigurację wake on LAN w systemach opartych na Debianie wykonujemy za pomocą narzędzia ethtool. Aby je zainstalować wykonujemy polecenie:

sudo apt install ethtool

Do konfiguracji potrzebujemy także nazwy naszego intefejsu sieciowego. Znajdziesz go wydając komendę:

ip a

Wynik będzie wyglądał podobnie do poniższego:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 70:85:c2:00:00:00 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 brd 10.0.0.255 scope global dynamic enp4s0
       valid_lft 388sec preferred_lft 388sec

U mnie interfejs sieciowy nazywa się enp4s0. Dodatkowo wyświetla się mac adres karty sieciowej który będzie ci potrzebny przy wydawaniu komendy wybudzającej maszynę, u mnie to jest 70:85:c2:00:00:00.

Czas na konfigurację. Po wydaniu komendy:

sudo ethtool enp4s0 

pojawia się taka informacja:

Settings for enp4s0:
	Supported ports: [ TP	 MII ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Supported pause frame use: Symmetric Receive-only
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                        100baseT/Half 100baseT/Full
	                        1000baseT/Full
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full
	                                     100baseT/Half 100baseT/Full
	                                     1000baseT/Full
	Link partner advertised pause frame use: Symmetric
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Auto-negotiation: on
	master-slave cfg: preferred slave
	master-slave status: slave
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: external
	MDI-X: Unknown
	Supports Wake-on: pumbg
	Wake-on: d
	Link detected: yes

Interesuje nas linia Wake-on, jak widać znajduje się tam litera d. Według opisu polecenia ethtool opcja ta może przyjmować poniższe wartości:

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™
f Wake on filter(s)
d Disable (wake on nothing). This option clears all previous options.

Nas interesuje przestawienie opcji na g - Wake on MagicPacket™. Dokładne wyjaśnienie powyższych opcji znajdziecie w sieci. Znając już nazwę naszego interfejsu oraz opcję jaką chcemy ustawić wydajemy polecenie:

sudo ethtool -s enp4s0 wol g

Następnie komendą

sudo ethtool enp4s0 

Sprawdzamy czy opcja się zmieniła. Jeśli tak, to możemy korzystać z dobrodziejstw uruchamiania maszyny za pomocą magic packet.

Niestety nie każda karta sieciowa obsługuje Wake On LAN. Pamiętaj żeby sprawdzić czy Twój sprzęt obsługuje tą technologię, informacje znajdziesz w instrukcji do karty sieciowej lub płyty głównej (jeśli karta jest na niej umieszczona).