Wake on LAN over Internet

Már régóta szerettem volna beállítani a Wake on LAN over Internet funkciót az egyik PC-men. Sikerült, leírom a tapasztalataimat, mivel ez másoknak is segíthet.

A LAN-on belül egyszerű beállítani (természetesen ez előfeltétele, hogy az Internet esetében is működjön a funkció): a BIOS-ban (Award BIOS) engedélyezni kell a Modem/WakeUpLAN funkciót (előfordulhat, hogy a PME Event WakeUp-ot is).

  • Windows: A NIC BIOS-ában (Windows Eszközkezelőben) engedélyezni kell a Felélesztés APM üzemmód használatával, a Felélesztés leállítás után hálózaton keresztül funkciókat. Az Energiagazdálkodás fülön engedélyezni kell, hogy a számítógép kikapcsolhassa az eszközt, ekkor aktívvá válnak az ez alatti opciók. Mindkettőt (az eszköz felélesztheti a számítógépet készenléti állapotból és csak hálózatkezelő állomás hozhatja ki a számítógépet a készenléti állapotból opciókat) engedélyezzük. Az utóbbi funkció ahhoz kell, hogy csak magic packet fogadásakor kapcsoljon be a gép. Ügyeljünk arra, hogy a NIC BIOS-ában tiltva legyen, hogy ARP/PING forgalom felébresztheti a gépet, vagy hasonló nevű beállítás (ugyanis ha ez engedélyezett, akkor bármilyen random hálózati forgalom hatására felébred a gép — legtöbbször néhány percen belül a kikapcsolás után).
  • Linux: telepítsük az ethtool csomagot. Adjuk ki a következő parancsot: ethtool -s eth0 wol g, mindezeket rendszergazdaként. Ellenőrizzük, hogy sudo ethtool eth0 esetén (rendszergazdaként) a Wake-on után a g (magic packet) karaktert olvashatjuk-e. Újraindítás után d-t (disabled) látnánk, automatizálnunk kell tehát a WOL engedélyezését. Szerkesszük rendszergazdaként az /etc/network/interfaces fájlt a következőképpen: illesszük az adapterünk (eth0) beállításai közé a következő két sort: post-up /usr/sbin/ethtool -s $IFACE wol g és post-down /usr/sbin/ethtool -s $IFACE wol g. Ekkor lefut a magic packet figyelésének aktiválása az eth0 inicializálásakor, illetve leállításakor. Így tehát garantált, hogy a gépünk felébred a hálózati adapterének címzett magic packetre, sőt csakis azokra, még akkor is, ha nem megfelelően lett leállítva legutóbb.

Fontos megjegyezni, hogy a jelenlegi Linux kernelek nem minden esetben tudják inicializálni az eth0 eszközt, ha a Windows azt kikapcsolhatja (zárolhatja) energiagazdálkodási okok miatt. Ugye a gép felébresztéséhez szükséges engedélyezni, hogy a Windows lezárja a hálózati kártyánkat, így előfordulhat, hogy a Linux nem fogja látni azt.

Ha a fenti beállításokat ellenőriztük, akkor, ha a gépünk MAC címére küldünk magic packetet LAN-on belül, akkor az bootolni fog, sőt S3-ból is felébreszthető. Triviális, de azért felhívom a figyelmet, hogy amikor a gépet szeretnénk felébreszteni S5-ből az (továbbá a szélessávú modem, illetve a router) legyen áram alatt (ha nem így lenne, akkor a gép S6 állapotban lenne). Ellenőrizzük, hogy működik-e a Wake on LAN: küldjünk egy magic packetet a LAN egy gépéről a felébresztendő gépre. Ehhez persze csak egy adat szükséges: a célgép MAC címe (IP cím ismerete nem kell, port, vagy megnyitása — LAN-on belül — nem kell).

Ha működik, akkor már beállíthatjuk, hogy a funkció az Internetről is működjön (azaz tetszőleges, Internetre csatlakozó eszközről (pl. a mobiltelefonunkról) bekapcsoljuk az otthoni gépünket, vagy éppen felébresszük készenléti vagy hibernált állapotából).

