Configurazione di un server OpenVPN su Debian Squeeze

OpenVPN è il sistema più semplice per gestire VPN in ambiente Linux. In questo Howto vediamo come configurare un concentratore OpenVPN utilizzando Debian Squeeze. Fortunatamente l’installazione è piuttosto semplice.

Installazione del server
Innanzi tutto installiamo i pacchetti necessari:

apt-get install openvpn udev

OpenVPN mette a disposizione un tool chiamato EasyRSA per creare i certificati per il collegamento. Installiamo il tool e generiamo i certificati per la Certification Authority interna:

cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/clean-all
. /etc/openvpn/easy-rsa/2.0/build-ca

Quindi generiamo i certificati per il server:

. /etc/openvpn/easy-rsa/2.0/build-key-server server

e per il client:

. /etc/openvpn/easy-rsa/2.0/build-key client1

Inifine generiamo i parametri Diffie Hellman; questa operazione può essere parecchio lunga…

. /etc/openvpn/easy-rsa/2.0/build-dh

A questo punto copiamo i certificati server nella directory corretta:

cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn

e copiamo sul client i certificati client. I file da copiare sono:

  • ca.crt

  • client1.crt

  • client1.key

Ora copiamo la configurazione del server OpenVPN:

cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
/etc/init.d/openvpn start

Attraverso questa configurazione, il server negozierà con il client l’ip del tunnel e creerà l’interfaccia. Se il nostro scopo è quello di creare una connessione punto-punto tra un client ed un server, siamo perfettamente operativi; più avanti vedremo come utilizzare il nostro server OpenVPN per rendere accessibile al client tutta la rete interna.

Configurazione del client OpenVPN
Ovviamente esistono numerosi clien OpenVPN a seconda del sistema operativo che utilizzate. Se usate Linux con l’interfaccia GNOME, l’applet della rete nel quale potete configurare le VPN PPTP può essere utilizzato anche per comandare le VPN OpenVPN: vi serviranno i tre file segnalati prima e, attenzione, nel pannello “Avanzate” ailitate la compressione LZO.
Per MacOS esiste il client Tunnleblick
Per Windows, invece, esiste il client OpenVPN GUI.

Configurazione dell’ip forwarding, del nat e del DNS forwarding
Nel caso in cui vogliate che i vostri client abbiano accesso sia alla rete locale del server, ma anche alla rete Internet attraverso il server, è necessario fare qualche altra configurazione.
Innanzi tutto bisogna abilitare sul server l’IP forwarding ed il nat:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Per rendere definitive queste modifiche, consiglio di aggiungere le righe qui sopra anche al file /etc/rc.local in modo che siano eseguite ad ogni riavvio del server.
Attraverso il tunnel OpenVPN saremo in grado di raggiungere qualsiasi rete collegata al server, però non è possibile utilizzare DNS esterni, per cui sarà necessario configurare un DNS sul server.
Il metodo più semplice è quello di installare il pacchetto dnsmasq che funge da proxy DNS tra il tunnel OpenVPN e i resolver impostati sul server:

apt-get install dnsmasq

Quindi modifichiamo il file /etc/openvpn/server.conf per far istruire i client che si collegano riguardo le rotte e il DNS:

<strong>/etc/openvpn/server.conf</strong>
....
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway def1"

e riavviamo OpenVPN

/etc/init.d/openvpn restart