lunedì 14 gennaio 2008

WAP + OpenVNP + ADSL = Internet!

Guida alla creazione di un Tunnel VPN per connessioni remote firewallate/nattate aka "Come ti bypasso il proxy". Rev.c (update 17/01/2008)
by ARCTiC
-

Premessa 1: aggirare le limitazioni di una rete di terze parti potrebbe violare la policy e il TOS del gestore della rete.

Premessa 2: la seguente guida prevede una certa preparazione e conoscenza, non e’ per neofiti, le operazioni da compiere non sono complesse, ma potreste trovarvi in difficolta’ in punti poco chiari (o non spiegati affatto perche’ dati per scontati) e non poter piu’ continuare, questo potrebbe compromettere le funzionalita’ di rete del vostro PC domestico e di quello remoto (nessuna connessione a internet).

A cosa serve?
Il “tunnel” serve ad aggirare le limitazioni imposte dal service provider (rete sotto NAT, porte TCP “chiuse”), instradando il traffico internet verso un gateway esterno. Il nostro dispositivo remoto diventerà quindi un client di una rete connessa a internet tramite un indirizzo pubblico e non sara’ “filtrata”.

Come funziona?
Il tunnel si compone di due punti, il client (che e’ il dispositivo remoto, in questa guida il nostro PocketPC), ed il server (che in questa guida sara’ il nostro PC di casa/ufficio connesso a internet attraverso un router ADSL). La connessione avviene tramite OpenVPN (freeware: www.openvpn.net) in configurazione client per il telefonino, e in configurazione server-bridged per il PC fisso.


Strumenti Necessari:
- Una macchina connessa fisicamente a internet con un SO che permetta l’installazione di OpenVPN (es: Windows, Linux). In questa guida l’installazione e la configurazione avverra’ su una macchina Windows XP Professional.
- Un’altra macchina con le medesime caratteristiche che funzioni da “client”. In questa guida verra’ utilizzato un PocketPC con Windows Mobile 6 (un HTC P3650).
- Il software OpenVPN.
- Una connessione internet “non ristretta” per il server. In questa guida verra’ utilizzata una ADSL Alice 7mbit.
- Una connessione internet “ristretta” per il client. In questa guida verra’ utilizzata una connessione Vodafone Internet WAP (tariffa 9 euro).

Naturalmente gli strumenti elencati sopra sono “generici”, e’ possibile utilizzare qualsiasi connessione internet per il server, cosi’ come la guida e’ adattabile ad altri gestori mobili (con i dovuti aggiustamenti), non potendo fare al momento una guida esaustiva ho preferito concentrarmi su una configurazione in particolare. Tenendo inoltre presente che il setup richiede un minimo di conoscenza del funzionamento di una rete, confido che chi e’ interessato a questa guida sapra’ modificare le impostazioni secondo le proprie esigenze.

Come spiegato nell’introduzione: questa non e’ guida “passo-passo”, quindi non mi soffermero’ sulla spiegazione relativa all’installazione del software (in rete sono presenti numerose guide), ma passero’ direttamente alla spiegazione della configurazione della rete e di OpenVPN (che si finalizzera’ nella preparazione dei files di configurazione).

IP e subnet utilizzate (gli IP e le subnet sono ovviamente quelle della mia rete, vanno quindi adattate alla vostra):

IP pubblico del server: myip.dyndns.org (e’ indispensabile utilizzare un servizio di pubblicazione IP se l’IP, come nella maggior parte dei casi, non e’ statico; vi rimando a
www.dyndns.org per la relativa configurazione)
IP fisico del router/gateway sulla rete domestica: 192.168.0.1
IP fisico del server: 192.168.0.3 (dopo il bridging, vedere dopo)
IP fisico del client remoto: 192.168.0.31 (notare che e’ sulla stessa sottorete)

Installazione e Configurazione:

- Installiamo OpenVPN sul server;

Al termine dell’installazione verra’ creata una scheda di rete “virtuale” (TAP), rinominiamola “OpenVPN” per comodita’. Selezioniamola insieme alla scheda di rete fisica del nostro PC (selezionandole entrambe con il mouse oppure aggiungendole tenendo tenuto il tasto CTRL), con entrambe le schede di rete selezionate, scegliamo dal menu (tasto destro) > “Connessioni con bridging”. Verra’ creato un nuovo adattatore. A questo punto il bridge diverra’ l’unico componente controllabile della rete, assegnamo allo stesso (tasto destor > proprieta’ > Protocollo TCP/IP) un ip statico (in questa guida 192.168.0.4) con subnet mask 255.255.255.0, default gateway (nel mio caso il router: 192.168.0.1) e DNS (nel mio caso uso il router come server DNS, quindi sempre: 192.168.0.1).

