Collegare due sedi lontane con un tunnel VPN in 33 passi e una bicicletta

Guida per configurare una VPN con OpenVPN con 2 pc (pc A server, pc B client1) con sistema operativo WindowsXPpro SP2, in modalita Bridged dietro un router generico. i due computer appartengono alla stessa sottorete.Se la vostra azienda ha la necessità di collegare due computer (o più computer) fisicamente lontani per scambio di file o utilizzo di un database condiviso è necessario creare una connessione criptata utilizzando la rete internet. Le prestazioni di scambio sono vincolate alla banda disponibile. Per il tunnel criptato utilizziamo OpenVPN Gui, in versione interfaccia grafica minimale, un software Open Source per creare VPN in sicurezza, con protocolli SSL/TLS (Secure Socket Layer/Transport Layer Security). Il software crea Certificati Digitali, Smart Card.

La configurazione di OpenVPN su server e client si effettua da riga di comando, attivabile con il comando cmd da start/esegui.

OpenVPN supporta due modalità di collegamento differenti tra client e server: Bridged e Routed. Nella guida verrà usata la modalità Bridged.

L’esempio considera due pc in due sedi diverse con le seguenti configurazioni:

l’azienda ivanbrb ha

un Computer A (che a ora chiameremo server) nella sede di Via dei Tassi, 28 Fociompoli e

un Computer B (che da ora chiameremo client1) a 17 km nella filiale di Via delle Orchidee, 31

Filiale e sede sono connesse a internet con connessione Flat e router generico (forwardare la porta UDP 1194)

con ip fisso Wan 88 77 66 55 e lan 192.168.1.1

Parametri di rete Lan del server ip  192.168.1.11- nm 255.255.255.0 – gw 192.168.1.1

Parametri di rete Lan del client1 ip 192.168.1.12- nm 255.255.255.0 – gw 192.168.1.1

Le operazioni da fare sono:

  • modificare a 1 la chiave di registro
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\ParametersIPEnableRouter

  • Installazione OpenVPN GUI su server
  • Installazione della CA (Certification Authority) e generazione di chiave pubblica e privata Master
  • Generazione di Certificati e Chiavi Private per Server e Client e firma con Chiave Master
  • Generazione di chiave criptata Diffie-Hellmann
  • Generazione di una chiave statica a 2048 bit
  • Configurazione
  • Creazione del Bridging tra la nostra scheda di rete e la connessione creata da OpenVPN.
  • Installazione OpenVPN GUI su server
  • Installazione Copia su client la coppia di chiavi pubblica/privata e certificato Master della CA.
  • Verifiche

Istruzioni passo passo:

1-Scarica e installa il software OpenVPN-gui nel computer A server.

Avvia il setup e alla schermata Choose Component spunta la casella My Certificate Wizard. prosegui e termina l’installazione.

La procedura installa l’applicazione nella directory dei programmi (supponiamo C:\Programmi\OpenVPN) e crea una nuova connessione di rete (supponiamo Connessione alla rete locale (LAN) 2).

2-Da pannello di controllo/connessioni remote rinomina la connessione di rete Lan2 in OpenVPN

3-Apri un terminale dos (Pulsante Start/Esegui digita cmd) e digita cd C:\Programmi\OpenVPN\easy-rsa

4- digita il comando init-config e premi invio nella tastiera (la pressione del tasto invio è l’input che il computer attende per eseguire il comando… ed è l’unica procedura che conosco…per mancanza di tempo non ho mai provato -digitare il comando e attendere mesi perchè il mio computer capisca quello che voglio fargli fare- 😉 )

5- digita edit vars.bat e premi invio nella tastiera(vabbè lo dico nuovamente ma da ora in poi è sottinteso) si apre il file vars.bat con l’editor dos

6- personalizza i seguenti parametri (quello che segue è un esempio)

Set KEY_COUNTRY=IT

set KEY_PROVINCE=Italy

set KEY_CITY=Fociompoli

set KEY_ORG=Ivanbrb

