Italiano English
Modifica History Actions

Differenze per "OpenVPN"

Differenze tra le versioni 1 e 10 (in 9 versioni)
Versione 1 del 2006-01-07 15:01:10
Dimensione: 5003
Commento:
Versione 10 del 2007-06-12 21:30:59
Dimensione: 6900
Autore: ZioPRoTo
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 1: Linea 1:
                    QUESTO DOCUMENTO è ANCORA WORK IN PROGRESS
        BUG COMMENTI INSULTI E ERRORI DI BATTITURA A onorevole82@tiscali.it
       HOWTO – OpenVPN creare un link punto punto tra 2 reti e scambiarsi le rotte con RIP
                                              3 novembre 2005
                                        last update novembre 2005
                                              versione 1.0pre1
                                                 ZioProto
= OpenVPN (anche con RIP) =
Linea 9: Linea 3:
Questo documento intende dare una rapida spiegazione a chi gia conosce la teoria dietro le VPN ed
il protocollo
RIP per implementare praticamente con 2 servers linux un tunnel che attraversa una
rete pubblica e collega 2 reti private.[[BR]]
In questo howto vedremo come collegare 2 reti creando un link punto punto in vpn tra le due reti
usando l’implementazione openvpn, e come successivamente scambiare in modo dinamico le rotte
delle due reti usando il protocollo RIP.[[BR]]
In questo HOWTO sono stati utilizzati 2 servers ai capi del tunnel VPN con sistema operativo
Linux UBUNTU (Debian).[[BR]]
Per prima cosa installiamo OpenVPN[[BR]]
[[TableOfContents]]

== Open
VPN shared key: link punto punto tra 2 reti e scambiarsi le rotte con RIP  ==

Questo documento intende dare una rapida spiegazione a chi gia conosce la teoria dietro le VPN ed
il protocollo RIP
per implementare praticamente con 2 servers linux un tunnel che attraversa una 
rete pubblica e collega 2 reti private. 
In questo howto vedremo come collegare 2 reti creando un link punto punto in vpn tra le due reti 
usando l’implementazione openvpn, e come successivamente scambiare in modo dinamico le rotte 
delle due reti usando il protocollo RIP. 
In questo HOWTO sono stati utilizzati 2 servers ai capi del tunnel VPN con sistema operativo 
Linux UBUNTU (Debian).   
Per prima cosa installiamo OpenVPN  
Linea 19: Linea 19:
''apt-get install openvpn''[[BR]]
(Per altre distribuzioni linux cercare la documentazione relativa)[[BR]]
{{{
apt-get install openvpn
}}}