- Creiamo le chiavi necessarie per la rete VPN. Questo passaggio non e’ essenziale ma altamente raccomandabile! Inoltre questa guida fa utilizzo delle chiavi, quindi nel caso non le si voglia utilizzare, i files di configurazione vanno opportunamente modificati. Per la creazione vi rimando alla guida ufficiale di OpenVPN, gli strumenti per la loro creazione si trovano nella cartella “easy-rsa” di OpenVPN (dopo l’installazione). Alla fine avremo 7 files (tra certificati e chiavi), che io ho rinominato in questo modo:

ca.crt
ta.key
server.crt
server.key
client.crt
client.key
dh1024.pem


copiamoli nella directory “config” di OpenVPN sul server.

- Installiamo OpenVPN sul client;

Al termine nell’installazione (come abbiamo fatto precedentemente per il bridge) assegniamo alla scheda di rete virtuale appena creata (in Windows Mobile 6: Start > Impostazioni > Connessioni > WiFi > Schede di Rete > TAP1:) un IP statico (nel mio caso: 192.168.0.31 subnet 255.255.255.0) e il server DNS (nel mio caso il router della rete remota: 192.168.0.1). Attenzione l’IP deve appartenere alla stessa sottorete della rete remota.

- Copiamo nella anche nella directory “config” del client i certificati e le chiavi precedentemente creati: ca.crt, ca.key, client.crt, client.key, ta.key.

Andiamo ora a creare i files di configurazione OpenVPN per il server (server.ovpn) e per il client (client.ovpn). Ho preferito inserirli in questa guida “vicini” in modo che siano immediatamente confrontabili.
Nella directory “config” del server, creiamo il file server.ovpn con il seguente contenuto:

proto tcp
port 443
dev tap
dev-node OpenVPN # e’ il nome del TAP *non del bridge!*

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
#tls-auth ta.key 0 # remmata, sembra dare problemi su PocketPC

ifconfig-pool-persist ipp.txt

server-bridge 192.168.0.4 255.255.255.0
192.168.0.31 192.168.0.41

push "dhcp-option DNS 192.168.0.1"

keepalive 10 120

comp-lzo
cipher AES-256-CBC

max-clients 10

persist-key
persist-tun

#status openvpn-status.log # solo per debug
#verb 3 # solo per debug


Nella direttiva “server-bridge”, alla fine, sono indicati gli IP dei client remoti che verranno instradati verso il server.
La direttiva “port” (all’inizio) si riferisce ovviamente alla porta in ascolto del server. Perche’ ho scelto la porta 443? Perche’ e’ la porta del servizio “HTTPS”, una delle poche porte (insieme alla porta 80) aperte in genere sulle connessioni “limitate”, come su “Vodafone Internet” (WAP).

Nella directory “config” del client, creiamo il file client.ovpn con il seguente contenuto:

client
dev tap
proto tcp

remote myip.dyndns.org 443

resolv-retry infinite

nobind

persist-key
persist-tun

ca "\\Scheda di memoria\\Programmi\\OpenVPN\\config\\ca.crt"
cert "\\Scheda di memoria\\Programmi\\OpenVPN\\config\\client.crt"
key "
\\Scheda di memoria\\Programmi\\OpenVPN\\config\\client.key"
# tls-auth "\\Scheda di memoria\\Programmi\\OpenVPN\\config\\ta.key" 1

cipher AES-256-CBC

comp-lzo

#verb 3 # solo per debug

http-proxy-retry 1
http-proxy
10.128.201.76 80


La direttiva “remote” si riferisce all’indirizzo del server remoto e alla porta (l’host name del server verra’ correttamente “risolto” dalla connessione originale dal proprio server DNS, prima che il client si colleghi alla VPN e cominci l’instradamento del traffico). Il path dei certificati “ca”, “cert”, “key”, “tls-auth” dipende ovviamente dal path nel quale avete installato OpenVPN sulla macchina remota (nel mio caso punta alla scheda di memoria del mio PocketPC) e deve essere il path completo, poiche’ il file di configurazione verra’ eseguito dalla GUI esterna.
Le ultime due righe si riferiscono al server proxy sul quale verra’ instradato il traffico per uscire su internet, in questo esempio e’ il server proxy di Vodafone nel formato IP PORTA. Anche la connessione verso il nostro server sulla porta 443 passera’, com’e’ ovvio, attraverso questo proxy. Per connessioni meno limitative (es: solo porte chiuse ma nessun proxy, queste direttive vanno naturalmente rimosse).