set KEY_EMAIL=ivanbrb@ivanbrb.local

7- chiudi l’editor e salva

8- digita vars

9- digita clean-all

Installazione della CA (Certification Authority) e generazione di chiave pubblica e privata Master

10- digita build-ca e si avvierà una procedura guidata che ti propone i parametri configurati nel file vars.bat

alla riga Common Name digita OpenVPN-CA

Generazione di Certificati e Chiavi Private per Server e Client e firma con Chiave Master Procedura per server

11- digita build-key-server server

alla riga Common Name digita server

alla riga Sign the certificate? [y/n] digita y per firmare il certificato del server con il certificato Master CA.

alla riga 1 out………… commit digita y

Procedura per client1

12- digita build-key client1

alla riga Common Name digita client1

alla riga Sign the certificate? [y/n] digita y per firmare il certificato del server con il certificato Master CA.

alla riga 1 out………… commit digita y

Generazione dei parametri Diffie-Hellmann

13- digita build-dh (fedele a quanto scritto ci metterà un pò di tempo)

14- chiudi il terminale dos

15- apri Risorse del Computer e vai a C:\Programmi\OpenVPN\easy-rsa. Apri la cartella keys che contiene tutti i certificati e le chiavi private create precedentemente con il terminale.

dal menù strumenti apri la finestra Opzioni cartella, passa alla scheda Visulizzazione e nelle impostazioni avanzate togli la spunta da Nascondi le estensioni per i tipi di file conosciuti.

Applica chiudi e metti a icona la finestra.

Creazione Chiave Statica a 2048 bit

16- clicca su start / programmi / openvpn / generate a static OpenVPN key si riapre un terminale che chiede di fare qualcosa,

per non rimanere inebetiti alcuni anni davanti alla schermata premiamo invio nella tastiera e generiamo la key

Copia di Certificato Master, Server e chiave privata server

17- Dalla cartella keys copia;

ca.crt

dh1024.pem

server.crt

server.key

nella cartella C:\Programmi\OpenVPN\config che già contiene un file README.TXT e la Chiave Statica key.txt

Configurazione

18- copia dalla cartella C:\Programmi\OpenVPN\sample-config il file server.ovpn alla cartella C:\Programmi\OpenVPN\config

19- tasto destro sul file appena copiato e apri con editor preferito (puoi usare il blocco note)

Attenzione!!! Le righe precedute da # sono commenti o spiegazioni dei parametri che seguono

i parametri attivi sono in una riga senza ;

i paramentri possibili ma non attivi sono con ;

nell’esempio di seguito ci sono

14 righe commentate,

la riga 15 con punto e virgola(paramentro proposto ma non attivo)

la riga 16 senza ; (parametro attivo)

Esempio:

# “dev tun” will create a routed IP tunnel,

# “dev tap” will create an ethernet tunnel.

# Use “dev tap0” if you are ethernet bridging

# and have precreated a tap0 virtual interface

# and bridged it with your ethernet interface.

# If you want to control access policies

# over the VPN, you must create firewall

# rules for the the TUN/TAP interface.

# On non-Windows systems, you can give

# an explicit unit number, such as tun0.

# On Windows, use “dev-node” for this.

# On most systems, the VPN will not function

# unless you partially or fully disable

# the firewall for the TUN/TAP interface.

dev tap

;dev tun

nel nostro caso per modificare la scelta togli il ; dalla riga15 e lo inserisci nella riga 16.

la porzione di esempio modificata diventerà quindi:

# “dev tun” will create a routed IP tunnel,

# “dev tap” will create an ethernet tunnel.

# Use “dev tap0” if you are ethernet bridging

# and have precreated a tap0 virtual interface

# and bridged it with your ethernet interface.

# If you want to control access policies

# over the VPN, you must create firewall

# rules for the the TUN/TAP interface.

# On non-Windows systems, you can give

# an explicit unit number, such as tun0.

# On Windows, use “dev-node” for this.

# On most systems, the VPN will not function

# unless you partially or fully disable

# the firewall for the TUN/TAP interface.

