Zdarza Ci się codziennie uruchamiać komputer? A może musisz ręcznie wystartować kilka komputerów w biurze czy pracowni szkolnej? W takim wypadku warto pomyśleć o jakimś automacie. Wake on LAN to bardzo stara ale jak przydatna technologia. Umożliwia ona włączenie komputera poprzez sieć lokalną (LAN). Wykorzystanie tej metody daje nam sporo możliwości. Dzięki niej będziemy mogli uruchamiać zdalnie nasz komputer np. korzystając z widgetu w Androidzie lub zmusić router, aby uruchamiał komputer codziennie o godzinie 8:00.

Wstęp i teoria

Można by powiedzieć, że płyty główne typu ATX zawsze są pod napięciem. Po wyłączeniu komputera, zasilacz dostarcza 5V do urządzenia. Umożliwia to czuwanie niektórym elementom komputera czy serwera. Włączenie sprzętu do pracy zazwyczaj polega na wciśnięciu guzika Power. Zasilacz zaczyna dostarczać pozostałe napięcia i maszyn startuje. Sygnałem, który daje znać do startu może być również przerwanie wygenerowane modemem, zegar (jeśli ustawiliśmy taką opcję w BIOS), czy też odbiór specjalnego pakietu (Magic Packet) przez kartę sieciową.

Poza Magicznym Pakietem, musimy posiadać kartę sieciową, która wspiera WoL, a opcja te powinna być włączona w BIOSie. Jeżeli do karty sieciowej dotrze specjalny pakiet, wysyła ona sygnał do płyty głównej o potrzebę włączenie zasilania. Uruchomienie komputera rozpocznie się niemal natychmiast po otrzymaniu pakietu.

Magic Packet

Jest to specjalny pakiet, który umożliwia włączenie komputera poprzez sieć. Ważną częścią takiego pakietu jest jego ładunek (ang. payload), który składa się z 102 bajtów. Pierwsze 6 bajtów jest zapełnione jedynkami FF: FF: FF: FF: FF: FF, a po nich następuje szesnaście razy powtórzony adres MAC komputera, który ma się uruchomić.

Magic Packet - Wake On LAN

Magic Packet z zaznaczonym ładunkiem (ang. payload).

0000  ff ff ff ff ff ff 78 d6  f0 8f d3 c0 08 00 45 00   ......x. ......E.
0010  00 82 00 00 40 00 40 11  b7 b5 c0 a8 00 66 c0 a8   ....@.@. .....f..
0020  00 ff d3 9f 00 09 00 6e  1f 38 ff ff ff ff ff ff   .......n .8......
0030  84 8f 69 ad ca 5a 84 8f  69 ad ca 5a 84 8f 69 ad   ..i..Z.. i..Z..i.
0040  ca 5a 84 8f 69 ad ca 5a  84 8f 69 ad ca 5a 84 8f   .Z..i..Z ..i..Z..
0050  69 ad ca 5a 84 8f 69 ad  ca 5a 84 8f 69 ad ca 5a   i..Z..i. .Z..i..Z
0060  84 8f 69 ad ca 5a 84 8f  69 ad ca 5a 84 8f 69 ad   ..i..Z.. i..Z..i.
0070  ca 5a 84 8f 69 ad ca 5a  84 8f 69 ad ca 5a 84 8f   .Z..i..Z ..i..Z..
0080  69 ad ca 5a 84 8f 69 ad  ca 5a 84 8f 69 ad ca 5a   i..Z..i. .Z..i..Z

Konfiguracja systemu

Nadszedł czas na skonfigurowanie systemu operacyjnego, aby uruchamiał się dzięki WoL. Za pomocą narzędzia ethtool możemy sprawdzić aktualną konfigurację karty sieciowej pod systemem oraz czy wspiera ona Wake on LAN.

