Pagine

giovedì 20 settembre 2012

EncFs - Cartelle protette da password

Quando ero ragazzino non avevo un mio computer personale, protetto da una password casuale, che fosse accessibile solo da me. Essendo nato nei '90 non ero ancora un bimbominkia schizzinoso che si lamentava di non poter avere ancora il proprio iPad, il proprio MacBook, il proprio iPhone etc... quindi, come penso la maggior parte dei miei coetanei, avevo in casa un unico computer, con un unico utente, protetto da un unica password (se andava bene: considerando che eravamo estremamente pigri e Window 2000 non è che fosse proprio una scheggia, quei 5 secondi per digitare una password erano già considerati un eternità).

Ergo: tutti i miei documenti e video personali (ehm...) erano accessibili da pigs+dogs.

Ora la situazione è migliorata: i portatili sono venduti a prezzi più o meno abbordabili a seconda delle esigenze, Ubuntu è diventato più usabile di Windows e quindi tutti i documenti e i video personali (ri-ehm...) sono protetti almeno dagli occhi della famiglia.

Poi però venne il cloud computing...

Dropbox, Box e GDrive (per citare solo quelli che uso abitualmente) hanno dato a tutti la possibilità di salvare nel cloud diversi GB di file in una modalità facilmente accessibile ed utilizzabile. La possibilità di avere una cartella residente su disco che viene automaticamente sincronizzata nel web, oltre che quella di accedere da qualunque altro computer ai proprio file è (lasciatemi passare la citazione per chi la capisce) UNA FIGATA PAZZESCA!

La connessione poi è (generalmente) effettuata tramite protocollo https, quindi un canale cifrato, pertanto non ci sono problemi di tipo Man in the middle di cui preoccuparsi.

Tutto bello quindi? Certo che no: il problema è che tutti i dati sono salvati su cloud in chiaro! Se siete paranoici come me questo non dovrebbe essere un aspetto accettabile.

Quindi, oltre che per salvare i vostri video personali (tri-ehm... nel caso non abbiate capito il motivo degli "ehm" vi suggerisco di guardare un certo video), vi presento una possibilità un po' più seria: un archivio virtuale contenente tutti i documenti sensibili in vostro possesso, per esempio quelli relativi al vostro conto corrente. Tale archivio dovrà comprendere codici di sicurezza, numeri di carte di credito, pin, e chi più ne ha più ne metta... mi pare evidente che tali informazioni debbano essere cifrate tanto nel vostro computer (per quanto a prova di hackeraggio sia) quanto in qualunque altro dispositivo o locazione sul web in vostro possesso.

La protezione però non basta; vogliamo avere una soluzione che abbia le seguenti caratteristiche:
  • Deve funzionare anche in sistemi diversi da quello di origine: se salvate i dati del vostro archivio su un computer mi pare evidente che sia preferibile poter accedere a tali file anche da altre macchine, a condizione di avere installato le giuste applicazioni. Un archivio virtuale che sia accessibile da una sola macchina è un grosso pericolo: se la macchina si rompe i vostri dati saranno senza ombra di dubbio al sicuro... ma non potrete più leggerli in alcun modo.
  • Deve essere trasparente: non vogliamo avere un applicazione che deve essere avviata per poter accedere all'area dati protetta ma un accesso all'area dati indistinguibile da un file system. Quindi vogliamo poter fare copie e spostamenti di file e vogliamo poter aprire i file direttamente dalle applicazioni che ci servono.
  • Deve essere protetta da password: non vogliamo dover dare in pasto al sistema di codifica file o altre cose astruse... vogliamo solo fornire una password al momento dell'apertura dell'area protetta e basta.
  • L'area di protezione deve essere una directory: cosa c'è di più semplice di una directory per definire un'area di memoria protetta? Con una directory il cui contenuto sia cifrato tutti i nostri problemi si risolverebbero.

Come potete osservare non ho detto nulla su storage nel cloud perché l'ultimo punto definito è la condizione necessaria e sufficiente per poter far funzionare il sistema con Dropbox, Box, o GDrive: se mettiamo la cartella cifrata nella cartella sincronizzata tra i vari servizi allora automaticamente i nostri dati cifrati verranno riportati automaticamente anche nei nostri account in internet.

Fuse ed EncFS

