Wake on LAN jest to funkcja wprowadzona w kompaturach z płytami głównymi standardu ATX. Pozwala ona włączyć komputer znajdujący się w obrębie sieci lokalnej wysyłając do karty sieciowej specjalny pakiet – MagicPacket. Pakiet ten wysyłany jest na na adres rozgłoszeniowy (ang. broadcast) sieci LAN lub do konkretnego komputera w sieci LAN. Pakiet jest wysyłany protokołem UDP, zwykle na portach 7 lub 9, ale równie skutecznie działa na każdym innym dowolnym porcie. Wake on LAN over Internet jest natomiast próbą wykorzystania funkcji Wake on LAN poprzez wysłanie owego pakietu z Internetu (WAN-u) a nie sieci lokalnej (LAN-u). W sieci jest wiele takich stron, które pozwalają skorzystać z funkcji Wake on LAN over Internet. Niestety nie wystarczy wyłączyć komputer a potem wejść z innego na taką stronę podać zewnętrzny adres IP naszego komputera oraz adres MAC karty sieciowej i mamy włączony komputer. O co to to nie, najpierw musimy odpowiednio skonfigurować nasz sprzęt.
Konfiguracja BIOS
W BIOS-ie w sekcji Power Management należy włączyć funkcję Wake on LAN. W zależności od wersji funkcja ta może się różnie nazywać np:. Power On By LAN, Power On By PME, Power Up By LAN, Remote Wake-up, Resume by LAN, Resume on LAN, Wake Up On LAN lub podobnie.
Konfiguracja Windows Vista / 7
Domyślnie ustawienia Windows Vista / 7 pozwalają od razu korzystać z funkcji Wake on LAN. Czy tak faktycznie jest upewniamy się klikając prawym przyciskiem myszki na Komputer, następnie Właściwości -> Menedżer urządzeń -> Karty sieciowe -> karta, która ma budzić komputer -> Właściwości – > Zarządzenie energią. Powinniśmy mieć zaznaczone wszystkie opcje, jak na poniższym obrazku:
Konfiguracja Windows XP
W przypadku Windowsa XP wzbudzanie ze stanu pełnego wyłączenia (S5) również działa od razu. Zależy nam jednak aby móc budzić komputer również ze stanu wstrzymania (S1 / S3) i hibernacji (S4). W tym celu przechodzimy do opcji karty sieciowej w sobób opisany powyżej i zaznaczamy tam opcję Zezwalaj temu urządzeniu na wyprowadzanie komputera ze stanu wstrzymania:
Konfiguracja Linuksa Debian / Ubuntu / Linux Mint / LMDE
W przypadku Linuksa czeka nas więcej pracy. Pierwszą rzeczą jaką musimy zrobić, to należy zainstalować komendę ethtool
:
1 |
sudo apt-get install ethtool |
Teraz sprawdzamy, czy funkcję Wake On LAN (WOL) wspiera nasza karta sieciowa, robimy to wydając polecenie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$ sudo ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Link partner advertised pause frame use: No Link partner advertised auto-negotiation: Yes Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: d Current message level: 0x00000033 (51) Link detected: yes |
Najważniejsze są dla nas 2 wiesze: Supports Wake-on, określający jakie tryby WOL są wspierane, wiersz Wake-on, który z trybów jest aktywny. Poszczególne litery oznaczają:
- 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). This option clears all previous options
Tryb g oznacza poszukiwaną przez nas możliwość budzenia po odebraniu magicznego pakietu. Jeśli ten tryb nie jest domyślnie aktywowany (a pewnie nie jest, jak w powyższym przykładzie) musimy sami o to zadbać wykonując polecenie:
1 |
sudo ethtool -s eth0 wol g |
Niestety po restarcie systemu, wartość ta zmieni się do domyślnej. W poprzedniej wersji tego wpisu przedstawiłem kilka metod jak ustawić Wake on MagicPacket(tm) na stałe. Metody te różniły się w zależności od dystrybucji lub nawet od wersji dystrybucji (działająca na starszej wersji niekoniecznie była poprawna na nowszej. Na Wiki XBMC znalazłem w końcu metodę uniwersalną, działającą na wszystkich systemach Debianopodobnych. Pozwoliłem sobie umieścić gotowy skrypt wakeonlan.conf
do ściągnięcia na mojej stronie.
1 2 3 4 5 6 7 |
start on started network script interface=eth0 logger -t 'wakeonlan init script' enabling wake on lan for $interface ethtool -s $interface wol g end script |
Instalację tego skryptu z poziomu konsoli / terminala przeprowadzamy następująco:
1 2 3 4 |
wget /download/wakeonlan.conf chmod +x wakeonlan.conf sudo mv wakeonlan.conf /etc/init/ sudo service wakeonlan start |
Jedynie w przypadku Linux Mint Debian Edition (LMDE) należy w powyższym skrypcie zmienić nazwę interfejsu sieciowego z domyślnego eth0 na eth1. Ta dystrybucja ma tą przypadłość, że jedyna obecna w komputerze karta sieciowa oznaczana jest właśnie nazwą eth1. Ewentualnie można przywrócić standardową nazwę eth0, ale o tym w innym wpisie.
Dodatkowo, jeżeli chcemy mieć możliwość wybudzania komputera ze stanu wyłączenia musimy jeszcze wykonać jedną zmianę:
1 |
sudo sed --in-place 's/NETDOWN=yes/NETDOWN=no/g' /etc/init.d/halt |
Testujemy Wake on LAN
Tak przygotowany system jest już gotowy do bycia budzonym w obrębie sieci LAN. Instalujemy jakiś program do generowania magicznych pakietów, w przypadku Linuksa mogą to być:
1 |
sudo apt-get install wakeonlan |
lub
1 |
sudo apt-get install etherwake |
lub graficzny (GTK+)
1 |
sudo apt-get install gwakeonlan |
Następnie ustalamy adres rozszerzeniowy naszej sieci lokalnej (Bcast) oraz adres MAC budzonego komputera (HWaddr):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ ifconfig eth0 Link encap:Ethernet HWaddr <strong>08:00:27:c6:cf:ce</strong> inet addr:192.168.1.102 Bcast:<strong>192.168.1.255</strong> Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fec6:cfce/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3057 errors:0 dropped:0 overruns:0 frame:0 TX packets:2346 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3117220 (3.1 MB) TX bytes:307291 (307.2 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:82 errors:0 dropped:0 overruns:0 frame:0 TX packets:82 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:12353 (12.3 KB) TX bytes:12353 (12.3 KB) |
Jeśli budzony komputer pracuje pod kontrolą Windows aby ustalić adres rozgłoszeniowy naszej sieci lokalnej oraz adres MAC budzonego komputera wydajemy polecenie ipconfig /all
. Polecenie to jednak – w przeciwieństwie do linuksowego ifconfig
– nie podaje adresu rozgłoszeniowego lecz maskę podsieci. Jak wyliczyć na podstawie adresu IP oraz maski podsieci adres rozgłoszeniowy przeczytasz tu.
Teraz już możemy obudzić komputer wydając komendę:
1 |
wakeonlan -i 192.168.1.255 08:00:27:c6:cf:ce |
lub
1 |
sudo etherwake -b 08:00:27:c6:cf:ce |
Komenda etherwake
ma tą przewagę nad wakeonlan
, że zamiast adresu rozgłoszeniowego możemy użyć przełącznika -b
, ale z drugiej strony kompletnie bez sensu jest to, że etherwake
musimy uruchomić jako root 🙁
W końcu możemy użyć graficznego narzędzia gWakeOnLan:
W przypadku Windowsa też jest wiele graficznych aplikacji, ja polecam bardzo rozbudowane narzędzie jakim jest WakeMeOnLan:
Jednak myślę, że najwygodniej do budzenia swoich komputerów użyć telefonu z odpowiednią aplikacją. Telefon zwykle mamy przy sobie, więc odpada nam konieczność zapamiętania długiego ciągu cyfr. W sklepie Google jest wiele aplikacji Wake on LAN.
A oto pierwsza z nich w działaniu:
Jest prosta i funkcjonalna, a co najważniejsze bardzo dobrze realizuje to do czego została stworzona.
Jeśli komputer mimo wszystko Ci się nie obudził, a zastosowałeś się do powyższej instrukcji koniecznie zostaw komentarz. Natomiast jeśli się obudził w LAN-ie, spróbujmy obudzić go z WAN-u 🙂
Wake on LAN przez Internet
Choć Wake on LAN jak sama nazwa wskazuje pozwala na budzenie komputerów w sieci lokalnej to jednak można wykorzystać tą funkcjonalność do budzenia komputerów przez Internet (ang. Wake on LAN over the Internet). Podstawowy problem przy włączeniu komputera z Internetu wynika z faktu, że magiczny pakiet trzeba wysłać na jakiś konkretny adres IP, ale skoro nasz komputer jest wyłączony ów adres IP nie istnieje. Na szczęście są na to sposoby. Jednym z tym sposobów jest wykorzystanie domowego routera. Dzięki niemu zewnętrzny adres IP będzie stale istniał. Poniżej przedstawię dokładną instrukcję konfiguracji domowego routera, do budzenia komputerów przez sieć.
Jeśli jednak nie dysponujesz routerem odsyłam Cię do innego mojego artykułu – Jak zdalnie włączyć komputer – Wake On Lan via PHP, jeśli możesz postawić swoją stronę na innym komputerze w sieci LAN (np. osiedlówce) ten sposób jest dla Ciebie.
Konfiguracja routera
W dzisiejszych czasach router jest już bardzo popularnym urządzeniem w polskich domach. Jedyne wymaganie wstępne dla tej metody to zewnętrzne IP. Dzięki usługom typu No-IP nie musi być ono nawet stałe. No i oczywiście router musi być stale włączony, aby nasze IP było widoczne w Internecie.
Jeśli chodzi o samą konfigurację, to teoretycznie wydawałoby się, że wystarczy w routerze ustawić przekierowanie portu 7 i/lub 9 (tak naprawdę to może być dowolny port, ale zwyczajowo przyjęło się, że do wysyłania magicznych pakietów używa się portów 7 i 9) na adres rozgłoszeniowy naszej sieci domowej (zwykle 192.168.1.255) i po sprawie. Niestety firmowe oprogramowanie mojego routera na to nie pozwala: Error code: 26106. The IP address is not in the same subnet with LAN IP address. Na szczęście udało mi się obejść to ograniczenie. Konfigurację routera przeprowadzimy w 3 krokach.
Wszystkie komputery podpięte do naszego routera kablem, które mają być budzone przez Internet muszą mieć stałe adresy IP. W tym celu przechodzimy do sekcji DHCP -> Address Reservation (nazwy poszczególnych pozycji na stronie konfiguracji routera podaję zgodnie z moim TP-Linkiem) i tam parujemy adresy MAC z adresami IP naszej sieci lokalnej. W moim przypadku to będą 2 komputery stacjonarne, co przedstawia poniższy obrazek:
Skoro już nasze komputery mają stałe adresy IP, teraz możemy przekierować na nie porty przez które będziemy wysyłać magiczne pakiety. Jak już wspomniałem w moim przypadku są to 2 komputery, zatem port 7 został przekierowany na jeden, a port 9 na drugi:
Teraz już Wake on LAN przez Internet powinno działać, ale… tylko przez jakieś 10 minut od wyłączenia komputera. Aby temu zapobiec musimy wpisać nasze komputery na stałe do tablicy ARP routera:
Pora przetestować budzenie komputera z sieci, w tym celu możemy skorzystać z omówionych powyżej aplikacji z tym, że w przypadku budzenia komputera z Internetu podajemy – zamiast adresu rozgłoszeniowego sieci lokalnej – zewnętrzny adres IP naszego routera. Możemy również skorzystać z jednej z wielu stron, które umożliwiają wysyłanie magicznego pakietu z Internetu, np. Online Wake-On-LAN.
Zdalny dostęp do komputera
Komputer obudzony, teraz dowiedzmy się jak się do niego zdalnie dostać. Polecam mój artykuł Zdalny dostęp do komputera omawiający konfigurację usług Secure Shell (SSH) na Linuksie oraz Pulpitu zdalnego (Remote Desktop Protocol – RDP) na Windowsie.