Valutazione attuale: 4 / 5

Stella attivaStella attivaStella attivaStella attivaStella inattiva
 

una volta terminata la fase di setup del server, dedichiamoci a quelle attivita' che servono per i client

iniziamo a creare le chiavi dei client,  durante il processo di creazione delle chiavi ci verra' richiesto se vogliamo proteggerle con una password, la scelta e' vostra ,

quella meno sicura , ma piu' comoda (non avere la password)

quella piu' sicura , ma piu' seccante , avere la password, password che vi verra' chiesta dal client ogni volta che viene lanciata la vpn , e che personalmente ritengo sia utile solo nel caso di vpn client to lan dove vi e' la presenza di una persona nell' instante della connessione, e non in caso di client lan to lan

cd /etc/openvpn/easy-rsa 
source ./vars
./build-key client1

rispondiamo alle domande, dando un colpo di invio a quelle che vogliamo lasciare con la risposta di default, prestando particolare attenzione alla domanda sul

COMMON NAME

questo nome e' quello che identifichera' il client e sara' quello che dovremo usare per imporre delle configurazioni ad hoc per il singolo client nella directory ccd

alla fine del processo nella sotto directory keys ci troveremo i 3 file

-rw-r--r-- 1 root root 3921 mag 19 00:22 client1.crt
-rw-r--r-- 1 root root  725 mag 19 00:22 client1.csr
-rw------- 1 root root  916 mag 19 00:22 client1.key

in aggiunta a quelli del server

di questi solo i file client1.crt e client1 .key vanno messi sul client insieme al file nomeserver.crt dh2048.pem e ta.key

se invece abbiamo gia' creato delle chiavi in passato e non vogliamo cancellare le chiavi precedenti  quello che dobbiamo evitare e' di dare il comando ./clean-all che cancella tutte le chiavi preesistenti

cd /etc/openvpn/easy-rsa
source ./vars
./build-key client2

  

per completare ora la configurazione del server relativa al client nel caso che questo sia un router e quindi abbia un' altra rete dietro dovremo aggiungere il file nella direcotry ccd col nome del client (common name) e aggiungere due righe alla configurazione del server , questo per ogni client/chiave che generiamo , ma prima di andare avanti meglio due righe di spiegazione

credit http://backreference.org/2009/11/15/openvpn-and-iroute/

iroute

 

ipotizziamo una rete come quella di sopra, con un server ed N client

essendo che sul router A abbiamo la rete interna 192.168.21.x/24 e ci interessa che sia raggiungibile da tutta la nostra rete dobbiamo far si che ongi client che si colleghi ad openvpn sappia dell' esistenza e che quindi i pacchetti destinati a questa rete devono esser inoltrati verso il server, quindi nel file

server_tun.conf andremo ad inserire la riga

push "route 192.168.21.0 255.255.255.0"  consente al router B e a tutti gli N router di sapere che la rete 192.168.21.0 e' raggiungibile tramite il server

 

 In pratica sul router B dando il comando

 route -n

otterremo in risposta

192.168.21.0    10.20.30.1      255.255.255.0   UG    0      0        0 tun0

che ci conferma che ora il router sa' dove indirizzare un pacchetto relativo alla rete 192.168.1.0/24


questo nostro pacchetto ip, e' quindi arrivato al server, ma il server a chi lo deve inviare?

lo diciamo inserendo sempre nel file server_tun.con un ' altra riga

route 192.168.21.0 255.255.255.0 10.20.30.4 dice la rete su quale interfaccia va!

 

quindi ora il server sa' che la rete 192.168.21.0/24 e' raggiungibile tramite l' interfaccia tun remota con ip 10.20.30.4

quello che ancora non sa' e' quest' interfaccia , su quale ip pubblico remoto deve inviarlo , siccome (a meno che il vostro client non abbia un 'ip statico) questo ip varia , lo diremo dinamicamente ogni volta che il client si collega

il posto per fare le configurazioni "dinamiche e/o relative ad un singolo client"  e' il file dentro la directory ccd

questo file, lo ripeto deve avere lo stesso nome che abbiamo messo come common name nella generazione del certificato , quindi se alla domanda common name ho risposto tplink il file si dovra chiamare tplink

