PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenVPN mit DD-WRT



Vrob
25.11.06, 22:06
Hallihallöle!

Ich habe mir einen Linksys WRT54GL gekauft und dort die DD-WRT v23SP2 VPN Firmware draufgeflasht.
Mein erklärtes Ziel ist es, von außerhalb auf die Daten, die meine Netzwerkplatte zur Verfügung stellt (NFS und Samba), zugreifen zu können. Also bin ich wie unter http://www.dd-wrt.com/wiki/index.php/OpenVPN#Server_mode_with_Certificates beschrieben vorgegangen und habe auch bereits eine Verbindung von außerhalb erfolgreich hinbekommen, allerdings kann ich nicht einmal Hosts in meinem Heimnetzwerk pingen etc. und sämtlicher Traffic läuft auch nicht übers VPN sondern direkt ins Netz.

Ich habe auch schon mehrere VPN - Anleitungen probiert (inkl. dem hier angegebenen O-VPN Tutorials) aber leider hat nichts funktioniert (ich vermute, dass das mit den Eigenheiten von OpenVPN auf einem DD-WRT zusammenhängt, da dort ja nur stark eingeschränkte Resourcen zur Verfügung stehen und vermutlich spezielle Konfigurationen nötig sein könnten.

Vielen Dank schonmal,
Vrob

cane
26.11.06, 18:57
Wie sehen die Configs aus?
Was sagen die Logs?

Hellsehen kann hier niemand ;)

mfg
cane

Vrob
26.11.06, 21:31
Naja, die Configs sehen im Grunde so aus, wie auf der Seite beschrieben:

Also mein DD-WRT Startupskript sieht wie folgt aus:



# OpenVPN Config
cd /tmp
openvpn --mktun --dev tap0
brctl addif br0 tap0
ifconfig tap0 0.0.0.0 promisc up

echo "
# Tunnel options
mode server # Set OpenVPN major mode
proto tcp-server # Setup the protocol (server)
port 1194 # TCP/UDP port number
dev tap0 # TUN/TAP virtual network device
keepalive 15 60 # Simplify the expression of --ping
daemon # Become a daemon after all initialization
verb 3 # Set output verbosity to n
comp-lzo # Use fast LZO compression

# OpenVPN server mode options
client-to-client # tells OpenVPN to internally route client-to-client traffic
duplicate-cn # Allow multiple clients with the same common name

# TLS Mode Options
tls-server # Enable TLS and assume server role during TLS handshake
ca ca.crt # Certificate authority (CA) file
dh dh1024.pem # File containing Diffie Hellman parameters
cert server.crt # Local peer's signed certificate
key server.key # Local peer's private key
" > openvpn.conf

echo "
-----BEGIN CERTIFICATE-----
#Mein Zertifikat
-----END CERTIFICATE-----
" > ca.crt
echo "
-----BEGIN RSA PRIVATE KEY-----
#Mein Key
-----END RSA PRIVATE KEY-----
" > server.key
chmod 600 server.key
echo "
-----BEGIN CERTIFICATE-----
#Mein Wert
-----END CERTIFICATE-----
" > server.crt
echo "
-----BEGIN DH PARAMETERS-----
#Meine Werte
-----END DH PARAMETERS-----
" > dh1024.pem

sleep 5
ln -s /usr/sbin/openvpn /tmp/myvpn
/tmp/myvpn --config openvpn.conf


DD-WRT Firewall-Skript:



/usr/sbin/iptables -I INPUT -p tcp --dport 1194 -j ACCEPT


Das Client-Script:



tls-client
dev tap
proto tcp-client
remote meindyndnsadresse 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /meine/ca.crt
cert /meine/client1.crt
key /meine/client1.key
ns-cert-type server
comp-lzo
verb 3


Im Grunde kommt ja die Verbindung zustande, aber es gehen keine Pakete ins VPN bzw. kommen raus.

Vrob

cane
27.11.06, 00:25
Im Grunde kommt ja die Verbindung zustande, aber es gehen keine Pakete ins VPN bzw. kommen raus.

Was heißt das jetzt?

Beleg das doch bitte mit Logs...

mfg
cane

Vrob
28.11.06, 15:43
Also die Eingabe auf meinem Client gibt folgendes aus:



