Menu Zavrieť

Wake on LAN

Wake on LAN (WOL) funguje na Ethernete a je nezávislý na používanom protokole (TCP/IP, IPX či iný). Ako názov napovedá, tak budenie funguje v rámci lokálnej sieteLAN predtým predstavoval jeden subnet, takže všetko bolo jednoduché a ďalej je popísané v prvej variante. Dnes je však lokálna sieť veľmi často delená do rady subnetov a ako LAN sa označuje zemepisná poloha. Takže sa WOL rieši do iného subnetu, občas sa označuje ako WOL over the internet, a túto situáciu popisujem v ďalších variantoch.

Pozn .: V článku rozlične používam termíny rámec (frame) a paket (packet), často (nie vždy) sa dajú zameniť, záleží na tom, či nás v danom kontexte zaujímajú aj MAC adresy alebo iba IP adresy a vyššie.

Čo musí spĺňať klient – zapnutie WOL

Najprv začnem tým, čo musí spĺňať klient, teda budený počítač, aby ho bolo možné vzdialene zapnúť .

Je potreba podpora u základnej dosky a u sieťovej karty (NIC). Funguje to tak, že aj keď je počítač vypnutý, tak sieťová karta je stále napájaná a počúva komunikáciu, či neprišiel špeciálne rámec (frame), ktorý sa volá Magic Packet. Sieťová karta pracuje v špeciálnom režime Magic Packet Mode. Vo chvíli, keď zachytí Magic Packet, ktorý je určený pre ňu (podľa MAC adresy, viď ďalej), tak pošle signál základnej doske, aby zapla počítač.

Predtým sa pre externé sieťové karty používal špeciálny kábel, ktorý ju spájal so základnou doskou. Neskôr sa tento budiaci signál začal posielať po PCI zbernici (od verzie PCI 2.2). Dnes máme sieťovú kartu integrovanú na základnej doske, takže je všetko jednoduchšie (ale rovnako to v skutočnosti funguje po PCI alebo PCIe).

Väčšinou stačí v  BIOSe zapnúť funkciu Wake On LAN, ktorá býva nazvaná rôzne, napríklad na mojej domácej základnej doske sa skrýva v  AMI BIOSe pod Power – APM Configuration – Power On By PCIE Device, pretože integrovaná sieťová karta je na PCI Express zbernicu.

Niekedy je potrebné ešte nastaviť sieťovú kartu, čo môžeme urobiť z Windows pod Control Panel – System – Hardware – Device Manager – daný sieťový adaptér – Properties – Advanced – tu nastavenie Wake Up Capabilities, prípadne ešte Wake From Shutdown .

Dôležité je, že štandardne musí byť sieťová karta prepnutá do špeciálneho režimu Magic Packet Mode (to sa prevedie nastavením bitu v internom registri), kedy kontroluje sieťovú prevádzku, či neprišiel Magic Packet. To dosiahneme korektným vypnutím počítača (pri zapnutí sa tento špeciálny mód automaticky vypne), niekde sa tomu hovorí Soft Shutdown. K tomu nedôjde napríklad pri prerušení dodávky elektrickej energie alebo pri vypnutí počítača dlhým podržaním Power Button. Všetko ešte záleží na tom, či do Magic Packet Mode  prepína  ovládač sieťovej karty, potom všetko musí byť nastavené v tomto ovládači a operačný systém musí byť korektne ukončený. Alebo je to riešené v  hardvéri či BIOSe .

Pozn .: To, že je sieťová karta napájaná aj pri vypnutom počítači poznáme podľa toho, že má stále link state (svieti dióda na sieťovej karte aj na porte switche, na switchi sa hlási ako connected).

 

Základný princíp WOL – Magic Packet

Wake on LAN funguje tak, že z nejakej riadiacej stanice odošleme špeciálny rámec (frame) tzv. Magic PacketMagic Packet je štandardný rámec, ktorý obsahuje zdrojovú adresucieľovú adresu, ktorá môže byť adresou cieľovej stanice alebo multicastovej (tzn. aj broadcastovej ) adresy. Dátový obsah paketu musí kdekoľvek vo vnútri (ale väčšinou tu iný obsah nie je) obsahovať synhronizačný stream, čo je 6 bytov o hodnote FF. Nasledovaný 16 krát zopakovanou MAC adresou cieľovej stanice (bez oddeľovača).

Rámec sa odosiela ako UDP a odporúča sa použiť port 9 discard alebo 7 echo, ale väčšinou sa port nekontroluje, takže sa môže použiť ľubovoľný od 0 do 65535. Zdrojový port je dynamický.

WOL v lokálnom subnete

Pomocou Broadcast

Ak sú obe stanice (vysielajúca i budená) vo rovnakom subnete, tak je situácia jednoduchá a bezproblémová. Bežne to funguje tak, že sa Magic Packet pošle ako broadcast. Teda hodnoty v rámci sú na L2 (druhá vrstva podľa OSI modelu) zdrojová MAC = vysielajúca stanicacieľová MAC = FF:FF:FF:FF:FF:FF. L3 zdrojová IP adresa = vysielajúca stanicacieľová IP = 255.255.255.255.

