martedì 7 aprile 2009

La formula per risvegliare i (server) morti....


Un titolo cosi' avrebbe fatto furore nel periodo di Halloween.
Mi riferisco al Wake On Lan, una funzione che ci consente di accendere una macchina spenta tramite particolari pacchetti inviati in broadcast sulla rete.
La macchina che deve essere risvegliata deve avere installato il programma ethtool, se per caso non ci fosse gia' sara' sufficiente lanciare il seguente comando:
apt-get install ethtool

Verifichiamo la compatibilita' della scheda di rete con il protocollo di Wake On Lan:
root@dead:~# ethtool eth0 Settings for eth0: Supports Wake-on: g Wake-on: d Link detected: yes

La linea
Supports Wake-on: g

ci dice che il Wake On Lan e' supportato, pero' la linea
Wake-on: d

ci dice che la funzione e' disabilitata. Per attivarla lanciamo il seguente comando:

root@dead:~# ethtool -s eth0 wol g

Verifichiamo di nuovo la disponibilita' della funzione Wake On Lan:

root@dead:~# ethtool eth0
Settings for eth0:
Supports Wake-on: g
Wake-on: g
Link detected: yes
Ora non resta che conoscere il MAC address della scheda di rete del PC che vogliamo risvegliare. Avete due possibilita':
  1. Lanciare il comando ifconfig sul PC
  2. Utilizzare arp da un altro PC della stessa rete

IFCONFIG

Lanciate il comando seguente:
me@dead:~$ /sbin/ifconfig

otterrete qualcosa del genere:
eth0 Link encap:Ethernet HWaddr 00:0A:E6:F6:A3:F4
inet addr:192.168.1.80 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20a:e6ff:fef6:a3f4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2218390 errors:0 dropped:0 overruns:0 frame:0
TX packets:3098440 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1624008578 (1.5 GiB) TX bytes:1368310661 (1.2 GiB)
Interrupt:10 Base address:0xd400

In questo caso il MAC address (o Hardware Address) e' 00:0A:E6:F6:A3:F4
ARP
Su un'altra macchina della rete eseguite i seguenti comandi (supponiamo che la macchina di cui vogliamo conoscere il MAC address si chiami dead):

me@mystery:~$ ping -c 1 dead
me@mystery:~$ /usr/sbin/arp dead
Otterremo qualcosa del genere:
Address HWtype HWaddress Flags Mask Iface
dead ether 00:0A:E6:F6:A3:F4 C eth0

Anche in questo caso otteniamo il MAC address di dead ( 00:0A:E6:F6:A3:F4). Siamo quasi pronti e possiamo spegnere la macchina per testare il tutto.

Su un secondo PC della rete deve essere disponibile (in caso si tratti di una macchina Linux) uno dei seguenti programmi:
  1. etherwake
  2. wakeonlan
Ovviamente per installarli potete lanciare:
apt-get install wakeonlan
apt-get install etherwake
etherwake deve essere eseguito da root, wakeonline puo' essere eseguito anche da utenti senza privilegi.
Per risvegliare la macchina spenta usate uno dei seguenti comandi:
wakeonlan 00:0A:E6:F6:A3:F4
etherwake 00:0A:E6:F6:A3:F4

Poco dopo la macchina la cui scheda di rete e' caratterizzata dal MAC address usato, si accendera' e sara' disponibile in rete.

Se fate un giro su Google trovate client Wake On Lan anche per macchine windows.



2 commenti:

Aezio ha detto...

Bellissimo!

Ma funziona anche se la macchina "bersaglio" non è un server ma un desk qualunque?

Francesco Conti ha detto...

Si certo, purche' la sua scheda di rete supporti il WOL (Wake On Lan). In certe schede la funzione puo' essere abilitata/disabilitata da BIOS.