
Chiunque lavori in un’azienda con un ruolo in qualche modo informatico è connesso ad una rete con le sue risorse interne, quali database, applicativi o semplicemente altri client e server. Ma una volta fuori dalla porta dell’ufficio diventa più complesso e più rischioso accedere a queste risorse.
Una soluzione che da alcuni anni prende piede consiste nel costruire un tunnel in cui il traffico viene crittografato e consente ai client esterni di connettersi ad una rete privata virtuale (VPN, Virtual Private Network) connessa a una parte della rete interna reale.
In questo modo non si espongono ad attacchi esterni le risorse interne della rete e possono transitare informazioni tra gli utenti esterni e la rete interna in maniera più sicura.
La più semplice rete VPN che si può costruire è quella basata sul protocollo PPTP (Point to Point Tunnel Protocol) sviluppato da Microsoft, nativo in tutti i Windows dal 98 in su e il server disponibile su tutti i Windows NT Server. Questa semplicità ha fatto si che molte reti VPN venissero messe a punto con questo protocollo anche se non molto sicuro.
Sebbene esistano alcuni front-end grafici per creare connessioni PPTP (PPTPClient e network-manager-pptp per Network Manager) utilizzeremo il pacchetto pptp-linux e alcuni semplici comandi da console per configurare la connessione in quanto entrambi i pacchetti precedenti mostrano enormi limitazioni sulla configurazione della connessione.
Prima di iniziare assicuriamoci di essere in possesso dei dati di accesso alla rete VPN:
- Indirizzo del server VPN, qui usato 123.123.123.123
- Nome utente per l’accesso, qui Paolino Paperino
- Password relativa all’utente per l’accesso, qui EmyEvyEly
- Nome del dominio se in una rete con dominio, qui nessuno
Installiamo il pacchetto pptp-linux (sudo apt-get install pptp-linux), decidiamo un nome per il tunnel VPN che qui chiameremo VPNAzienda, può essere qualsiasi parola.
Memorizziamo utente, nome del tunnel e password nel file delle password delle connessioni con:
gksudo gedit /etc/ppp/chap-secrets
Aggiungendo in fondo al file l’accesso nella forma:
"DOMINIO\\Nome Utente" NomeTunnel "Password" *
Se il dominio non viene utilizzato, rimuoverlo, assieme alle barre di separazione. Nel nostro esempio avremo quindi:
"Paolino Paperino" VPNAzienda "EmyEvyEly" *
Questi dati saranno utilizzati automaticamente dal servizio di connessione remota ppp per autenticare la connessione.
Fatto ciò creiamo un nuovo file con i parametri per la connessione col nome del tunnel come indicato:
gksudo gedit /etc/ppp/peers/VPNAzienda
E scriviamo all’interno:
pty "pptp 123.123.123.123 --nolaunchpppd" name "Paolino Paperino" remotename VPNAzienda require-mppe-128 usepeerdns file /etc/ppp/options.pptp
La prima riga avvierà la connessione ppp verso il server 123.123.123.123, la seconda identifica il nome utente da utilizzare, la terza riga identifica il nome della connessione e servirà anche per la ricerca della password nel file chap-secrets.
La quarta riga impone l’uso della crittografia mppe-128, utilizzarla quindi solo se il server VPN la consente. La riga usepeerdns consentirà di ricevere i DNS dal server VPN e utilizzare quelli prima di quelli della nostra connessione internet, se non ne abbiamo bisogno possiamo anche eliminarla. L’ultima riga aggiunge le opzioni predefinite per tutte le connessioni PPTP, indicate su /etc/ppp/options.pptp.
Questi due semplici files già consentono di stabilire la connessione VPN che possiamo attivare con:
gksudo pon VPNAzienda
Se tutto va a buon fine la connessione sarà stabilita. E’ possibile osservare i messaggi di connessione con tail /var/log/messages. Verrà attivata una nuova interfaccia di rete (generalmente ppp0) attraverso la quale sarà possibile instradare il traffico diretto verso la nostra rete privata e connettersi ai client della rete, accedere alle risorse condivise.
Generalmente è compito del server VPN definire le rotte verso cui il traffico deve seguire il tunnel VPN. Se così non fosse o desideriamo aggiungere qualche indirizzo alle rotte del tunnel VPN possiamo farlo con:
sudo route add INDIRIZZO dev INTERFACCIA
Mentre nel caso di sottoreti intere:
sudo route add -net INDIRIZZO/CIDR dev INTERFACCIA
Oppure nella notazione classica con subnet:
sudo route add -net INDIRIZZO netmask SUBNET dev INTERFACCIA
Tre esempi valgon più di mille parole:
sudo route add 123.123.123.125 dev ppp0 sudo route add -net 123.123.124.0/29 dev ppp0 sudo route add -net 123.123.125.0 netmask 255.255.255.0 dev ppp0
Possiamo osservare le rotte create su tutte le interfacce con:
route -n
Se abbiamo qualche difficoltà nella connessione o l’interfaccia ppp non viene avviata, possiamo avviare la connessione da terminale con:
sudo pon VPNAzienda debug dump logfd 2 nodetach
E osservare i messaggi man mano che la connessione va avanti. Naturalmente non possiamo stare tutta la vita collegati, per cui quando avremo finito scolleghiamoci con:
gksudo poff VPNAzienda
Tutte le rotte definite saranno automaticamente rimosse.
Per ulteriori informazioni: Understanding PPTP, Creazione guidata di una connessione PPTP passo passo su tutti i Windows.
Facile come entrare e uscire dalla porta in ufficio ma restando comodamente seduti sul divano di casa.




