Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introduzione
OpenVPN e’ un programmino per creare un tunnel fra due macchine che si basa sull’utilizzo del cosiddetto
TUN/TAP Universal Driver.
1
OpenVPN-nano-HOWTO
Sia il client che il server devono creare una coppia di chiavi/certificati (i cert saranno .csr, che sta per
Certificate Signing Request, e che poi, firmati dalla CA, diventeranno .crt).
Voi dovrete fare solamente il lavoro della sezione CLIENT qui sotto, che pero’ richiama alcuni punti della
sezione SERVER, visto che sono identici (vedi la creazione delle chiavi e del .csr).
Nota: Ogni volta che creerete un .csr (dopo spiego come) dovrete fornire dei dati, tipicamente:
Server
1. Diventare CA
Generare la chiave della CA:
openssl genrsa -out /etc/ssl/private/ca.key 1024
Autofirmarsi il .csr, generando il certificato della CA (ca.crt) che ogni host che trusta la CA (quindi tutte le
vostre macchine) deve avere
openssl x509 -req -days 365 -in /etc/ssl/private/ca.csr \
-signkey /etc/ssl/private/ca.key \
-out /etc/ssl/ca.crt
2
OpenVPN-nano-HOWTO
(forse bisognerebbe anche far puntare la variabile certificate di openssl.cnf a questo crt appena creato. Ma il
file openssl.cnf non l’ho ancora digerito)
dove 10.0.0.1 e’ l’IP del mio peer, ma posso chiamarli con i nomi che voglio.
Per la cronaca sono passati circa una decina di minuti (ad occhio).
Nota: L’opzione --remote e’ solo una “acl” per dire da quali macchine accetto connessioni. Per il client
e’ mandatory, invece il server puo’ anche evitarla, e a quel punto accetterebbe connessioni da qualsiasi
host (che pero’ poi deve autenticare asimmetricamente).
3
OpenVPN-nano-HOWTO
Client
1. Creare chiave e certificato (seguire il punto 2. del server, solo i primi due comandi, quelli marcati con [*])
2. Inviare il Certificate signing request alla CA (il file .csr). Basta che me lo mandiate in mail: ouz@people.it
3. Come il server firma il vostro .csr? Non vi riguarda :-), comunque se siete curiosi e’ la stessa cosa vista in 2
sulla sezione la Sezione Server.
4. La CA vi rimandera’ il vostro .crt
5. La CA vi mandera’ anche il suo ca.crt che voi dovete trustare, leggetelo (cat ca.crt) e “fidatevi” di quello che
c’e’ scritto ;-)
6. Ora potete fare partire il tunnel:
openvpn --remote nomeserver.org \
--dev tun1 \
--ifconfig 10.0.0.2 10.0.0.1 --tls-client \
--ca ca.crt --cert client.crt --key client.key \
--reneg-sec 60 --verb 5
7. Ora, finalmente, potrete testare la connettivita’ dalle vostra VPN con un semplice ping 10.0.0.1.
3. Tunnel
4
OpenVPN-nano-HOWTO
➏ --cert client.crt \
➐ --key client.key \
➑ --reneg-sec 60 \
➒ --verb 5
➊ --remote e’ l’hostname dell’altro peer, se farete un peer con me dovrete mettere ouz.ath.cx
➋ --dev e’ il vostro device di tunnelling, se non state gia’ usando dei device usate tun0 (potete vederlo
proprio come vedete ethX, solo che non ci gira arp :-D )
➌ --ifconfig come avrete gia’ capito vuole due argomenti: l’indirizzo ip del vostro lato del tunnel e
l’indirizzo del peer remoto
➎ --ca e’ il certificato della CA
➏ --cert e’ il vostro certificato (il .crt)
➐ --key e’ la vostra chiave
➑ --reneg-sec e’ il numero ehm... non ho sottomano la manpage :-)
➒ --verb e’ la “verbosita’ dell’output”, da 1 a 9 in ordine crescente
Per le altre opzioni guardate le relative pagine di manuale, anche se quella di openssl non la consiglio ai deboli di
cuore :-)
Contatti
(Mancano)
Note
1. http://openvpn.sourceforge.net/donate.html :-)
2. Perche’ e’ male tcp-over-tcp: si veda http://sites.inka.de/sites/bigred/devel/tcp-tcp.html
3. http://openvpn.sourceforge.net/ , e, in particolare:
http://prdownloads.sourceforge.net/openvpn/openvpn-1.5.0.tar.gz (sorgenti)
http://prdownloads.sourceforge.net/openvpn/openvpn-1.5.0-install.exe (Win32)
4. Nei kernel 2.4: Network device support ---> abilitare Universal TUN/TAP device driver support
5
OpenVPN-nano-HOWTO
Nei kernel 2.6: Device Drivers ---> Networking support ---> abilitare sia Network device support che Universal
TUN/TAP device driver support
Per maggiori info su questo device consultate il file Documentation/networking/tuntap.txt nei sorgenti del
kernel.