Installazione di OpenVPN su router Asus WL-500G Premium con firmware "OpenWRT".
Il secondo step di configurazione del progetto "Gateway Internet da cellulare" prevedeva l'utilizzo di un Router con firmware modificato (Linux) per eliminare la necessita' di dover dedicare un PC al server OpenVPN, di conseguenza tenerlo in funzione h24, con le problematiche del caso. Eccoci alla resa dei conti.
Hardware utilizzato: Router Asus WL-500-G Premium
Firmare: Linux distro Kamizaze 7.09 (http://www.openwrt.org/)
Il router in questione e' un router "puro" (privo della componente modem ADSL), quindi si appoggia (in cascata) ad un altro Modem/ADSL (nel mio caso un Netgear DG834G) connesso a internet via ADSL. L'apparecchio ha molte caratteristiche interessanti (anche senza modifcare il firmware), come la possibilita' di funzionare da archiviatore di rete (server FTP e media esterni), dispone di due porte USB (da utilizzare per chiavette USB o HD), e di un processore relativamente veloce (almeno rispetto alla concorrenza consumer) di 266Mhz. Non l'ho scelto comunque per queste funzioni, quanto piuttosto con la facilita' con la quale si puo' "flashare" (via software tramite l'uility proprietaria, quindi senza modifiche hardware) e per la piena compatibilita' con OpenWRT.
Come la precedente guida, non scendero' nei dettagli, ma illustrero' i passaggi chiave e i files di configurazione/setup utilizzati. Gli IP utilizzati saranno gli stessi della precedente configurazione (192.168.0.1 per il Router ADSL, 192.168.0.4 per il Router VPN, 192.168.0.31-33 per i client VPN).
Installazione di OpenWRT sul router
- L'installazione e' relativamente semplice, basta downloadare il firmware (Kamikaze 7.09 nel mio caso) e utilizzare l'apposita utility della Asus per il flah dell'apparecchio.
- Dopo aver fatto le dovute configurazioni: impostazione dell'IP, gateway, DNS, si passa all'installazione di OpenVPN sul dispositivo.
Installazione di OpenVPN
- OpenWRT utilizza i "ipkg" per installare nuovi "moduli", che verranno scaricati, installati e configurati (nella versione di default) automaticamente. Dalla shell del nostro router (root):
ipkg update
ipkg install openvpn
il primo comando serve per aggiornare la lista dei servizi, il secondo per installare openvpn nel sistema. Quindi creiamo la directory dove andremo ad inserire i files di configurazione di openvpn:
mkdir /etc/openvpn
- Copiamo all'interno della directory le chiavi e i certificati necessari (vedere l'altro post) e prepariamo il file di configurazione "/etc/openvpn/server.ovpn", che sara' del tutto simile a quello utilizzato sul server windows, ma con qualche piccola modifica:
proto tcp
port 443
dev tap0
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc7openvpn/dh1024.pem
server-bridge 192.168.0.4 255.255.255.0 192.168.0.31 192.168.0.33
push "dhcp-option DNS 192.168.0.1"
keepalive 10 180
push "keepalive 10 180"
comp-lzo
max-clients 3
persist-key
persist-tun
- Prepariamo adesso lo shell script per creare il bridge fra l'interfaccia ethernet del router e l'interfaccia virtuale di OpenVPN (e' l'operazione che sul server Windows abbiamo fatto unendo le due schede di rete e scegliendo l'opzione: "Connessioni con bridging". Creiamo il file "/etc/openvpn/startupscript":
#!/bin/sh
#/etc/openvpn/startupscript
# OpenVPN Bridge Config File
# Creates TAP devices for use by OpenVPN and bridges them into OpenWRT Bridge
# Taken from http://openvpn.net/bridge.html
# Define Bridge Interface
# Preexisting on OpenWRT
br="br-lan"
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
case "$1" in
up)
# Make sure module is loaded
insmod tun
# Build tap devices
for t in $tap; do
openvpn --mktun --dev $t
done
# Add TAP interfaces to OpenWRT bridge
for t in $tap; do
brctl addif $br $t
done
#Configure bridged interfaces
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
;;
down)
for t in $tap; do
ifconfig $t 0.0.0.0 down
done
for t in $tap; do
brctl delif $br $t
done
for t in $tap; do
openvpn --rmtun --dev $t
done
rmmod tun
;;
*)
echo "$0 {updown}"
;;
esac
e rendiamolo eseguibile:
chmod +x /etc/openvpn/startupscript
Non e' necessario fare alcuna modifica all'iptable o al firewall del router poiche' il router e' collegato alla LAN come un client, quindi le regole del firewall (per la WAN) non vengono prese in considerazione.
Prima di verificare che il server funzioni, e' necessario impostare l'orario e la data del router, questo e' essenziale poiche' le chiavi crittografiche hanno una data di validita', e' necessario quindi che l'orario del router sia impostato adeguatamente, e un router non ha un orologio interno, dobbiamo quindi sincronizzarlo ad ogni collegamento. Ci viene in aiuto ntp:
Impostiamo il server ntp e la timezone nella flashram del router:
nvram set ntp_server="pool.ntp.org"
nvram set time_zone="CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00 "
nvram commit
Installiamo quindi ntpclient e aggiorniamo l'orario (ai successivi riavvii o caduta/ripresa della connettivita') l'orario verra' impostato automaticamente:
ipkg install ntpclient
/usr/sbin/ntpclient -c 1 -d -s -h pool.ntp.org
Verifichiamo ora che la configurazione funzioni, avviando il bridge:
/etc/openvpn/startupscript
e poi avviando il server OpenVPN:
openvpn /etc/openvpn/server.ovpn
Proviamo a collegarci con il client e dovremmo poter navigare sia sulla rete locale che su internet, come per la precedente installazione.
Non resta ora che far eseguire il server OpenVPN al boot del router (nel caso lo spegneste, oppure andasse via la corrente):
/etc/init.d/openvpn enable
lo script installera' in "/etc/rc.d/S70openvpn" il virtual link che verra' eseguito all'avvio.
Bene, ora abbiamo il nostro gateway internet, completamente autonomo... potete spegnere il vostro PC e uscire con il vostro PPC. ;)
Visualizzazione post con etichetta openvpn. Mostra tutti i post
Visualizzazione post con etichetta openvpn. Mostra tutti i post
giovedì 17 gennaio 2008
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"
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"
Iscriviti a:
Post (Atom)