Antro di Jacopo

Recensione Zeroshell (x86)

Aggiornato il: 21/05/2018

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.
Questo OS è concentrato sul 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:

  • AMD Mobile Sempron® 2100+ (1 GHz)
  • 1 GB di RAM
  • Chipset ATI Radeon 1200
  • Disco: CompactFlash SanDisk UltraATA 40 Mb/s
  • Due schede di rete, una integrata PCIe (chip RTL8168) e l'altra USB (chip ASIX AX88772)

Questa piccola macchina mi fa da router con server RADIUS, QoS, failover con pennetta 3G, log server e firewall. Tutto ha funzionato out-of-the-box, 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, 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

Ho scaricato dal sito ufficiale di Zeroshell il file ZeroShell-[versione]-Disk-2GB.img.gz e dopo averlo estratto, lo ho flashato 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 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.

Personalmente ho provato a collegarmi tramite cavo null-modem a tutte e due le porte seriali del Futro S450, ma senza successo (non appariva niente). Presumo che Zeroshell rilevi se c'è un qualche tipo di scheda video e disabiliti l'output seriale se ce n'è una.
(Fulvio, se mai leggerai questa recensione, potresti confermare questa mia teoria? :-))

Fulvio mi ha detto che la scelta della console NON e' automatica ma va fatta manualmente 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 (si può comunque usare sempre il LiveCD di cui sopra con una pennetta USB per contenere il database, anche se più lento) è 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, visibile qui:

Pannello di controllo

(clicca per ingrandire)

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à sul mio sito 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" (Warning) 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.

Tra l'altro non è possibile selezionare sia Dyndns/No-IP che OpenDNS per qualche motivo.

Voto:


Voto Installazione:  10/10
(molto facile, molto compatibile; ottimo anche il Live/InstallCD)

Voto Gestione:        9.0/10
(molto facile ed efficiente; gestione degli errori, specie nella sezione "Proxy" da migliorare)

Voto Performance:  8.5/10
(E' normale che nDPI consumi così tanta CPU?)


Giudizio e raccomandazione:

Assolutamente da installare. Nonostante la mia valutazione alquanto negativa, questo OS è un piccolo capolavoro e dimostra quanto sia versatile il kernel Linux. Se desiderate avere una soluzione di routing e firewall tutto in uno a basso costo, questo prodotto fa per voi. E' inoltre dotato di altre funzioni quali il bonding (due o più connessioni aggregate, simile al failover ma tutte le connessioni sono sempre attive), il captive portal per le reti Wi-Fi, server DNS, server DHCP...
Si può naturalmente provare anche su macchina virtuale.

Non è necessario avere hardware di ultima generazione, un PC "da cassonetto della spazzatura" funzionerà perfettamente. Non gli chiedete di gestire una rete aziendale con 500 macchine connesse, però!