Connettersi a una VPN PPTP

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.











Ciao
La prima volta ho provato a creare una connessione vpn da network manager ma mi da sempre connessione non riuscita, provo a mettere qui comandi in uno script anche se non come si fa.
Ciao
Salvatore
crea un file di testo e scrivi dentro
#!/bin/bash
pon VPNAzienda
route add -net 190.0.0.x dev ppp0
salvalo come ti pare, rendilo eseguibile dalle proprieta` e poi fatti un lanciatore che esegua gksudo nomefile
ciao ho seguito le tue istrizioni sulla Scrivania
creato file gli ho messo dentro le tre righe l’ho salvato l’ho reso eseguibile poi ho creato un lanciatore che punta al file che ho creato sopra quando apro gnome -rdp mi da errore sembra che non sia connesso alla VPN.
Grazie al tuo aiuto riesco a collegarmi solo da terminale.
Ciao
Salvatore
avvia lo script manualmente e vedi se parte no?
essendo di fatto una connessione point-to-point, per la rotta di default dovrebbe bastare:
sudo route add -net 0.0.0.0 ppp0
cosi` facendo impedisci di fatto la navigazione internet mentre sei connesso
hai ragione, si nota che non ho mai usato una vpn ?
che tu sappia, visto che in una discussione su ubuntu.it un utente aveva questo problema, sai se sia possibile usare per l’autenticazione un certificato?
io non l’ho mai usato ma dovrebbe bastare usare il metodo di autenticazione EAP-TLS invece di MSCHAP che e` gia` supportato dai moderni pppd
salute,
ho due intoppi:
1.in /etc/ppp/ manca il file options.pptp
2.all’esecuzione di “gksudo pon VPNAzienda” mi restituisce:
“The remote system (xxxxx) is required to authenticate itself/usr/sbin/pppd: but I couldn’t find any suitable secret (password) for it to use to do so.”
Ma magari ho sbagliato io qualcosa, domattina ci riprovo….
per la 1 non dovrebbe avere importanza.
per la 2, probabilmente non hai compilato il file delle password come indicato nell’articolo
ciao e grazie della guida!
funziona ma ho un problema, dal mio client con windows mi connetto alla VPN ma pingo solo il server vpn (sia il suo ip reale che quello creato con l avpn), tutti gli altri pc in rete non li pingo! potete aiutarmi per favore? grazie
hai aggiunto le rotte in modo che quelle richieste passino attraverso la rete vpn?
si! le ho aggiunte seguendo il tuo esmpio mapurtroppo non è servito, non sò più cosa fare mannaggia, qualche idea? (p.s. grazie della veloce risposta dell’altra volta)
in tal caso devi chiedere a chi amministra quella vpn, i client esterni potrebbero avere il ping bloccato o abilitati solo certi servizi.
se sei connesso alla vpn e la tabella di routing è corretta, la responsabilità passa totalmente al server vpn.
ringrazio l’autore per la guida, mi è stata davvero utile ed ho risolto con la mia VPN aziendale
Non mi funziona l’autenticazione, come se non riuscisse a fare il match con il file chap-secrets
ti manca il carattere * nel file /etc/ppp/chap-secrets da aggiungere alla riga con nome utente nomeVPN e pass