Ehhez szükséges megnyitni egy TCP/UDP portot a router tűzfalán (Virtual Server, Port Forwarding). Ezután biztosítani kell, hogy a WAN-ról érkező magic packet eljusson a kikapcsolt célgéphez. A kikapcsolt PC-nek nincs IP címe, így a LAN-unkra kapcsolt minden eszköznek el kell juttatni a magic packetet (ha a routerünk támogatja explicit módon IP cím hozzárendelését MAC címhez, akkor használjuk azt a beállítást; a legtöbb router azonban elfelejti a hozzárendelést néhány perccel a gép kikapcsolása után — ezért lehet, hogy a funkció látszólag működik). Ez a speciális csomag hordozza a célgép MAC címét, így csak a megfelelő gép fog felébredni az akár 250 gép közül. Ezen eljárás (egy külső csomag “szétterítése” a LAN-on) szakmai neve: broadcasting. Ennek megvalósítása: állítsuk be a routerünk LAN beállításai között az alhálózati maszkot 255.255.255.128-ra. Ezután hozzunk létre egy portátirányítást a következő paraméterekkel: be- és kimenő port (tetszőleges szám, csak ne legyen foglalt), IP cím: 192.168.2.127 (a 3. csoportban a 2-es helyett lehet, hogy mást kell beírnunk).

Ezek után már működni fog a bejegyzés címében olvasható funkció. Fontos megjegyezni, hogy a gépünket/modemet/routert tetszőleges számú alkalommal áramtalaníthatjuk — majd visszakapcsolhatjuk az áramot — egy távoli ébresztés előtt, azonban bizonyosodjunk meg közvetlenül az ébresztés előtt, hogy áram alatt vannak a fenti eszközök és a legutóbbi bekapcsolásuk (kivéve persze a PC-t, mivel az a hagyományos értelemben véve ki van kapcsolva, valójában persze bizonyos áramkörök be vannak kapcsolva) óta eltelt néhány perc (felépült-e az internetkapcsolatunk).

Ezután bármilyen, Internetre kapcsolódó eszközünkről férjünk hozzá valamely webes magic packet küldő oldalhoz. Adjuk meg a távoli gépünk IP címét (dinamikus IP cím esetén érdemes beállítani a routerben, hogy egy DNS-hez folyamatosan hozzákapcsolja a gépünk aktuális WAN IP-jét, számos cég nyújt ilyen ingyenes szolgáltatást), továbbá esetlegesen a portot (TCP vagy UDP). Előfordulhat, hogy az alhálózati maszkot is meg kell adni, illetve a célgép IP címét (a funkció működéséhez ezek megadása nem szükséges). Adjuk meg a MAC címet is, ami egyértelműen azonosítja a célgépet a LAN-unkon, majd kattintsunk a felébresztés gombra. Ezután már hozzáférhetünk gépünkhöz távolról (SSH, Távoli Asztal, VNC, FTP…) persze, ha a megfelelő szolgáltatások automatikusan elindultak, illetve az adott portok meg vannak nyitva. Ha végeztünk a munkával (pl. átmásoltunk néhány fájlt, stb.), kikapcsolhatjuk a PC-t:

  • Windows: adjuk ki a shellben (cmd.exe) a shutdown -s -f -c “komment” parancsot. Persze illő tájékoztatni az éppen a gépen interaktívan dolgozó felhasználót, ehhez üzenjünk neki valamit egy kommentben (mivel fél perce van menteni minden munkáját, különben azok végérvényesen elvesznek). Ekkor a gép 30 s után mindenképpen kikapcsol (S5-be). Megjegyzem, hogy a gép előtt ülő felhasználó megszakíthatja a gép kikapcsolási folyamatát (30 s (!) áll erre rendelkezésére, semmiképpen sem több): ki kell adni a shutdown -a parancsot.
  • Linux: adjuk ki a halt parancsot (rendszergazdai jogok szükségesek). A gép azonnal megkezdi a leállást — így ha interaktívan vagy hálózatról mások is használják a gépet, kerülendő ez a megoldás.

A távoli PC-nket készenléti állapotba is tehetjük:

  • Windows: ehhez adjuk ki a rundll32 powrprof.dll,setsuspendstate parancsot. A távoli PC ekkor azonnal (!) készenléti állapotba kerül. Ha valaki éppen dolgozik a gépen, akkor érdemes kerülni ezt a funkciót :). Ha letiltjuk a hibernálást (powercfg -h off),  akkor a gép S3 készenléti (suspend) állapotba (sleep), ha engedélyezzük (powercfg -h on), akkor S4 készenléti (suspend) állapotba (hibernálás) kerül.

A fenti módszerekkel számottevő energiát megtakaríthatunk, ugyanis csak akkor van bekapcsolva a gépünk, amikor távolról ténylegesen használjuk, nem kell feleslegesen bekapcsolva hagynunk, ha a következő időtartamban, amíg fizikailag nem érjük el, szükségünk van a gépünkre távolról.

Kategória: Kategorizálatlan | Megjegyzés hozzáfűzése

Helló világ!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Kategória: Kategorizálatlan | 1 hozzászólás