Sokszor hasznos lehet, ha távolról fel tudjuk ébreszteni az alvó/kikapcsolt számítógépünket. Ahhoz, hogy működjön, több feltételnek is teljesülnie kell, ezeket vesszük át a továbbiakban.
Érdemes megjegyezni még az elején, hogy legalább ATX-es vagy BTX-es rendszert használjuk. Az AT-s esetén a teljes áramtalanítás miatt nem megoldható a felélesztés. Valamint érdemes még tudni, hogy az áramszünet által áramtalanított ATX-es/BTX-es számítógépek jelentős részénél nem működik a WOL addig, amíg legalább egyszer nem indítjuk el, majd állítjuk le őket szoftveresen.
WOL funkció engedélyezése
Első lépésként engedélyezni kell a BIOS-ban, hogy a hálózati kártyára érkező Wake-Up üzenetekkel fel lehessen kelteni a számítógépet (például: Wake-up from LAN, stb.), vagy ennek hiányában a PCI, PCI-X vagy PCe foglalatba rakott kártyával (például: Wake-up from PCI card, stb.). Alaplapra integrált kártya esetén a használt BUSZ (PCI, PCI-X, stb.) a mérvadó.
Miután ezzel végeztünk, állítsuk be a kliens gépünket! Kezdésként telepítsük fel az ethtool csomagot (Debian/Ubuntu alatt: sudo apt-get install ethtool), aminek használatával megnézhetjük, hogy a hálózati kártyánk támogatja-e a Wake-On-Lan funkció.
Például az eth0 interfész lekérdezéséhez adjuk ki az alábbi parancsot:
root@bash# ethtool eth0 Settings for eth0: Supported ports: [ MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: external Auto-negotiation: on Supports Wake-on: g <-- támogatott funkciók Wake-on: d <-- jelenleg beállított funkció Link detected: yes root@bash#
Látható, hogy a kártya támogatja a “g” funkciót, de jelenleg “d” állapotban van, azaz disabled.
Számos funkció létezik, de természetesen nem minden hálózati kártya támogatja az összeset:
p | Felébresztés fizikai aktivitással |
u | Felébresztés unicast üzenettel |
m | Felébresztés multicast üzenettel |
b | Felébresztés broadcast üzenettel |
a | Felébresztés ARP-vel |
g | Felébresztés MagicPacket küldéssel |
s | Felébresztés jelszóval védett (SecureOn) MagicPacket küldésével |
d | Kikapcsolás (nincs felébresztés). Ez az opció töröl minden korábbi beállítást a felébresztéssel kapcsolatban. |
Driver függő, hogy a gép elindulása során a hálózati kártya milyen állapotba kerül. Ha a driver nem támogatja az előző állapot visszaállítását, úgy előfordulhat, hogy minden rendszerinduláskor kikapcsolt állapotba kerül a WOL funkció. Ebben az esetben érdemes lehet a /etc/rc.local fájlban (A rendszer elindulási folyamata) elhelyezni a alábbi for-ciklust:
for i in `cat /proc/net/dev|sed 1,3d|awk -F ':' '{print $1}'`
do
ethtool ${i}
|grep 'Supports Wake-on:'
|awk '{print "ethtool -s '${i}' wol "$3}'
done
Ezzel a megoldással a rendszer automatikusan bekapcsolja a WOL funkció(ka)t induláskor.
Felébresztés MagicPacket csomag küldésével
Számtalan program létezik, ami képes WOL üzenet küldésére, mi most csak kettőt nézünk meg.
A ‘etherwake’ program használata
Az etherwake program teljesen ki tudja elégíteni az igényeket. Képes jelszavas MagicPacket üzenetet is küldeni, valamint a kimenő interfészt is megadhatjuk, ami jól jöhet több hálózati kártya esetén.
Használat:
etherwake [-i <iface>] [-p aa:bb:cc:dd[:ee:ff]] 00:11:22:33:44:55
Példával élve: ha az eth0 az internet felé néz, az eth1 pedig a belső hálózat felé, akkor nem jelszavas WOL üzenet küldést az alábbi módon tehetjük meg, ha 01:23:45:67:89:ab a célgép MAC címe:
root@bash# etherwake -i eth1 01:23:45:67:89:ab root@bash#
A ‘wakeonlan’ program használata
Másik hasznos program a wakeonlan. Nem tud jelszavas csomagot küldeni, de nem nagy hiányossága, mert amúgy sem támogatják széles körben az eszközök, viszont állítható a cél portszáma. A másik különbség, hogy nem lehet megadni a kimenő interfészt, csak a cél gép IP-címét.
wakeonlan [-i IP_cím] [-p port] [MAC_cím]
Az előző példát használva:
root@bash# wakeonlan 01:23:45:67:89:ab Sending magic packet to 255.255.255.255:9 with 01:23:45:67:89:ab root@bash#
Előbbi példa IP-címmel (feltételezve, hogy a gép a 10.20.30.40-es IP-címet használja):
root@bash# wakeonlan -i 10.20.30.40 01:23:45:67:89:ab Sending magic packet to 10.20.30.40:9 with 01:23:45:67:89:ab root@bash#
Megfelelő ARP tábla esetén működik, de ha a cél gép MAC-címe kikerül az ARP táblából, előfordulhat, hogy rossz interfészen megy ki a csomag.
Ellenőrizzük az ARP táblát:
root@bash# arp -v | grep 10.20.30.40 10.20.30.40 ether 01:23:45:67:89:ab C eth1 root@bash#
Ha nem kapunk vissza üzenetet, akkor az adott gép MAC-címe nem létezik az ARP táblában. Vegyük fel, majd mehet is a MagicPacket üzenet:
root@bash# arp --set 10.20.30.40 01:23:45:67:89:ab root@bash# wakeonlan 01:23:45:67:89:ab Sending magic packet to 255.255.255.255:9 with 01:23:45:67:89:ab root@bash#
A hálózati eszközök nagy része a 9-es porton várja a WOL üzenetet, de nem mindegyik. Gyakori lehet még a 7-es port használata is. Ha nem akarunk tippelni, küldhetjük az üzenetet egy for-ciklussal is:
root@bash# for i in 7 9 do wakeonlan -p $i -i 10.20.30.40 01:23:45:67:89:ab done Sending magic packet to 10.20.30.40:7 with 01:23:45:67:89:ab Sending magic packet to 10.20.30.40:9 with 01:23:45:67:89:ab root@bash#
Hello!
Ezt a részt:
ethtool ${i}
|grep ‘Supports Wake-on:’
|awk ‘{print “ethtool -s ‘${i}’ wol “$3}’
` -k közé kell tenni hogy lefusson:
`ethtool ${i}
|grep ‘Supports Wake-on:’
|awk ‘{print “ethtool -s ‘${i}’ wol “$3}’`
Hali,
csak akkor kellene ` ` jelek közé tenni vagy $() közé, ha úgy szeretném lefuttatni, ha a kimenetével szeretnék valamit kezdeni. Lásd a for ciklust:
for i in `cat /proc/net/dev|sed 1,3d|awk -F ‘:’ ‘{print $1}’`
itt a cat-os parancs azért van ` ` jelek között, mert a parancs kimenete lesz felhasználva, azaz a kapott eredményen fog végig lépdesni a for ciklus.