Configurazione di un client OpenVPN su sistemi Windows, Linux, Mac OS X e Windows Mobile per Pocket PC
Lo scopo di questo breve documento è di guidare l'utente nella configurazione del proprio client per accedere tramite OpenVPN alla propria LAN. Si prenderanno in considerazione le principali GUI di OpenVPN per Microsoft Windows, Linux, Mac OS X, Windows Mobile per Pocket PC e alla fine l'uso di OpenVPN da linea di comando senza interfaccia grafica. Quest'ultima possibilità risulta utile poiché il comando openvpn, richiamabile da prompt (sia esso una shell Unix che il prompt dei comandi Windows), accetta i medesimi parametri e si comporta nella stessa maniera indipendentemente dalla piattaforma. Peraltro, il comando openvpn può essere utilizzato negli script per automatizzare l'avvio automatico delle VPN.
L'obiettivo che ci prefiggiamo è di accedere ad un server VPN realizzato con Zeroshell e configurato con i parametri di default. Per realizzare tale server sarà pertanto sufficiente, una volta messo in rete un server Zeroshell, semplicemente abilitare il servizio OpenVPN attivando il flagEnabled nella sezione [VPN]->[OpenVPN] dell'interfaccia web di Zeroshell. Per default il servizio OpenVPN del nostro server VPN ascolterà sulla porta 1194/TCP con cifratura TLS/SSL e compressione LZO abilitate. L'autenticazione degli utenti avverrà con username e password, ma varieremo anche la configurazione per testare l'autenticazione con certificati digitali X.509.Per maggiori dettagli sulla configurazione di un server OpenVPN, che non rientrano negli scopi di questo documento, è possibile consultare la guida "Un server OpenVPN con Zeroshell".
Di seguito sono riportate le sezioni in cui è suddiviso il resto di questa guida. Si tenga presente che la prima di queste, cioè quella relativa al file di configurazione di OpenVPN è comune alle altre sezioni e non dipende dalla GUI o Sistema Operativo che si usa.
- Il file di configurazione di OpenVPN
- OpenVPN GUI per Windows
- Tunnelblick per Mac OS X
- KVpnc per Linux
- OpenVPN per Windows Mobile su Pocket PC
- La linea di comando di OpenVPN
- Compilazione e installazione di OpenVPN
Il file di configurazione di OpenVPN
Grazie ai numerosi parametri che possono essere inseriti nel file di configurazione o specificati da linea di comando, OpenVPN ha una configurabilità veramente impressionante. Tuttavia, per potersi connettere ad un server OpenVPN realizzato con Zeroshell è sufficiente conoscerne un numero limitato di essi. Per semplificare ulteriormente il procedimento è possibile scaricare un file di configurazione preimpostato cliccando sul link File di configurazione OpenVPN Client.Per ogni parametro che potrebbe interessare l'utente, il file di configurazione riporta un commento. Tuttavia, sono soltanto due i parametri che è sicuramente necessario cambiare per potersi connettere ad un server OpenVPN realizzato con Zeroshell:
- remote zeroshell.example.com 1194
È necessario sostituire zeroshell.example.com, con l'hostname o l'indirizzo IP del server OpenVPN. La configurazione di default di Zeroshell prevede che il servizio OpenVPN ascolti sulla porta 1194/TCP e pertanto il secondo parametro (1194) può rimanere invariato. - ca CA.pem
Il parametro ca indica un file in formato PEM contenente il certificato X.509 della Certification Authority che ha firmato il certificato server del servizio OpenVPN. Per ottenere tale certificato, è sufficiente, cliccare sul link CA nella pagina di login di Zeroshell (vedi figura). Se si salva il certificato nella stessa directory del file di configurazione e lo si chiama CA.pem, si può lasciare questo parametro invariato. Altrimenti è necessario indicarne il percorso assoluto.
Si tenga presente, che il certificato della Certification Authority è necessario anche se non si utilizza l'autenticazione X.509 dal client e quindi si opta per l'autenticazione "Only Password" (Default in Zeroshell).
OpenVPN GUI per Windows
Per installare OpenVPN GUI per Windows su di un sistema Microsoft Windows XP a 32 o 64 bit, procedere nel seguente modo:- Effettuare il download del pacchetto di installazione dall'URL http://openvpn.se/download.html. Scegliere la versione contenente oltre alla GUI anche il software OpenVPN già incluso;
- Avviare l'installazione. Scegliere le opzioni di default e confermare di voler proseguire nell'installazione del TAP-Win32 Adapter V8 (si tratta dell'interfaccia Ethernet Virtuale utilizzata da OpenVPN).
Terminata la procedura di installazione, nella TrayBar compare un'icona con due terminali rossi ed un globo terrestre. Tali terminali diventano gialli quando si sta tentando una connessione e finalmente verdi quando la connessione VPN con la LAN remota è stabilita; - Dal Menu di Avvio di Windows, cliccare su [Start]->[Programmi]->[OpenVPN]->[OpenVPN configuration file directory]. Si aprirà la cartella:
C:\Programmi\OpenVPN\config
in cui bisogna copiarci dentro i file zeroshell.ovpn contenente la configurazione e CA.pem contenente il certificato X.509 della Certification Authority. Fare riferimento alla sezione precedente se si hanno dubbi su come ottenere i due file;
- Editare il file zeroshell.ovpn e sostituire zeroshell.example.com con l'hostname o l'indirizzo IP del server OpenVPN;
- A questo punto, effettuando un doppio click sull'icona di OpenVPN nella Tray Bar, inizia la procedura di connessione. Comparirà una finestra di dialogo in cui inserire Username e Password (vedi Nota *). Se l'autenticazione avviene con successo la connessione VPN sarà stabilita e i due terminali dell'icona di OpenVPN diventano verdi.
Se invece la connessione avviene, quindi i 2 terminali dell'icona sono verdi, ma comunque non si raggiunge la LAN remota o Internet, può tornare utile il comando ipconfig /all da digitare al Prompt dei Comandi di Windows. Ecco un esempio della parte di output che interessa:
Scheda Ethernet Connessione alla rete locale (LAN) 7: Suffisso DNS specifico per connessione: Descrizione . . . . . . . . . . . . . : TAP-Win32 Adapter V8 Indirizzo fisico. . . . . . . . . . . : 00-FF-AD-63-83-3D DHCP abilitato. . . . . . . . . . . . : Sì Configurazione automatica abilitata . : Sì Indirizzo IP. . . . . . . . . . . . . : 192.168.250.51 Subnet Mask . . . . . . . . . . . . . : 255.255.255.0 Gateway predefinito . . . . . . . . . : 192.168.250.254 Server DHCP . . . . . . . . . . . . . : 192.168.0.0 Server DNS . . . . . . . . . . . . . : 192.168.250.254 Lease ottenuto. . . . . . . . . . . . : giovedì 20 settembre 2007 19.51.37 Scadenza lease . . . . . . . . . . . .: venerdì 19 settembre 2008 19.51.37
Bisogna controllare, affinché la VPN si comporti correttamente, che il routing sia effettuato nel modo giusto e quindi l'indirizzo IP e il Default Gateway appartengano alle subnet della LAN remota a cui si è connessi in Virtual Private Network. Come ulteriore garanzia che il traffico sia realmente instradato nella VPN, digitare il comando: tracert /d Tunnelblick per Mac OS X
Un'interfaccia grafica per OpenVPN su Mac OS X è Tunnelblick. Per installare tale GUI procedere nel seguente modo:- Effettuare il download del pacchetto di installazione dall'URL http://www.tunnelblick.net. Si tratta di un file compresso .zip che contiene al suo interno oltre alla GUI anche OpenVPN;
- Effettuare un doppio click sul file zip (supponiamo che si trovi sul Desktop) in modo da estrarne il contenuto. Comparirà sul Desktop l'eseguibile di nome Tunnelblick;
- Avviare l'eseguibile Tunnelblick con un doppio click. Premere [Continue] nella dialog box che appare avvisandovi che potete mettere i vostri file di configurazione in Library/openvpn/. Chiudete la finestra che si apre per permettervi di editare il file di configurazione di esempio openvpn.conf;
- La GUI per OpenVPN Tunnelblick è ora installata e sulla barra superiore, vicino l'orologio, compare la sua icona. Procediamo ora con la configurazione necessaria per accedere ad un server OpenVPN realizzato con Zeroshell;
- Seguire il procedimento descritto nella sezione Il file di configurazione di OpenVPN per ottenere il file di configurazione zeroshell.ovpn e il file CA.pem contenente il certificato X.509 della Certification Authority. Aprire il Finder e selezionare la directory Library/openvpn (quella dell'utente e non quella di sistema). Cancellare il file di configurazione di esempio openvpn.conf e trascinate all'interno della directory i due file ottenuti prima;
- Chiudere Tunnelblick selezionando la voce [Quit] dal menu contestuale che appare quando si clicca sull'icona. Riavviarlo poi con un doppio click sul file eseguibile Tunnelblick. Ora, cliccando sull'icona di Tunnelblick, compare la voce [Connect 'Zeroshell'] che permetterà la connessione al VPN Box realizzato con Zeroshell;
- Selezionare la voce [Details...] con cui si apre una finestra di dialogo da cui premere [Edit Configuration]. Sostituite zeroshell.example.comcon l'hostname o l'indirizzo IP del server VPN. Salvate il file di configurazione.
- Provare la connessione VPN cliccando sulla voce [Connect 'Zeroshell']. Comparirà una finestra di dialogo in cui inserire username e password (vedi Nota *).
Se si vuole verificare che l'indirizzo IP che si sta utilizzando con la VPN, realmente appartenga alla LAN remota cui si è connessi, basta aprire un terminale Mac OS X e al prompt della shell digitare il comando:
ifconfig tap0
il cui output è simile al seguente:
tap0: flags=8843 mtu 1500 inet 192.168.250.1 netmask 0xffffff00 broadcast 192.168.250.255 ether b6:da:d9:91:22:ff open (pid 368)
La voce inet indica che l'indirizzo IP è 192.168.250.1 (Zeroshell per default, se non configurato altrimenti assegna ai client VPN remoti indirizzi appartenenti alla subnet 192.168.250.0/24 con Gateway Predefinito 192.168.250.254). Per avere la certezza assoluta che il traffico sia realmente instradato nel tunnel crittografato dalla VPN utilizzare il comando traceroute -n KVpnc per Linux
KVpnc è un frontend Linux che gestisce la maggior parte dei client VPN disponibili: Cisco VPN, IPSec, PPTP, OpenVPN, L2TP. È molto flessibile e completo, tanto che ha anche il supporto per le Smart Card. Ovviamente, in questo contesto, documenteremo solo la sua installazione e configurazione relativa ad OpenVPN. Esistono pacchetti precompilati per buona parte delle distribuzioni Linux come per esempio gli RPM per Suse e Fedora. Per quel che riguarda Ubuntu e Kubuntu (o altre derivate da Debian), si può installare KVpnc con OpenVPN semplicemente con i comandi:sudo apt-get install openvpn
sudo apt-get install kvpnc
Si noti che a differenza delle altre GUI, il pacchetto KVpnc non include anche OpenVPN che invece va installato separatamente. Nel seguito, allo scopo di mantenere la trattazione il più indipendente possibile dalla particolare distribuzione Linux, compileremo direttamente i sorgenti di KVpnc, ma qualora esista il pacchetto binario per la propria distro, si invita a farne uso.
Poiché KVpnc fa uso delle librerie QT, la presenza di tali librerie (e dei relativi file include) è un prerequisito per la compilazione. Nei passaggi successivi, daremo per scontato che OpenVPN sia già installato. Se così non fosse si faccia riferimento al paragrafo Compilazione e installazione di OpenVPN.
Procediamo ora con l'installazione e la configurazione di KVpnc:
- Effettuare il download del codice sorgente dal sito http://home.gna.org/kvpnc/. Nel seguito faremo riferimento alla versione 0.8.9 di KVpnc, ma si consiglia comunque di scaricare l'ultima disponibile;
- Estrarre il contenuto del pacchetto con il comando:
tar xvfj kvpnc-0.8.9.tar.bz2 - Compilare ed installare KVpnc con la sequenza di comandi:
cd kvpnc-0.8.9
./configure
make
sudo make install
In alcune distribuzioni, è necessario specificare esplicitamente dove si trovano gli include file e le librerie QT. In tal caso aggiungere i parametri --with-qt-includes=/usr/lib64/qt-3.3/include/ --with-qt-libraries=/usr/lib64/qt-3.3/lib/ al comando ./configure, sostituendo/usr/lib64/qt-3.3/ con il path opportuno per la vostra distribuzione Linux; - Creare la directory /etc/openvpn/ con il comando sudo mkdir /etc/openvpn e copiare al suo interno i file zeroshell.ovpn e CA.pem. Per ottenere tali file fare riferimento alla sezione Il file di configurazione di OpenVPN;
- Per utilizzare KVpnc con utenti non privilegiati è necessario utilizzare sudo. Per far ciò, dopo avere acquisito privilegi di root, aggiungere la seguente linea in coda al file /etc/sudoers:
ALL ALL=NOPASSWD:/usr/bin/kvpnc
Quando si deve lanciare il comando kvpnc si utilizzi la sintassi:
sudo /usr/bin/kvpnc
In questa maniera kvpnc avrà i previlegi di root che gli servono a creare l'interfaccia Ethernet Virtuale tap0 e ad aggiungere le route statiche che instradano il traffico nella VPN; - Importare il profilo per connettersi ad un server VPN Zeroshell con il seguente comando:
kvpnc --openvpnimport=/etc/openvpn/zeroshell.ovpn
Dal Profile Manager che compare, eseguire le seguente configurazioni:- Dalla schermata General configurare la voce VPN gateway con l'indirizzo IP o l'hostname del server VPN Zeroshell;
- Dalla schermata OpenVPN assicurarsi che la voce Authentication method sia impostata a SHA1 invece che a MD5;
- Eseguire quindi il comando sudo /usr/bin/kvpnc e premere [Connect] per connettersi in VPN con Zeroshell. A questo punto vengono richiesti Username e Password (vedi Nota *) e se l'autenticazione va a buon fine la connessione VPN viene stabilita con la rete remota.
/sbin/ifconfig tap0
il cui output è simile al seguente:
tap0 Link encap:Ethernet HWaddr 26:8F:1E:31:44:DD inet addr:192.168.250.50 Bcast:192.168.250.255 Mask:255.255.255.0 inet6 addr: fe80::248f:1eff:fe31:44dd/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19 errors:0 dropped:0 overruns:0 frame:0 TX packets:25 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1384 (1.3 KiB) TX bytes:1668 (1.6 KiB)
La voce inet indica che l'indirizzo IP è 192.168.250.50 (Zeroshell per default, se non configurato altrimenti assegna ai client VPN remoti indirizzi appartenenti alla subnet 192.168.250.0/24 con Gateway Predefinito 192.168.250.254). Per avere la certezza assoluta che il traffico sia realmente instradato nel tunnel crittografato dalla VPN utilizzare il comando traceroute -n OpenVPN per Pocket PC
OpenVPN per Pocket PC è un software ancora in Alpha release, tuttavia dopo numerose prove si è dimostrato sufficientemente stabile ed affidabile. I test sono stati effettuati su Microsoft Windows Mobile v5.0 installato su di un Palmare i-Mate JASJAR (equivalente ad un HTC Universal Qtek 9000), comunque non dovrebbero esserci problemi di funzionamento neanche su WM 2003 e su altri modelli di PDA. Prima di vedere la procedura di installazione e configurazione, si tenga presente che, dovendo modificare manualmente il file di configurazione di OpenVPN, conviene connettersi al proprio PDA mediante ActiveSync ed effettuare tali modifiche con un editor di un PC. In alternativa, se si vuole effettuare le modifiche direttamente sul Palmare, conviene installare il Total Commander CE che è un File Manager Freeware per Pocket PC, disponibile all'URL http://www.ghisler.com/pocketpc.htm. Questo Filemanager integra, tra l'altro, un Editor utile ai nostri scopi.Di seguito sono elencati i passi necessari ad installare OpenVPN per Pocket PC:
- Effettuare il download di OpenVPN per Pocket PC dal sito http://ovpnppc.ziggurat29.com/ovpnppc-main.htm. Il pacchetto può essere prelevato in due formati: in .exe da utilizzare per l'installazione da Personal Computer con il PDA connesso tramite ActiveSync; in formato.cab direttamente installabile dal Palmare stesso. Si scelga il formato che si ritiene opportuno e lo si installi;
- Supposto di aver installato OpenVPN per Pocket PC nella cartella \Programmi\OpenVPN della memoria del dispositivo, copiare i filezeroshell.ovpn e CA.pem nella cartella \Programmi\OpenVPN\config. Per ottenere tali file fare riferimento alla sezione Il file di configurazione di OpenVPN;
- Editare il file di configurazione \Programmi\OpenVPN\config\zeroshell.ovpn per permettere la connessione ad un server OpenVPN realizzato con Zeroshell:
- Sostituire zeroshell.example.com con l'indirizzo IP o l'hostname del server OpenVPN;
- Sostituire CA.pem con il percorso completo del file contenente il certificato in formato PEM della Certification Authority. Nel nostro caso bisogna specificare:
ca "\\Programmi\\OpenVPN\\config\\CA.pem"
Si badi bene ai doppi apici e ai doppi backslash che sono richiesti dalla sintassi;
- Cliccare sull'icona di OpenVPN e dalla voce di menu Avvio da Config. scegliere zeroshell. A questo punto verrano richiesti Username e Password (vedi Nota *). Se l'autenticazione va a buon fine la connessione VPN viene stabilita e i 2 terminali dell'icona di OpenVPN diventano verdi;
La linea di comando di OpenVPN
Qualora per il sistema che si utilizza non sia disponibile una GUI per OpenVPN o comunque si vuole automatizzare la partenza della connessione VPN mediante gli script di startup, è necessario utilizzare direttamente il comando openvpn. Basta digitare man openvpn per accorgersi che sono disponibili una miriade di parametri che possono influire sul comportamento della VPN. Tali parametri possono essere specificati direttamente sulla linea di comando preceduti da un doppio trattino (--), oppure inseriti in un file di configurazione. Tranne pochi casi, conviene sempre utilizzare il file di configurazione poiché è di più facile lettura rispetto ad una linea di comando appesantita da numerosi parametri. Non è negli scopi di questo documento trattare i parametri di OpenVPN, anche perché, le pagine di manuale che si ottengono con il comando man sono ben dettagliate. Vediamo soltanto i passi per connetterci ad un server OpenVPN realizzato con Zeroshell:- Collocare in una stessa directory (supponiamo /etc/openvpn/) il file di configurazione zeroshell.ovpn e il file CA.pem contenente il certificato in formato PEM della Certification Authority. Per i dettagli su come ottenere tali file, consultare la sezione Il file di configurazione di OpenVPN;
- Editare il file di configurazione zeroshell.ovpn sostituendo zeroshell.example.com con l'indirizzo IP o l'hostname del server VPN;
- Nella stessa directory in cui è collocato il file di configurazione, eseguire il comando:
openvpn --config zeroshell.ovpn
Verrano richiesti Username e Password e se l'autenticazione va a buon fine verrà visualizzata la linea di log:
Initialization Sequence Completed
che indica che la connessione VPN è stata stabilita.
Compilazione e installazione di OpenVPN
Per la maggior parte dei sistemi per cui OpenVPN è supportato, esistono i pacchetti già compilati. Tuttavia, soprattutto per Linux, vista la miriade di Distribuzioni che esistono, ci sono dei casi in cui è necessaria la compilazione del codice sorgente di OpenVPN. Vediamo i passi necessari per far ciò:- Effettuare il download dal sito http://openvpn.net del pacchetto contenente i codici sorgenti relativi all'ultima release stabile disponibile;
- Estrarre il contenuto del pacchetto dei sorgenti utilizzando il comando tar nella seguente maniera:
tar xvfz openvpn-2.0.9.tar.gz - Entrare nella directory directory openvpn-2.0.9 tramite il comando
cd openvpn-2.0.9 - Eseguire il check del sistema per la produzione dei Makefile utilizzando il comando:
./configure --prefix=/usr
Se il comando ./configure si lamenta per l'assenza del software di compressione lzo, procedere alla sua installazione come segue:- Effettuare il download del codice sorgente di lzo dal sito http://www.oberhumer.com/ ed estrarne il contenuto con
tar xvfz lzo-2.02.tar.gz - Entrare nella directory lzo-2.02 ed installare il software di compressione lzo grazie ai seguenti comandi:
- ./configure
- make
- make install (questo comando necessita di privilegi di amministratore)
./configure --prefix=/usr
- Effettuare il download del codice sorgente di lzo dal sito http://www.oberhumer.com/ ed estrarne il contenuto con
- Compilare il codice sorgente in base ai Makefile appena generati utilizzando il comando:
make - Installare il programma binario openvpn e le sue pagine di manuale mediante il comando:
make install
Poiché l'installazione avviene nella directory di sistema /usr, quest'ultimo comando deve essere eseguito con privilegi di Amministratore.
Commenti
io ho il problema di connettere 6 pc tutti winxp.
uno con winxp che fa da server e tutti gli altri client che si connettono cosa devo fare?
uso dundns per gli ipdinamici
ciao