Guida all'uso di OpenVPN su Win32 per impostare una VPN attraverso firewall/NAT per il gioco in rete


(Questa è una versione tradotta automaticamente dalla [versione inglese])

Di recente ho re-installato Windows perché volevo usare Falcon4AF, una (l'unica) applicazione che non ha un equivalente migliore su Linux, e l'emulazione di Wine non è perfetta con le DX9. La ragione di creare una VPN su Win32 viene dalla necessità di consentire a tutti i giocatori della nostra associazione PVI di potersi connettere insieme in rete per giocare con il simulatore di volo militare di F-16 Lead-Pursuit Falcon4 Allied Force. Qui in Italia molti utenti hanno sottoscritto un contratto con Fastweb, che offre una connessione LAN bidirezionale in fibra ottica con una velocità di 10 Mbps. Il problema è che la connessione è una connessione LAN, e quindi vi danno un indirizzo IP privato, e l'apparato per il NAT/Firewall sta nell'edificio del provider. Gli utenti non hanno accesso alla configurazione del port forwarding. Ogni client Falcon4AF (anche se non usato per ospitare una sessione), funziona come un server in ascolto sulle porte UDP 2934 e 2935 per lo scambio di pacchetti con gli altri giocatori.

Utilizzando una VPN, si crea una LAN geografica, quindi:
1 - usiamo tutti indirizzi privati, all'interno della VPN il port forwarding non è richiesto.
2 - due o più computer possono condividere lo stesso indirizzo IP pubblico, come un server dedicato per Falcon e un altro computer usato per il volo con un pilota nella stessa casa.
3 - come un effetto collaterale VPN crittografa tutto il traffico all'interno di un tubo, e così nessuno può vedere, copiare o tracciare il nostro traffico. Così siamo in grado di condividere file, utilizzando il semplice e insicuro protocollo di condivisione file di Windows, ma protetti nel tubo della VPN. Il protocollo Condivisione File di Win32 normalmente è uno protocollo solo per LAN, e non è possibile utilizzarlo su Internet. Usato all'interno di una VPN, può essere utilizzato come protocollo geografico. Con questo metodo ci scambiano Briefing, file ACMI, utilities, profili di joystick e Mumble/Teamspeak, immagini catturate, filmati, scenari grandi gigabytes, e così via ...

Falcon4AF è una vecchia applicazione che è scritta con una tecnologia che funziona bene solo su Windows, e Win32 non è dotato di una implementazione VPN sicura. Così abbiamo dovuto scegliere una soluzione disponibili sulla rete.

Non abbiamo scelto Hamachi perché non è open source, e quindi:
1 - Quando ci si connette tramite il client Hamachi, ci si connette al server di Hamachi. Tutto il traffico passa attraverso il server di Hamachi. Non sappiamo che cosa facciano con i nostri pacchetti, li possono sniffare, copiare, salvare, loggare, ... è una violazione della privacy. Sicuramente hanno una back-door, perché non rilasciano i sorgenti del loro programma.
2 - I server di Hamachi sono spesso molto sovraccarichi. Sperimenteremmo ritardi, un sacco di latenza, blocchi e così via. Il problema è che migliaia di clienti provenienti da tutto il mondo si connettono a pochi server di Hamachi.
3 - Abbiamo sempre almeno una connessione di rete che è un ADSL, in questo modo possiamo gestire la configurazione del NAT / PortForwarding. Utilizziamo il PC che sta dietro questa connessione per ospitare la connessione VPN, noi tutti ci connettiamo al server VPN, e poi chiunque di noi può ospitare la campagna/TE di Falcon4AF.

Abbiamo scelto OpenVPN perché:
1 - è opensource (quindi non ci sono back-door)
2 - è cross-platform (lavora anche su Linux)
3 - è molto ben documentato e supportato
4 - permette di scegliere dove mettere il server della VPN.
Noi utilizziamo un apposito server VPN con IP fisso e una banda di 4Mbps bidirezionale, che è sempre libero per noi e quindi molto rapido, ma non è obbligatorio, alcune volte qualcuno che ha il router ADSL configurabile hosta la VPN.
Solamente sul NAT/Firewall del server VPN, è necessario inoltrare la porta UDP 1194 di OpenVPN, come standardizzato nella IETF RFC.

OpenVPN è molto generico, lavora in diversi sistemi operativi, può emulare una VPN di livello 2 o L3, punto-punto o multi-punto, supporta il routing e ha molte opzioni avanzate di rete. La configurazione può essere un po' difficile se non si sa molto di protocolli IP e LAN Ethernet. Io mi sono letto l'HowTo sul sito Web, ho provato la procedura con due amici, e ho scritto questa semplice guida passo-passo per Falcon4AF solo su Win32. Ora usiamo OpenVPN due giorni a settimana per il nostro volo in rete. Dalla documentazione di OpenVPN, non sembra esserci un limite al numero di client che possono connettersi contemporaneamente. Nel file di configurazione si può limitare a 100 o quello che volete. In realtà noi abbiamo sperimentato un massimo di 15 giocatori da tutta Italia.

Installazione del programma OpenVPN (valido sia per il Server che per i Clients)

01 - Apri il browser, digita l'indirizzo:
        http://openvpn.net/

02 - clicca sul menu in alto "Community Project" e poi nel menù a discesa "Download". Punta a:
        http://openvpn.net/index.php/open-source/downloads.html

03 - scarica dal link: "openvpn-2.1.4-install.exe"
     che punta a
:
       
http://swupdate.openvpn.net/community/releases/openvpn-2.1.4-install.exe
04 - Installa OpenVPN. Se compare l'avviso "this program is not Microsoft certified", continua.
     Ricorda che le applicazioni opensource non possono permettersi di pagare il processo di certificazione presso Microsoft, perché sono software libero.

06 - (opzionale) se vuoi la GUI in italiano, all'indirizzo:
        http://openvpn.se/
07 - (opzionale) clicca sul menù a sinistra: "Download, Stable" che punta a:
        http://openvpn.se/download.html

08 - (opzionale) clicca su: "Localized Versions",
    
scegli la tua lingua per l'applicazione GUI. Io ho scelto:
        Italian   openvpn-gui-1.0.3-it.exe
    
che punta a:
       
http://openvpn.se/files/localized/binary/1.0.3/openvpn-gui-1.0.3-it.exe
09 - (opzionale) Copia il file "openvpn-gui-1.0.3-it.exe" nella cartella "\Programmi\OpenVPN\bin"
10 - (opzionale) Crea un collegamento all'eseguibile "openvpn-gui-1.0.3-it.exe" e mettilo sul desktop.

Non dimenticare di disattivare il firewall sulla nuova scheda di rete virtuale "TAP-Win32 Adapter V9":
Menù Start, Impostazioni, Pannello di Controllo, Firewall, tab Avanzate, nella lista in alto, selezionate la nuova interfaccia virtuale, e togliete la spunta, premete OK.
Questa è utilizzata solo all'interno della rete VPN autenticata a
chiave pubblica, per cui non ha bisogno di un altro metodo di protezione.

Istruzioni passo passo per OpenVPN sul server

Sorgente originale della guida:
http://openvpn.net/index.php/open-source/documentation/howto.html

A - Configurazione del Server, da fare solo la prima volta

11 - creare una directory: \Programmi\OpenVPN\easy-rsa\keys
12 - dal prompt dei comandi, andare nel direttorio: \Programmi\OpenVPN\easy-rsa\
13 - lanciare: init-config
14 - editare il file vars.bat impostando queste variabili:
     
set KEY_COUNTRY=IT
     
set KEY_PROVINCE=RM
      set KEY_CITY=Roma
      set KEY_ORG=PVI
      set KEY_EMAIL=mail@pvi.it
15 - lanciare: vars.bat
16 - lanciare: clean-all
17 - lanciare: build-ca
    
alle domande lasciare il default (premere invio) tranne:
    
Common Name (eg, your name or your server's hostname) []:
    
a cui rispondere con "PVI-CA" (senza le virgolette)
18 - lanciare: build-key-server server
    
alle domande lasciare il default (premere invio) tranne:
    
Common Name (eg, your name or your server's hostname) []:
    
a cui rispondere con "PVIserver" (senza le virgolette)
    
Alle ultime due domande (sign e commit) rispondere "y"

B - Creare i certificati per i clients, da fare solo la prima volta

19 - nella directory: \Programmi\OpenVPN\easy-rsa\keys
     dovrebbero esserci i file:
    
01.pem (configurazione criptazione del server)
    
ca.crt (certificato della CA)
    
ca.key (chiave segreta della CA)
    
index.txt (contenente solo una riga, quella del server)
    
serial    (contenente 01)
20 - lanciare \Programmi\OpenVPN\easy-rsa\vars.bat
21 - lanciare: build-key XXclient   (per XX conta in esadecimale su 2 cifre, partendo da 02)
22
- lasciare il default a tutto tranne:
    
Common Name (eg, your name or your server's hostname) []:
    
e inserire "02client" (senza le virgolette)
    
Alle ultime due domande (sign e commit) rispondere "y"
23 - ripeti i passi 21-22 per ogni client necessario, aumentando XX.
     Ricorda che in esadecimale dopo 09 c'è 0A. Quindi, la sequenza è:
        02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F,20,21,...
24 - esegui: build-dh (che impiega molti secondi per creare: dh1024.pem)

C - Creare i file di configurazione, da fare solo la prima volta

25 - vai alla directory \Programmi\OpenVPN\sample-config
26 - copia "server.ovpn" e "client.ovpn" in:
        \Program Files\OpenVPN\easy-rsa\keys
     torna alla directory \Program
mi\OpenVPN\easy-rsa\keys
26 - modifica il file "server.ovpn" e modifica queste linee:
      + Scommentare la linea:
          "; a.b.c.d locale"
        togliendo il ";"
      + Cambia: "abcd" con l'indirizzo IP privato locale del server.
        Per scoprire qual'é, aprire un prompt dei comandi e digitare "ipconfig"
        Esempio: "locale 192.168.1.1"
        Se il server usa un IP pubblico senza NAT, utilizzare qui questo indirizzo.
      + Scommentare: "; dev tap" e commentare: "dev tun"
      + Scommentare: "client-to-client"
27 - rinominare il file "client.ovpn" in "02client.ovpn" e modificare:
      + Scommentare: "; dev tap" e commenta: "dev tun"
      + Cambiare la linea: "remote my-server-1 1194"
        con il vero indirizzo IP publico del server OpenVPN.
        Esempio: "remote 98.79.203.178 1194"
      + Cambiare la linea: "cert client.crt"
        in: "cert 02client.crt"
      + Cambiare la linea: "key client.key"
        in: "key 02client.key"
28 - copiare il file "02client.ovpn" in "XXclient.ovpn" e modificare:
      + Cambiare la linea: "cert 02client.crt"
        in: "cert XXclient.crt"
      + Cambiare la linea: "key 02client.key"
        in: "key XXclient.key"
29 - ripetere il passaggio 28 per ciascun client di cui avete bisogno.

D - Preparazione pacchetti con le chiavi, da fare solo la prima volta

30  - copiare i file:
    
01.pem (opzionale)
    
ca.crt
    
ca.key
    
dh1024.pem
    
index.txt
    
index.txt.attr
    
serial
     server.crt
     server.csr
     server.key
     nella cartella \Programmi\OpenVPN\config del server
31 - copiare i file:
    
ca.crt
     dh1024.pem
     nella cartella \Programmi\OpenVPN\config di tutti i client
32 - copiare i file:
     NNclient.crt
     NNclient.csr
     NNclient.key
     NN.pem
     nella cartella \Programmi\OpenVPN\config del client NN
     Crea un archivio "XXclient.7zip", uno per ogni client.

E - Attivare il server OpenVPN, da fare tutte le volte

33 - eseguire l'applicazione GUI "openvpn-gui-1.0.3-it.exe".
     Compare una nuova icona vicino orologio, con due monitor rossi
34 - fare clic con il tasto destro sull'icona
35 - selezionare "server" > connect
     I due monitor diventano prima gialli durante la negoziazione, e poi verdi quando è creata la VPN.
36 - eseguire Falcon4AF, scegliere Multiplayer, e creare il server di missione.


Istruzioni passo passo per OpenVPN sui clients

A - Installazione del Programma, da fare solo la prima volta

01-10 Prima segui le istruzioni dei punti 01-10 sopra riportate

B - Configurazione del Programma, da fare solo la prima volta

11 - copiare il file "common.zip" nella cartella \Programmi\OpenVPN\config
12 - scompattarlo sempre in \Programmi\OpenVPN\config
13 - copiare il file "NNclient.zip" nella cartella \Programmi\OpenVPN\config
14 - scompattarlo sempre in \Programmi\OpenVPN\config

C - Connessione, da fare tutte le volte

15 - lanciare il programma "openvpn-gui-1.0.3-it.exe".
    
Compare un'icona vicino all'orologio con due monitor rossi
16 - cliccare con il tasto destro sull'icona
17 - selezionare "NNclient" > connetti

OPTIONAL

Per disabilitare la cifratura del traffico e tenere solo l'autenticazione a chiave pubblica

Imposta "cipher none". Va messo sia sul server che su tutti i clients.
Disabiliterà la criptazione del traffico e creerà un tunnel IP non cifrato, ma mantenere attiva l'autenticazione con chiave pubblica per il collegamento. Questo può accelerare e rendere più leggera la connessione per qualche vecchio PC, al prezzo che tutto il traffico non è criptato, quindi un hacker in ascolto teoricamente potrebbeo intercettare il traffico. In ogni caso solo un provider o con accesso ai router o un amministratore, o la polizia. Con classe Pentium4 computer non si sente differenza con la crittografia on o off, quindi tenetela attiva se possibile.

Per condividere files

come i documenti delle missioni, degli armamenti, le pillole, i file ACMI a fine missione, gli scenari grandi anche centinaia di Megabyte, ecc...).

Sul server create un nuovo utente con nome utente: "utente" e la password: "pass" (scegliete quello che volete).
Create due nuove cartelle sotto C:\ chiamate "FalconUpload" e "FalconDownload".
Alla directory "FalconUpload" date i permessi di scrittura a tutti.

Sui computer client:

- collegatevi ad un server con OpenVPN (necessario anche per chi non ha Fastweb)
- Aprite Esplora Risorse: Menu Start, Programmi, Accessori, Esplora Risorse
- Menu Strumenti, Connetti unità di rete...
- nella finestra che vi si apre, a fianco di "Cartella:" digitate:
    
\\10.3.0.1\FalconUpload
- cliccate su "nome utente diverso"
- a fianco di "Nome utente:" digitate: "10.3.0.1\utente"
- a fianco di "Password:" digitate: "pass"
- OK, Fine.
Nel vostro computer vi comparirà una nuova lettera di unità su cui potrete mettere i file da condividere con gli altri.
Tenete presente che in quella cartella tutti possono leggere, scrivere e cancellare.
Sta agli amministratori (Luca e Roberto) spostare con VNC, i file da tenere archiviati nella cartella:
   \FalconDownload

A quel punto da li possono essere scaricati da tutti usando il link:
  
\\10.3.0.1\FalconDownload
come nome di cartella. In questa cartella tutti hanno il diritto di leggere, ma nessuno di scrivere e cancellare. Insomma fa da archivio permanente dei file utili e grandi al gruppo Falchi.
Consiglio di dividere la cartella in sottocartelle per argomenti come facevamo fin'ora su Yahoo Gruppi.

Links

OpenVPN homepage:
http://openvpn.net/

OpenVPN Documentation HowTo:
http://openvpn.net/index.php/open-source/documentation/howto.html

OpenVPN download page:
http://openvpn.net/index.php/open-source/downloads.html

OpenVPN download file:
http://swupdate.openvpn.net/community/releases/openvpn-2.1.4-install.exe

OpenVPN Win32 GUI homepage:
http://openvpn.se/

OpenVPN Win32 GUI download page:
http://openvpn.se/download.html

OpenVPN Italian Win32 GUI download file:
http://openvpn.se/files/localized/binary/1.0.3/openvpn-gui-1.0.3-it.exe


Go to EFA programming page
Back to main page:  EFA home page

Web site showed  times since 01/04/2000. 
From 20/10/1999 - 31/03/2000 the counter showed 770 visits, but it was resetted from the provider (so add 770 ...)

Copyright (C) 2006,2007,2008,2009,2010,2011  Valerio Messina http://users.iol.it/efa
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts
and no Back-Cover Texts.  A copy of the license is included in the section entitled "GNU Free Documentation License" or
can be downloaded at: http://www.gnu.org/licenses/fdl.html