Pozn .: Z toho je vidieť, že pre použitie potrebujeme poznať iba MAC adresu prebúdzanej stanice.

Pozn .: Ak by sme Magic Packet v rámci rovnakého subnetu chceli poslať ako unicast, tak dôjde k problému. Keď fyzická vrstva sieťového rozhrania vytvára rámec a nepozná MAC adresu pre zadanú IP adresu (z lokálnej ARP tabuľky), tak odošle ARP dotaz (broadcast), na ktorý nedostane odpoveď, takže rámec nikdy nevytvorí. My síce MAC adresu poznáme (a navyše nie je dôležitá), ale to by sme museli vytvoriť rámec sami na nižšej vrstve.

WOL do vzdialeného subnetu (cez internet)

Zložitejšia situácia nastane, ak budená stanica nie je v rovnakom subnete, to znamená, že v ceste sa nachádza jeden alebo viacero routerov. Všetko plynie z princípu komunikácie v sieti (alebo funkcie aktívnych sieťových prvkov).

Prvá vec je, že router oddeľuje broadcastové domény, jednoduchšie povedané, Broadcast sa cez router nešíri (štandardne, dá sa to obísť špeciálnou konfiguráciou routera). Aplikácie, ktoré sa dajú získať na internete, väčšinou ponúkajú aj možnosť zadania IP adresy budenej stanice (a bohužiaľ väčšinou bez popisu čo ako zadávať). A od toho sa na internete vedie rad diskusií. Veď predsa vypnutá stanica nemá IP adresu, sieťová karta má iba svoju hardvérovú adresu, teda MAC adresu. Ale použitie tejto IP adresy neslúži na identifikáciu stanice, ale k  identifikácii subnetu.

Pozn .: Sieťová karta v  Magic Packet Mode sa väčšinou nepozerá na L2, L3 ani L4, ale iba do dátového obsahu rámca.

Pomocou unicast

Ak je cieľ v inom subnete, tak môžeme použiť unicast, ale to funguje len chvíľu (možné časy sú uvedené ďalej) po vypnutí počítača. Pri odosielaní paketu naša stanica zistí, že cieľ je v inom subnete, takže správu pošle na bránu (gateway alebo podľa svojej routovacej tabuľky, do rámca sa použije MAC adresa brány a IP adresa cieľa, to rieši fyzická vrstva sieťového rozhrania). Ak router má v ARP tabuľke uloženú danú cieľovú IP adresu, tak použije správnu MAC adresu a odošle rámec. Ak dostane rámec switch a v  CAM tabuľke (Tabuľka MAC adries a portov) nemá záznam, tak pošle správu na všetky porty mimo prichádzajúceho. Ak ešte záznam má, tak pošle priamo na daný port.

Problém ale nastane, keď router nemá záznam v ARP tabuľke. Vtedy pošle broadcast, kde sa pýta, kto má danú IP adresu, ale pretože nedostane odpoveď (od vypnutej stanice), tak paket zahodí.

Pozn .: V tomto prípade teda potrebujeme MAC adresu cieľovej stanice a jej poslednú IP adresu. Teoreticky by sme mohli použiť aj inú IP adresu z daného subnetu, ale ide o to, aby ju router mal vo svojej ARP tabuľke (je nám jedno, že jej na L2 priradí inú MAC adresu) a naopak switch, aby túto priradenú MAC adresu nemal v CAM tabuľke, pretože by rámec odoslal len na iný port. Ak by sme za routerom mali hub, tak by sme mohli použiť IP adresu ľubovoľnej bežiacej stanice v danom subnetu a vždy by nám to fungovalo.

Pomocou smerovaného Broadcast

Aby sme teda dostali paket do cieľového subnetu, môžeme použiť smerovaný broadcast na subnet (Subnet Directed Broadcast, napr. 10.0.0.255), ktorý používa boradcastovú adresu daného subnetu. Ten by mal cestovať cez routre až na ten, ktorý má daný subnet ako priamo pripojený. Tento router upraví rámec na bežný broadcast a odošle ho na zodpovedajúce rozhranie.

Pozn .: V tomto prípade teda potrebujeme MAC adresu cieľovej stanice a broadcastové adresu subnetu, v ktorom sa nachádza.

Keďže však táto technika bola používaná k útokom, tak býva na routeroch alebo i firewalloch väčšinou zakázaná. To sa týka routera, ktorý by mal rámec previesť na broadcast, cez ostatné by mal rámec prejsť normálne.

Pozn .: Najbežnejší je Smurf Attack, ktorý má zariadiť Denial of Services (DoS). Útočník odosiela množstvo paketov  ICMP echo replys podvrhnutou zdrojovou adresou ako DIRECTED broadcast, všetky stanice v subnetu odpovedajúecho replya stanica, ktorej adresa je tá podvrhnutá, je zahltená.