Premesso che il BIOS installato sulla mobo in questione presenta numerose limitazioni, ho deciso comunque di provare ad abilitare il Wake On LAN sul mio server casalingo (Debian).
Per prima cosa, ho provato ad individuare la voce del BIOS che mi consentisse di abilitare la suddetta funzionalità. Purtroppo però, la specifica versione di software presente sulla mia scheda madre non consente di attivare esplicitamente il WOL dalla scheda Gigabit Ethernet integrata, cosa che mi ha lasciato a dir poco sbalordito.
Nonostante ciò è comunque possibile:
1) abilitare il Wake dopo la pressione di un determinato tasto della keyboard PS2 (funzione testata da me personalmente e funzionante);
2) abilitare il Wake da mouse PS2;
3) abilitare il Wake da interfaccia PCI-Express;
4) schedulare il Wake in una data/ora ben precisa.
Ma queste opzioni non includono, ovviamente, il WOL da scheda di rete integrata.
Ho dunque creato uno script che consentisse di attivare la suddetta funzione, utilizzando un tool esterno, ovvero ethtool.
Per installarlo è sufficiante digitare:
nightfly@nightbox:~$ sudo apt-get install ethtool
Ad installazione completata, creiamo un file di testo vuoto:
nightfly@nightbox:~$ sudo nano autowol
il cui contenuto dovrà essere:
#!/bin/bash
ethtool -s eth0 wol g
exit 0
salviamo il file e rendiamolo eseguibile:
nightfly@nightbox:~$ sudo chmod a+x autowol
Lanciamo lo script e verifichiamo che il WOL mediante magic packet (g) sia effettivamente attivo:
nightfly@nightbox:~$ sudo ethtool eth0
Lo stralcio di output che ci interessa dovrà essere simile al seguente:
Supports Wake-on: pumbg
Wake-on: g
La prima riga ci conferma che la scheda eth0 supporta il WOL, la seconda riga, invece, ci fornisce informazioni sul tipo di WOL attivo (magic packet).
Fatto ciò, è necessario che tale opzione venga attivata automaticamente ad ogni avvio del sistema (e prima dello spegnimento). Per fare questo si può copiare il suddetto script nella directory /etc/init.d e successivamente usare il comando:
nightfly@nightbox:/etc/init.d$ update-rc.d -f autowol defaults
Bene, a questo punto ho deciso di dare inizio ai miei test. Per prima cosa ho scaricato un software gratuito (per ambienti Windows e dotato di GUI) in grado di forgiare i magic packet. Il tool a cui mi riferisco è questo:
http://www.depicus.com/downloads/WakeOnLanGui.zip
La cosa bella di questo software è che ci permette di scegliere la porta (UDP) su cui inoltrare il magic packet, riuscendo dunque ad aggirare eventuali restrizioni imposte dal PAT (in questo modo potremo utilizzare il WOL anche da remoto).
Per accendere il nostro server da remoto sarà sufficiente riempire i campi richiesti dal suddetto tool, ovvero:
1) MAC address della macchina che si vuole avviare;
2) indirizzo IP (oppure hostname) pubblico della macchina;
3) porta (UDP).
Solitamente il WOL si avvale della porta 7 o 9 (UDP) ma vi consiglio di forwardare porte più alte in modo da complicare la vita ad eventuali script kiddie (sai che piacere lasciare il server spento e ritrovarselo accesso di punto in bianco?).
In definitiva, i test hanno dato questo esito:
1) se il server è spento (S5) il WOL non funziona;
2) se il server è ibernato (S3), ovvero il dump della RAM si trova nell'area swap dell'HD, il WOL funziona (ma solo la prima volta, nel senso che se iberno, ripristino ed iberno nuovalente il magic packet viene totalmente ignorato).
3) se il server è sospeso (S2, con RAM alimentata), il WOL non funziona.
Quindi, così come stanno le cose il WOL è quasi inutile. Nei prossimi giorni vedrò di aggiornare il BIOS ed eventualmente di acquistare una scheda Ethernet PCI-Express.
Speriamo bene.
PS: per maggiori dattagli sui power state ACPI potete consultare questa pagina.
PPS: potete operare con i power state direttamente da CLI utilizzando il comando pmi action <stato>