OpenVPN in ubuntu
// March 30th, 2009 // Linux, Tutorials

Ciao a tutti…questa volta ho intenzione di scrivere nero su bianco (in realtà nero su azzurro) la procedura che ho eseguito per l’installazione e la configurazione di OpenVPN su Ubuntu…
Personalmente l’ho testata su Feisty Fawn ma sono convinto che la mia guida vada benissimo anche per le altre distro…almeno per quanto riguarda la configurazione lato server
Bene…per gli scettici siamo alle solite…perchè mai potrei avere bisogno di configurare una VPN utilizzando OpenVPN pittosto che le solite PPTP/L2TP/IPSEC etc??
- La politica di sicurezza imposta nella rete in cui sto lavorando non permette il traffico su porte non standard verso Internet, impedendomi quindi qualsiasi tentativo di collegamento al PC di casa o al PC della mia azienda quando mi trovo da un cliente
- Mi piace molto giocare on-line col mio RPG preferito ma la mia copia di valutazione del titolo non mi permette il collegamento se non all’interno della mia LAN (broadcast)
- Sono uno che sta al passo coi tempi e non vuole sentir parlare di standard di collegamento..se voglio fare una VPN voglio essere libero di utilizzare il protocollo(TCP/UDP) e le porte che voglio!
Prima di procedere con l’installazione del pacchetto fermiamoci a fare qualche considerazione in quando OpenVPN ci permette di avere a disposizione 2 differenti tipologie di collegamento:
La prima in BRIDGING la quale ha i seguenti vantaggi:
- Propaga il traffico trasmesso via broadcast attraverso la VPN (molto utile in caso di on-line gaming)
- Semplifica la configurazione in quanto non è necessario avere alcuna conoscenza sui principi di routing e rotte varie
- Lavora molto bene con protocolli diversi dal TCP/IP come per esempio IPX/SPX, AppleTalk etc.
e sostanzialmente nessuno svantaggio…
La seconda in ROUTING:
- Sostanzialmente permette un ottimizzazione del traffico attraverso internet
la quale presenta qualche svantaggio:
- Nel caso di una connessione LAN to LAN i client remoti devono necessariamente impostare l’utilizzo di un server WINS per riuscire ad effettuare un browse della rete
- Devono essere configurate tutte le rotte di comunicazione necessarie
- Non vengono instradate le comunicazioni broadcast
Detto questo possiamo finalmente partire con il tour…e tanto per cominciare procediamo con l’installazione del pacchetto openvpn sul nostro sistema:
$ sudo apt-get install openvpn
verranno quindi create le relative directory necessarie al programma ed in particolare la directory:
/usr/share/doc/openvpn/examples/easy-rsa
all’interno della quale sono presenti i file sui quali almeno inizialmente ci concentreremo maggiormente.
Per semplificarci la vita preoccupiamoci di creare (nel caso non fosse già presente) la directory /etc/openvpn copiandoci alcuni template estremamente utili al fine di ottimizzare il tempo a disposizione per la creazione della VPN sia lato server che lato client.
$ sudo mkdir -pv /etc/openvpn
$ cd /usr/share/doc/openvpn/examples/sample-config-files
$ sudo cp server.conf /etc/openvpn
$ sudo cp client.conf /etc/openvpn
ok, fatto questo procediamo alla creazione della Certification Authority che avrà il compito di firmare ed autenticare i certificati client erogati per permettere il collegamento con il nostro server VPN. Il primo passo è quello di andare a modificare alcune variabili presenti nel file ‘vars’ al fine di velocizzare il procedimento di creazione dei certificati, e nello specifico:
$ cd /usr/share/doc/openvpn/examples/easy-rsa $ sudo vi vars [...] # Increase this to 2048 if you are paranoid. This will slow # down TLS negotiation performance # as well as the one-time DH parms # generation process. # export KEY_SIZE=1024 # DEFAULT export KEY_SIZE=2048 # PREFERISCO# These are the default values for fields # which will be placed in the certificate. # Don't leave any of these fields blank. export KEY_COUNTRY=IT #<-- export KEY_PROVINCE=LA_MIA_PROVINCIA #<-- export KEY_CITY=LA_MIA_CITTA #<-- export KEY_ORG="alphaoneweb.com" #<-- export KEY_EMAIL=" Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo " #<-- [...]
quindi:
# . ./vars # ./clean-all # ./build-ca
che produrrà il seguente output:
Generating a 2048 bit RSA private key
............++++++
...........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [IT]:
State or Province Name (full name) [LA_MIA_PROVINCIA]:
Locality Name (eg, city) [LA_MIA_CITTA]:
Organization Name (eg, company) [alphaoneweb.com]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [ Indirizzo e-mail]:
a questo punto procediamo con la generazione di un certificato per il server:
./build-key-server server
come nel passo precedente, alcuni parametri possono essere lasciati come di default a parte il ‘Common Name’ dove inseriremo un’identificativo del nostro server che per semplicità sarà ‘server’
bene…ora prepariamo la configurazione per il lato SERVER della nostra VPN editando il file /etc/openvpn/server.conf come il seguente:
OpenVPN Server.conf (412) OpenVPN Client.conf (290)
A questo punto sarà necessario avviare OpenVPN con il seguente comando:
sudo /etc/init.d/openvpn start
Ok…fatto questo passiamo alla configurazione del client….generandone prima un certificato:
# ./build-key client1
come nei passi precedenti, alcuni parametri possono essere lasciati come di default a parte il ‘Common Name’ dove inseriremo un’identificativo del nostro client che per semplicità sarà ‘client1′
Ormai siamo giunti al termine…ci manca solo (visto il file di configuazione del nostro server) di generare una chiave Diffie Hellman che per la cronaca si tratta di un protocollo che permette a due parti di scambiare una chiave attraverso un canale non sicuro senza alcun bisogno che vi sia stata prima una qualsiasi comunicazione tra questi.
Per maggiori info visitate: http://www.rsa.com/rsalabs/node.asp?id=2248
# ./build-dh
Ci vorrà un po’ di tempo ma produrrà il seguente output:
Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time .................+........................................... ...................+.............+.................+......... ......................................
Ok…abbiamo finalmente terminato. Non ci resta che testare il tutto!
Buon divertimento
References:
FAQ Rilevate su Internet:
- Come client di collegamento al mio server linux utilizzo Windows Vista e non capisco come mai ma la VPN sembra negoziare correttamente…solo non riesco a comunicare con il mio server e viceversa…?
L’attuale versione stabile di OpenVPN (2.0.9) ha dei problemi con Windows Vista…vi consiglio vivamente di utilizzare la beta4 (o successive) sempre liberamente scaricabili dal sito ufficiale.
- Il mio server mette in comunicazione client multipli…ma non riesco a comunicare con nessuno di essi…cosa sbaglio?
E’ importante assicurasi che sul file di configurazione del server vi sia il parametro ‘client-to-client’ abilitato (decommentato) ed inoltre che il server sia configurato per fare IP Forwarding.





è ufficiale, configurare una OpenVPN su ubuntu tramite il nuovo network manager è troppo complesso.
Il firewall della mia azienda mi genera due files (host-to-net.ovpn e server.crt)
ho a mala pena capito (almeno penso) che il primo sia l’equivalente di server.conf, ma del secondo non so cosa farne…
Puoi darmi qualche dritta? grazie tante
se non ho capito male invece io direi che il primo è il file di configurazione client che devi utilizzare con openvpn da casa ed il secondo è il certificato che molto probabilmente viene richiamato dallo stesso file di configurazione..