Installare un server VPN con OpenVPN su Ubuntu Server

Qualche giorno fa, a lavoro ho configurato il mio primo server vpn. Avevamo la necessità di accedere alla rete dell'ufficio anche dall'esterno. Insomma ci avrebbe fatto comodo essere "virtualmente" in ufficio quando fisicamente non è possibile. Avevo ricevuto consigli in merito a queste necessità, e mi era stato detto che come OpenVPN non ce n'erano molti. Ovviamente Open VPN è un software gratuito e multipiattaforma, aveva quindi tutti i prerequisiti necessari per piacermi.

Diciamo che prima di intraprendere il lavoro ho perso qualche minuto a cercare la documentazione necessaria, che mi avrebbe accompagnato durante il cammino.

Inizialmente avevo preso un pc davvero modesto (con processore AMD Duron, qualcosa di simile al Sempron ma un po' più vecchio ;-) ) con 40 ghiga di disco e 512 Mb di ram SO DIMM, credendo di usarlo come test per la macchina vera. Ovviamente ho installato Ubuntu server come sistema operativo, scaricando l'ultima versione (10.04) siccome è un LTS. Nell'installazione del S.O. non c'è stato alcun inghippo, oramai queste ultime versioni sono una pacchia, filano dritte dritte in pochi minuti verso il traguardo ;-).

Una volta installato Ubuntu ho seguito il wiki in inglese per la corretta installazione di open vpn. Come prima passo, la guida consiglia di configurare un bridge sulla scheda ethernet per consentire al segmento LAN di essere connesso al segmento WAN, consentendo (se si vuole) di filtrare i pacchetti che li attraversano con un firewall. Per fare ciò basta installare un pacchetto chiamato bridge-utils con il comando:

Fatto ciò si deve editare il file di configurazione della rete con il comando:

modificarlo come segue:

Così facendo si assegna il bridge all'interfaccia eth0 con l'ip 192.168.0.10.

Adesso potete riavviare il servizio networking:

(per evitare di dover digitare sempre il comando sudo davanti ad ogni comando vi consiglio di digitare sudo su una volta per tutte)

Ora possiamo passare all'installazione vera e propria di OpenVPN:

Finita l'installazione del pacchetto creiamo una cartella che conterrà i programmi per generare le chiavi e le chiavi stesse:

Dopodichè editiamo il file vars in modo da modificare le seguenti linee con le informazioni che ci riguardano:

Salvate il file e chiudetelo. Accertandovi di essere loggati come utente di root, iniziate la procedura di generazione delle chiavi:

Ora che abbiamo generato le chiavi e i certificati per il server procediamo a generare quelli per il client (basterà ripetere la prossima procedura modificando l'identificativo del client per generare altre chiavi/certificati):

Copiate ora sul client i file:

  • /etc/openvpn/ca.crt
  • /etc/openvpn/easy-rsa/keys/client1.crt
  • /etc/openvpn/easy-rsa/keys/client1.key
  • /etc/openvpn/ta.key

Ora non ci resta che editare i file di configurazione per server e client (partiamo da una configurazione di esempio):

Accertatevi di correggere le seguenti linee con i vostri dati:

La voce local sarà quella corrispondente all'indirizzo del vostro bridge, come la prima voce accanto a server-bridge. La seconda voce di server-bridge sarà la subnet mask mentre la terza e la quarta sarà il range di ip che openvpn assegnerà ai client che si connetteranno alla rete.
Il comando push "route... servirà per creare una rotta sugli indirizzi della LAN.
Fatto ciò, creiamo i due script per l'avvio e la chiusura dell'interfaccia virtuale (la tap0 che vedete nel file di configurazione). Creiamo il file up.sh come segue:

e il file down.sh così:

Rendiamoli eseguibili:

Ora che il server è correttamente configurato, possiamo dare una riavviata al servizion openvpn:

Adesso passiamo al file di configurazione del client:

Il quale dovrà contenere:

Ora copiate nella cartella di configurazione del client il file appena editato (chiamatelo client1.conf o client1.ovpn). Ovviamente si presuppone che i file delle chiavi e dei certificati siano nella stessa cartella di quest'ultimo file (sul client). Riavviate anche qui openvpn e il gioco è quasi fatto. Dico quasi perchè per potervi connettere al server dall'esterno dovrete dire al vostro router di aprirvi la porta 1194 e reindirizzare il traffico proveniente dall'esterno verso l'ip 192.168.0.10 (quello del bridge).

Ora siete davvero pronti per collegarvi dall'esterno alla vostra LAN (così com'è stato configurato openvpn non è possibile accedere da dentro la LAN alla vpn appena creata).

Spero di non aver dimenticato niente! ;-)

Che ve ne pare?