OpenVPN con chiave

Di seguito è spiegato come configurare OpenVPN server-client per fare in modo che il client si possa collegare alla rete locale in cui il server è inserito.

Configurazione server

Installare OpenVPN.

Il server è collegato a due reti (con 2 schede) e possiede i seguenti indirizzi: 192.168.120.105 e 172.20.91.2
Il gateway predefinito sul server è impostato con 172.20.91.1

La rete 192.168.120.0 del server (a cui dovremo accedere dal nostro client VPN) ha come gateway 192.168.120.254

Verificare l’esistenza di /dev/net/tun, se non esistesse va creato con

mkdir /dev/net && mknod /dev/net/tun c 10 200

caricato con modprobe tun, va impostato il suo caricamento all’avvio

echo "tun" >>/etc/modules

e va abilitato il forwarding

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

Generare una chiave simmetrica con il comando

openvpn --genkey --secret chiaveOpenVPN.key

tale chiave andrà poi copiata sul client

Creare il file di configurazione /etc/openvpn/server.conf con un contenuto simile a questo:

dev tap
proto tcp-server
lport 5000
ifconfig 192.168.1.1 255.255.255.0
secret /etc/openvpn/chiaveOpenVPN.key
verb 3

Spiegazione delle voci inserite

  • dev tap: imposta il tipo di device per VPN in bridge
  • proto tcp-server: usiamo il TCP, OpenVPN va di default su UDP, che a volte è problematico nelle connessioni casalinghe, e non rutti i router sono in grado di gestirne il NATP
  • lport 5000: in particolare usiamo la 5000/TCP (si può usare la porta che preferiamo)
  • ifconfig 192.168.1.1 255.255.255.0: IP e subnet dell’adattatore virtuale, deve essere di una sottorete diversa dalla rete del server e del client (questa è la rete virtuale della VPN).
  • secret /etc/openvpn/chiaveOpenVPN.key: posizione della chiave simmetrica generata
  • verb 3: il livello di logging, 3 va bene quando funziona tutto, potete alzare fino a 9 per avere più informazioni in caso di problemi (i log vengono memorizzazioni in /var/log/syslog)

Impostare il routing

  • se il server è anche il default gateway della rete locale in cui è collegato, dovete creare le regole del firewall in modo da accettare le connessioni in ingresso
iptables -A INPUT -p tcp –dport 5000 -s 192.168.1.0/24 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
  • se invece esiste um firewall sulla rete andranno create le regole su quest’ultimo (se necessarie) ed inoltre andrà creare una route statica che permetta al traffico in uscita dalla rete locale e destinato al tunnel VPN di essere instradato correttamente verso il server VPN (oppure vanno aggiunte su ogni client della che si vuole far raggiungere dai client VPN)
route add 192.168.1.0/24 192.168.120.105

dove 192.168.1.0 è la rete dell’IP che assegneremo all’interfaccia virtuale del client (è possibile mettere anche l’IP singolo) e 192.168.120.105 è l’IP (reale e privato) del server VPN su quella rete

Impostare il routing sul server VPN per fare in modo che i pacchetti provenienti dal client VPN e diretti alla rete 192.168.120.0 vengano instradati correttamente

route add -net 192.168.120.0 netmask 255.255.255.0 gw 192.168.120.254

La tabella di routing del server VPN avrà quindi

192.168.120.0 netmask 255.255.255.0 gw 192.168.120.254 eth1
192.168.1.0 netmask 255.255.255.0 gw 0.0.0.0 tap0

Configurazione client

Copiare sul client (con un mezzo sicuro) la chiave generata sul server, e metterla nella cartella di configurazione di OpenVPN.

Creare il file di configurazione, la cui posizione dipende dal sistema operativo

remote indirizzoServerVPN
dev tap
proto tcp-client
rport 5000
ifconfig 192.168.1.2 255.255.255.0
route 192.168.120.0 255.255.255.0 192.168.1.1
secret chiaveOpenVPN.key
verb 3

Spiegazione delle voci inserite

  • remote indirizzoServerVPN: l’indirizzo del server; potete usare l’IP oppure il nome FQDN. Se non avete un IP statico potete utilizzare dynDNS, come in questo caso.
  • dev tap: non toccare
  • proto tcp-client: usiamo il TCP perché bla bla bla (vedi sopra)
  • rport 5000: la porta su cui ascolta il server
  • ifconfig 10.0.0.2 255.255.255.0: l’IP dell’adattatore virtuale; inventatelo, della stessa sottorete di quello del server, non va impostato da nessuna altra parte.
  • route 192.168.1.0 255.255.255.0 10.0.0.1: la rotta statica che permette di raggiungere tutti gli host della rete remota
  • secret nome_chiave.key: la chiave simmetrica
  • verb 3: logging a livello 3 (vedi sopra)

Avvio tunnel

Adesso sul server è possibile lanciare: openvpn –config /etc/openvpn/server.conf e sul client il corrispondente: openvpn –config client.conf

Se tutto va a buon fine, dopo qualche istante vedrete apparire sul server:

Peer Connection Initiated with xxx.yyy.zzz.kkk:nnn
Initialization Sequence Completed

e sul client:

TCP connection established with zzz.ttt.vvv.rrr:5000
TCPv4_CLIENT link local: [undef]
TCPv4_CLIENT link remote: zzz.ttt.vvv.rrr:5000
Peer Connection Initiated with zzz.ttt.vvv.rrr:5000
TEST ROUTES: 1/1 succeeded len=1 ret=1 a=0 u/d=up
route ADD 192.168.1.0 MASK 255.255.255.0 10.0.0.1
Route addition via IPAPI succeeded
Initialization Sequence Completed

La connessione VPN tra il client e la rete remota è stabilita.

Generalmente se sul server è il pacchetto OpenVPN è stato installato come servizio all’avvio del sistema partirà, non sarà quindi necessario avviarlo in manuale.

Aggiungi ai preferiti : permalink.

I commenti sono chiusi.