(Per altre distribuzioni Gnu/Linux cercare la documentazione relativa)[[BR]]
Linea 22: Linea 24:
Dopo aver installato il software, dobbiamo creare prima di tutto la chiave privata per
l' izializzazione del tunnel.[[BR]]
Dopo aver installato il software, dobbiamo creare prima di tutto la chiave privata per l' inizializzazione del tunnel.[[BR]]
Linea 25: Linea 26:
''openvpn --genkey --secret key.txt''[[BR]] {{{
openvpn --genkey --secret key.txt
}}}
Linea 27: Linea 30:
Una volta creata la chiave segreta e posizionata dentro /etc/openvpn/, (occhio la dobbiamo
mettere in entrambe le macchine la chiave privata) dobbiamo creare il file di configurazione per il
server (/etc/openvpn/nomefantasia.conf).[[BR]]
Una volta creata la chiave segreta e posizionata dentro {{{ /etc/openvpn/ }}}, (occhio la dobbiamo mettere in entrambe le macchine la chiave privata) dobbiamo creare il file di configurazione per il server ( {{{ /etc/openvpn/nomefantasia.conf }}} ).[[BR]]
Linea 31: Linea 32:
''dev tap''[[BR]]
''secret /etc/openvpn/key.txt''[[BR]]
''ping 10''[[BR]]
''verb 1''[[BR]]
''mute 10''[[BR]]
''ifconfig 10.0.1.1 255.255.255.252''[[BR]]
''lport 5002''[[BR]]
{{{
dev tap
secret /etc/openvpn/key.txt
ping 10
verb 1
mute 10
ifconfig 10.0.1.1 255.255.255.252
lport 5002
}}}
Linea 39: Linea 42:
La configurazione del gateway VPN (client) è identica a quella vista precedentemente. Ovviamente
dobbiamo copiare la chiave segreta e posizionarla nella directory /etc/openvpn/ e creare il file
di configurazione (/etc/openvpn/nomefantasia2.conf), che deve essere di questo tipo:[[BR]]
La configurazione del gateway VPN (client) è identica a quella vista precedentemente. Ovviamente dobbiamo copiare la chiave segreta e posizionarla nella directory {{{ /etc/openvpn/ }}} e creare il file di configurazione ( {{{ /etc/openvpn/nomefantasia2.conf }}}), che deve essere di questo tipo:[[BR]]
Linea 43: Linea 44:
''remote ip.pubblico.del.server''[[BR]]
''rport 5002''[[BR]]
''dev tap''[[BR]]
''ifconfig 10.0.1.2 255.255.255.252''[[BR]]
''secret /etc/openvpn/key.txt''[[BR]]
''ping 10''[[BR]]
''verb 1''[[BR]]
''mute 10''[[BR]]
{{{
remote ip.pubblico.del.server
rport 5002
dev tap
ifconfig 10.0.1.2 255.255.255.252
secret /etc/openvpn/key.txt
ping 10
verb 1
mute 10
}}}
Linea 53: Linea 56:
Ovviamente nel caso che solo una delle 2 macchine dispone di IP pubblico sarà quella che deve fare il server. La macchina server deve ascoltare sulla porta 5002 UDP, od un'altra porta udp che basta cambiare nei files di configurazione
che sono stati mostrati prima.[[BR]]
A questo punto il tunnel gia funziona, ed ubuntu vi fornisce gia anche lo script[[BR]]
''/etc/init.d/openvpn ''[[BR]]
per farlo partire, fermarlo, o riavviarlo.[[BR]]
Ovviamente nel caso che solo una delle 2 macchine dispone di IP pubblico sarà quella che deve fare il server. La macchina
server deve ascoltare sulla porta 5002 UDP, od un'altra porta udp che basta cambiare nei files di configurazione che sono
stati mostrati prima. A questo punto il tunnel gia funziona, ed ubuntu vi fornisce gia anche lo script[[BR]]
{{{ /etc/init.d/openvpn }}} per farlo partire, fermarlo, o riavviarlo
.[[BR]]
Linea 59: Linea 61:
Ora esiste il tunnel, ma per far si che sia utile ai computers in rete dobbiamo far si che si conoscano
le rotte. Ammettiamo che i nostri endpoints del tunnel siano anche i GW delle 2 reti che abbiamo
collegato (se non è cosi dovete attivare RIP anche sui GW, molti router modem ADSL hanno questa
possibilità!)[[BR]]
Ora esiste il tunnel, ma per far si che sia utile ai computers in rete dobbiamo far si che si conoscano le rotte.
Ammettiamo che i nostri endpoints del tunnel siano anche i GW delle 2 reti che abbiamo collegato (se non è cosi dovete
attivare RIP anche sui GW, molti router modem ADSL hanno questa possibilità!)[[BR]]
Linea 66: Linea 67:
''apt-get install quagga''[[BR]] {{{
apt-get install quagga
}}}
Linea 69: Linea 72:
Adesso andiamo in /etc/quagga che è l’unica directory dove dobbiamo lavorare per far
funzionare tutto. Editiamo il file daemons e passiamo da “no” a “yes” i demoni zebra e ripd
Poi dobbiamo creare in /etc/quagga i files zebra.conf e ripd.conf e dare i permessi proprio
come scritto nei commenti all’interno del file daemons, ecco la sequenza di cose da fare:[[BR]]
Adesso andiamo in {{{ /etc/quagga }}}}che è l’unica directory dove dobbiamo lavorare per far funzionare tutto. Editiamo il file
daemons e passiamo da “no” a “yes” i demoni zebra e ripd Poi dobbiamo creare in {{{ /etc/quagga }}} i files zebra.conf e ripd.conf
e dare i permessi proprio come scritto nei commenti all’interno del file daemons, ecco la sequenza di cose da fare:[[BR]]
Linea 74: Linea 76:
''touch     zebra.conf''[[BR]]
''touch     ripd.conf''[[BR]]
''chown     quagga zebra.conf''[[BR]]
''chown     quagga ripd.conf''[[BR]]
''chgrp     quagga vty zebra.conf''[[BR]]
''chgrp     quagga vty ripd.conf''[[BR]]
''chmod     660 zebra.conf''[[BR]]
''chmod     660 zebra.conf''[[BR]]
{{{
touch zebra.conf 
touch ripd.conf 
chown quagga zebra.conf 
chown quagga ripd.conf 
chgrp quaggavty zebra.conf 
chgrp quaggavty ripd.conf 
chmod 660 zebra.conf 
chmod 660 ripd.conf
}}}
Linea 83: Linea 87:
Lasciamo il file zebra.conf vuoto, mentre dentro a ripd.conf scriviamo:[[BR]] Lasciamo il file {{{zebra.conf}}} vuoto, mentre dentro a {{{ripd.conf}}} scriviamo:[[BR]]
Linea 85: Linea 89:
''router rip''[[BR]]
''network eth0''[[BR]]
''network tap0''[[BR]]
{{{
router rip 
network eth0 
network tap0  }}}
Linea 89: Linea 95:
dove dobbiamo aggiungere una riga “network” per ogni interfaccia di rete del nostro serve dove
vogliamo che venga utilizzato il protocollo rip.[[BR]]
Con questa semplice configurazione il server impara tutto quello che arriva, e insegna tutto quello
che sa! Per iniziare il tutto su entrambe le macchine facciamo ''/etc/init.d/quagga restart''.[[BR]]
dove dobbiamo aggiungere una riga “network” per ogni interfaccia di rete del nostro serve dove vogliamo che venga
utilizzato il protocollo rip.[[BR]]
Con questa semplice configurazione il server impara tutto quello che arriva, e insegna tutto quello che sa!
Per iniziare il tutto su entrambe le macchine facciamo {{{ /etc/init.d/quagga restart }}}.[[BR]]
Linea 95: Linea 101:
Questo documento è ancora molto grossolano perché il tutto è stato fatto ieri e ci sono molte cose
che devo capire meglio a fondo anche io. A tutti quelli che si metteranno a smanettare su queste
cose, li prego tanto di scrivere un paio di paginette come ho fatto io in modo che il lavoro non vada
perduto !!!! Bella! Saverio
Questo documento è ancora molto grossolano perché il tutto è stato fatto ieri e ci sono molte cose che devo capire meglio
a fondo anche io. A tutti quelli che si metteranno a smanettare su queste cose, li prego tanto di scrivere un paio di
paginette come ho fatto io in modo che il lavoro non vada perduto !!!! Bella! Saverio