markus@vrob-notebook:~$ sudo openvpn --config /home/markus/vpn/openvpn/openvpn.conf
Tue Nov 28 15:37:27 2006 OpenVPN 2.0.7 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Sep 13 2006
Tue Nov 28 15:37:27 2006 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 Nov 28 15:37:27 2006 WARNING: file '/home/markus/vpn/openvpn/client1.key' is group or others accessible
Tue Nov 28 15:37:27 2006 LZO compression initialized
Tue Nov 28 15:37:27 2006 Control Channel MTU parms [ L:1576 D:140 EF:40 EB:0 ET:0 EL:0 ]
Tue Nov 28 15:37:27 2006 TUN/TAP device tap0 opened
Tue Nov 28 15:37:27 2006 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Tue Nov 28 15:37:27 2006 Local Options hash (VER=V4): '31fdf004'
Tue Nov 28 15:37:27 2006 Expected Remote Options hash (VER=V4): '3e6d1056'
Tue Nov 28 15:37:27 2006 Attempting to establish TCP connection with 88.73.145.86:1194
Tue Nov 28 15:37:27 2006 TCP connection established with 88.73.145.86:1194
Tue Nov 28 15:37:27 2006 TCPv4_CLIENT link local: [undef]
Tue Nov 28 15:37:27 2006 TCPv4_CLIENT link remote: 88.73.145.86:1194
Tue Nov 28 15:37:28 2006 TLS: Initial packet from 88.73.145.86:1194, sid=70588ae0 08b684e9
Tue Nov 28 15:37:29 2006 VERIFY OK: depth=1, /C=DE/ST=Berlin/L=Berlin/O=HomeLAN/CN=HomeLAN/emailAddress=markus.heuser@web.de
Tue Nov 28 15:37:29 2006 VERIFY OK: nsCertType=SERVER
Tue Nov 28 15:37:29 2006 VERIFY OK: depth=0, /C=DE/ST=Berlin/O=HomeLAN/CN=server/emailAddress=markus.heuser[at]web.de
Tue Nov 28 15:37:31 2006 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Nov 28 15:37:31 2006 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Nov 28 15:37:31 2006 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Nov 28 15:37:31 2006 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Nov 28 15:37:31 2006 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Tue Nov 28 15:37:31 2006 [server] Peer Connection Initiated with 88.73.145.86:1194
Tue Nov 28 15:37:32 2006 Initialization Sequence Completed


Logs direkt auf dem Router gibt es leider nicht, da der ja nur ein begrenztes Speichervermögen von ein paar MByte hat.

Anhand der o.g. Ausgabe gehe ich davon aus, dass die OpenVPN-Verbindung steht, allerdings kann ich weder Hosts im vermeintlichen LAN Pingen



ping 192.168.6.3


Führt zum Timeout.

Lasse ich mir meine IP von diversen Webseiten anzeigen, so stimmt sie nicht mit der des Routers sondern des Anschlusses, von dem aus ich die VPN-Verbindung aufgebaut habe, überein.
Es werden also keinerlei Pakete ins VPN geroutet :(

Vrob

PS: Die Sache mit den Zugriffsberechtigungen werd ich gleich noch ändern ;)

cane
28.11.06, 16:07
Tue Nov 28 15:37:27 2006 WARNING: file '/home/markus/vpn/openvpn/client1.key' is group or others accessible

Das zurest mal ändern.

Dann bitte die Routingtabelle prüfen (route -n)

mfg
cane

Vrob
28.11.06, 16:39
Die Zugriffsrechte hab ich direkt im Anschluss an den Post geändert.



markus@vrob-notebook:~$ route -n
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.178.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.178.1 0.0.0.0 UG 0 0 0 eth0


Offensichtlich fehlt ja eine Route fürs VPN :(

Ich sollte vielleicht erwähnen, dass ich den Laptop (mit dem ich ins VPN möchte), sowohl bei meiner Freundin, bei mir zu Hause als auch in der Uni einsetze und daher keine statische Konfiguration benutze, sondern den NetworkManager mit KNetworkManager als Frontend unter KDE.

Grüße und vielen Dank,
Vrob

cane
28.11.06, 17:26
Routen in die OpenVPN Config reinschreiben.

Am einfachsten ists aufm Server da der die korrekten Routen dann jedem client pushen kann.

Schau mal in http://vpnforum.de/ - da gibts nette Vorlagen

mfg
cane

PyroMUC
29.11.06, 13:27
Servus.

Folgendes anpassen und in die client.ovpn



route-gateway 10.8.0.1 #VPN IP vom Server
route 192.168.1.0 255.255.255.0 #Dein Netz


PyroMUC

Vrob
30.11.06, 13:15
Also gut, ich hab den Ansatz von PyroMUC mal verfolgt und folgendes zu meiner client.conf hinzugefügt:



route-gateway 10.8.0.1 #VPN IP vom Server
route 192.168.6.0 255.255.255.0 #Dein Netz

Angepasst habe ich die zweite Zeile, da mein Netz 192.168.6.0 ist.
Allerdings wusste ich nicht, welche IP mein Server im VPN hat, deshalb hab ich den vorgeschlagenen Eintrag gelassen ;)

Vielleicht sollte ich auch noch etwas zum Hintergrund erzählen:

Wie gesagt geht es mir ja darum, die Samba- bzw. zur Not auch NFS-Mounts meiner Netzwerkfestplatte von unterwegs nutzen zu können.

Im Grunde gibt es da zwei Szenarien:
1. Ich bin in der Uni.
Hier mache ich mir nicht allzuviel Hoffnungen, da die Uni zwar ein WLAN bereitstellt, man jedoch nur dann ins Internet bzw. die internen Resourcen zugreifen kann, wenn man entweder den offiziellen Cisco-VPN Client (den es zum Glück auch für Linux gibt) oder einen PPTP-Client benutzt, was möglich ist, da der Informatik/Mathematik-Fachbereich ein eigenes Funknetzwerk betreibt (ich weiß... verworren ;) ). Ich habe also die Qual-der-Wahl sozusagen.
Zur Zeit nutze ich noch den Cisco-Client, da ich das PPTP-Netz bis jetzt noch nicht zum Laufen bekommen habe.
Ob man nun durch das VPN ein weiteres VPN aufbauen kann, weiß ich leider nicht.

Die unveränderte Routing-Tabelle, wenn ich mich im Cisco-VPN befinde, sieht wie folgt aus:



markus@vrob-notebook:~$ route -n
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
172.24.0.2 172.25.0.1 255.255.255.255 UGH 0 0 0 eth1
87.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 cipsec0
0.0.0.0 87.77.193.140 0.0.0.0 UG 0 0 0 cipsec0

eth1 ist meine WLAN-Karte. Der andere Adapter wird vermutlich vom VPN bereit gestellt.

2. Ich befinde mich in der Wohnung meiner Freundin.
Hier sitzt der Laptop hinter einer normalen Fritz!Box mit den bereits oben von mir geposteten Routen:



markus@vrob-notebook:~$ route -n
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.178.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.178.1 0.0.0.0 UG 0 0 0 eth0

Da ich davon ausgegangen bin, dass es sich hier "einfacher" einrichten lässt (keine Interferenz mit dem Uni-VPN), habe ich den Vorschlag von PyroMUC mal hier ausprobiert, allerdings mit folgender Fehlermeldung:



Wed Nov 29 20:51:55 2006 route add -net 192.168.6.0 netmask 255.255.255.0 gw 10.8.0.1
SIOCADDRT: Network is unreachable
Wed Nov 29 20:51:55 2006 ERROR: Linux route add command failed: shell command exited with error status: 7

Mich wundert sowieso folgendes:

Von oben genannter Anleitung, nach der ich den OpenVPN-Server auf dem Router aufgesetzt habe:



we use bridging to integrate the clients into the local lan, so we need no routes...

Also werden (angeblich??) keine Routen benötigt, soweit mich mein Englisch da nicht verlassen hat ;)

Ich stelle mir das sowieso ziemlich schwierig vor, da ich, bleiben wir beim Fall mit der Fritz!Box, die Pakte ja in jedem Fall erst an die Fritz!Box routen muss, damit diese überhaupt erst ins Internet kommen.
Wenn ich jetzt eine neue Route hinzufüge, sucht er diesen Router dann nicht im lokalen Netzwerk (was im Grunde nur aus dem Rechner meiner Freundin, der FritzBox und meinem Laptop besteht ;) ) nach der IP?

Gleiches Problem drängt sich mir auch in der Uni auf: Hier müssen die Pakete ja erst durchs Uni-VPN und erst dann können durchs Internet an meinen Router/OpenVPN Server geschickt werden, oder sehe ich da jetzt den Wald vor lauter Bäumen nicht mehr? ;)

Soso, ich hoffe, ihr könnt mit den Informationen etwas anfangen ;)

Vielen Dank,
Vrob

PyroMUC
04.12.06, 15:16
Servus.

Ich habs hier nur mit ner minimal config laufen:

client.ovpn



dev tun
remote www.meinvpn.de
ifconfig 10.8.0.2 10.8.0.1
secret mein.key
route-gateway 10.8.0.1
route 192.168.217.0 255.255.255.0
port 1194
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
comp-lzo


server.ovpn



dev tun
proto udp
ifconfig 10.8.0.1 10.8.0.2
secret /etc/openvpn/mein.key
port 5000
user nobody
daemon
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
comp-lzo


PyroMUC

Vrob
07.12.06, 14:07
Hallo Pyro,

ich habe deine Configs mal ausprobiert, aber leider startet damit der OpenVPN Server auf dem Router nicht.
Da ich auch keinen static Key sondern Zertifikate verwende, habe ich statt

secret ...

bei mir:

ca /.../...
cert /.../...
key /../...
dh /.../...
verwendet und in der Client bzw. server.conf noch jeweils ein tls-server bzw. tls-client hinzugefügt.

Das hat aber leider dennoch nicht geholfen :(

Vrob

PyroMUC
08.12.06, 08:07
Servuz.

Ich habs mit der obigen config auf nem OpenWRT Router laufen.
Ob du da für die Zertifikate noch was ändern musst weis ich leider nicht.

PyroMUC

xstevex22
08.12.06, 11:29
Hi,
falls du eine Firewall laufen hast, prüfe einmal die Policies für die TUN/TAP Devices. Wenn du bridging benutzt, muss auch das aktiv sein. Am besten du schaust dir mal die HowTo's und FAQ's auf openvpn.net an.