Pobudka na odległość, czyli Wake on LAN w praktyce – suplement

Wpis archiwalny, oryginalnie pojawił się na blogu applesauce.pl

 

Na początku maja ubiegłego roku po wielogodzinnych testach, próbach i poszukiwaniach powstał artykuł stanowiący mini-kompendium wiedzy na temat Wake On LAN. Spotkał się ze sporym zainteresowaniem pomimo faktu, że opisane doświadczenia i wyniki były dość mocno ograniczone do posiadanego przeze mnie sprzętu, a w szczególności routera – Apple Time Capsule. Niestety to właśnie to urządzenie stanowi słabe ogniwo, przyczynę przez którą budzenie z sieci Internet nie działa poprawnie.

Osoby zaczynające dopiero zabawę z WOL zapraszam do lektury wcześniejszego artykułu – wiedza tam zawarta pomoże zrozumieć dzisiejszy wpis.

Niedawno – aktualizacja z dnia 24.07.2014 – zasugerowałem czytelnikom, posiadaczom innych routerów (z możliwością instalacji alternatywnego firmware’u) wykorzystanie VPNa(-u?) co mogłoby sprawić, że Magiczny Pakiet trafi do sieci lokalnej. Okazuje się, że oprogramowanie typu dd-wrt czy Tomato pozwala również na modyfikację, której nie oferują urządzenia sieciowe Apple, tj. dodawanie statycznych, trwałych wpisów w tablicy ARP na routerze. Z tego rozwiązania skorzystał Paweł Szczepanek, który podzielił się z nami swoją wiedzą. Mail zawierający kolejne kroki prowadzące do celu zamieszczam w całości poniżej (odrobinę przeredagowany za sugestią i zgodą autora):

 

Cześć
Przeczytałem aktualizacje, piszę do ciebie list zamiast komentarza we wpisie. Zawartość tego listu daję na prawach CC 3.

Mam router Linksys WRT160NL z oprogramowaniem: DD-WRT v24-sp2 (08/07/10) std (SVN revision 14896)
Konfiguracja komputera wzbudzanego: Win7 Ultimate 64-bit, Gigabyte GA-F2A85X-UP4, AMD APU A10-5800k 4GHz; karta sieciowa: RealTek Semiconductor RTL8168/8111 PCI-E Gigabit Ethernet NIC

Ponieważ zadziałało budzenie kompa na odległość (z internetu), więc opiszę co robiłem.

Przeczytałem ten wpis w wiki aby lepiej zrozumieć jak to może działać. No i generalnie chodzi o to, że forwardowanie portów 9 lub 7 na adres rozgłoszeniowy często nie działa. Raczej nie chce wnikać dlaczego ale coś bym przypuszczał, że specyfikacja nie pozwala na zapis w odpowiednich plikach konfiguracyjnych od routingu przekierowania na adres typu 192.168.1.255 (broadcast).

Stąd rozwiązanie leży w tym, że kierujemy te porty (9) na inny adres, na którym NIE MA jakiegoś urządzenia – np. 192.168.1.254 i ten adres w tablicy ARP definiujemy jako rozgłoszeniowy (konstruujemy na nim odpowiedni pakiet rozgłoszeniowy).

Ja tak zrobiłem jak piszą w tym rozdziale na dd-wrt, czyli:

dałem forwarding:

wol | 9 | 9 | udp | 192.168.1.254 | x

i uzupełniłem ARP:

arp -i br0 -s 192.168.1.254 FF:FF:FF:FF:FF:FF

W artykule wyjaśniają dlaczego tak a nie inaczej trzeba go zbudować (to FF:…) oraz co tam jeszcze jest istotne.

Do obserwowania przychodzących pakietów Magic używam programu Wake-On-Lan Packet Sniffer (co ciekawe mam wersję 1.2 a na stronie widnieje v1.1), a pakiety wysyłam z programu Wake On Lan GUI.