== Note su Gentoo Linux ==

Gli script di init.d per OpenVPN di Gentoo funzionano cosi:

mettete i vostri files di configurazione dentro {{{/etc/openvpn}}} (sono i files con estensione .conf)

quindi ad esempio vpn1.conf e vpn2.conf

ora dovete creare dei symlinks di {{{/etc/init.d/openvpn}}} nel seguente modo:
{{{
ln -sf /etc/init.d/openvpn /etc/init.d/openvpn.vpn1
ln -sf /etc/init.d/openvpn /etc/init.d/openvpn.vpn2
}}}

In realtà quindi {{{/etc/init.d/openvpn}}} non lo userete mai, ma avete uno script di start stop indipendente per ogni VPN configurata sulla macchina.

Per lanciare al boot le vpn quindi:
{{{
rc-update add openvpn.vpn1 default
rc-update add openvpn.vpn2 default
}}}

== OpenVPN con uso dei certificati ==

'''Questa sezione è ancora incompleta, per ora contiene solo delle note'''

Per prima cosa generare la coppia pubblica/privata di chiavi RSA a 2048 bit del nuovo peer
''(Questi primi tre steps di solito li esegue chi gestisce il server, contattate ZioProto per collegarsi in VPN con Ninux.org)''

{{{
openssl genrsa -out nuovopeer.key 2048
}}}

Creare ora una richiesta di certificato (CRS) da far firmware alla Certification Authority (CA)
{{{
openssl req -new -key nuovopeer.key -out nuovopeer.req
}}}