Configurazioni finali server: la porta 443 va forwardata verso la macchina dove e’ in esecuzione il server OpenVPN (in questa guida: 192.168.0.4). Va configurato opportunamente il firewall sulla macchina, se presente.

Configurazioni finali client: va configurato il firewall sul sistema. In questa guida (relativa a PocketPC e provider Vodafone) va configurata la connessione: Start > Impostazioni > Connessioni > Connessioni > Avanzate > “Seleziona Reti”, impostate entrambi i parametri a: “Rete Ufficio”. Come modem ovviamente utilizzate l’apn “wap.omnitel.it” e non “web.omnitel.it”!!!
IMPORTANTE: Va impostato inoltre manualmente l'IP della scheda virtuale "TAP:" (Start > Impostazioni > Connessioni > WiFi > Schede di Rete > "TAP1:"), in questa guida: 192.168.0.31 e default gateway del router remoto: 192.168.0.1 e DNS server remoto: 192.168.0.1.

Lanciamo (finalmente!) il server OpenVPN (tasto destro su “server.ovpn” > “Start OpenVPN on this config file”, se tutto e’ andato bene dovrebbe mettersi in ascolto in circa 10 secondi.
Lanciamo il client OpenVPN (tasto destro su “client.ovpn” > “Start OpenVPN on this config file”), che dovrebbe collegarsi al server ed essere proiettato nella rete locale remota. Nota per PocketPC: all’installazione di OpenVPN vi apparira’ l’icona di un PC in basso a destra, assegnare al connection manager la connessione da utilizzare: tap sull’icona > utils > Settings > Settings 2 > “Rete Ufficio” (Exclusive), potete utilizzare la stessa icona per lanciare il client: tap icona > start from config > client. In questo modo la connessione GPRS WAP dovrebbe partire automaticamente quando OpenVPN tentera’ di collegarsi alla rete remota. Potete disabilitare dalla configurazione “Try to ping servers on connect” poiche’ non avete alcun modo di pingare il vostro server prima di esservi connessi.

Se tutto e’ andato secondo piani (fortunati voi che avete almeno questa guida, che “sicuramente funziona”, io non dormo da tre giorni per fare i test) adesso il vostro client e’ connesso alla rete remota e tutto il traffico e’ instradato attraverso di essa (qualsiasi cosa, anche le richieste DNS), il vostro client quindi uscira’ su internet con l’IP pubblico dell’ADSL e avra’ piena funzionalita’ di tutti gli applicativi di rete (web, email, voip, videoconferenza, remote desktop e quant’altro) il tutto facendo passare il traffico attraverso una singola porta (le porte locali vengono smistate correttamente all’uscita del tunnel, e vengono ricreate di nuovo al “ritorno”). E’ da tenere presente che avrete anche pieno accesso alla vostra rete domestica, quindi potrete “navigare” sul vostro PC locale (vedere film in streaming, ascoltare musica, collegarvi alle camere di videosorveglianza domestica, ecc.).

TODO: rendere questa guida piu’ esaustiva, scendendo nei dettagli della configurazione, per il momento non ho tempo (se qualcuno volesse prendersi la briga di renderla piu’ compresibile, gliene sarei grato). Rendere la configurazione piu’ snella: utilizzo del tunnelling con table routing creato dinamicamente tramite direttive OpenVPN. Il vantaggio sarebbe di non dover effettuare un bridge “fisico” delle schede di rete sul server, senza quindi compromettere l’architettura della rete domestica.


STEP2: installazione del server su router dedicato (OpenWRC) in modo da non doversi preoccupare di avere un PC "always on" che faccia da server. Consultabile a questo link: "Installazione OpenVPN su Router Asus WL-500G"

2 commenti:

Pappo ha detto...

Complimenti per la guida Arctic! Sono riuscito a installare la VPN e da remoto con il mio pc + wap (vodafone) riesco ad accedere alla rete del mio ufficio. Vedo tutti i pc senza problemi.
Vorrei riuscire a navigare dal mio client sfruttando la VPN ma non riesco! Un "tracert -d www.google.it" mi fa capire che riesco a risolvere i nomi a dominio (quindi dns ok) ma poi il traffico inizia ad instradarsi su ip del tipo "10.139.128.1" fino a bloccarsi in timeout...
Riesci ad aiutarmi? Devo forse usare un proxy?? Grazie.

Anonimo ha detto...

Who knows where to download XRumer 5.0 Palladium?
Help, please. All recommend this program to effectively advertise on the Internet, this is the best program!