Ultimamente si è assistito ad una crescita del numero di utenti che utilizzano Linux come sistema operativo principale. Ciò può essere motivato in molti modi. Ad esempio, se si guarda alla sfera degli utenti desktop, si può ragionevolmente affermare che sistemi come Microsoft Windows sono più esposti a vulnerabilità di sicurezza, e talvolta anche meno stabili. Se ci si sposta sull'ambito dei sistemi server, in realtà il discorso è pressocchè analogo.
Se, però, si pensa alla configurazione ed installazione di pacchetti software, i vantaggi nell'uso di Linux sono meno evidenti. Se pensiamo di dovere installare software tipo Skype, Firefox, VLC e simili, distribuzioni Linux moderne come Ubuntu, Fedora o openSUSE ci semplificano notevolmente ogni processo di configurazione. Ma se si pensa di volere configurare un server VPN, la questione (seppur risolvibile più o meno agevolmente) non è egualmente banale.
In questo articolo vedremo proprio in che modo possiamo configurare una VPN sul nostro PC, utilizzando Ubuntu come sistema operativo server. Collegandoci, poi, alla nostra VPN personale, potremo mascherare a chiunque altro tutto il traffico in uscita, dal momento che esso sarà interamente diretto, per esempio, verso casa nostra (dove si troverà il nostro server VPN).
Esistono due soluzioni per le VPN, vale a dire OpenVPN e PPTP VPN. In questo tutorial ci soffermeremo su quest'ultima opzione.
Configurazione del server VPN
Installazione e configurazione di PPTP
La prima cosa di cui ci occuperemo sarà proprio la configurazione del server VPN, ovvero quel software che ha il compito di assegnare gli IP alle macchine che vi si collegheranno. Installiamo quindi il pacchetto PPTP sul nostro server. Possiamo farlo sfruttando il comando apt-get
, dal momento che su Ubuntu questo pacchetto è già presente sui repository. Per essere anche certi di installare la versione più aggiornata, procediamo come segue:
sudo apt-get update
sudo apt-get install pptpd
Completata l'installazione, dobbiamo modificare il file di configurazione /etc/pptd.conf. Possiamo farlo con un editor grafico come gedit
:
sudo gedit /etc/pptpd.conf
o se preferiamo (e se sappiamo come utilizzare un editor di testo a riga di comando) possiamo usare vi
o nano
:
sudo nano /etc/pptpd.conf
Aperto questo file, dobbiamo aggiungere le seguenti due linee in fondo ad esso:
localip 172.20.0.1
remoteip 172.20.0.100-200
Queste due linee specificano l'IP che utilizzerà il server VPN (in questo caso 172.20.0.1, ma ovviamente questo varierà caso per caso), ed il range di IP da assegnare ai client che si connetterano con il server (specificato a seguito di remoteip
).
Aggiungere gli utenti
Il prossimo passo consiste nell'aggiungere nuovi utenti. Per farlo, dovremo aprire e modificare il file /etc/ppp/chap-secrets con un editor a nostra scelta. Per ogni utente, dovremo aggiungere il nome del client, seguito dal server, la password e l'indirizzo IP. Quindi, le righe che aggiungeremo saranno simili alle seguenti:
utente1 pptpd password *
utente2 pptpd password *
In realtà abbiamo utilizzato gli asterischi (*
) anziché gli indirizzi IP, in modo da consentire ad ogni indirizzo IP di connettersi tramite il server VPN che stiamo configurando. Ovviamente questa scelta dipende da quanto vogliamo che sia privato e sicuro il nostro server, e ciò va valutato caso per caso.
Specificare i DNS
Sebbene questo passaggio sia opzionale, è sempre bene specificare quali DNS si vogliono utilizzare per il nostro server VPN. Esistono due opzioni preferibili: gli OpenDNS ed i DNS di Google. Nel primo caso, gli indirizzi sono 208.67.222.222 e 208.67.220.220; i server DNS di Google, invece, sono più facilmente memorizzabili: 8.8.8.8 e 8.8.4.4. Possiamo specificare quali usare modificando il file /etc/ppp/pptpd-options, aggiungendo due linee come le seguenti:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
Completare la configurazione di PPTP
Per completare, avviamo il demone di PPTP come segue:
service pptpd start
Apriamo quindi il file /etc/sysctl.conf e verifichiamo che esso contenga la linea seguente:
net.ipv4.ip_forward = 1
Se tale linea non è presente, copiamola ed incolliamola nel file, salviamolo ed aggiorniamo la configurazione con il comando:
sysctl -p
Infine, se voglimo che i client comunichino gli uni con gli altri, possiamo aggiungere le opportune regole iptable come segue:
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
Ovviamente dovremo sostituire eth0
con la connessione utilizzata dal server (e possiamo capirlo dando un'occhiata agli output dei comandi iwconfig
ed ifconfig
). Quindi, procediamo come segue:
# iptables --table nat --append POSTROUTING --out-interface ppp0 -j
# iptables -I INPUT -s 172.20.0.0/20 -i ppp0 -j ACCEPT
# iptables --append FORWARD --in-interface eth0 -j ACCEPT
A questo punto la configurazione è completato, ed il nostro server VPN è pronto e funzionante. Nella seconda parte di questo articolo vedremo come collegarci da un client al nostro server.
Abbiamo visto come configurare un server VPN su Linux. Per completare la nostra discussione, vediamo brevemente in che modo un client Debian-based può connettersi al nostro server. Ovviamente, con una diversa procedura (che qui non approfondiremo), potremo connetterci al nostro server VPN anche utilizzando sistemi operativi diversi, siano essi desktop come Mac OS X e Windows, oppure mobile, come Android e iOS.
Per prima cosa, dobbiamo assicurarci che il nostro client abbia il pacchetto pptp installato. Abbiamo già visto come installarlo, ma per completezza ripetiamo di seguito le due righe di apt che ce lo consentono:
sudo apt-get update
sudo apt-get install pptp-linux
A questo punto carichiamo il modulo ppp_mppe in questo modo:
modprobe ppp_mppe
Dobbiamo adesso creare un file di configurazione, che conterrà le informazioni necessarie per effettuare la connessione al nostro server. Questo file dovrà essere creato all'interno della directory /etc/ppp/peers/, e possiamo dargli un nome qualsiasi. Per esempio, immaginiamo di chiamare il nostro file vpnserver, e facciamo sì che il suo contenuto sia il seguente:
pty "pptp --nolaunchpppd"
name computer1
password password
remotename PPTP
require-mope-128
Quindi potremo connetterci con questo comando:
pppd call vpncomputer
Non ci resta che specificare la direttiva di routing corretta, ed il gioco è fatto. Assumendo che l'indirizzo IP del nostro server sia 172.20.0.0, procediamo come segue:
ip route add 172.20.0.0/20 dev ppp0
Possiamo ripetere questa operazione per ogni client Linux Debian-based che vogliamo connettere al nostro server VPN.