Facciamo firmare alla Certification Authority la CRS
In questo comando dobbiamo passare il file del certificato della CA ed il file
con la chiave privata della CA che usiamo per firmare.
{{{
openssl x509 -req -in nuovopeer.req -CA zpslackca.pem -CAkey zpslackca.key
-set_serial xx -out nuovopeer.crt -days 365
}}}

''(da qui andate avanti una volta che avete ricevuto i files da ZioProto)''

Finito di generare chiavi e certificati ecco la configurazione di OpenVPN per il nuovo peer

{{{
tls-client
dev tap
ca zpslackca.crt
cert nuovopeer.crt
key nuovopeer.key
remote zioproto.ninux.org
ping 10
verb 1
mute 10
ifconfig IP 255.255.255.0
rport 5002
}}}

quindi sul nuovo peer servono 3 files: certificato della CA, proprio certificato + chiave

''La configurazione del client finisce qui :)''

La configurazione del server è di questo tipo:
{{{
tls-server
mode server
dev tap
ca keys/zpslackca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#client-to-client
duplicate-cn
#secret /etc/openvpn/zpslack_server_ubuntu_client.key
ping 10
verb 1
mute 10
ifconfig 10.0.1.1 255.255.255.0
lport 5002
}}}

OpenVPN (anche con RIP)

TableOfContents

Questo documento intende dare una rapida spiegazione a chi gia conosce la teoria dietro le VPN ed il protocollo RIP per implementare praticamente con 2 servers linux un tunnel che attraversa una rete pubblica e collega 2 reti private. In questo howto vedremo come collegare 2 reti creando un link punto punto in vpn tra le due reti usando l’implementazione openvpn, e come successivamente scambiare in modo dinamico le rotte delle due reti usando il protocollo RIP. In questo HOWTO sono stati utilizzati 2 servers ai capi del tunnel VPN con sistema operativo Linux UBUNTU (Debian).

Per prima cosa installiamo OpenVPN

BR

apt-get install openvpn

(Per altre distribuzioni Gnu/Linux cercare la documentazione relativa)BR BR Dopo aver installato il software, dobbiamo creare prima di tutto la chiave privata per l' inizializzazione del tunnel.BR BR

openvpn --genkey --secret key.txt

BR Una volta creata la chiave segreta e posizionata dentro  /etc/openvpn/ , (occhio la dobbiamo mettere in entrambe le macchine la chiave privata) dobbiamo creare il file di configurazione per il server (  /etc/openvpn/nomefantasia.conf  ).BR BR

dev tap
secret /etc/openvpn/key.txt
ping 10
verb 1
mute 10
ifconfig 10.0.1.1 255.255.255.252
lport 5002

BR La configurazione del gateway VPN (client) è identica a quella vista precedentemente. Ovviamente dobbiamo copiare la chiave segreta e posizionarla nella directory  /etc/openvpn/  e creare il file di configurazione (  /etc/openvpn/nomefantasia2.conf ), che deve essere di questo tipo:BR BR

remote ip.pubblico.del.server
rport 5002
dev tap
ifconfig 10.0.1.2 255.255.255.252
secret /etc/openvpn/key.txt
ping 10
verb 1
mute 10

BR Non ha nessuna importanza chi fa il client e chi fa il server.BR Ovviamente nel caso che solo una delle 2 macchine dispone di IP pubblico sarà quella che deve fare il server. La macchina server deve ascoltare sulla porta 5002 UDP, od un'altra porta udp che basta cambiare nei files di configurazione che sono stati mostrati prima. A questo punto il tunnel gia funziona, ed ubuntu vi fornisce gia anche lo scriptBR  /etc/init.d/openvpn  per farlo partire, fermarlo, o riavviarlo.BR BR Ora esiste il tunnel, ma per far si che sia utile ai computers in rete dobbiamo far si che si conoscano le rotte. Ammettiamo che i nostri endpoints del tunnel siano anche i GW delle 2 reti che abbiamo collegato (se non è cosi dovete attivare RIP anche sui GW, molti router modem ADSL hanno questa possibilità!)BR BR Installiamo il software quaggaBR BR

apt-get install quagga