;dev tap

dev tun

modifica quindi il file con i seguenti parametri

dev tun

dev-node “OpenVPN”

;server 10.8.0.0 255.255.255.0

server-bridge 192.168.1.11 255.255.255.0 192.168.1.50 192.168.1.100

client-to-client

tls-auth key.txt 0 # This file is secret

max-clients 10

Salva il file

20- Crea una cartella sul desktop di nome Client1.

copia dalla cartella C:\Programmi\OpenVPN\easy-rsa\keys i file

ca.crt

client1.crt

client1.key

e dalla cartella C:\Programmi\OpenVPN\config il file

key.txt

copia inoltre il file di setup di OpenVPN scaricato al punto 1.

Inserisci una chiavetta usb o altro e copia la cartella Client1

Creazione del Bridging tra la nostra scheda di rete e la connessione creata da OpenVPN

21- Apri la cartella Connessioni remote. Seleziona la tua “Connessione alla rete locale (lan)” e la connessione “OpenVPN”. Tasto destro e seleziona connessioni con bridging

rinomina la connessione appena creata in “OpenVPN Bridge” e imposta i parametri TCP/IP come la tua scheda di rete

22- dai un Connect in basso a dx di fianco all’orologio tasto destro sull’icona OpenVPN

se è tutto corretto ti apparirà un avviso che il server è connesso.

23- prendi la bicicletta e fatti i 17 km fino a via delle orchidee

Se hai dimenticato/a le chiavi prova a vedere se la gina è in casa e fatti dare quelle di scorta,

se hai dimenticato/a la chiavetta usb torna a via dei Tassi io non lo saprò mai e tu non dirlo a nessuno.

Accendi il client…

25- Installa openvpn senza spuntare la casella

My Certificate Wizard.

26-da pannello di controllo/connessioni remote rinomina la connessione di rete Lan2 in OpenVPN

27- copia i file dalla cartella client1 nella chiavetta (escluso il file di setup di OpenVPN) avrai quindi oltre al già presente README.txt questi file:

ca.crt

client1.crt

client1.key

key.txt

28- copia dalla cartella C:\Programmi\OpenVPN\sample-config il file client.ovpn alla cartella C:\Programmi\OpenVPN\config

29- rinominalo in client1.ovpn

30- tasto destro sul file appena rinominato e apri con editor preferito (puoi usare il blocco note) inserisci questi parametri modificando le righe esistenti

dev tun

dev-node “OpenVPN”

remote 88 77 66 55:1194

ca ca.crt

cert client1.crt

key clent1.key

ns-cert-type server

tls-auth key.txt 1

salva il file

31- crea il bridging tra le due schede e configura

32- connect openvpn

ti appare un messaggio che sei connesso/a e che ti è stato assegnato l’IP 192.168.1.50

33- da risorse di rete cerca il pc server e naviga nelle cartelle condivise.

Attenzione: potrebbe essere necessaria una modifica della configurazione del router

