Wake on LAN, czyli komputerowa pobudka: WoL przez Internet

Cykl Wake on LAN nie byłby kompletny gdybyśmy nie poruszyli tematu budzenia komputerów poprzez Internet. Dzięki warstwowej budowie sieci i enkapsulacji budzenie będzie przebiegało tak samo jak w zwykłej sieci LAN, lecz tym razem musimy jeszcze jakoś wysłać odpowiednie ramki poprzez WAN (w naszym przypadku Internet) do innej sieci LAN. Zasada działania jest bardzo podobna do tej opisywanej w przypadku, gdy magiczne pakiety rozsyłaliśmy pomiędzy vlanami. Aby nieco usystematyzować zagadnienie, podzielę cały proces na kilka etapów.

Generujemy magiczne pakiety

Wykorzystać do tego możemy jeden z programów pozwalających na skierowanie pakietów do sieci IP. Wszystkie z polecanych znajdziecie w poprzednim artykule, ale w tym przypadku najbardziej przydadzą się wolcmd lub WakeOnLAN (Aquila Technology), ponieważ pozwalają wybrać port, na który można wysłać magiczne pakiety. Standardowo do WoL używane są porty UDP 7 i 9, jednak warto wybrać inne, mniej oczywiste, ponieważ te portu muszą zostać otwarte na docelowym routerze.

Kolejnymi niezbędnymi elementami są adres MAC komputera, który chcemy obudzić oraz adres IP sieci, w której się znajduje, o tym za chwilę.
Jeżeli nie chcemy korzystać z własnych programów, możemy użyć stron internetowych, które udostępniają możliwość wysłania pakietów WoL z serwera na którym są hostowane. Jednymi z bardziej popularnych są: ten dostępny na stronie twórcy wolcmd oraz nieco bardziej rozbudowany wakeonlan.me. Niewątpliwą zaletą tego rozwiązania jest pominięcie ewentualnych problemów z wychodzeniem pakietów z naszej sieci, która może wynikać z konfiguracji firewalla lub routera. Jako minus online’owych wybudzaczy musimy uznać brak możliwości oskryptowania ich. Poza tym, macie pewność, że te strony nie zapisują gdzieś w bazie waszych danych? 😉

Zmierzamy do celu

Jako, że przechodzić będziemy poprzez sieć rozległą musimy znać, wspomniany wcześniej, adres publiczny docelowej sieci, czyli adres jaki otrzymał router internetowy po drugiej stronie. Adres ten poznać można na kilka sposobów. Jednym z nich jest zalogowanie się na router i sprawdzenie jaki adres otrzymał. Zazwyczaj takie dane znajdą się w zakładce z informacjiami dotyczącymi opcji internetowych na routerze. Innym, prostszym, odwiedzenie strony wyświetlającej nasze IP np: whatismyipaddress.com. W obu przypadkach czynności wykonujemy oczywiście w sieci, w której znajduje sie komputer, który chcemy budzić.
Tak pozyskany adres używamy wraz z poznanym wcześniej adresem MAC do wygenerowania kierowanego rozgłoszenia za pomocą programu, który wcześniej wybraliśmy. Jeżeli macie łacze ze zmiennym IP i planujecie cyklicznie budzić komputery przez internet to warto skonfigurować sobie usługę DDNS na routerze. Dzięki temu wasza sieć będzie miała unikalny adres i będzie można się dostać do niej nawet wtedy gdy dostawca odświeży wam IP.
Jeżeli to wolcmd, polecenie będzie wyglądało tak:

C:\wolcmd 001121334455 84.125.159.20 255.255.255.255 1337

Pakiet posłuży do obudzenia komputera o zmyślonym adresie MAC 001121334455 i zostanie skierowany do adresu 84.125.159.20 używając portu 1337. Jako maski używamy 255.255.255.255, bo chodzi nam konkretnie o ten adres. Jeżeli maska będzie inna to program automatycznie przeliczy podany IP, aby odnaleźć adres rozgłoszeniowy i będzie starał się przesyłkę wysłać właśnie tam. To całkowicie popsuje nasze plany.

Pakiet u bram

Dochodzimy do newralgicznego miejsca. Magiczny pakiet opuścił źródłowy router i dzięki poprawnemu adresowi dotarł do odpowiedniego routera obsługującego docelową sieć. Teraz wszystko zależy od niego i tego jak zinterpretuje nasze zamiary. Najlepszym rozwiązaniem będzie gdy router roześle pakiet w całej sieci, tak jak to się dzieje w sieci lokalnej. Aby tego dokonać musi wysłać go na adres rozgłoszeniowy. Niestety nie wszystkie na to pozwalają. Omówmy zatem dwie metody. W obu przypadkach ustawić musimy przekierowanie portów (Port Forwarding), pozwala na to praktycznie każdy, dostępny na rynku router. Podczas konfigurowania należy również pamiętać o ustawieniach firewall’a na routerze, niektóre porty mogą nie być domyślnie przepuszczane.

Idealne rozwiązanie

