Newsgroup: it.comp.reti.locali
Titolo: [OPENVPN-LINUX]

Sto provando a configurare una vpn tra due linuxbox, ma ho dei problemi,
spero che qualcuno possa darmi una mano.
La situazione e' questa:
SEDE A  SERVER                                   SEDE B CLIENT
ROUTER  192.168.0.1                              ROUTER   192.168.0.1
PC      192.168.0.20                             PC       192.168.0.2
Per tirare su questa benedetta VPN mi sono riferito a questa guida:
http://www.linuxguide.it/docs.php?Networking:VPN:OpenVPN
Usando Ubuntu Gutsy come distribuzione ho installato OpenVpn dai suoi
repository, ho creato le chiavi etc. etc.
Questo il file server.conf
 ##### OpenVPN Server #####
# il punto e virgola(;) serve per commentare/disabilitare la direttiva
# Avvio del servizio in modalità daemon
daemon
# Porta d'ascolta per il servizio 1194 di default
port 1194
# Protocollo di trasporto TCP, potete utilizzare anche UDP.
proto tcp
# Il device 'tun' crea tunnel IP routed, mentre 'tap' crea un tunnel
ethernet bridged
dev tun
# Certificati digitali
# Certificate Authority o root  certificate
ca /etc/openvpn/keys/ca.crt
# Certificato server
cert /etc/openvpn/keys/server.crt
# Chiave server
key /etc/openvpn/keys/server.key
# Diffie hellman parameters
dh /etc/openvpn/keys/dh1024.pem
# range VPN, assicuratevi che la rete 
10.8.0.0/24
 non sia già una rete
# utilizzata all'interno della vostra organizzazione.
server 10.8.0.0 255.255.255.0
# La direttiva push route abilita i clients a raggiungere la rete dichiarata
# Supponiamo di voler permettere ai clients vpn di comunicare con le
reti "
192.168.10.0/24
"
push "route 192.168.10.0 255.255.255.0"
# O utilizzate push route OPPURE push redirect-gateway
# push redirect-gateway, configura sui clients vpn, questo server, come
Default
# Gateway, abilitando i clients a raggiungere tutte le reti visibili dal
server!
# Sia che utilizziate la direttiva push route o gateway, ricordatevi
sempre di
# modificare le tabelle di routing sul vostro default gateway,
aggiungendo il
# range della vpn per consentire che le altre reti la possano raggiungere.
# Se non volete mettere le mani sui vostri default gateway(routers o altro)
# potete sceglire in alternativa di implementare il NAT su questo server
in
# maniera tale che tutti i clients vengano mascherati dall'ip address di
questo server.
# Per la configurazione del NAT, vai alla sezione Networking > NAT di
linuxguide.it
# push "redirect-gateway" è commentato dal punto e virgola, pertanto non
attivo.
;push "redirect-gateway"
# La seguente direttiva cominica ai clients vpn I server dns e wins
disponibili
;push "dhcp-option DNS 10.8.0.1"
;push "dhcp-option WINS 10.8.0.1"
# La seguente direttiva abilita i clients a vedere ogni altro. Di
default il client vede soltanto il server. Decommentare, per attivare la
direttiva.
client-to-client
# Keepalive, esegue un ping ogni 10 secondi e se nell'intervallo di 120
secondi
# il peer remoto non risponde si presume che il peer è down.
keepalive 10 120
#HMAC firewall, blocca eventuali attacchi DoS/UDP port flooding
tls-auth /etc/openvpn/keys/ta.key 0 # l'ultimo parametro dovrebbe essere
1 sui client 0             sui server
# Algoritmi di crittografia, client e server devono utilizzare lo stesso
algoritmo
cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
cipher DES-EDE3-CBC  # Triple-DES
# Compressione dati sul link VPN. Se attivato qui attiarlo anche sul client.
comp-lzo
# Numero max di connessioni
;max-clients 100
# Prova a riservare alcuni stati nelle fasi di restart
persist-key
persist-tun
# File di log in /var/log
status openvpn-status.log
log         openvpn.log
;log-append  openvpn.log  # scrive i logs in append
verb 3      # livello di verbosità dei logs
------------------------------------------------------------------------
Questo il client.conf
##### OpenVPN Linux Client #####
# il punto e virgola(;) serve per commentare/disabilitare la direttiva
# Avvia l'applicazione come client vpn
client
# Protocollo di trasporto TCP, potete utilizzare anche UDP.
proto tcp
# Il device 'tun' crea tunnel IP routed, mentre 'tap' crea un tunnel
ethernet bridged
# I clients Windows vogliono il device Tap
;dev tup    # se il client è windows
dev tun     # se il client è linux
# IP address/hostname e numero di porta del Server
remote 192.168.0.20 1194
#
resolv-retry infinite
nobind
# Le direttive user e group vanno dichiarate soltanto per i clients linux
user nobody
group nobody
# Certificati digitali
# Certificate Authority o root  certificate
ca /etc/openvpn/keys/ca.crt
# Certificato client
cert /etc/openvpn/keys/client.crt
# Chiave client
key /etc/openvpn/keys/client.key
#HMAC firewall, blocca eventuali attacchi DoS/UDP port flooding
tls-auth /etc/openvpn/keys/ta.key 1   #l'ultimo parametro dovrebbe
essere 1 sui client 0 sui server
# Algoritmi di crittografia, client e server devono utilizzare lo stesso
algoritmo
cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
# Compressione dati sul link VPN. Se attivato qui attiarlo anche sul client
comp-lzo
# Prova a riservare alcuni stati nelle fasi di restart
persist-key
persist-tun
verb 3      # livello di verbosità dei logs
-------------------------------------------------------------------------
Questo il risultato del comando:
/etc/openvpn$ sudo openvpn --config client.conf
Tue Jul  8 22:44:17 2008 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO]
[EPOLL] built on Jun 11 2008
Tue Jul  8 22:44:17 2008 IMPORTANT: OpenVPN's default port number is now
1194, based on an official port number assignment by IANA.  OpenVPN
2.0-beta16 and earlier used 5000 as the default port.
Tue Jul  8 22:44:17 2008 WARNING: No server certificate verification
method has been enabled.  See 
http://openvpn.net/howto.html#mitm
 for
more info.
Tue Jul  8 22:44:17 2008 WARNING: file '/etc/openvpn/keys/client.key' is
group or others accessible
Tue Jul  8 22:44:17 2008 /usr/bin/openssl-vulnkey -q -b 1024 -m <modulus
omitted>
Tue Jul  8 22:44:17 2008 Control Channel Authentication: using
'/etc/openvpn/keys/ta.key' as a OpenVPN static key file
Tue Jul  8 22:44:17 2008 Outgoing Control Channel Authentication: Using
160 bit message hash 'SHA1' for HMAC authentication
Tue Jul  8 22:44:17 2008 Incoming Control Channel Authentication: Using
160 bit message hash 'SHA1' for HMAC authentication
Tue Jul  8 22:44:17 2008 LZO compression initialized
Tue Jul  8 22:44:17 2008 Control Channel MTU parms [ L:1544 D:168 EF:68
EB:0 ET:0 EL:0 ]
Tue Jul  8 22:44:17 2008 Data Channel MTU parms [ L:1544 D:1450 EF:44
EB:135 ET:0 EL:0 AF:3/1 ]
Tue Jul  8 22:44:17 2008 Local Options hash (VER=V4): '2dcdad92'
Tue Jul  8 22:44:17 2008 Expected Remote Options hash (VER=V4): '7c7a0a5e'
Tue Jul  8 22:44:17 2008 Attempting to establish TCP connection with
192.168.0.20:1194
Tue Jul  8 22:44:20 2008 TCP: connect to 
192.168.0.20:1194
 failed, will
try again in 5 seconds: No route to host (errno=113)
Chi mi aiuta ad impostare le route? oramai sono in confusione e sto
caldo non aiuta.
Grazie a tutti quelli che risponderanno!

 spero che qualcuno possa darmi una mano.
Ciao,
i due router si collegheranno tramite Internet o via lan?
Per mantenere la stessa classe e netmask tra le due reti, mi pare sia 
necessario ricorrere al 'tap' perchè 'tun' effettua appunto un routing.
-- 
Luigi
www.Furbweb.com
+39 049 7966310
 

 necessario ricorrere al 'tap' perchè 'tun' effettua appunto un routing.
Ciao,
I due router si collegheranno tramite internet
credevo che TAP si potesse usare solo con macchine windows
quindi se facessi un bridge delle schede di rete potrebbe funzionare?

 PC      192.168.0.20                             PC       192.168.0.2
mi sono fermato nella lettura a questo punto del post... come possono 
avere le 2 reti la stessa classe di indirizzi? (presumo siano entrambe 
delle 192.168.0.x/24)
i pacchetti non arriveranno mai al default gateway, il quale instrada i 
pacchetti per le reti remote (VPN compresa)

 pacchetti per le reti remote (VPN compresa)
Rieccomi scusate ma ho avuto un po da fare  :-)
Ho finalmente risolto il problema, allora la situazione e' questa:
Indirizzamento interno delle lan
ufficio A -> 
192.168.1.0/24
ufficio B -> 
192.168.0.0/24
Indirizzi privati delle linux box dentro la lan
ufficio A -> 192.168.1.2
ufficio B -> 192.168.0.2
Indirizzi pubblici delle linux box su internet
ufficio A -> 151.XXX.XXX.XXX
ufficio B -> 79.XXX.XXX.XXX
Indirizzi delle schede tun
ufficio A -> 10.0.0.1
ufficio B -> 10.0.0.2
openvpn –genkey –secret key.txt
i comandi da dare in ufficio A sono:
lancio openvpn:
openvpn –remote 79.XXX.XXX.XXX --dev tun1 --ifconfig 10.0.0.1 10.0.0.2 
--verb 3 --persist-tun --cipher DES-EDE3-CBC --secret 
/etc/openvpn/key.txt --float --port 3002
aggiungo la regola di routing per arrivare alla lan remota in ufficio B
route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.1
i comandi da dare in ufficio B sono:
lancio openvpn:
openvpn –remote 151.XXX.XXX.XXX --dev tun1 --ifconfig 10.0.0.2 10.0.0.1 
--verb 3 --persist-tun --cipher DES-EDE3-CBC --secret 
/etc/openvpn/key.txt --float --port 3002
aggiungo la regola di routing per arrivare alla lan remota in ufficio A
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.2
l’ip forwarding DEVE essere abilitato su tutti e due i PC
disabilitato per default, si attiva con un:
echo 1 > /proc/sys/net/ipv4/ip_forward
da fare eseguire da uno scrit ad ogni boot delle macchine
Aggiungete queste regole al FIREWALL
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A OUTOUT -i tun+ -j ACCEPT
ringrazio l'autore di questo articolo:
http://www.x-privat.org/link/746700748.html
da cui ho preso praticamente spunto
saluti GGF