[root@364456 ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Link detected: yes

W wyniku tego polecenia zobaczymy dwie opcje Supports Wake-on oraz Wake-on. Pierwsza z nich mówi o tym jakie typy WoL wspiera karta sieciowa, a druga w jakim trybie jest ona ustawiona. Do wyboru mamy (man ethtool):

  • 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(tm)
  • s Enable SecureOn(tm) password for MagicPacket(tm)
  • d Disable (wake on nothing)

Możemy teraz spróbować włączyć opcję poleceniem ethtool -s eth0 wol g. Aby działało to po każdym restarcie komputera należy dodać opcje do odpowiednich plików. W przypadku systemów opartych o Red Hata (CentOS, Fedora) będzie to plik z konfiguracją karty sieciowej: /etc/sysconfig/network-scripts/ifcfg-eth0. Dopisujemy w nim opcję: ETHTOOL_OPTS="wol g".

Dla systemów opartych o Debiana lub Ubuntu w pliku /etc/network/interfaces dodajemy parametry: up ethtool -s eth0 wol g np:

shahar@shahar-backup:~$ cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface

auto lo
iface lo inet loopback
# The primary network interface

auto eth0
iface eth0 inet static
        address 10.0.0.1
        netmask 255.255.255.0
        gateway 10.0.0.138
        up ethtool -s eth0 wol g

Niestety jeżeli korzystamy z NetworkManagera, powinniśmy go usunąć, gdyż nadpisze on nasze ustawienia.

Jeżeli wszystko ustawiliśmy poprawnie, czas na zdalne uruchomienie komputera.

Konsolowe WoL

Do zdalnego wzbudzenia komputera posłuży nam polecenie wol. Aby wzbudzić zdalnie maszynę, należy podać jej adres MAC i czekać aż wystartuje.

[root@lucian~]# wol 40:40:C9:31:CC:79
Waking up 40:40:C9:31:CC:79...

Natomiast jeżeli komputer, który chcemy wzbudzić znajduje się za jakimś urządzeniem sieciowym np. routerem, musimy podać adres IP z danej sieci, aby routery wiedziały gdzie skierować Magic Packet.

[root@lucian~]# wol -p 9 -h 192.168.0.1 40:40:C9:31:CC:79
Waking up 40:40:C9:31:CC:79...

Budzimy komputer z poziomu routera

Jeżeli posiadamy router, na którym jest możliwość zainstalowania DD-WRT, pozwoli nam na uruchamianie komputera w domu zdalnie poprzez Internet. Opcja ta dostępna jest w zakładce Administracja –> WOL.

DD-WRT Wake on LAN

DD-WRT umożliwia również cyklicznie startowanie komputera. Możemy również dodać zadanie do CRONA i ustawić, aby maszyna uruchamiała się codziennie o 8:00.

Budzimy komputer z Androida

Na telefony wyposażone w system Android znajdziemy również wiele aplikacji, które pozwolą nam na wykorzystanie Wake on LAN.

Wake on LAN - Android Wake on LAN - Android Wake on LAN - Android
Teraz wystarczy tylko skonfigurować aplikację i ustawić widget na pulpicie. Zdalnie z telefonu możemy uruchamiać nasz komputer.

  • Giergon

    Sprawdziłem i działa z laptopa i programiku pod Windowsem. Uruvchomiłem sobie kompoa. A będzie działało jak odpalę WOL z poziomu Androida ale poprzez GPRS?

    • jogi

      powinno działać. Tylko upewnij się że router nie blokuje tych pakietów (9 portu)

    • Raczej nie. W teorii zadziała jeżeli masz publiczne IP na serwerze/routerze. Pytanie tylko, czy taki pakiet nie zostanie gdzieś wycięty po drodze w sieci.

      No i co będzie jak ktoś podsłucha transmisję i będzie Ci potem w nocy komputer włączał ;)

    • jogi

      wtedy korzysta się z magicznego pakietu a nie broadcast-a (chyba)

    • Tak, ale Magiczny Pakiet może zostać wycięty gdzieś pomiędzy Tobą a Twoim routerem.

    • W dobrych routerach, lub takich na których można zainstalować DD-WRT lub Tomato można ustawić WAKE ON LAN dla kompa za NATem, wystarczy tylko ustawić jego wewnętrzne IP.

  • perk

    Z tym WOL przez router to niestety czasem może być problem.

    Na przykład Tl-wr543g pomimo tego, że ma adres IP komputera ustawiony na sztywno po MACu (w tablicy ARP), to niestety po jakimś czasie ten wpis jest kasowany i komputera nie da się wybudzić (problem opisany tutaj: http://forum.purepc.pl/Sprzet-Sieciowy-Wi-fi-f36/… )

    Stąd na prostym routerze dla prostego człowieka takie cuda nie chcą działać.

    • "to nie wiemy na jakim IP działa karta sieciowa"
      Ale po co Ci adres IP? Nie masz adresu IP jeżeli komputer jest wyłączony. Wysyłasz MAC oraz adres sieci. Wtedy router powinien posłać wszędzie Magic Packet po całej sieci i odbierze go ta karta, której MAC jest w pakiecie.

    • Tomek

      Da sie to zrobić poprzez przekierowanie konkretnego portu wejściowego na port rozgłoszeniowy, wtedy nawet jeżeli router zgubi tablice ARP to roześle magiczny pakiet do wszystkich urządzeń, a to z właściwym MAC sie wybudzi,

      mam tak zrobione i działa, dodatkowo jeszcze switch jest po drodze, co prawda na innym routerze ale myśle że jest to do ustawienia również na tym,

  • o_O

    Mnie by bardziej interesowało jak zrobić Wake on LAN na hasło.
    Tzn. żeby magiczny pakiet musiał zawierać jeszcze prawidłowe hasło, i dopiero taka kombinacja budziłaby komputer.
    Ale to zapewne wymagałoby wymiany BIOSu (pewnie na jakiś otwarty).