Comments
  1. giuseppe piscitello

    scusa ma non mi è chiaro un passaggio, nell’introduzione parli di ip 192.168.1.11 e .12 per i pc delle due sedi. Nella modifica del file server.ovpn riporti questi indirizzi server-bridge 192.168.1.11 255.255.255.0 192.168.1.50 192.168.1.100 e qui non capisco cosa fare.
    grazie

  2. Salvatore

    Ciao, mi da errore quando voglio connettere il client. mi espliciti l’intero file client1.ovpn?

    grazie

  3. admin

    per aiutarti mi

    dovresti dire quale errore comunque ecco il file richiesto

    ##############################################

    # Sample client-side OpenVPN 2.0 config file #

    # for connecting to multi-client server. #

    # #

    # This configuration can be used by multiple #

    # clients, however each client should have #

    # its own cert and key files. #

    # #

    # On Windows, you might want to rename this #

    # file so it has a .ovpn extension #

    ##############################################

    # Specify that we are a client and that we

    # will be pulling certain config file directives

    # from the server.

    client

    # Use the same setting as you are using on

    # the server.

    # On most systems, the VPN will not function

    # unless you partially or fully disable

    # the firewall for the TUN/TAP interface.

    ;dev tap

    dev tun

    # Windows needs the TAP-Win32 adapter name

    # from the Network Connections panel

    # if you have more than one. On XP SP2,

    # you may need to disable the firewall

    # for the TAP adapter.

    ;dev-node MyTap

    dev-node “OpenVPN”

    # Are we connecting to a TCP or

    # UDP server? Use the same setting as

    # on the server.

    ;proto tcp

    proto udp

    # The hostname/IP and port of the server.

    # You can have multiple remote entries

    # to load balance between the servers.

    remote 88 77 66 55:1194
    ;remote my-server-2 1194

    # Choose a random host from the remote

    # list for load-balancing. Otherwise

    # try hosts in the order specified.

    ;remote-random

    # Keep trying indefinitely to resolve the

    # host name of the OpenVPN server. Very useful

    # on machines which are not permanently connected

    # to the internet such as laptops.

    resolv-retry infinite

    # Most clients don’t need to bind to

    # a specific local port number.

    nobind

    # Downgrade privileges after initialization (non-Windows only)

    ;user nobody

    ;group nobody

    # Try to preserve some state across restarts.

    persist-key

    persist-tun

    # If you are connecting through an

    # HTTP proxy to reach the actual OpenVPN

    # server, put the proxy server/IP and

    # port number here. See the man page

    # if your proxy server requires

    # authentication.

    ;http-proxy-retry # retry on connection failures

    ;http-proxy [proxy server] [proxy port #]

    # Wireless networks often produce a lot

    # of duplicate packets. Set this flag

    # to silence duplicate packet warnings.

    ;mute-replay-warnings

    # SSL/TLS parms.

    # See the server config file for more

    # description. It’s best to use

    # a separate .crt/.key file pair

    # for each client. A single ca

    # file can be used for all clients.

    ca ca.crt

    cert client1.crt

    key client1.key

    # Verify server certificate by checking

    # that the certicate has the nsCertType

    # field set to “server”. This is an

    # important precaution to protect against

    # a potential attack discussed here:

    # http://openvpn.net/howto.html#mitm

    #

    # To use this feature, you will need to generate

    # your server certificates with the nsCertType

    # field set to “server”. The build-key-server

    # script in the easy-rsa folder will do this.

    ns-cert-type server

    # If a tls-auth key is used on the server

    # then every client must also have the key.

    tls-auth ta.key.txt 1

    # Select a cryptographic cipher.

    # If the cipher option is used on the server

    # then you must also specify it here.

    ;cipher x

    # Enable compression on the VPN link.

    # Don’t enable this unless it is also

    # enabled in the server config file.

    comp-lzo

    # Set log file verbosity.

    verb 3

    # Silence repeating messages

    ;mute 20

  4. Danilo

    Buongiorno Ivano, mi chiamo Danilo e da un pò mi stò appassionando al mondo delle reti lan, e le sue potenzialità.
    Ho letto con molto interesse questo post.

    Per il mio progetto di vpn, vorrei utilizzare due NAS, un server ed un client, che supportano OpenVPN più o meno nativamente. Ho a disposizione un Synology ed un WD Mybook, quest’ultimo con OpenVPN tramite repository.
    Lo scopo sarebbe quello che i due nas siano non solo utilizzati per la loro funzionalità di storage di rete, ma anche per tenere in piedi la vpn, evitando di tenere accesi ulteriori dispositivi.

    Chiedo se per cortesia mi potresti indicare il sistema, in linea di max, affinchè i dispositivi (pc, stampanti, etc) si “vedano” e si “parlino” tra le due reti, ovvero come se fossero tutti fisicamente connessi in unica rete locale.

    Specificando che il post qui sopra sarà sicuramente oggetto di studio per le prossime notti, ringrazio anticipatamente per l’attenzione.

    Danilo (UD)

ADD YOUR COMMENT