Wake Up On “semi” Wireless Lan

Sarebbe bello mettere sbadato, il mio bel via-c3, in soffitta in modo che possa funzionare da NAS per tutta la mia piccola LAN?

Sarebbe bello poterlo accendere e spegnere da remoto magari automaticamente al login / logout?

Beh la tecnologia c’è la mini-itx, motherboard montata su sbadato la supporta, ma in realtà funziona?

La risposta è… quasi!

Ecco qualche appunto su come procedere, almeno avrò un minimo di documentazione se mai dovrò riconfigurare un altro pc nello stesso modo.

La lista della spesa

Sul server (il computer che dovrà essere accesso da remoto):

  • ethtool per configurare la scheda di rete in modalità g WOL (Wake Up On Lan)
  • tcpdump per fare un minimo di debug (ehi sto pacchetto WOL arriva o no?!?!)

Su un qualsiasi client che potrà accendere il server da remoto:

  • wakeonlan o etherwake, io ho preferito il primo perchè funziona anche senza i privilegi di root in quanto usa pacchetti UDP, ma ho fatto il debug sempre con entrambi

Come procedere

Premesso che lo scopo finale è quello di far funzionare tutto in wireless all’inizio è comunque meglio configurare i 2 computer per il funzionamento “wired”, insomma prima col filo, quando tutto funziona ci si concentrerà nella configurazione della scheda di rete (io non ce l’ho fatta) wireless.

Esistono un sacco di belle guide ed how-to per configurare linux col WOL e questa è quella che ho seguito:

http://guide.debianizzati.org/index.php/Wake_On_Lan

Praticamente c’è spiegato tutto a parte un paio di consigli:

  1. evitate di modificare lo script ed utilizzate il secondo metodo consigliato
  2. per fare debug utilizzando etherwake sul client date questo comando “tcpdump -p” nella console del sever e dovreste vedere il pacchetto tcp arrivare
  3. Il WOL mi funziona solo se spengo il server “shutdown -h now” e no se lo iberno o faccio il suspend to ram

Bene ora il WOL funziona wired. Non si era detto wireless?

Qui cominciano i dolori… La mia scheda wireless una ra-link 2500 non supporta nessuna modalità WOL, dicono che ne esistano alcune, ma in realtà non sono riuscito a trovarne neanche un modello.

Quindi che si fa? Facile si attacca un bel access point (ecco perche’ “semi”) alla scheda ethernet del server e si spera!

Si’ si spera, si incrociano le dita e si fanno gli scongiuri, poichè è già improbabile far funzionare 2 access point della stessa marca e modello figuriamoci un access point ed un router wireless di marche differenti.

Alla fine ci sono riuscito mettendo l’access point DLink DWL-2100AP come client wireless del mio router Digicom Microangelo Wave 54, ma prima che qualcosa sembrasse anche vagamente funzionare ho dovuto aggiornare i firmware di entrambi i prodotti!

Il DLink l’ho configurato come Wireless Client del router (all’inizio ho provato in modalità Universal Repeater, ma senza successo) e l’ho impostato con gli stessi parametri LAN della mia rete locale.

Poi ho eseguito il solito debug, vari ping da client a server, da server a router, da server ad access point ed alla fine sono andato di tcpdump -p. Tutto sembra (ancora) funzionare!

Login si accende, Logout si spegne

Beh questa è la parte più facile, almeno così credevo!

Per il Login basta andare (GNOME) su System -> Preferences -> Startup Applications ed aggiungere una nuova applicazione fra quelle da avviare nella sessione. Es.

Nome: WakeUpServer

Comando: /usr/bin/wakeonlan <MAC ADDRESS DEL SEVER>

Per il logout invece le cose si fanno un po’ più articolate in quanto è necessario modificare il file /etc/gdm/PostSession/Default ed aggiungere il comando di shutdown del server.

In realtà quello che ho fatto è inserire questo snippet di codice bash nel file PostSession/Default (preso da un qualche forum ubuntu):

logoutscript=”$HOME/.gdmlogout”;
if [ -x “$logoutscript” ] ; then
su $USER -c “$logoutscript”
fi

e creare il file .gdmlogout nella mia home con:

ssh root@sbadato /sbin/halt

ovviamente sbadato è il nome del mio server 😉

E’ inoltre importante marcare il file .gmdlogout come eseguibile chmod +x .gdmlogout altrimenti non verrà preso in considerazione (vedi if [ -x nello script Default)

L’ultima accortezza da seguire è la configurazione di ssh per il login non interattivo (niente richiesta password please). Io ho preso spunto da qui: http://linuxproblem.org/art_9.html

Leave a Reply

Your email address will not be published. Required fields are marked *