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ć.
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 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.
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?
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ł ;)
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.
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.
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,
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).