Come fare ad ottenere quanto specificato sopra? Con due prodotti Open Source: FUSE ed EncFS.

FUSE è un modulo di kernel (stiamo parlando di sistemi Unix quindi GNU/Linux e Mac OS X ad esempio) che consente agli utenti di creare e gestire filesystem senza avere permessi amministrativi. Si tratta di un modulo particolarmente utile in quanto consente di definire dei file system virtuali, ovvero dei file system che si basano su altri file system (in genere concreti) per darne una visione gerarchica e le funzionalità POSIX classiche. Ad esempio esistono dei progetti che consentono di montare tramite FUSE un collegamento FTP o SFTP direttamente in una directory del sistema utilizzato. In questo modo non è necessario utilizzare le direttive previste dai protocolli ma è sufficiente accedere alla directory montata (modificandola e leggendola a piacimento dal file browser di propria scelta) per interagire con la sorgente dati FTP o SFTP in maniera completamente trasparente.

EncFS è un file system virtuale basato su FUSE che effettua la cifratura in real time dei file che vengono inseriti all'interno della directory montata. Di fatto quello che realizza è il seguente scenario:
  1. L'utente crea una directory vuota.
  2. EncFS viene istruito per utilizzare la directory creata come sorgente dati.
  3. L'utente monta tramite FUSE il filesystem EncFS in una directory di sua scelta specificando la password di decrittazione da lui scelta al momento della creazione del filesystem EncFS.
  4. Ogni file che viene inserito nella directory montata viene automaticamente aggiunto in forma cifrata nella directory sorgente grazie all'utilizzo di FUSE.
  5. Ogni file che viene letto dalla directory montata viene decifrato "on-the-fly" per il suo utilizzo di qualunque cosa esso si tratti.

Sounds cool right?

Configurazione EncFS

Veniamo ora alla configurazione della directory cifrata con EncFS.
  1. Installare FUSE ed EncFS nel vostro sistema. Nel caso di (XK)Ubuntu, come sempre è molto semplice: basta digitare da linea di comando le magiche parole

    $ sudo apt-get install encfs fuse
    

    per installare tutti i pacchetti necessari con soddisfazione automatica delle dipendenze (e nonostante ciò io continuo a sentire idioti persone che sostengono che "uso windows perché Linux è troppo difficile!").
  2. Creare una directory vuota in cui inserire i dati che saranno cifrati. Per farlo basta un bel mkdir .secure nella giusta directory per risolvere il problema. Ci sono un paio di osservazioni da fare su questo punto:

    • Personalmente vi suggerirei di utilizzare una directory nascosta da utilizzare come sorgente, ovvero una directory che comincia con ".". In questo modo non vi verrà voglia di estirparla dall'albero delle vostre directory e vi consentirà di metterla dove volete senza che dia fastidio a guardarla.
    • Scegliete un nome corto perché poi dovrete utilizzarla per eseguire il mount.
    • Se volete far si che venga salvata con il vostro account su cloud, inseritela in qualche sottodirectory della directory sincronizzata con il servizio di archiviazione che avete. Io ho testato con successo il sistema su Dropbox, GDrive e Box, ma credo che non ci siano problemi se usate altri servizi.
  3. Inizializzare la directory cifrata con EncFS. Con EncFS installato creare una nuova directory cifrata è estremamente facile seguendo il processo interattivo. Prima di tutto è necessario eseguire il seguente comando:

    $ encfs /path/verso/directory/nascosta/.secure /path/verso/desktop/Sicura
    

    Ovviamente sostituite i path verso le destinazioni corrette nel vostro sistema. Io personalmente vi suggerisco di montare la directory sul Desktop del vostro sistema in maniera da averla sempre sottocchio come se fosse una chiavetta... comunque fate un po' come vi pare. Ricordatevi comunque che dovete specificare i path assoluti verso le directory perché altrimenti encfs si arrabbia.

    Se avete dato invio al comando precedente il sistema vi chiederà di creare la directory "Sicura" che avete specificato.

    La directory "/path/verso/desktop/Sicura" non esiste. Deve essere creata? (y/n) y
    

    Ovviamente rispondete y (si).

    A questo punto inizia la creazione del file system vero e proprio

    Creazione nuovo volume cifrato.
    Scegliere tra una delle seguenti opzioni:
     digitare "x" per la modalità di configurazione per esperti,
     digitare "p" per la modalità paranoica preconfigurata.
     qualsiasi altra cosa o una riga vuota selezionerà la modalità standard.
    ?> p
    

    Essendo paranoici scegliamo la modalità paranoia (nota: la modalità standard è comunque valida, è più veloce ma è un po' meno sicura... decidete voi quale scegliere. La modalità per esperti vi consente anche di scegliere l'algoritmo di crittografia da usare).

    Selezionata la configurazione standard.
    
    Configurazione terminata. Il file system da creare avrà
    le seguenti proprietà:
    Cifrario file system: "ssl/aes", versione 3:0:2
    Codifica nome dei file: "nameio/block", versione 3:0:1
    Dimensione chiave: 192 bit
    Dimensione blocco: 1024 byte
    Ogni file contiene 8 byte di intestazione con dati del vettore di inizializzazione unici.
    Nomi dei file cifrati usando la modalità di concatenazione del vettore di inizializzazione.
    File holes passed through to ciphertext.
    
    Ora è necessario creare una password per il proprio file system.
    È necessario ricordare questa password, dato che non esiste alcun modo
    per recuperarla automaticamente. In ogni caso, la password potrà essere
    cambiata utilizzando encfsctl.
    
    Nuova password di Encfs: ****
    Conferma password di Encfs: ****
    

    Inserite la password che verrà impiegata da AES per la crittografia e datene conferma. Congratulazioni! Avete creato il vostro primo filesystem cifrato.
  4. Test del sistema. Per verificare il funzionamento del sistema di crittografia provate a creare un semplice file di testo della directory reale con il seguente comando:

    $ echo "Ciao" > /path/verso/desktop/Sicura/prova
    

    Se provate ad accedere al file ovviamente potete farlo senza nessun problema. La cosa interessante è vedere cosa c'è adesso in /path/verso/directory/nascosta/.secure.
    Questo è l'output eseguito sul mio calcolatore:
    $ ls -la /path/verso/directory/nascosta/.secure
    totale 16
    drwx------ 2 francesco francesco 4096 set 20 18:27 .
    drwxr-xr-x 3 francesco francesco 4096 set 20 18:18 ..
    -rw-rw-r-- 1 francesco francesco 1076 set 20 18:24 .encfs6.xml
    -rw-rw-r-- 1 francesco francesco   13 set 20 18:27 ojaqkSvUvsImzfDlX0j5vs96
    

    Interessante direi! Abbiamo il file di configurazione della directory cifrata .encfs6.xml e un file intelligibile chiamato (nel mio caso) ojaqkSvUvsImzfDlX0j5vs96. Se visualizzate il contenuto apparirà come una sequenza di caratteri apparentemente casuali... in realtà è la parola "Ciao" cifrata.
  5. Smontare la directory cifrata. Se avete finito di giocare con i dati sensibili e volete far calare il sipario sul contenuto in chiaro è necesario smontare il filesystem virtuale. Per farlo basta eseguire il comando

    $ fusermount -u /path/verso/desktop/Sicura

    e la directory in chiaro verrà completamente svuotata.
  6. Rimontare una directory cifrata. Se volete accedere e rimontare la directory cifrata è sufficiente eseguire lo stesso identico comando usato per la creazione:

    $ encfs /path/verso/directory/nascosta/.secure /path/verso/desktop/Sicura
    Password di EncFS: ****
    

    Il sistema ovviamente vi richiederà la password che avete fornito alla creazione e se sarà corretta la directory verrà montata nel secondo argomento del comando (quindi se lo desiderate potete anche cambiare la directory in cui accedere ai vostri file in chiaro).

Una piccola nota personale su questo sistema: il contenuto delle vostre directory cifrate non è completamente opaco perché, sebbene i nomi di file e directory che creerete nelle directory montate saranno offuscati, la struttura dei file rimarrà sempre visibile. Dal mio punto di vista si tratta di un drawback accettabile considerando che i vantaggi sono decisamente superiori:

  • L'intera struttura cifrata può essere trasferita senza alcun problema in qualunque supporto: basta copiare la directory nascosta altrove per poterla rimontare con la stessa facilità (proprio a causa del mantenimento della struttura ad albero originale).
  • Il sistema funziona anche su sistemi operativi diversi: ho testato personalmente tale caratteristica creando una directory con EncFS su Mac OS X e montandola con successo su XUbuntu.
  • La corruzione di un file non compromette l'intera struttura: se un file si danneggia quello sarà l'unico file inaccessibile in tutta la directory cifrata, tutti gli altri saranno perfettamente leggibili.

mercoledì 12 settembre 2012

Virtualbox con rete dedicata virtuale

Da quando VMware ha inventato la virtualizzazione c'è la possibilità di fare delle cose veramente spettacolari con computer poco costosi o che comunque richiedono pochissimi miglioramenti. Acquistando dei moduli di RAM in più e avendo un controller disco sufficientemente performante, si può caricare su una macchina fisica una pletora di macchine virtuali che possono arrivare a soddisfare le esigenze anche di una piccola azienda.

La cosa più bella è la possibilità di creare delle immagini di macchine virtuali da poter clonare per avere un ambiente perfettamente installato in un paio di minuti. Ti serve una macchina che faccia da web server, una che faccia da database server, una da mail server ecc...? Nessun problema! Clicca, clona, istanzia, configura e siamo a posto!

Ok, ok... la pianto con l'introduzione!

Il fatto è il seguente: come fare a costruire un'infrastruttura che sia scalabile e facilmente configurabile con computer di recupero in casa propria senza spendere un patrimonio? Ho fatto delle prove e alla fin fine sono riuscito a configurare un ambiente con le seguenti caratteristiche:

  • Ambiente di virtualizzazione: Virtualbox
  • Sistema operativo ospite: XUbuntu 12.04 32 bit
  • Hardware: 1GB di RAM, Intel(R) Pentium(R) D CPU 2.80GHz (AKA: ciofeca), disco SATA da 500GB
  • Indirizzo IP locale dell macchina: 192.168.1.4/24
  • Tutte le macchine virtuali risiedono all'interno di una sottorete virtuale accessibile da tutta la rete locale. Ciò vuol dire che configurando opportunamente i servizi sarebbe possibile accedere alle macchine virtuali come fossero delle macchine fisiche con SSH, telnet, tramite browser web etc...

Ho scelto Virtualbox perché è un prodotto Open Source studiato per client che però può essere facilmente adattato a funzionare anche in modalità headless (ovvero: nessuna interfaccia di gestione obbligatoria, si fa partire la macchina virtuale e questa continua a vivere in background senza necessità di intervento diretto). Da quanto mi risulta per avere VMWare in modalità headless è necessario avere VMware Server che, giustamente vista la qualità del prodotto, è a pagamento.

La macchina host non è esattamente il meglio per far girare macchine virtuali (in particolare per la dotazione RAM decisamente ridicola) però è la mia macchina di scarto che uso per fare i test ed è perfettamente in grado di reggere 2 macchine virtuali attivate in contemporanea.

Cosa serve

Ci sono un paio di cose che è necessario avere prima di poter iniziare a giochicchiare con Virtualbox tra cui tanto per cominciare... Virtualbox!
Io lavoro principalmente in ambiente (XK)Ubuntu quindi non so per altre distribuzioni quali siano i comandi per l'installazione da linea di comando comunque, per quanto riguarda Ubuntu, vi serviranno i seguenti pacchetti:

$ sudo apt-get install virtualbox virtualbox-dkms virtualbox-guest-additions virtualbox-guest-additions-iso

Un'altra cosa che ho scoperto dopo smadonnamenti vari e diversi riti pagani tra cui l'accensione di un cero al Signore e Padrone Indiscusso dell'Informatica nonché Divinità Unica ed Eccelsa dei Computer (AKA: Mr. Murphy), è la necessità di abilitare il routing dei pacchetti nella macchina host (per una ragione che sarà chiara in seguito)... già perché dare a disposizione una macchina con una tabella di routing e poi DISABILITARE di default il routing mi pare molto sensata come scelta... ma tant'è...

Comunque bisogna andare a modificare il file /etc/sysctl.conf in maniera che ci sia la seguente opzione:

net.ipv4.ip_forward=1 #di default è 0

Se invece volete solo attivarle per la sessione corrente (fino allo spegnimento della macchina) è sufficiente eseguire il comando
sudo sysctl net.ipv4.ip_forward=1

Come ultima cosa c'è da dire che sarebbe meglio avere già installata una macchina virtuale di qualche distribuzione GNU/Linux per fare quello che mi accingo a spiegare. Se ne avete una bene! Se non ne avete una dovreste sapere come fare... Se non ne avete una e non sapete come fare: scusate ma perché state leggendo?!
Ok... credo che siamo pronti per la configurazione.

Creazione di una sottorete virtuale per le macchine virtuali

Ipotizziamo che la vostra rete di casa sia 192.168.1.0/24 con gateway per internet a 192.168.1.1. Quello che vogliamo fare è creare una sottorete della stessa dimensione di quella fisica attuale (ipotizziamo che non abbiate giocato a fare i sysadmin e che quindi la rete da creare sia la 192.168.2.0/24) in cui si trovino tutte le macchine virtuali, che sono fatte partire da Virtualbox, che sia anche abilitata all'accesso ad internet. Dirò di più! vogliamo anche che tutti i computer della rete fisica (192.168.1.0/24) possano raggiungere la rete virtuale (192.168.2.0/24) e viceversa. Suona bello no?

Il problema è che non è così semplice come sembra: le possibilità offerte da Virtualbox sono limitate: accedendo alle impostazioni di networking di una macchina virtuale preesistente dal client del programma (tasto destro sulla macchina virtuale -> Preferences -> Network) ci sono le seguenti opzioni
  • NAT: Configurazione semplice ma efficace. La macchina virtuale utilizza direttamente la scheda di rete della macchina ospite che si occupa di fare NAT delle porte verso l'esterno. Ovviamente non va bene perché noi vogliamo che la nostra macchina virtuale abbia un indirizzo ip suo e personale.
  • Bridged: Simile alla modalità superiore solo che la macchina virtuale possiede una scheda di rete virtuale (con un suo indirizzo IP) che si appoggio sulla scheda di rete fisica. Anche in questo caso non ci va bene perché la macchina fisica non ha conoscenza della macchina virtuale.
  • Internal network: Simile a quella sopra solo che consente di impostare maggiori controlli di sicurezza. Scartata.
  • Host-only: Di base determina la creazione di un interfaccia di rete virtuale nella macchina host che è utilizzata come router dalle macchine virtuali. Sembra bellissimo come sistema ma ha una pecca: host-only vuol dire host-only (e che ti aspettavi!) ovvero per le macchine virtuali esiste solo la macchina host.

Nemmeno a dirlo quello che vogliamo fare è risolvere la pecca della modalità host-only ovvero fare della scheda di rete virtuale creata da Virtualbox un router anche verso l'esterno.
  1. Creazione interfaccia virtuale. Prima di tutto bisogna creare questa benedetta interfaccia virtuale in maniera da poterci giocare in seguito. Per farlo è necessario andare in "File->Preferences" dal menù di Virtualbox per aprire la seguente finestra.
    Premendo sul pulsante (1) si può creare una nuova interfaccia virtuale contrassegnata dal nuovo elemento nella lista "vboxnet0" (2). Premendo sul tasto (3) sia accede alla finestra di modifica delle impostazioni della scheda di rete virtuale:

    Per impostare correttamente la scheda di rete si deve inserire al campo "IPv4 Address:" l'indirizzo IP della scheda di rete e al campo "IPv4 Network Mask:" la maschera di sottorete. Dato che vogliamo che tale interfaccia sia il router per la rete virtuale (per uniformità con la rete fisica) attribuiamole l'indirizzo 192.168.2.1/24 e quindi il primo campo deve avere valore "192.168.2.1" e il secondo campo "255.255.255.0".

    Se lo desiderate potete anche impostare il server DHCP per l'interfaccia. A voi la scelta.
  2. Modifica interfacce delle macchine virtuali. A questo punto è necessario fare si tutte le macchine virtuali che volete fare far parte delle rete virtuale utilizzino tale interfaccia. Quello che bisogna fare è quindi accedere alle preferenze delle macchine virtuali e modificare le impostazioni come mostrato in figura.

    A questo punto potete verificare che la configurazione sia andata a buon fine avviando le macchine virtuali ed eseguendo sulla macchina host il comando ifconfig. L'interfaccia virtuale infatti viene avviata solo quando è necessaria, quindi se l'avete appena creata o avete appena acceso il computer non comparirà tra le interfacce di sistema. Comunque dopo aver accesso e spento una delle macchine virtuali che la usano dovreste riceve in risposta dal comando qualcosa del genere
    vboxnet0  Link encap:Ethernet  HWaddr 0a:00:27:00:00:00  
              indirizzo inet:192.168.2.1  Bcast:192.168.2.255  Maschera:255.255.255.0
              indirizzo inet6: ***::***:****:****:0/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
              collisioni:0 txqueuelen:1000 
              Byte RX:0 (0.0 B)  Byte TX:8100 (8.1 KB)
    
  3. Accesso alla sottorete virtuale dalla rete fisica (1). Quello che bisogna fare adesso è fare si che tutti i pacchetti indirizzati alla rete 192.168.2.0/24 vengano instradati nell'interfaccia virtuale. Tutto ciò che bisogna fare è eseguire nella macchina host il comando
    $ route add -net 192.168.2.0/24 vboxnet0
    

    Per verificare che il comando sia andato a buon fine controllate la tabella di routing con route -n che vi dovrebbe restituire qualcosa del genere:
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
    192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 vboxnet0
    

    Inoltre potete verificare la responsività dell'interfaccia pingando il suo indirizzo IP con
    $ ping 192.168.2.1
    
  4. Accesso alla sottorete virtuale dalla rete fisica (2). Avendo avuto l'accortezza di abilitare l'opzione net.ipv4.ip_forward all'introduzione adesso il vostro computer host è diventato un router e con il passo precedente avete fatto in modo che tutti i pacchetti che riceve, indirizzati agli indirizzi della rete 192.168.2.0/24, passino per l'interfaccia vboxnet0. Quello che manca è indirizzare da tutti gli altri computer della rete alla macchina host quando vogliono parlare con la rete virtuale.

    Per fare questa operazione è necessario configurare il vostro router in maniera da reindirizzare i pacchetti al destinatario corretto (ovvero la macchina host che ha ip 192.168.1.4/24).

    Nel mio caso, dato che ho un Linksys WAG120N come router di casa (router che vi consiglio vivamente se dovete cambiare il vostro spettacolare modem Alice o peggio...) si tratta di andare nella sezione "Configurazione->Routing Avanzato" ed aggiungere le informazioni come in figura:

    Eseguita questa modifica a questo punto tutte le macchine virtuali (attive ovviamente) dovrebbero essere raggiungibili da qualunque macchina della vostra rete fisica (e anche da internet se siete stati tanto smaliziati da nattare le macchine virtuali nel router).
  5. Accesso dalla sottorete virtuale al resto del mondo. L'ultimo passo da eseguire per completare la configurazione è fare si che le macchine virtuali possano accedere al resto della rete locale ed internet. Per farlo è necessario avviare le macchine virtuali ed eseguire il seguente comando:

    $ sudo route add default gw 192.168.2.1
    

    Lo scopo di questo comando è quello di fare si che l'interfaccia virtuale vboxnet0 diventi il gateway della macchina virtuale e che quindi la tabella di routing della macchina virtuale sia modificata così:
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
    
    In questo modo tutti i pacchetti che non sono locali (non localhost) vengono indirizzati a vboxnet0, quindi alla macchina ospite, che, essendo configurata come router, procederà ad indirizzare i pacchetti alla giusta posizione. Per esempio, se si dovesse contattare la macchina 192.168.1.6 dalla macchina virtuale, il pacchetto sarebbe indirizzato prima a vboxnet0, a quel punto non essendo l'interfaccia direttamente collegata alla macchina ospite il pacchetto verrebbe indirizzato vero 192.168.1.1 (gateway di default) che a quel punto lo indirizzerà verso il calcolatore corretto. Lo stesso ragionamento si può fare per tutti i pacchetti verso internet.

    A questo punto tutte le macchine delle reti fisiche e virtuali possono parlare con tutte le altre macchine delle rete fisiche e virtuali (incluse quelle accessibili da internet).

La prossima guida servirà ad avviare le macchine virtuali in modalità headless ovvero senza necessità che ci sia l'interfaccia utente Virtualbox attiva, e che tali macchine siano avviabili da un'interfaccia web accessibile da qualunque macchina della rete locale.