▤ Homelab

Wake-on-LAN e accensione programmata per i server di casa

Come accendere i server dell'homelab solo quando servono: Wake-on-LAN, pacchetto magico, configurazione di BIOS e Linux, rtcwake e spegnimento automatico.

Non tutto l'homelab deve restare acceso giorno e notte. Un server di backup che lavora un'ora a notte, una workstation usata per esperimenti nel fine settimana, un secondo NAS che riceve la replica dei dati: tenerli accesi sempre significa pagare energia per macchine inattive. La soluzione è accenderli solo quando servono, con il Wake-on-LAN o con l'accensione programmata dall'orologio della scheda madre.

Come funziona il Wake-on-LAN

Quando un computer è spento ma collegato alla corrente, la scheda di rete può restare alimentata in modalità a basso consumo, in ascolto di un segnale specifico: il magic packet. Questo pacchetto contiene sei byte di valore FF seguiti dall'indirizzo MAC della scheda ripetuto sedici volte. Quando la scheda lo riconosce, chiede alla scheda madre di accendere il sistema.

Il pacchetto viene di solito inviato in broadcast sulla rete locale, spesso come datagramma UDP sulla porta 9 o 7. Poiché è broadcast, normalmente non attraversa i router: il mittente deve trovarsi nella stessa rete o VLAN della macchina da svegliare, oppure serve un dispositivo che lo inoltri.

Configurare la macchina da accendere

Nel BIOS o UEFI

L'opzione ha nomi diversi a seconda del produttore: «Wake on LAN», «Power on by PCI-E», «Resume by LAN». Va attivata, e spesso occorre disattivare modalità di risparmio profondo, come certi stati di spegnimento ecologico, che tolgono corrente anche alla scheda di rete.

Nel sistema operativo

Su Linux lo strumento ethtool mostra e imposta il comportamento della scheda:

ethtool enp3s0 | grep Wake-on
ethtool -s enp3s0 wol g

La lettera g indica il risveglio tramite magic packet. Su molte distribuzioni l'impostazione si perde al riavvio, quindi va resa permanente tramite la configurazione di rete, per esempio con l'opzione dedicata di systemd-networkd o NetworkManager, oppure con una piccola unità systemd.

Su Windows l'opzione si trova nelle proprietà avanzate della scheda di rete, nella gestione energetica.

Inviare il pacchetto

Gli strumenti sono molti:

  • da Linux, comandi come wakeonlan o etherwake seguiti dall'indirizzo MAC;
  • da un router con firmware avanzato, che spesso include una pagina per il Wake-on-LAN;
  • da un servizio dell'homelab sempre acceso, come un piccolo single-board computer, che può svegliare le altre macchine su richiesta o a orari fissi;
  • dal telefono, con app dedicate, quando si è sulla rete di casa o collegati tramite VPN.

Per accendere un server da fuori casa non serve esporre nulla su Internet: basta entrare nella rete di casa via VPN e inviare il pacchetto da lì.

L'accensione programmata con l'orologio

Molte schede madri possono accendersi da sole a un orario prestabilito tramite l'orologio di sistema (RTC). Si può impostare dal BIOS, con un orario fisso, oppure da Linux con rtcwake, che programma il risveglio e spegne o sospende la macchina:

rtcwake -m off -t $(date -d "tomorrow 02:00" +%s)

Il comando spegne il sistema e imposta la riaccensione alle 2 del giorno seguente. Non tutte le schede madri supportano il risveglio da spegnimento completo; alcune funzionano solo dalla sospensione. Va verificato con una prova.

Un ciclo completo: il server di backup notturno

Un esempio concreto che uso nel mio lavoro:

  1. alle 2 un'attività pianificata su una macchina sempre accesa invia il magic packet al server di backup;
  2. il server si avvia; un'unità systemd attende che il disco dei backup sia montato;
  3. i job di backup o di sincronizzazione partono, oppure il server principale li avvia a sua volta;
  4. al termine, uno script verifica che non ci siano trasferimenti attivi e spegne la macchina;
  5. un'allerta segnala se il server non si è acceso o non ha completato il lavoro entro un certo orario.

Il risparmio è concreto: una macchina che resta accesa due ore al giorno invece di ventiquattro consuma circa un dodicesimo dell'energia.

Limiti e problemi comuni

Problema Causa probabile
La macchina non si accende opzione disattivata nel BIOS o scheda di rete senza alimentazione da spenta
Funziona dopo lo spegnimento, non dopo un blackout molte schede perdono l'impostazione quando manca la corrente
Funziona solo da alcuni dispositivi il mittente è in un'altra rete o VLAN
Si accende da sola risveglio impostato per qualsiasi traffico, non solo per il magic packet
Non funziona via Wi-Fi molte schede wireless non supportano il risveglio da spento

Per il caso del blackout, conviene impostare nel BIOS anche il comportamento al ritorno della corrente, e decidere consapevolmente se la macchina deve riaccendersi o restare spenta.

Quando non conviene

Accendere e spegnere spesso ha un costo: tempi di avvio, dischi meccanici che ripartono, servizi che devono riconnettersi. Per macchine che servono più volte al giorno, o che devono rispondere in pochi secondi, restare accese con un buon risparmio energetico in idle è spesso preferibile.

In sintesi

  • Il magic packet risveglia una macchina spenta se BIOS e scheda di rete lo consentono.
  • Su Linux si attiva con ethtool ... wol g e va reso permanente nella configurazione di rete.
  • Il pacchetto resta nella rete locale: da fuori casa si passa per la VPN.
  • rtcwake e il BIOS permettono accensioni a orario fisso senza altri dispositivi.
  • È ideale per server di backup e repliche, meno per servizi usati di continuo.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche