Questo documento descrive come installare Zeroshell in una macchina virtuale VirtualBox ospitata su server con GNU/Linux Ubuntu 9.10 (Karmic Koala), con la condivisione di due linee ADSL configurate per il bilanciamento e la possibilità di mantenere altri servizi sul server host.
L'installazione è nata dall'esigenza di fornire il servizio di connessione a internet e un FAX Server, sfruttando la presenza di due connessioni ADSL per implementare il bilanciamento del carico e la tolleranza di guasti sulle linee.
La necessitè di implementare un FAX Server ha portato alla scelta di installare Zeroshell in una macchina virtuale in modo da poter utilizzare lo stesso PC per entrambi.
Un ulteriore vantaggio offerto dall'installazione di Zeroshell in una macchina virtuale è data dalla possibilità di accedere alla console senza la necessità di accedere fisicamente al server. Questo si può rivelare molto utile nel caso di attivazione di un profilo non funzionante che inibisca l'accesso alla GUI.
Il server utilizzerà quattro schede di rete, una dedicata al sistema host e le altre tre dedicate a Zeroshell.
La rete è relativamente semplice e comprende due connessioni ADSL ed alcuni PC, senza la necessità di configurazioni complesse quali DMZ o sottoreti separate.
Le sottoreti utilizzate sono tre:
Lo schema non segue le convenzioni utilizzate nella documentazione ufficiale di Zeroshell solo per comodità dell'autore che ha preferito usare impostazioni più facili da ricordare, come l'associazione di eth00 con la sottorete 192.169.0.0, eth01 con 192.168.1.0 ecc.
Bisogna tenere bene a mente che le interfacce di rete Zeroshell eth00, eth01, eth02 sono virtuali, mappate su eth1, eth2, eth3 del sistema host. A sua volta il sistema host utilizzerà direttamente la propria interfaccia eth0 per l'accesso alla LAN.
Siccome il server è dedicato ai suelencati compiti specifici, ho provveduto a disabilitare
le funzionalità non richieste, agendo in parte sulle impostazioni della scheda madre ed
in parte nelle impostazione del BIOS, per risparmiare risorse. Quindi via il supporto USB, LPT,
COM2 (COM1 o meglio ttyS0 servirà per il modem/fax) e - dopo l'installazione di base - al canale IDE secondario, con relativa rimozione del
lettore CD.
Il sistema ottenuto ha così una migliore distribuzione degli IRQ ed un avvio più veloce;
inoltre non verranno caricati driver per dispositivi non necessari.
Ricordiamo di collegare una delle schede di rete, sarà quella utilizzata come eth0 per il sistema host e FAX Server.
Parto dal presupporto che la rete disponga di un server DHCP, ormai comune nei router ADSL e utile per poter installare Ubuntu senza dover scaricare il DVD completo di tutti i pacchetti.
L'installazione iniziale è va quindi eseguita utilizzando il CD di Ubuntu Server 9.10 i386, selezionando esclusivamente l'opzione Server OpenSSH per i pacchetti predefiniti; in questo modo l'installazione può essere continuata da un terminale remoto. Nonostante non sia strettamente necessario, questo è il metodo che preferisco in quanto il terminale virtuale permette il copia-incolla da altre applicazioni e la visualizzazione di più linee.
Se non conosciamo l'indirizzo IP assegnato al PC, possiamo collegarci dalla console ed esaminare lo stato della rete col il comando:
ottenendo qualcosa del tipo:
eth0 Link encap:Ethernet HWaddr 00:03:6d:30:5c:f3
indirizzo inet:192.168.2.231 Bcast:192.168.2.255 Maschera:255.255.255.0
indirizzo inet6: fe80::203:6dff:fe30:5cf3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:24129 errors:0 dropped:0 overruns:0 frame:0
TX packets:12786 errors:0 dropped:0 overruns:0 carrier:0
collisioni:0 txqueuelen:1000
Byte RX:1812248 (1.8 MB) Byte TX:15425235 (15.4 MB)
Interrupt:16 Indirizzo base:0x8000
Colleghiamoci sul server utilizzando un terminale virtuale. Lavorando con un sistema GNU/Linux io utilizzo ssh, chi lavora con Windows può utilizzare Putty od un'applicazione simile.
quindi utilizziamo l'indirizo visualizzato da ifconfig
Utilizzeremo il nome utente specificato in fase di installazione per l'ammnistrazione del sistema. Dovendo eseguire operazioni di sistema, possiamo acquisire i privilegi di root per la sessione con il comando:
possiamo subito aggiornare il sistema in modo da avere tutti i pacchetti aggiornati:
Sebbene non indispensabile, possiamo installare un editor più umano dello standard vi. Su Ubuntu troverete già installato nano, io per abitudine utilizzo joe.
Per l'utilizzo del FAX Server e Host VirtualBox, è preferibile utilizzare un indirizzo IP fisso quindi andremo a modificare le impostazioni per la scheda di rete eth0.
La riga relativa alla configurazione dell'interfaccia eth0 va modificata da:
a
quindi possiamo riavviare la rete per applicare le nuove impostazioni
avendo cambiato l'indirizzo di rete sarà necessario ricollegarsi
e acquisire di nuovo i prvililegi di root
verifichiamo che le altre schede di rete siano state riconosciute ed attivate
otterremo qualcosa de tipo:
se come nel mio caso appaiono delle interfacce disabilitate, provvederemo ad abilitarle:
Per qualche oscuro motivo nel mio caso il server continuava a riprendere l'indirizzo dinamico, ignorando l'impostazione statica per l'interfaccia eth0. Questo perchè si ostinava ad attivare il client dhcp nonostante la configurazione modificata nel file interfaces. Per risolvere il problema basta disinstallare il client dhcp con:
Per installare VirtualBox utilizzeremo il repository ufficiale, aggiungendolo nell'elenco delle sorgenti per il sistema: /etc/apt/sources.list, quindi:
ed aggiungiamo al fondo dell'elenco:
aggiungiamo la chiave pubblica di Sun
e aggiorniamo apt
Ora possiamo finalmente installare VirtualBox, comprendendo gli header del kernel e quanto necessario alla compilazione automatica dei driver di VirtualBox ad ogni aggiornamento del kernel.
L'utente utilizzato per far girare VirtualBox (in questo esempio admin) dovrà appartenere al gruppo, provvediamo quindi ad inserirlo:
Ora VirtualBox è installato ed è possibile utilizzarlo.
Per creare la macchina virtuale utilizzeremo i comandi di linea VBoxManage. Potete accedere al manuale in linea: http://www.virtualbox.org/manual/UserManual.html#vboxmanage per una descrizione approfondita dei parametri utilizzabili.
Si può comunque ottenere una veloce panoramica con:
Ora creiamo la nostra macchina. Nel mio caso le ho assegnato 256MB di RAM ed un disco da 5GB più un lettore CD/DVD a cui assegnare l'immagine ISO di Zeroshell. Le schede di rete saranno impostate in modalità bridge, associando le tre schede rimaste libere alle tre schede virtuali che utilizzeremo da Zeroshell.
Prima di agganciare il CD/DVD alla macchina virtuale, provvediamo a scaricare l'immagine ISO di Zeroshell da cui verrà effettuato il boot; la salveremo in una cartella apposita, creata a fianco di quelle già create da VBoxManage. Inoltre useremo l'accorgimento di rinominare l'immagine in Zeroshell.iso, così potremo sostituirla con versioni aggiornate quando saranno rese disponibili.
ora terminiamo la configurazione dei dispositivi IDE aggiungedo il CD/DVD
Siamo ora pronti ad avviare la nostra macchina virtuale che fungerà da server Zeroshell.
Ora possiamo utilizzare un Client per terminal server per accedere alla macchina virtuale
Selezioniamo I per entrare nella sezione IP Manager, quindi A per aggiungere un indirizzo IP (Add IP address) ed immettiamo i dati richiesti:
abbiamo così abilitato la scheda di rete che utilizzeremo per la condivisione della connessione.
Come potete notare, è nella stessa sottorete che abbiamo utilizzato per l'host. La scheda di rete corrispondente a eth2 di Zerohost va quindi connessa allo switch dove è già connessa la scheda eth0 dell'host e dove presumibilmente è collegato il PC che stiamo utilizzando per lavorare.
Siamo ora in grado di accedere all'interfaccia web di Zeroshell per proseguire con la configurazione. Apriamo il nostro browser preferito ed accediamo ad: https://192.168.2.1.
Per il primo accesso utilizzeremo la password di default "zeroshell".
creiamo un nuovo profilo dove inseriremo le informazioni:
In particolare prestiamo attenzione ad indicare correttamente interfaccia ed indirizzo di rete:
e lo attiviamo.
Zeroshell effettuerà un reboot e sarà di nuovo accessibile dall'interfaccia Web. Ricordate che ora andrà utilizzata la password definita nella creazione del profilo.
Accediamo al setup della rete (Network) per configurare le schede di rete.
andiamo ad aggiungere gli indirizzi di rete. Inseriremo gli indirizzi
in entrambi i casi inseriremo 255.255.255.0 come Netmask
Accediamo alla sezione Router
ed apriamo la configurazione NAT, dove inseriamo le interfacce eth00 e eth01 (le interfacce verso le linee esterne) fra quelle abilitate al NAT.
andiamo nella sezione DNS e selezioniamo Forwarders dove aggiungeremo i DNS per la zona ANY. Nell'esempio ho utilizzato gli indirizzi OpenDNS e nessuna particolare configurazione personalizzata in quanto non necessaria per le mie esigenze.
Accediamo alla sezione Net Balancer
aggiungiamo un Gateway per la prima linea ADSL e ripetiamo poi l'operazione per la seconda.
ora abbiamo le due linee configurate.
cliccate sul checkbox Status e poi su Save per abilitare il bilanciamento.
ora abilitiamo il Failover Monitor ed inseriamo un paio di indirizzi IP nella sezione Failover IP Addresses, ricordando di abilitarli e cliccare sul pulsante Save per salvare le impostazioni. Nell'esempio ho utilizzato gli indirizzi di mail.libero.it e www.libero.it.
Ora abbiamo la connessione internet funzionante.
Per semplificare la gestione della rete possiamo abilitare il server DHCP che provvederà ad assegnare automaticamente i parametri di rete ai PC che vengano connessi.
Andiamo nella sezione DHCP e clicchiamo sul pulsante New. Nella finestra di definizione selezioniamo la sottorete 192.168.2.0/255.255.255.0 (ETH02); immettiamo i valori 192.168.2.0 per Network e 255.255.255.0 per Netmask.
Al riavvio del server host, la macchina virtuale per Zeroshell non verrà avviata automaticamente, dando quindi un disservizio non indifferente. Per ovviare a questo problema aggiungiamo i comandi necessari che provvederanno ad attivare le interfacce di rete secondarie e ad avviare la macchina virtuale.
I comandi vanno inseriti nel file /etc/rc.local, che serve proprio ad eseguire dei comandi personalizzati all'avvio del sistema. Apriamo quindi il file /etc/rc.local
ed inseriamo i comandi necessari prima dell'ultima istruzione exit 0:
Il risultato finale (supponendo che non ci siano altri comandi personalizzati) dovrà quindi essere qualcosa tipo:
Ora potete finalmente provare a riavviare il PC per verificare che tutto funzioni. Nel caso della macchina utilizzata dall'autore, l'accesso SSH al sistema host risulta disponibile entro un minuto circa e Zeroshell impiega ancora un paio di minuti prima di rendere disponibile l'accesso alla rete.
L'efficienza dei sistemi GNU/Linux utilizzati permette il riutilizzo di hardware che risulta ormai obsoleto per le richieste hardware dei sistemi desktop, in particolare se montano Windows.
La macchina host è stata completamente assemblata con hardware di recupero: scheda madre Asus K7V333, CPU AMD Athlon XP 2000+, RAM 1 GB PC2700 (DDR 333), disco IDE da 40GB e quattro schede di rete Ethernet 10/100Mbit. Nonostante sia hardware datato, risulta più che sufficiente per i compiti richiesti.
Il costo per l'hardware è stato nullo ed il tutto ha richiesto circa tre ore per la selezione dei componenti e l'assemblaggio più circa sei ore per l'installazione del tutto, contando anche il tempo impiegato per reperire e studiare parte della documentazione utilizzata.
Come già accennato, il sistema host fornisce anche un servizio di FAX Server tramite HylaFAX e risulta esso stesso un client che sfrutta la connessione internet messa a disposizione tramite Zeroshell. In effetti, nulla impedisce di installare ulteriori servizi sull'host, ad esempio Samba per funzionare anche da File e Print server; od utilizzare un applicativo di groupware.
Ovviamente questo non è uno scenario tipicamente professionale o da grande azienda - dove i vari servizi potrebbero essere installati su server dedicati - ma in ambito domestico o per una piccola azienda può rappresentare una valida soluzione senza imporre spese esorbitanti.
Avrete notato che a differenza di tanti howto, qui non utilizzo sempre sudo in testa ai comandi. Come già accennato, sono abituato ad utilizzare sudo -s per abilitare i privilegi di root per la sessione, cosa equivalente a su - in altre distribuzioni, col vantaggio di non dover assegnare (e ricordare) una password per l'utente root.
Per approfondire gli argomenti trattati in questo documento, potete consultare le fonti che per me sono state molto utili: