Next Previous Contents

2. Teoria

2.1 Che cos'è una VPN?

VPN stà per Virtual Private Network. Una VPN usa internet e i suoi meccanismi di trasporto (TCP/IP), mantenendo la sicurezza dei dati.

Ma in definitiva, che cos'è una VPN?

Bene, ci sono molte risposte per questa domanda. Dipende dalla struttura della tua rete. La configurazione più comune è quella di avere una singola rete interna, con i nodi remoti che usano la VPN per poter accedere pienamente alla rete interna centrale. I nodi remoti sono comunemente uffici periferici o impegati che lavorano a casa. Tu puoi anche collegare due piccole (oppure grandi!) reti per realizzare una rete più grande.

Quindi, come lavora?

Detto semplicemente, per fare una VPN, devi creare un secure tunnel tra due reti e instradare gli indirizzi IP attraverso di esso. Se ti sei già perso con questa descrizione, dovresti leggere The Linux Networking Overview HOWTO per capire il networking con Linux.

Vi prego di sopportarmi, la mia arte ASII potrebbe costringervi ad un certo lavoro di comprensione.

                                \          \
                 --------       /          /      --------
   Remote ______| Client |______\ Internet \_____| Server |______ Private
   Network      | Router |      /          /     | Router |       Network
                 --------       \          \      --------
                                /          /


                         Client Router
               ----------------------------------------------------
              |   /->    10.0.0.0/255.0.0.0   \                    |
  Remote      |  |-->  172.16.0.0/255.240.0.0  |--> Tunnel >---\   |
  Network >---|--|--> 192.168.0.0/255.255.0.0 /                 |--|----> Internet
 192.168.12.0 |  |                                              |  |
              |   \-----> 0.0.0.0/0.0.0.0 --> IP Masquerade >--/   |
               ----------------------------------------------------


                        Server Router
             ----------------------------------------------------
            |                   /->    10.0.0.0/255.0.0.0    \   |
            |   /--> Tunnel >--|-->  172.16.0.0/255.240.0.0   |--|----> Private
Internet >--|--|                \--> 192.168.0.0/255.255.0.0 /   |      Network
            |  |                                                 |     172.16.0.0/12
            |   \-----> 0.0.0.0/0.0.0.0 -----> /dev/null         |    192.168.0.0/16
             ----------------------------------------------------

Il diagramma sopra riportato fa vedere come la rete dovrebbe essere configurata. Se non sai che cos'è l'IP Masquerade, probabilmente non dovresti essere qui. Vai a leggere The Linux Networking Overview HOWTO e torna quando avrai una idea di cosa si tratta.

Il Client Router è un computer con Linux installato che funge da gateway/firewall per la rete remota. Come puoi vedere, la rete remota usa la numerazione IP per una rete locale 192.168.12.0. Per rendere semplice lo schema, ho messo le informazioni sul routing locale nei routers (client e Server). L'idea di base è di instradare il traffico di rete per tutte le reti private (10.0.0.0, 172.16.0.0, e 192.168.0.0) attraverso il tunnel. La configurazione indicata qui è un modo. Cioè, mentre la rete remota può vedere la rete privata, la rete privata non deve necessariamente vedere la rete remota. Per far in modo che questo accada, devi specificare che gli instradamenti del traffico di rete siano bidirezionali.

Dallo schema dovreste anche notare che tutto il traffico che esce dal client router sembra provenire dal client router stesso, cioè, tutto da uno stesso indirizzo IP. Potreste instadare indirizzi reali dall'interno della vostra rete ma ciò comporterebbe portarsi dietro tutti i problemi di sicurezza.

2.2 SSH e PPP

Il sistema di cui stò descrivendo l'implementazione della VPN usa SSH e PPP. Uso ssh per creare la connessione tunnel, e poi uso pppd per far transitare il traffico TCP/IP attraverso esso. Questo è ciò che fa il tunnel.

Il vero segreto per ottenere che ssh e pppd lavorino bene è l'utility scritta da Arpad Magosanyi che permette la re-direzione dell' I/O standard in una pseudo tty. Ciò permette a pppd di comunicare attraverso ssh come se fosse un collegamento seriale. Dal lato server, pppd è lanciato a livello utente in una sessione ssh, e con questo si completa il gircompletando il collegamento. Dopo di questo, tutto ciò che dovete fare è l'instradamento.

2.3 Sistemi VPN alternativi

Naturalmente ci sono altri modi per configurare una VPN, qui ne presenterò un paio.

PPTP

PPTP è la risposta Microsoft per la VPN. E' supportato da Linux, ma è conosciuto per avere seri problemi di sicurezza (NdT: tanto per cambiare ;-) ). Non descriverò come usarlo dal momento che l'argomento viene coperto da Linux VPN Masquerade HOWTO.

IP Sec

IP Sec è un set di protocolli alternativi a SSH. Attualmente non conosco tanto di più a riguardo, così se qualcuno volesse aiutarmi con una loro descrizione sarebbe bene accolta. Anche con questi non mi cimenterò a descriverne il loro uso poichè l'argomento è coperto da Linux VPN Masquerade HOWTO.

CIPE

CIPE è un sistema di crittazione della rete a livello kernel che è più adatto alle esigenze di configurazioni a livello enterprise. Puoi trovare ulteriori informazioni a homepage del CIPE. Ho pianificato di esaminare più a fondo la questione il prima possibile, così avrò notizie più approfondite fra qualche tempo.


Next Previous Contents