Andrea Beggi

Everything is gonna be all right.

Usare OpenVPN per connettersi ad una rete

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

In questi giorni ho giocato ancora un po’ con OpenVPN; in particolare cercavo un modo veloce, efficiente e sicuro per connettermi alla rete di casa quando sono fuori.

Ingredienti:
Un server Debian di modestissime prestazioni che funge da gateway VPN (con poche modifiche a questa procedura va bene qualunque server).
Un client con qualunque sistema operativo(*).

Preparazione del server:

  • 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
  • Installare OpenVPN sul server: apt-get update && apt-get install openvpn
  • Generare una chiave simmetrica con il comando: openvpn --genkey --secret nome_chiave.key
  • Creare il file di configurazione /etc/openvpn/server.conf con un contenuto simile a questo:

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

Ecco la spiega:
dev tap: non toccare
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 (potete usare la porta che preferite)
ifconfig 10.0.0.1 255.255.255.0: IP e subnet dell’adattatore virtuale: deve essere di una sottorete diversa dalla rete di casa e del client (inventatelo; non va impostato da nessuna altra parte).
secret /etc/openvpn/nome_chiave.key: la chiave simmetrica
verb 3: il livello di logging; 3 va bene quando funge tutto, potete alzare fino a 9 per avere più informazioni nel caso incontraste problemi.

A questo punto manca una cosa: se il vostro server è anche il default gateway della rete locale di casa, dovete creare le regole del firewall in modo da accettare le connessioni in ingresso:
iptables -A INPUT -p tcp –dport 5000 -s 10.0.0.0/24 -m state –state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT

Se invece vi affidate ad un firewall diverso, dovrete creare le regole su quest’ultimo ed inoltre dovrete creare una route statica che permetta al traffico in uscita dalla rete locale e destinato al tunnel VPN di essere instradato correttamente. Una cosa così:
route add 10.0.0.2 255.255.255.0 192.168.1.2 dove 10.0.0.2 è l’IP che assegneremo all’interfaccia virtuale del client (vedi dopo), e 192.168.1.2 è l’IP (reale e privato) del server VPN.

Preparazione del client:

  • Installare OpenVPN
  • 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 server.dnsalias.net
dev tap
proto tcp-client
rport 5000
ifconfig 10.0.0.2 255.255.255.0
route 192.168.1.0 255.255.255.0 10.0.0.1
secret nome_chiave.key
verb 3

Ecco la spiega:
remote server.dnsalias.net: 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).

Adesso sul server lanciamo: openvpn --config /etc/openvpn/server.conf e sul client il corrispondente: openvpn --config client.conf (o come avete chiamato il file).
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, avete accesso alla rete di casa come se foste fisicamente collegati ad essa.

(*)Il client per Mac OS/X è qui.
Ho trovato una buona guida per tutto il processo su Debianizzati.org. Tra l’altro viene anche spiegato come demonizzare e lanciare al boot il server OpenVPN; inoltre vengono descritti altri metodi di autenticazione oltre alla shared-key che usiamo qui.

I più smaliziati potranno utilizzare OpenVPN anche dietro ad un proxy: Fede, che ne sa, ci spiega.

Tags: ,

34 Commenti

magogago | #

sei un grande, lo stavo giusto guardando stamattina per configurarmelo a casa! mi hai risparmiato un po’ di lavoro, ora faro’ solo copia&incolla :D

spippolazione | #

Openvpn e’ grande :-)

Io ho messo in vpn lan2lan 6 sedi, 7 se contiamo casa mia :-] , ed ho alcuni road warrior su windows xp.

Ho usando devil linux per la lan2lan , boot da cd, configurazione salvata su un supporto a scelta hd, floppy, key usb ed una Etch per i road warrior.

In piu’ di un anno non ha mai perso un colpo.

betaversion | #

Essendo un supernuibbione, alcuni amici mi hanno consigliato Hamachi
(http://www.hamachi.it/). Fa tutto da solo e su qualsiasi os.
Quando sono fuori riesco ad accedere su ogni risorsa su qualunque pc sia stato configurato

Giuseppe Aniello | #

non ho parole…. sempre la soluzione pronta per qualsiasi problema :)

spippolazione | #

Hamachi e’ perfetto, ma occhio che:

1) la versione gratis non ti fa’ mettere in rete oltre le 16 macchine

2) se lo installi su un domain controller 2000/2003 devi togliere l’indirizzo ip hamachi, lo trovi nel range 5.0.0.0/8, dalle interfacce di rete in ascolto del dns perche’ altrimenti ti si incasina…

per il resto va’ alla grande, peccato che non abbiano rilasciato i sorgenti

macubu | #

Io adoro questi post che leggo con rapimento dalla prima all’ultima riga e in cui ragazzi ve lo giuro: non ci capisco UNA SOLA FOTTUTA PAROLA!
Ma come fai? E’ a metà fra il meraviglioso e il terrificante.
Uè, non è che sei stato demonizzato anche tu, eh?

ciao! ;-)

Manolo | #

Ma scusatemi questa metodo una volta carikato su un debian può essere raggiungibile da un windows? rimango in attesa…

Andrea | #

Ciao Macubu! Tranquillo, è solo robaccia da nerd, perdibilissima.

Andrea | #

Manolo: ma certo. OpenVPN è multipiattaforma, e qualunque sistema operativo può fare da client e/o da server.

Mitì | #

Un bacio al galòp al mio nerd preferito. Ci sentiamo domani, appena ritorno alla base. :-**

Ulisse31 | #

Approvo questo post alla grande! :) :)

Però ragazzi una cosa: dopo l’attivazione di un serverino casalingo (online 24/7), sono solo io che ho notato un aumento esponenziale dei costi in bolletta luce? E stiamo parlando di Pentium 3 con monitor spento, mica di quadcore…

Manolo | #

La corrente costa poko è solo che ce la fanno pagare il quadruplo di quello che costa… ed essendo che quasi l’80% della corrente che abbiamo in italia viene da fuori… vedi un po tu…Ank’io ho un problema del genere… Se hai tanto sole che picchia in casa tua, passa ai pannelli solari.. Io stò prendendo in seria considerazione!

Manolo | #

Andrea… scusami ma con dhcp non è possibile farla giusto? bisogna avere ip fissi? grazie

Andrea | #

No, con DynDNS funziona benissimo.

Manolo | #

Ho un problema…ho creato la vpn tra la mia rete di casa e il pc del mio amico a casa sua… Lui si collega al mio server e vedo il suo collegamento nella finestra openvnp..
Avrei 2 domande.

1°) Io dovrei vedere nel risorse di rete del server (winxp sp2), il pc del mio amico?

2°) Il mio amico dovrebbe vedere il mio server e tutte le cartelle condivise (che risiedono sul mio server) e viceversa?

3°)Se le prime 2 domande hanno risposta affermativa dov’è ho sbagliato?
Rimango in attesa… Grazie in anticipo…

Manolo | #

in teoria posso aggiungere più pc nella mia vpn?

Manolo | #

allora nessuno riesce ad aiutarmi? :(

Bujo | #

Ciao Manolo, arrivo subito al dunque…si, puoi far collegare tranquillamente più client al tuo server openvpn, per tutte le funzionalità ti suggerisco di andare su: http://www.openvpn.net, trovi veramente tutto quello che c’è da sapere…ci vuole solo tempo e buona volontà.

ishuara | #

Ipcop + Zerina l’avete m’hai provato?? :)

Rachid | #

Ciao a tutti, avrei una domanda.. ;-)
Dopo che ho installato un bel server con proxy + openvpn che ben configurato non fa una piega, vorrei sapere dopo che ho generato i certificati che adopero tutt’ora, vorrei ora generare dei altri dovre perforsa cancellare tutti gli altri.
come faccio per aggiungere altri senza ricreare il ca di nuovo…?
Grazie e compilimenti per il blog che seguo visivamente da tempo…!

CRistiano | #

Salve a tutti e complimenti.
Io sono appena approdato al Open Vpn e ritengo sia una grande soluzione per chi come me è road worrior di se stesso. Mi devo collegare all’ufficio dove ho una bella quantità di dati da dovunque mi trovo. Fino ad ora giravo con hard disk portatili in borsa!
Ho un problema: (win 2003SVR/win xp-client) i pc si collegano ma non vedo la lan Host.

Chiedo aiuto

CRistiano | #

Questa è la parte finale del Log del client:

TAP-WIN32 device [Open VPN] opened: \\.\Global\{E5AE0405-AEAD-4A9C-8388-BE696BA91970}.tap
Wed Jan 16 11:28:00 2008 TAP-Win32 Driver Version 8.4
Wed Jan 16 11:28:00 2008 TAP-Win32 MTU=1500
Wed Jan 16 11:28:00 2008 Notified TAP-Win32 driver to set a DHCP IP/netmask of 192.168.254.50/255.255.255.0 on interface {E5AE0405-AEAD-4A9C-8388-BE696BA91970} [DHCP-serv: 192.168.254.0, lease-time: 31536000]
Wed Jan 16 11:28:00 2008 NOTE: could not get adapter index for \DEVICE\TCPIP_{E5AE0405-AEAD-4A9C-8388-BE696BA91970}, status=55 : La risorsa o la periferica di rete specificata non è più disponibile.
Wed Jan 16 11:28:00 2008 TEST ROUTES: 0/0 succeeded len=-1 ret=1 a=0 u/d=up
Wed Jan 16 11:28:00 2008 Initialization Sequence Completed