23 Marzo 2008 alle 19:26 |
[...] mio collega che utilizza Fastweb mi ha fatto notare che le normali VPN PPTP non funzionano attraverso la rete Fastweb, non conosco la ragione o un modo di aggirare questo [...]
29 Giugno 2008 alle 13:32 |
[...] Definire le rotte di un’interfaccia Connettendosi a reti privati virtuali (VPN) diventa utile definire una rotta in modo da redirigere i pacchetti destinati ad un certo indirizzo verso l’interfaccia di rete corretta, ad esempio ppp0, anziché l’interfaccia predefinita. Lo abbiamo visto configurando la connessione ad un server PPTP. [...]
21 Agosto 2008 alle 10:15 |
guida simpatica e ben realizzata. Attenzione che manca il parametro -net sulle route aggiuntive dell’esempio. Bravi!
21 Agosto 2008 alle 15:49 |
uaz grazie della segnalazione paolo, correggo subito
ciao
12 Febbraio 2009 alle 19:48 |
[...] mio collega che utilizza Fastweb mi ha fatto notare che le normali VPN PPTP non funzionano attraverso la rete Fastweb, non conosco la ragione o un modo di aggirare questo [...]
28 Giugno 2009 alle 0:34 |
Ciao,
è un giorno intero che leggo guide, forum ecc ecc ma non riesco a risolvere questo problema.
Quello che voglio fare è navigare in Internet utilizzando l’ip dinamico fornitomi dalla vpn (80.x.y.z) anzichè l’ip che il mio isp mi fornisce (mi collego tramite un router con indirizzo 192.168.1.254 ottenendo un indirizzo IP 93.x.y.z). Con windows avviene tutto in automatico, quindi direi che la vpn funziona correttamente.
Con Linux sto avendo dei problemi. Uso Gentoo e ho installato pptpclient correttamente seguendo la guida all’indirizzo http://pptpclient.sourceforge.net/howto-gentoo.phtml
Guardando /var/log/messages la connessione al server vpn avviene in modo corretto, ma una volta che effettuo le route per redirigere tutto il traffico su ppp0 dopo pochi minuti la connessione al tunnel salta.
Avendo come dati l’indirizzo del mio router dsl (192.168.1.254 su eth0), del gateway (80.x.y.200), l’indirizzo ip dell’interfaccia ppp0 (80.x.y.z) e l’indirizzo remoto (80.x.y.150) , quali route devo mettere?
29 Giugno 2009 alle 13:16 |
dovrebbe bastare inserire nella route list il gateway per la rotta con l’indirizzo della vpn
e per tutto il resto usa come gateway l’interfaccia ppp0
ciao
29 Giugno 2009 alle 13:17 |
peraltro lo trovi spiegato qui
http://pptpclient.sourceforge.net/routing.phtml#all-to-tunnel
29 Giugno 2009 alle 14:43 |
Avevo omesso di aver seguito la guida all’indirizzo che mi hai proposto.
Non capisco sinceramente il motivo, ma le route vengono modificate però il mio indirizzo ip resta quello dato dal mio isp e non quello datomi dalla vpn
29 Giugno 2009 alle 16:33 |
incolla qui l’intera tabella di routing che vedi con route -n
18 Agosto 2009 alle 15:03 |
[...] – Connettersi ad una VPN via PPTP; Configurare un server VPN PPTP; Configurare una VPN attraverso [...]