W zależności od tego jaki sobie wcześniej port wybraliśmy, taki ustawiamy i każemy wszelkie pakiety na ten port kierowane wysłać do adresu rozgłoszeniowego lokalnej sieci. Pakiet trafiając na taki adres rozprzestrzenia się w LAN, a komputer, którego MAC zaszyty jest w pakiecie budzi się. Większość routerów nie pozwoli jednak przekierowanie portów na adres rozgłoszeniowy.

Działające rozwiązanie

Jeżeli pierwsza metoda nie wypali to pozostaje nam kierować pakiety indywidualnie do odpowiednich maszyn. Na samym początku musimy upewnić się, że komputer, który chcemy budzić będzie miał zawsze taki sam adres IP, bo potrzebujemy go do ustawienia przekierowania portów. Jeżeli LAN oparty jest na statycznych adresach to problem sam się rozwiązuje. Jeżeli wykorzystuje DHCP to musimy zarezerwować dla niego adres. Rezerwacja odbywa się z wykorzystaniem adresu MAC, więc IP zostaje na „stałe” powiązane z adresem MAC. Następnie konfigurujemy przekazywanie pakietów kierowanych na wybrany przez nas port do zarezerwowanego przed chwilą adresu IP. Rozwiązanie jest mało elastyczne, jeżeli zachce nam się budzić w tej sieci kilka komputerów, to dla każdego z nich trzeba powtórzyć procedurę i zastosować inny port UDP. Jednak najważniejszą jego zaletą jest to, że działa. 🙂

Seria „Wake on LAN, czyli komputerowa pobudka” zawiera:
Trochę teorii
Programy
Przygotowanie urządzeń
Vlany i konfiguracja urządzeń Cisco
WoL przez Internet
Konfiguracja WoL na Livebox

Przeczytaj także...

17 komentarzy

  1. pl5 napisał(a):

    Od wczoraj właśnie walczę z WOL przez internet i mam niestety problem, który rozkłada mi już ręce… W sieci LAN działa wszystko pięknie od dobrych kilku miesięcy, natomiast przez net działa tylko przez kilka minut po wyłączeniu kompa, do 20 jakoś. Mam router WGR614v7, który nie pozwala przekierować pakietu na adres rozgłoszeniowy, więc otwieram porty, IP kompa zarezerwowane niby wszystko tak jak powinno być. Czy tu może chodzić o ARP cache na routerze? mimo iż jest na stałe powiązany MAC z IP?? a może coś innego?

    • henrix343 napisał(a):

      wol dziala na tomato rewelacyjnie, na zwyklym sofcie nie chodzi bo dane sa wpisane do tablicy tylko na kilka minut a trzeba je na stale wpisac do tablicy ARP.

    • hgs napisał(a):

      Dokladnie!, dzieki!

  2. kurikulum napisał(a):

    mam ten sam problem co kolega wyżej. pl5 czy rozwiązałeś już ten problem będę wdzięczny za rade mój modem/router to NETIASPOT2

  3. henrix343 napisał(a):

    Netgear 3500l ten sam problem co koledzy. Statyczne IP wpisane w maszynach. W routerze porty przekierowane na te statyczne IP i dupa.

    • Anonim napisał(a):

      Trzeba dodatkowo na stałe przypisać MAC do i-ka w routerze.

    • dd napisał(a):

      Od początku mam przypisane IP do MAC. U mnie rozwiązaniem okazało się tomato, ale nadal nie wiem dlaczego na oryginalnym sofcie nie chce chodzić.

  4. Anonim napisał(a):

    Kwestia jeszcze tego, czy przypisujecie tylko IP do MAC w DHCP (czyli jak komputer spyta się o IP to dostanie to konkretne), czy również w tablicy ARP. Bo w większości paneli jest tylko ta pierwsza opcja – wtedy zostaje próba skonfigurowania tego przez TELNET.

    Pozdrawiam

  5. drdala napisał(a):

    Czy WakeOnLAN (Aquila Technology) jest darmowy dla firm?

  6. kozdromen napisał(a):

    A jaką polecacie aplikacje na telefon z androidem? Próbowałem trzech i o ile Wol działa w sieci domowej to już przez internet nie chce działać. Na routerze mam IP stacjonarki na sztywno i przypisany do niej port 9. Zewnętrzny IP mam stały więc to nie problem. Ale jak włączę sieć 3g w smartfonie to komputer się nie włącza. Wszystko w biosie i karcie ustawione jak trzeba bo działa to w sieci domowej na routerze

    • Lawstorant napisał(a):

      Zobacz czy masz IP w ststycznej tablicy ARP a nie w statycznym DHCP

  7. naza napisał(a):

    Polecam stronkę, która wysyła magiczny pakiet na wpisany adres: wake-on-lan.andromarket.pl

  8. ambrozjusz napisał(a):

    Małą literówkę zgłaszam. Rezerwacja odbywa się z wykorzystanie*m* adresu MAC. Poza tym gratuluję świetnego tekstu.

Dodaj komentarz