Documentazione di Ubuntu > Ubuntu 11.04 > Guida a Ubuntu Server > VPN > OpenVPN

## OpenVPN

OpenVPN fa uso di una PKI (Public Key Infrastructure) per cifrare il traffico VPN tra i nodi. Un modo semplice di impostare una VPN attraverso OpenVPN è di connettere i client attraverso un'interfaccia bridge sul server VPN. Questa guida parte dal presupposto che un nodo VPN, in questo caso il server, presenti un'interfaccia bridge configurata. Per maggiori informazioni su come impostare un'interfaccia bridge, consultare la sezione chiamata «Bridging».

### Installazione

Per installare openvpn, in un terminale, digitare:

    sudo apt-get install openvpn

#### Certificati server

Installato il pacchetto openvpn, è necessario creare i certificati.

Per prima cosa, copiare la directory `easy-rsa` in `/etc/openvpn`: in questo modo qualsiasi modifica fatta agli script non verrà persa in caso di aggiornamento del pacchetto. È necessario anche modificare i permessi alla directory `easy-rsa` per consentire all'utente attuale di creare file. Da un terminale, digitare:

    sudo mkdir /etc/openvpn/easy-rsa/
    sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
    sudo chown -R $USER /etc/openvpn/easy-rsa/

Modificare quindi il file `/etc/openvpn/easy-rsa/vars` sistemando quanto segue al proprio ambiente:

    export KEY_COUNTRY="IT"
    export KEY_PROVINCE="Roma"
    export KEY_CITY="Roma"
    export KEY_ORG="Società di esempio"
    export KEY_EMAIL="mario@example.com"

Digitare quanto segue per creare i certificati del server:

    cd /etc/openvpn/easy-rsa/
    source vars
    ./clean-all
    ./build-dh
    ./pkitool --initca
    ./pkitool --server server
    cd keys
    openvpn --genkey --secret ta.key
    sudo cp server.crt server.key ca.crt dh1024.pem ta.key /etc/openvpn/

#### Certificati client

Il client VPN necessita anche di un certificato per autenticarsi sul server. Per creare il certificato, inserire quanto segue in un terminale:

    cd /etc/openvpn/easy-rsa/
    source vars
    ./pkitool hostname

Sostituire hostname con il nome del computer che si collega alla rete VPN.

Copiare i seguenti file nel client:

- /etc/openvpn/ca.crt

- /etc/openvpn/easy-rsa/keys/hostname.crt

- /etc/openvpn/easy-rsa/keys/hostname.key

- /etc/openvpn/ta.key

Ricordarsi di modificare il nome del file precedente affinché rispecchi il nome host del computer client.

È raccomandato usare un metodo sicuro per copiare il certificato e i file di chiave. L'utilità scp è una ottima scelta, ma anche copiare i file su un supporto rimovibile e poi sul client funziona in modo adeguato.

### Configurazione

#### Configurazione del server

Ora configurare il server openvpn creando il file `/etc/openvpn/server.conf` a partire dal file d'esempio. In un terminare inserire:

    sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
    sudo gzip -d /etc/openvpn/server.conf.gz

Modificare il file `/etc/openvpn/server.conf` cambiando le seguenti opzioni:

    local 172.18.100.101
    dev tap0
    up "/etc/openvpn/up.sh br0"
    down "/etc/openvpn/down.sh br0"
    ;server 10.8.0.0 255.255.255.0
    server-bridge 172.18.100.101 255.255.255.0 172.18.100.105 172.18.100.200
    push "route 172.18.100.1 255.255.255.0"
    push "dhcp-option DNS 172.18.100.20"
    push "dhcp-option DOMAIN example.com"
    tls-auth ta.key 0 # This file is secret
    user nobody
    group nogroup

- local: è l'indirizzo IP dell'interfaccia bridge.

- server-bridge: necessario quando la comunicazione utilizza il "bridging". La parte 172.18.100.101 255.255.255.0 è l'interfaccia bridge e la maschera. L'intervallo degli indirizzi 172.18.100.105 172.18.100.200 indica quali indirizzi possono essere assegnati ai client.

- push: sono direttive per aggiungere opzioni di rete ai client.

- user e group: configura l'utente e il gruppo con cui viene mandato in esecuzione il demone openvpn.

Sostituire tutti gli indirizzi IP e i nomi di dominio precedenti con i valori della propria rete.

Come passo seguente, creare una coppia di script helper per aggiungere l'interfaccia tap al bridge. Creare `/etc/openvpn/up.sh`:

    #!/bin/sh

    BR=$1
    DEV=$2
    MTU=$3
    /sbin/ifconfig $DEV mtu $MTU promisc up
    /usr/sbin/brctl addif $BR $DEV

E `/etc/openvpn/down.sh`:

    #!/bin/sh

    BR=$1
    DEV=$2

    /usr/sbin/brctl delif $BR $DEV
    /sbin/ifconfig $DEV down

Per renderli eseguibili:

    sudo chmod 755 /etc/openvpn/down.sh
    sudo chmod 755 /etc/openvpn/up.sh

Una volta configurato il server, riavviare openvpn digitando:

    sudo /etc/init.d/openvpn restart

#### Configurazione del client

Installare openvpn sul client:

    sudo apt-get install openvpn

Configurato il server e copiati i certificati del client nella directory `/etc/openvpn/`, creare un file di configurazione per il client copiando l'esempio. Nel computer client, da un terminale, digitare:

    sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn

Ora modificare `/etc/openvpn/client.conf` sistemando le seguenti opzioni:

    dev tap
    remote vpn.example.com 1194
    cert hostname.crt
    key hostname.key
    tls-auth ta.key 1

Sostituire vpn.example.com con il nome host del proprio server VPN e hostname.* con i nomi dei file del certificato e della chiave reali.

Infine, riavviare openvpn:

    sudo /etc/init.d/openvpn restart

Ora dovrebbe essere possibile connettersi alla rete LAN remota attraverso VPN.

### Riferimenti

- Per maggiori informazioni, consultare il sito web di OpenVPN.

- Un'ottima risorsa è anche OpenVPN: Building and Integrating Virtual Private Networks di Pakt (in inglese).

- Ulteriori informazioni possono essere trovate nella documentazione online.

Capitolo 21. VPN |  | Capitolo 22. Altre utili applicazioni