(Per altre distribuzioni linux cercare la documentazione relativa)BR BR Adesso andiamo in  /etc/quagga }che è l’unica directory dove dobbiamo lavorare per far funzionare tutto. Editiamo il file daemons e passiamo da “no” a “yes” i demoni zebra e ripd Poi dobbiamo creare in  /etc/quagga  i files zebra.conf e ripd.conf e dare i permessi proprio come scritto nei commenti all’interno del file daemons, ecco la sequenza di cose da fare:BR BR

touch zebra.conf 
touch ripd.conf 
chown quagga zebra.conf 
chown quagga ripd.conf 
chgrp quaggavty zebra.conf 
chgrp quaggavty ripd.conf 
chmod 660 zebra.conf 
chmod 660 ripd.conf

BR Lasciamo il file zebra.conf vuoto, mentre dentro a ripd.conf scriviamo:BR BR

router rip 
network eth0 
network tap0 

BR dove dobbiamo aggiungere una riga “network” per ogni interfaccia di rete del nostro serve dove vogliamo che venga utilizzato il protocollo rip.BR Con questa semplice configurazione il server impara tutto quello che arriva, e insegna tutto quello che sa! Per iniziare il tutto su entrambe le macchine facciamo  /etc/init.d/quagga restart .BR BR BR Questo documento è ancora molto grossolano perché il tutto è stato fatto ieri e ci sono molte cose che devo capire meglio a fondo anche io. A tutti quelli che si metteranno a smanettare su queste cose, li prego tanto di scrivere un paio di paginette come ho fatto io in modo che il lavoro non vada perduto !!!! Bella! Saverio

Note su Gentoo Linux

Gli script di init.d per OpenVPN di Gentoo funzionano cosi:

mettete i vostri files di configurazione dentro /etc/openvpn (sono i files con estensione .conf)

quindi ad esempio vpn1.conf e vpn2.conf

ora dovete creare dei symlinks di /etc/init.d/openvpn nel seguente modo:

ln -sf /etc/init.d/openvpn /etc/init.d/openvpn.vpn1
ln -sf /etc/init.d/openvpn /etc/init.d/openvpn.vpn2

In realtà quindi /etc/init.d/openvpn non lo userete mai, ma avete uno script di start stop indipendente per ogni VPN configurata sulla macchina.

Per lanciare al boot le vpn quindi:

rc-update add openvpn.vpn1 default
rc-update add openvpn.vpn2 default

OpenVPN con uso dei certificati

Questa sezione è ancora incompleta, per ora contiene solo delle note

Per prima cosa generare la coppia pubblica/privata di chiavi RSA a 2048 bit del nuovo peer (Questi primi tre steps di solito li esegue chi gestisce il server, contattate ZioProto per collegarsi in VPN con Ninux.org)

openssl genrsa -out nuovopeer.key 2048

Creare ora una richiesta di certificato (CRS) da far firmware alla Certification Authority (CA)

openssl req -new -key nuovopeer.key -out nuovopeer.req

Facciamo firmare alla Certification Authority la CRS In questo comando dobbiamo passare il file del certificato della CA ed il file con la chiave privata della CA che usiamo per firmare.

openssl x509 -req -in nuovopeer.req -CA zpslackca.pem -CAkey zpslackca.key
-set_serial xx -out nuovopeer.crt -days 365

(da qui andate avanti una volta che avete ricevuto i files da ZioProto)

Finito di generare chiavi e certificati ecco la configurazione di OpenVPN per il nuovo peer

tls-client
dev tap
ca zpslackca.crt
cert nuovopeer.crt
key nuovopeer.key
remote zioproto.ninux.org
ping 10
verb 1
mute 10
ifconfig IP 255.255.255.0
rport 5002

quindi sul nuovo peer servono 3 files: certificato della CA, proprio certificato + chiave

La configurazione del client finisce qui :)

La configurazione del server è di questo tipo:

tls-server
mode server
dev tap
ca keys/zpslackca.crt
cert keys/server.crt
key keys/server.key
dh keys/dh1024.pem
#client-to-client
duplicate-cn
#secret /etc/openvpn/zpslack_server_ubuntu_client.key
ping 10
verb 1
mute 10
ifconfig 10.0.1.1 255.255.255.0
lport 5002