Jacopo's Lair


Aggiornato il: 14/11/2021

EOL di Zeroshell

Purtroppo questo piccolo gioiellino di informatica italiana è giunto al capolinea. Da settembre 2021 infatti non sono previsti più aggiornamenti da parte di Fulvio e il progetto è stato ufficialmente abbandonato. Raccomando a tutti coloro usano Zeroshell di passare a PFSense, anche se non è così facile come sembra...


Verdetto finale

Zeroshell continua a migliorarsi di release in release. Personalmente direi che è in grado di competere senza problemi con prodotti tipo Edgerouter Ubiquity se accoppiato con macchine prestanti, sia per la facilità d'uso, sia per le funzioni aggiuntive che offre!

Presentazione

Zeroshell è un sistema operativo basato su Linux sviluppato da Fulvio Ricciardi.
È progettato per networking e presenta numerose funzioni quali router, bridge, proxy trasparente con antivirus, captive portal e molto altro ancora.

Data la grande mole di funzioni presenti in questo piccolo ma potente sistema operativo, vi rimando al suo sito (zeroshell.net) per saperne di più. Mi limiterò a recensire quelle che ho trovato utili in ambiente casalingo.

Hardware

Uso Zeroshell su un thin-client Fujitsu Futro S450. Ho già ampiamente discusso di questi thinclient in un altro articolo dedicato a Zeroshell.

Le caratteristiche hardware sono:

Questa piccola macchina mi fa da router con server RADIUS, QoS, failover con pennetta 3G, log server e firewall. Tutto ha funzionato al primo colpo, non c'è stato bisogno di installare nessun driver. L'unica cosa è che Zeroshell segnala come "Unknown Model" la scheda di rete USB. Stranamente, nella versione per ARM su Raspberry Pi e Orange Pi Zero, viene correttamente riconosciuta come AX88772. Tuttavia, la scheda è perfettamente funzionante (boh?).

Prima di installare ZS su CompactFlash ho disabilitato tutte le periferiche inutili quali la scheda audio. È sempre consigliabile farlo poiché riduce il rischio che qualcosa vada in conflitto.

Unico asterisco da segnalare su questo setup: se volete attivare la scansione delle pagine Web fornita da ClamAV o di usare il QoS in maniera molto spinta con numerose regole nDPI, consiglio di optare per il Fujitsu Futro S700/S900 che ha una CPU più potente e una RAM più grande.

Installazione

In teoria Zeroshell non ha bisogno di installazione, è sufficiente eseguirlo dal LiveCD e avere un supporto (chiavetta USB, hard disk, etc.) su cui memorizzare il database. Tuttavia per ovvi motivi è meglio installarlo ☺

Ho scaricato dal sito ufficiale di Zeroshell il file ZeroShell-[versione]-Disk-2GB.img.gz e dopo averlo estratto, l'ho scritto con dd sulla mia CompactFlash, che nel frattempo era stata collegata al mio PC. Dopodiché ho usato gparted per espandere la partizione Database fino a riempire tutta la memoria.

È ora disponibile un attrezzo per l'installazione facilitata di ZS. Basta masterizzare il file ZeroShell-[versione].iso su un CD riscrivibile (o su una chiavetta USB) e fare partire la macchina da quello. Una volta entrati nella macchina, tramite interfaccia testuale VGA (video tradizionale con monitor e tastiera) oppure seriale (in caso di dispositivi embedded, ad esempio il PCEngines Alix) basterà premere il tasto A e seguire le semplici istruzioni.

Anche su un PC con scheda grafica è possibile attivare la porta seriale tramite l'interfaccia Web (sezione Setup → Boot). Dopo averlo fatto la connessione seriale ha funzionato perfettamente.

Una volta installato ZS su disco rigido o CF è necessario andare fisicamente sulla macchina per poterla configurare ed adattare in base alla nostra rete.
Ho ad esempio adattato l'IP della macchina da 192.168.0.75 (default) a 172.16.20.1. Notiamo che in questo stadio se la macchina si dovesse riavviare, si perdono tutte le impostazioni, perciò facciamo attenzione!

Per mantenere le impostazioni in memoria, è necessario creare un database; un'operazione semplicissima effettuabile dall'interfaccia Web di Zeroshell, ora accessibile. Tutto il resto della configurazione andrà effettuata da questo pannello.

Pannello di controllo Web di Zeroshell

Pannello di controllo Web

Non ho incontrato particolari difficoltà durante l'installazione.

Gestione

La piattaforma di gestione Web è veramente molto pratica. Può fare quasi tutto quello che si fa normalmente con una shell, da cui il nome "Zeroshell".

Grazie a Zeroshell installare funzioni avanzate di rete quali RADIUS o QoS è diventato alla portata di chiunque sappia usare il computer ad un livello leggermente superiore alla base. Direi che è proprio il caso di sfatare il mito che freeradius è di una complicazione tale che al confronto decifrare Enigma è un gioco da ragazzi. Per chi fosse interessato all'argomento freeradius, WPA Enterprise e 802.1x troverà un articolo (spero) utile.