dentro al file aggiungero

iroute 192.168.21.0 255.255.255.0  # route interna a openvpn serve a far associare a openvpn I pacchetti relativi a 192.168.21.x/24 su quale ip pubblico devono andare

 

dopo la connessione del client, se andiamo a vedere nei log del server troveremo

Tue Jun 14 23:57:56 2016 tplink/5.170.222.72:44555 MULTI: internal route 192.168.21.0/24 -> tplink/5.170.222.72:44555

 

 

passiamo ora al file di configurazione da mettere nel client

 

dev tun
port 1295
proto udp
remote server.dovevuoitu.tld 1294
keepalive 10 120
verb 3
comp-lzo
client  
tls-client
ca      /etc/openvpn/easy-rsa/keys/ca.crt
cert    /etc/openvpn/easy-rsa/keys/client1.crt
key     /etc/openvpn/easy-rsa/keys/client1.key
dh      /etc/openvpn/easy-rsa/keys/dh2048.pem
tls-auth /etc/openvpn/easy-rsa/keys/ta.key 1
ns-cert-type server

# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
;cipher x

log /var/log/openvpn/openvpn.log

 aggiustiamolo secondo le nostre esigenze e mettiamolo nel posto piu' appropiato (a seconda della distro/firmware usato) , ricordiamoci di caricare sul clientanche i vari certificati e correggere il path

 

su ubuntu e debian se e' presente un file *.conf nel path /etc/openvpn la vpn parte in automatico all' avvio del pc, se non vogliamo questo comportamento , possiamo agire sul file

/etc/default/openvpn

 

andando a levare il cancelletto # davanti alla riga autostart

AUTOSTART="none"

di default  e'

#AUTOSTART="all"
#AUTOSTART="none"
#AUTOSTART="home office"

 

che equivale a "all" ossia qualsiasi configurazione presente viene avviata

se invece vogliamo che parta con una determinata configurazione perche' ne abbiamo piu' di una , andiamo a levare il cancelletto sull' ultima riga, sostituendo "home office" col nome della configurazione che vogliamo si avvi

 


 

se serve creare la configurazione e le chiavi per un device android, dopo aver generato i certificati dovremo creare un file unico con estenzione ovpn che racchiude al suo interno sia la configurazione che i certificati , per far cio' ci possiamo aiutare con uno script che ho trovato in rete

 credit https://renatocunha.com/blog/2014/12/openvpn-android/

https://gist.github.com/trovao/18e428b5a758df24455b

lo script e' incompleto in quanto non tiene conto della chiave DH , quindi l' ho modificato e lo potete prelevare da qui ovpn-writer.sh

basta scaricarlo, renderlo eseguibile e lanciarlo con

./ovpn-writer.sh SERVER CA_CERT CLIENT_CERT CLIENT_KEY SHARED_SECRET DH_KEY> client.ovpn

attenzione che lo script imposta la porta di default, se ne usiamo un' altra va' modificata a manina

 

arrivati fin qua, ci troveremo quindi con :

uno o piu' router configurati con una rete localeche gli consente di  navigare verso internet col loro ip pubblico, e che possono raggiungere/essere raggiunti dal resto della nostra intranet

uno o piu' dispositivi singoli (pc, raspberry etc etc) connessi alla intranet , che possono navigare verso internet con l' ip pubblico della rete che li ospita , e che possono raggiungere/essere raggiunti dal resto della nostra intranet (raggiunti tramite l' ip dell'a loro interfaccia tun

uno o piu' telefonini android connessi alla intranet , che possono navigare verso internet con l' ip pubblico della rete che li ospita , e che possono raggiungere/essere raggiunti dal resto della nostra intranet (raggiunti tramite l' ip dell'a loro interfaccia tun

se vogliamo che i vari dispositivi invece di consentire la navigazione attraverso il loro ip pubblico escano verso internet dall' ip pubblico del server dovremo ricordarci di abilitare il routing sul server e su di ogni file ccd inserire la riga

push "redirect-gateway def1"

 

 

 

 

Vai all'inizio della pagina