Ancora grazie

Marco | #

Ciao, seguo spesso i post sul tuo blog…
Praticamente ho un notebook cn Vista da 3 giorni,e la prima cosa che ho fatto dp averlo inizializzato,è stato togliere l’UAC!!…Oggi ho installato OpenVPN,(che funzionava da dio su XP) e non si connette più al server VPN…resta in attesa..e poi riprova inutilmente…Io pingo il server tranquillamente,da altri pc con xp funziona…Chiaramente ho provato a cambiare versione di OPV.
Ti sarei davvero grato se riuscissi ad aiutarmi..!

Acesasterix | #

Salve a tutti,

come altri mi stò avvicinando ad OpenVPN, sono riuscito a collegare client-to-client e lan-to-lan, ma la cosa che non mi riesce è server-multiclient.
Di seguito posto la mia configurazione base tra server a client, premetto che ho provato anche con i parametri contrassegnati con # ma mi si pianta il server.

Sostanzialmente voglio collegare 2 o 3 clients remoti di 3 diverse sedi al mio server.

server.conf—————————-
dev tap
proto tcp-server
lport 5002
#mode server
ifconfig 10.0.0.1 255.255.255.0
route add 10.0.0.2 255.255.255.0 192.168.2.2
max-clients 10
#tls-server
#duplicate.cn
secret C:/Programmi/OpenVPN/config/key.txt
ping 10
verb 1
mute 10

client.conf—————————-
remote IP_del_server
proto tcp-client
rport 5002
dev tap
ifconfig 10.0.0.2 255.255.255.0
route 192.168.2.0 255.255.255.0 10.0.0.1
secret key.txt
#tls-client
ping 10
verb 1
mute 10

Ringrazio chiunque abbia la buona volontà di farmi capire dove sbaglio, in molti mi dicono mode-server e tls-server sul server altri mi dicono basta il max-clients 10, io le ho provate e riprovate, fatemi capire dove stà l’errore.

Grazie.

Pierluigi | #

Ciao ragazzi ho creato da poco un canale cifrato con openvpn a certificati pero mi piacerebbe sapere un po di teoria di quello che facci oper esempio se la ca.cer è l’autority di certificazione la server.cer è il certificato del server la server.key che cos’è? e a cosa serve?

grazie e Ciao

Marco | #

Ciao a tutti, io ho creato una vpn routed fra il mio portatile e il pc fisso e funziona e si connette, pero’ ho un piccolo problema, e sarebbe che se metto un nome host creato con no-ip mi da un errore di TLS e sembra che cerca di risolvere un indirizzo diverso e non capisco perche’!!
Mi da un 69,65.x.x invece che 151.50.x.x che e’ la classe di indirizzo che dovrebbe dare e ho libero.
Infatti se metto proprio l’indirizzo funziona! Sto facendo prove dentro casa ma per evitare che non mi risponda il router sto appunto connesso da una chiavetta internet.

gianluca | #

salve raga,

mi chiedevo se potevate aiutarmi….

sono 6 mesi che non riesco a risolvere il problema con un collegamento via internet per un gioco in multiplayer.
mio fratello che sta dall’altra parte della città non riesce a vedere il pc ed io non riesco a vedere il suo.
il gioco in questione si chiama
” dragonthrone ” .
abbiamo aperto le porte configurato il router e disattivato il firewall ma senza sucesso…..ovviamente stiamo sbagliando qualcosa…. ma cosa??????
qualcuno di voi è ingrado di darmi una soluzione? ve ne sarei infinitamente grato.
gianluca

Daniele | #

Ho una domanda per Andrea… io vorrei configurare openVPN come punto punto, quindi senza fare il bridge di rete, come faccio?? se non faccio il bridge tra le due reti e ci assegno semplicemente un indirizzo ip alla connessione VPN mi si bloccano tutte le connessioni :( heellpp meee!

veg65 | #

Ciao Andrea, ho un problema. Ho creato la VPN con OpenVPN e funziona alla grande fino al quarto client, ma quando creo dal 5° client in poi, non me li fa connettere. Perchè?
Stranamente in rete ci sono altri utenti che hanno questo problema ma nessuno ha risposto. Spero in questo blog… grazie.