Allarmi, log

Zeroshell è dotato di un sofisticato sistema di allarmi (alerts) che è in grado di classificare automaticamente vari eventi (come, ad esempio, il carico di sistema troppo elevato, la RAM troppo piena, la caduta di uno dei due collegamenti in failover...) assegnandogli un punteggio. In base al punteggio e a come impostiamo il sistema, possiamo scegliere se Zeroshell deve avvisarci tramite SMS (è anche possibile impostare un limite massimo giornaliero in modo che non consumi tutto il credito), email oppure solo tramite interfaccia Web.

Ad esempio, io ho impostato che gli allarmi con categoria «Emergenza» (disco di sistema pieno, perdita totale di connessione) mi vengano inoltrati con un SMS, mentre quelli con categoria «Avviso» vengano inviati con una email.

Ho trovato il sistema molto intuitivo e utile. Basta pensare che l'Ubiquity Edgerouter-X non ha nemmeno gli avvisi via email...

I log, invece, sono categorizzati in base ai componenti. La consultazione è facile in quanto sono anche sfogliabili per data e ora, però purtroppo per alcune sezioni (proxy e DNS Dinamico) sono un pochino scarne. Nonostante ciò è sempre meglio che dover ravanare alla ricerca di un log che si crede essere in /var/logs mentre in realtà è in /usr/local/share o qualche altra directory strana...

QoS

Ho abilitato anche la gestione del Quality of Service (QoS). In tal modo la banda viene condivisa dai vari PC a seconda del software che la utilizza. Si evita quindi che un client Torrent "mangi" tutta la banda e causi quindi, ad esempio, bassa qualità d'audio su un client VoIP.

L'interfaccia per gestire la QoS è comoda, e mentre a prima vista può far molta paura a causa della sua complessità e flessibilità, grazie ai filtr nDPI il tutto è un gioco da ragazzi. Basta selezionare dall'elenco l'applicativo interessato (ad esempio, Bittorrent per la classe P2P) e il gioco è fatto.

Sono comunque disponibili numerose altre impostazioni, ad esempio: classificazione per orario, per porta, per indirizzo IP di destinazione o di origine, per tipo di protocollo... il ventaglio di possibili configurazioni è molto vasto.

Performance

Zeroshell non ha quasi mai avuto problemi di performance sulla mia macchina. Viene sviluppato su macchine di tipo PCEngines Alix, che hanno a disposizione un CPU AMD Geode LX 475MHz e 256MB di RAM. Visto ciò, si può dedurre che per reti medio-piccole non serve una notevole potenza di elaborazione e si possono usare senza problemi PC di recupero o thin client come ho fatto io.

Se si usa nDPI, bisogna fare attenzione a non esagerare con i filtri perché devono essere tutti elaborati dalla CPU. Ciò è particolarmente evidente se si imposta un filtro per Bittorrent: siccome il numero di pacchetti e connessioni generati da un client Bittorrent è molto elevato e la CPU deve esaminare ognuno di questi pacchetti è naturale che vi sarà una perdita elevata di prestazioni.

Failover

Ho impostato anche il failover con una chiavetta internet 3G. In tal modo, se la connessione primaria (WiMAX) viene a mancare automaticamente Zeroshell indirizzerà tutto il traffico sulla chiavetta 3G. Ho provato con una ZTE MF637 e tutto ha funzionato al primo colpo.

L'unico neo è che non è disponibile un limite di traffico o tempo da impostare per la chiavetta 3G. Se abbiamo un contratto a consumo, potrebbe essere utile tale funzione in modo da evitare spese enormi se magari si è fuori casa ed entra in funzione il failover.

DNS Dinamico

Ho tenuto questo punto per ultimo perché è davvero l'unico problema che mi ha causato Zeroshell, almeno fino a quando non ho ottenuto un indirizzo IP statico.

Molti di voi si ricorderanno quando nel 2013 Dyn ha deciso di far pagare il suo servizio di DNS dinamico, utilizzato in praticamente ogni router esistente su questo pianeta. Naturalmente ci sono altri servizi identici e completamente gratuiti (come Duckdns) però per qualche motivo quest' ultimo, che è sicuramente il migliore in quanto non richiede conferma periodica del dominio, non è mai considerato.

Personalmente ho risolto usando curl e impostando un cronjob (facilissimo farlo dall'interfaccia Web), però sarebbe più "pulito" includere nella lista dei DNS dinamici anche Duckdns. Sarebbe meglio anche poter scegliere quale interfaccia usare per aggiornare il dominio, visto che un'interfaccia potrebbe essere già con IP statico mentre un'altra con IP dinamico.

Voto

Installazione

10/10

(molto facile, molto compatibile; ottimo anche il Live/InstallCD)

Gestione

8/10

(facile ed efficiente; gestione degli errori, specie nella sezione "Proxy" da migliorare, problemi col Dynamic DNS)

Prestazioni

9.5/10

(per essere eseguito su PC con 1GHz di CPU fa quasi miracoli!)