Dla mnie ważne było to że wysyłałem Pakiet Magic z maską 255.255.255.255 na mój IP routera z adresem MAC ustawionym już dla właściwego kompa w LAN. Bez tej maski nie przekazywał całego IP routera tylko rozgłoszeniowy (a więc typu x.x.x.255)

Tutaj właśnie tego nie rozumiem w pełni. Być może chodzi z tymi maskami o to, aby pakiet Magic wysłać do wszystkich komputerów w podsieci, ale ja w tym momencie (wysyłka z Internetu) nie chcę go posyłać gdzieś na wiele IP tylko konkretnie na ares IP mojego routera. Potem dopiero rozgłosi się już w mojej sieci lokalnej za routerem.

Generalnie działa u mnie bo Sniffer pokazuje że przyszedł pakiet. Mówię tu oczywiście o wysyłaniu z całkiem innego miejsca w sieci.

Kompy obserwowałem przez TeamViewer. Całkiem zacny programik i śmiga za Free dla użytkowników niekomercyjnych.

Sam TeamViewer także oferuje wzbudzanie kompów jeśli mamy je zarejestrowane w tym programie, ale to nie zadziałało u mnie – trochę mnie to martwi, bo nie widzę przeciwskazań aby TeamViewer wysłał Magic Pakiet na wskazany przeze mnie IP routera – i potem już router z portu 9 zajął by się resztą….

Mam jeszcze po drugiej stronie mojej sieci router D-Link DIR-300, ale posiada fatalny interfejs webowy i nie można modyfikować w nim tablicy ARP.

Na forach polecają po prostu podmienić w nim zarządzanie na dd-wrt ale tego się na razie nie podjąłem.
http://www.dd-wrt.com/wiki/index.php/DIR300 (mam tę wersję Revision A)
Samo skierowanie w tym DIR-300 portu 9 na broadcast do mojej sieci LAN nie dawało efektu – i temu się nie dziwię. Sądzę że podobnie i w tym routerze musiałbym
dopisać wpis do ARP.

I na koniec: tutaj piszą, że aby móc wysyłać pakiet budzący z Internetu, wymagany jest router na którego można się telnetować i ustawiać wpisy w ARP.

To tyle.

Pozdrawiam

 

Ze swojej strony dodam, że:

jeśli wasz router pozwala na dostęp via Telnet/SSH możecie z poziomu tego urządzenia wysłać Magiczny Pakiet wykorzystując komendę wol (przy czym należy zastosować pełną ścieżkę!):

/usr/sbin/wol -i 192.168.1.255 -p PP AA:BB:CC:DD:EE:FF

192.168.1.255 – ten adres należy zastąpić adresem rozgłoszeniowym w waszej sieci lokalnej,

AA:BB:CC:DD:EE:FF – oznacza adres MAC komputera, który chcecie obudzić.

Kwestia maski 255.255.255.255 o której pisze Paweł związana jest z wybranym sposobem wysyłania pakietów:

  • Limited broadcast. Magic Packet sent to the limited broadcast address (255.255.255.255) it is received by all machines on the same subnet but not forwarded to machines on other subnets.

Czyli właśnie dzięki jej zastosowaniu gwarantujemy, że pakiet trafi wyłącznie do wszystkich urządzeń znajdujących się w tej samej podsieci, i nie zostanie przesłany dalej.

Jak wcześniej wspomniałem, ograniczenia Time Capsule sprawiają, że powyższe przepisy nie zadziałają. Można wydłużyć nieco czas przechowywania wpisów w tablicy ARP stosując adresację statyczną, włączyć domyślny host w Narzędzie AirPort -> wybieramy Time Capsule i klikamy Edycja -> Sieć -> Opcje sieci, ale prędzej czy później utracimy możliwość wybudzania komputera.

Oczywiście, jeśli poświęcimy jeden komputer i pozostawimy go włączonego, to po zdalnym podłączeniu możemy z tego komputera wybudzić pozostałe maszyny w sieci. Wydaje mi się jednak, że zdecydowanie bardziej rozsądnym rozwiązaniem będzie wymiana routera.

Pobudka na odległość, czyli Wake on LAN w praktyce – suplement
Tagged on: