2. Introduzione

2.1. Benefici di PPP-SSH

Dall'installazione di una Virtual Private Network PPP-SSH derivano svariati benefici. È relativamente immediato, impiega strumenti comuni per cui non necessitano modifiche e probabilmente non richiederà un riavvio del sistema per la creazione del collegamento. Segue una lista più completa:

È facile da installare

Probabilmente non sarà necessario applicare patch al kernel o compilarlo nuovamente, installare LILO, riavviare o eseguire altre attività amministrative potenzialmente pericolose. PPP e SSH sono inclusi nella maggior parte delle distribuzioni, e la maggior parte dei kernel è preconfigurato per utilizzarli.

È facile da configurare

Non dovrebbe essere necessario modificare i file di configurazione esistenti. Semplicemente basterà apportare modifiche al file di script fornito più avanti in questo stesso documento, che contiene tutte i dati di configurazione per la VPN, e poi eseguirlo sulla macchina client. Qualsiasi configurazione preesistente di PPP e SSH dovrebbe continuare a funzionare correttamente.

Nessuna modifica al firewall

Se il protocollo SSH attraversa il firewall, allora anche PPP su SSH lo attraverserà. (Se non si sta già impiegando SSH: perché no? Ai giorni nostri è uno strumento quasi indispensabile per gli amministratori di sistema.)

Non necessita di utilizzare il routing manuale, per evitare danni

pppd imposta automaticamente i parametri di routing. Inoltre, nel caso in cui fosse necessario un routing particolarmente complesso, è molto semplice inserire comandi personalizzati nel file di script.

Non è necessario un indirizzo IP statico

Le VPN PPP-SSH non hanno difficoltà nel gestire indirizzi IP dinamici. Il client deve essere in grado di trovare il server a cui connettersi, chiaramente, quindi basta utilizzare un DNS. Installare una VPN su una connessione dialup non presenta problemi.

È semplice creare Tunnel Multipli

Impostare tunnel multipli verso un unico computer è semplice. Occorre semplicemente assicurarsi che gli indirizzi IP delle interfacce di rete del tunnel siano distinti.

2.2. Inconvenienti del PPP-SSH

Questo tipo di VPN presenta qualche difficoltà. Solitamente, se trascurato non funziona molto bene. Se siete alla ricerca di VPN efficienti che una volta configurate possono essere dimenticate, probabilmente troverete PPP-SSH leggermente frustrante. Alcune alternative sono descritte in la Sezione 2.4.

Provare a gestire una connessione TCP

Nel caso in cui la connessione TCP SSH venisse interrotta per qualsiasi ragione, la VPN cesserebbe di funzionare così come tutti i tunnel delle connessioni TCP. Se avete un collegamento poco affidabile (cioè è difficile effettuare il download di più di poche decine di megabyte in una volta sola) dovrete riavviare la VPN molto spesso.

Inviare pacchetti IP tramite stream TCP

Il protocollo TCP consiste di flussi di dati costruiti sui pacchetti IP. Tentando successivamente di inviare i pacchetti IP sullo stream TCP (come si vorrebbe fare), il conflitto fra i due protocolli diventa evidente. Nella maggior parte dei casi, si manifesta attraverso strani ritardi, perdita di informazioni, e variazioni anomale. A volte si potrebbero manifestare problemi durante il caricamento, altre in quasi assenza di traffico. A parte cambiare l'intero modello OSI (improponibile), non c'è molto altro che si può fare a riguardo.

Tendenza alla saturazione della banda

Per qualche motivo, quando il carico della rete aumenta, una connessione TCP ridiretta nel tunnel tende a saturare tutta la banda disponibile mentre le altre vengono ignorate. Questo porta a timeout e perdita di connessioni. Teoricamente, questo problema potrebbe essere risolto.

Non si può avere la certezza della perdita della connessione

I keepalive sono piccoli pacchetti inviati per comunicare all'altra macchina che la connessione è ancora esistente. Se il carico della rete diventa troppo elevato, i keepalive saranno ritardati. L'altra macchina assumerà erroneamente che la connessione sia stata interrotta e chiuderà il proprio lato della connessione.

Senza keepalive, tuttavia, non c'è modo per nessuna delle due macchine di comunicare che la connessione è stata interrotta. Quando una macchina tenta di ripristinare la connessione e l'altra pensa che questo sia già stato fatto, sorgerà la confusione. Molto spesso il risultato è che si vedono molteplici dispositivi per la connessione ppp, route duplicate, e tunnel che apparentemente sono attivi ma che perdono tutti i pacchetti. Un uso indiscriminato di "killall -9 pppd" solitamente riporta le cose a posto. Uno script di avvio più intelligente probabilmente potrebbe migliorare la situazione.

Troppe connessioni simultanee provocano problemi

Quando uso una normale connessione PPP tramite un modem 56K e Postfix apre più di 10 connessioni per inviare la posta, tutto funziona bene. Però, tentando la stessa operazione su una VPN con tunnel su una connessione DSL molto più veloce, si verifica uno stallo. Il tempo di ping si alza vertiginosamente (2 minuti e oltre), il traffico si riduce per un momento, quindi si interrompe completamente. L'unico modo per ristabilire la funzionalità della rete è riavviare il tunnel. Non sono sicuro che questo sia un bug o una limitazione intrinseca. Ridurre il numero di connessioni utilizzate da Postfix per inviare la posta in uscita risolve il problema nel mio caso...

Grande overhead e grande latenza

Il tempo di ping sulla mia connessione a 56K è solitamente nell'ordine di 130-170 ms. Tuttavia, il tempo di ping su una VPN PPP-SSH avviata sulla stessa connessione è nell'ordine di 300-330 ms. Utilizzare la compressione PPP può aiutare abbastanza nel caso in cui si stiano trasmettendo dati comprimibili. Ad esempio, le email sono comprimibili, mentre i file Vorbis no.

2.3. Letture Consigliate

FAQ VPN

La VPN FAQ su http://kubarb.phsx.ukans.edu/~tbird/vpn/FAQ.html è veramente un'ottima risorsa. È completa, ragionevolmente aggiornata, e non ha paura di esprimere un'opinione.

Linux Kernel HOWTO

Se il kernel non dispone delle capacità di PPP e IP Forwarding, il Linux Kernel HOWTO spiega come ricompilare un kernel per aggiungerle. Inoltre spiega come inserire e togliere il modulo PPP dal kernel.

PPP HOWTO

Spiega come installare e configurare il demone PPP se la distribuzione non lo fa automaticamente. Inoltre contiene un'ottima sezione che spiega come collegare due reti attraverso PPP. Questo è esattamente quello che stiamo facendo, eccetto per il fatto che stiamo aggiungendo il supporto per la crittazione. Può essere reperito in http://www.linuxdoc.org/HOWTO/PPP-HOWTO/index.html.

SSH HOWTO

Spero che esista un SSH HOWTO! Per adesso, la documentazione contenuta nella propria distribuzione dovrebbe essere un buon inizio. Si può anche visitare il sito web di OpenSSH OpenSSH web site.

Documentazione per il networking

Se non si è molto abili con il networking, si può consultare la guida a Linux Network Administrators . È un'eccellente introduzione ai principali concetti che verranno utilizzati in seguito. Si può inoltre trovare il Linux Networking HOWTO presso http://www.linuxdoc.org/HOWTO/Networking-Overview-HOWTO.html, che è un'utile introduzione, specialmente per le sezioni su TCP/IP, PPP, e sul tunneling.

2.4. Alternative

Ora nel mondo ci sono molte tecnologie VPN. Se PPP-SSH non soddisfa le necessità, si può consultare uno dei seguenti pacchetti.

ipsec

ipsec descrive un insieme di protocolli di basso-livello, ESP e AH, per eseguire l'autenticazione e crittazione a livello dei pacchetti. Impiega inoltre un protocollo di alto-livello, IKE, per negoziare parametri di connessione e scambiare chiavi di crittazione.

FreeS/WAN è probabilmente il migliore Linux ipsec implementato oggi. Può risultare molto difficile installarlo, specialmente per chi non ha molta familiarità con il networking, tuttavia è molto stabile una volta configurato. Si può saperne di più in FreeS/WAN home page.

Un'altra efficiente e libera implementazione di ipsec è Cerberus. Sfortunatamente, l'Istituto Nazionale di Standard e Tecnologie (NIST) distribuisce Cerberus solo a cittadini statunitensi e canadesi che attualmente vivono negli Stati Uniti o in Canada. Perciò, a seconda della persona che lo richiede, diventa moderatamente difficile o effettivamente impossibile ottenere Cerberus.

PPTP

PPTP (Point-to-Point Tunnelling Protocol) è un protocollo VPN sviluppato da Microsoft RFC2637. È una tecnologia molto diffusa e di facile comprensione e ha molte implementazioni mature su tutte le piattaforme computer comunemente usate. Comunque PPTP è generalmente considerato un protocollo con una sicurezza alquanto debole.

Probabilmente la migliore implementazione di Linux PPTP è PoPToP, che si può trovare presso http://poptop.lineo.com/.

CIPE

CIPE è un protocollo di Olaf Titz che incapsula il traffico IP in pacchetti UDP. Esso ha sia una versione Linux che una versione Windows. Non l'ho ancora utilizzato, ma è in pieno sviluppo e sembra essere molto promettente. Per ulteriori informazioni, CIPE-MASQ Mini-HOWTO è una lettura concisa ma piena di informazioni.