Tunnel zwischen Fritzbox und OpenVPN-Server nutzen zum surfen

Gerdchen03

Neuer User
Mitglied seit
13 Jun 2009
Beiträge
73
Punkte für Reaktionen
0
Punkte
0
Ich möchte meine Fritzbox als Client mit meinem OpenVPN-Server verbinden, und der komplette Netzverkehr soll über diesen Tunnel abgewickelt werden. Das wesentliche steht auch schon. Der Tunnel zwischen Fritzbox und OpenVPN-Server kann hergestellt werden. Ich bin hauptsächlich nach folgender Anleitung vorgegangen:
http://blog.rotzoll.net/2011/03/fri...ehrs-uber-seinen-openvpn-server-ins-internet/

netstat -nr auf der Fritzbox bringt:
Code:
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
xxx.xxx.xxx.xxx 0.0.0.0         255.255.255.255 UH        0 0          0 dsl
10.8.0.1        10.8.0.13       255.255.255.255 UGH       0 0          0 tun0
192.168.180.1   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.180.2   0.0.0.0         255.255.255.255 UH        0 0          0 dsl
10.8.0.13       0.0.0.0         255.255.255.255 UH        0 0          0 tun0
192.168.178.202 0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.178.203 0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.178.201 0.0.0.0         255.255.255.255 UH        0 0          0 dsl
192.168.178.0   0.0.0.0         255.255.255.0   U         0 0          0 lan
192.168.178.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.179.0   0.0.0.0         255.255.255.0   U         0 0          0 guest
yyy.yyy.yyy.yyy 0.0.0.0         255.255.248.0   U         0 0          0 dsl
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 lan
0.0.0.0         0.0.0.0         0.0.0.0         U         0 0          0 tun0

Ich kann von der Fritzbox aus eine IP im Internet (z.B. 173.194.70.94) anpingen, eine Webseite (z.B. www.google.de) nicht.
Von meinem Rechner aus kann ich gar nichts anpingen.

Wenn ich auf dem OpenVPN-Server tcpdump -i tun0 -vvv verwende, erhalte ich beispielsweise folgendes:
Code:
17:41:58.965900 IP (tos 0x0, ttl 64, id 25022, offset 0, flags [DF], proto TCP (6), length 52)
    10.8.0.6.52166 > ec2-23-23-98-16.compute-1.amazonaws.com.https: Flags [.], cksum 0xf5a4 (correct), seq 1, ack 27, win 316, options [nop,nop,TS val 6126420 ecr 309283573], length 0

17:42:00.208141 IP (tos 0x0, ttl 64, id 4387, offset 0, flags [none], proto UDP (17), length 62)
    10.8.0.14.55799 > yyy-yyy-yyy-yyy-ip.provider.de.domain: [udp sum ok] 20478+ A? tools.google.com. (34)
Der obere Eintrag ist von einem Gerät, welches sich außerhalb des Netzes der Fritzbox befindet, und wo der Tunnel perfekt klappt. Der untere Eintrag ist von meinem Rechner, welcher versucht über die Fritzbox den Tunnel zu nutzen.

Meine iptables auf dem OpenVPN sehen wie folgt aus:
Code:
iptables -t nat -A POSTROUTING -o venet0 -s 10.8.0.0/24 -j SNAT --to xxx.xxx.xxx.xxx
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to xxx.xxx.xxx.xxx
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -s 192.168.178.0/24 -j SNAT --to xxx.xxx.xxx.xxx

Der OpenVPN ist ein vServer, auf dem kein Masquerading läuft, deshalb verwende ich SNAT.
Mit yyy habe ich die mir vom Provider zugewiesene IP unkenntlich gemacht, mit xxx die des OpenVPN-Servers.

Ich wäre für Tips, was ich am Routing vergessen habe, sehr dankbar.

Gruß
Gerd
 
Ich hab mal weiter gesucht, und konnte es nun zumindest hinbekommen, dass der DNS Dienst auf der Fritzbox läuft. Zunächst habe ich versucht, in der openvpn.conf folgendes zu aktivieren:
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Das brachte nichts, die Fritzbox versucht sich weiterhin mit anderen DNS-Servern zu verbinden. Dann habe ich in der Fritzbox die DNS-Server festgelegt:
208.67.222.222 und 208.67.220.220, und dann kann ich von der Fritzbox aus ping www.google.de absetzten und bekomme eine Antwort. Ist sicherlich nicht die beste Lösung, funktioniert aber erst mal.

Von meinem Rechner aus ist nach wie vor kein Rechner im Internet erreichbar. Dafür müsste doch das Routing in der Fritzbox verantwortlich sein, oder?
 
Leider habe ich keine Configs, so dass man nicht weiß, was du denn wo wie konfiguriert hast. (Und nein, ich habe keine Lust eine "fremde Anleitung" durchzulesen und dann raten ;-))

Trotzdem ein erste Schuss ins Blaue: Ist denn auf dem Server die Route für 192.168.178.0/24 in den Tunnel vorhanden?

Merkwürdig erscheint mir auch die NAT für Pakete, die in den Tunnel hinein gehen.
 
Hallo MaxMuster,

erst mal danke für deine Antwort. Ich denke mal, dass die Server.conf (openvpn auf den vServer) und die vpnclient.conf (openvpn auf Fritzbox) die interessanten Dateien sind.

server.conf
Code:
local xxx.xxx.xxx.xxx
port 1194
;proto tcp
proto udp
;dev tap
dev tun
;dev-node MyTap
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
;server-bridge
;push "route 178.254.25.144 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
;learn-address ./script
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
;client-to-client
;duplicate-cn
keepalive 10 120
;tls-auth ta.key 0 # This file is secret
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
max-clients 12
user vpn
group vpn
persist-key
persist-tun
status openvpn-status.log
;log         openvpn.log
log-append  openvpn.log
verb 6
;mute 20

vpnclient.conf
Code:
client # wir sind Client
dev tun #
dev-node /var/tmp/tun # Hier wird das Devide angegeben. wichtig!
proto udp # wir nutzen UDP, kein TCP
remote xxx.xxx.xxx.xxx 1194 # die IP/ DNS Name der Gegenseite und Port
resolv-retry infinite # Namensauflösung immer
nobind # wir brauchen den Port nicht zu binden.
persist-key
persist-tun
comp-lzo # Komprimierung, sofern auf der Gegenseite auch aktiv.
verb 1 # Fuer Debugging ruhig bis 8 hochsetzen.
mute 20 # Nach x Wiederholungen im Log ruhe.

Hier hab ich einen Foreneintrag gefunden, in dem du jemandem bei ziemlich dem gleichen Problem hilfst. Leider ist bei mir gerade das Internet ausgefallen, und ich kann das nicht testen. Ich hoffe, das geht Morgen wieder. Vielleicht hat es sich damit ja schon erledigt. Wenn du dennoch Tips hast, bitte her damit!
 
Also, das kann eigentlich nicht alles sein, ohne static key oder (als "Multiclient Server" wie bei dir) Zertifikate und Schlüssel dürfte nichts gehen.
Und: Eine Route für das Netz 192.168.178.0 ist beim Server nicht zu sehen...
 
Ich hab die Hinweise auf die Schlüssel hier entfernt, weil sie mit dem Problem nichts zu tun haben.
Das mit der Route versuch ich mal.
 
Als Hinweis für die Zukunft:
Beim "Entfernen" von Informationen ist es guter Brauch, das so kenntlich zu machen, um solche Nachfragen zu vermeiden.
Wenn der Name deines Certs zu heikel ist, wäre ein "cert /XXXX/YYYY/ZZZZ" deutlich besser, damit ist klar, dass es drin steht.
 
OK, sorry!!
Nun zum derzeitigen Stand meiner Arbeit:
- Fritzbox kann einen Tunnel zum OpenVPN-Server aufbauen. Ping zu einer IP oder zu einer www-Adresse klappt.
- Um das Routing zu ermöglichen habe ich auf der Fritzbox folgendes versucht:
route del default dev dsl
route add -host xxx.xxx.xxx.xxx dev dsl (xxx ist die IP meines OpenVPN-Servers)
route add -net 0.0.0.0/0 dev tun0
- auf den OpenVPN-Server habe ich folgendes in die iptables eingetragen:
iptables -t nat -A POSTROUTING -o venet0 -s 10.8.0.0/24 -j SNAT --to xxx.xxx.xxx.xxx
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to xxx.xxx.xxx.xxx
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -s 192.168.178.0/24 -j SNAT --to xxx.xxx.xxx.xxx
- auf den OpenVPN-Server habe ich in die server.conf eine Route eingetragen. Ich hab zwei verschiedene Einträge versucht, weil ich nicht sicher war, wie es eingtragen werden muss. Einmal route 192.168.178.0 255.255.255.0 und einmal route 192.168.178.0/24
- auf der Fritzbox mit traceroute ergibt sich folgendes:
# traceroute www.gmx.de
traceroute to www.gmx.de (2.16.109.234), 30 hops max, 38 byte packets
1 10.8.0.1 (10.8.0.1) 22.156 ms 23.534 ms 23.377 ms
2 vh128-9064.1blu.de (178.254.38.64) 22.043 ms 23.008 ms 21.524 ms
3 te0-0-2.g1.blubone.net (178.254.16.25) 23.692 ms 25.048 ms 24.550 ms
4 te1-4.c1.mk.de (213.172.99.149) 23.900 ms 24.732 ms 24.170 ms
5 xe0-0-0-10.e2.mk.de (85.220.183.14) 29.910 ms 23.525 ms 23.302 ms
6 xe-9-2-1.edge7.Frankfurt1.Level3.net (195.16.162.33) 23.260 ms 27.672 ms 23.684 ms
7 ae-4-90.edge6.Frankfurt1.Level3.net (4.69.154.202) 27.472 ms ae-2-70.edge6.Frankfurt1.Level3.net (4.69.154.74) 25.848 ms 28.063 ms
8 xe-0-2-0-7.r02.frnkge03.de.bb.gin.ntt.net (129.250.8.201) 25.302 ms 29.021 ms 24.487 ms

Die Fritzbox tunnelt schon mal. Es müsste also an einem Eintrag, wie ihn MaxMuster schon vermutet hat, liegen. Nur die Umsetzung hapert noch.
 
Zuletzt bearbeitet:
Durch das push "redirect-gateway def1 bypass-dhcp" auf dem Server sollte auf der FB keine Routingänderung nötig sein (solange du ein aktuelles OpenVPN der Version 2.3.x benutzt).

Wie schon oben geschrieben ist es m.E. nicht sinnvoll, Pakete in den Tunnel hinein zu NATten ( ... -o tun0 ...).

Der Routingeintrag in der Server-Config ist "route 192.168.178.0 255.255.255.0".

Da du eine "Multi-Client" Konfiguration hast, kann das Routing zurück in dein Netz nur funktionieren, wenn du (zusätzlich zum "route"-Eintrag) einen "iroute"-Eintrag für das Netz zu deinem Client hast.
Den kannst du in der Konfiguration für deinen Client im "client-config-dir" eintragen oder über ein "client-connect"-script erzeugen.
 
Zuletzt bearbeitet:
Durch das push "redirect-gateway def1 bypass-dhcp" auf dem Server sollte auf der FB keine Routingänderung nötig sein (solange du ein aktuelles OpenVPN der Version 2.3.x benutzt).
Ich nehme an, du meinst die Version auf dem OpenVPN-Server, nicht auf der Fritzbox?! Da ist die Version 2.2.1 installiert, werd ich ändern.
Wie schon oben geschrieben ist es m.E. nicht sinnvoll, Pakete in den Tunnel hinein zu NATten ( ... -o tun0 ...).
Die Zeile also komplett auskommentieren?
Da du eine "Multi-Client" Konfiguration hast, kann das Routing zurück in dein Netz nur funktionieren, wenn du (zusätzlich zum "route"-Eintrag) einen "iroute"-Eintrag für das Netz zu deinem Client hast.
Das heißt, auf dem OpenVPN-Server in der server.conf folgendes einzutragen reicht nicht, sondern das muss in meinem Falle der Fritzbox bei gebracht werden?
push "route 192.168.178.0 255.255.255.0"
iroute 192.168.178.0 255.255.255.0
 
Zuletzt bearbeitet:
Nein, es geht um die OpenVPN-Version auf der FB. Die älteren Versionen hatten Probleme mit "redirect-gateway" im Zusammenspiel mit dem Routing auf der FB (das wird z.B. in dem von dir oben genannten Thread diskutiert).

Ja, die Zeile dürfte zumindest überflüssig sein, wenn nicht sogar "schädlich".

Um aus dem Netz "hinter" dem FritzBox-Client zu surfen fehlt aber auf jeden Fall der iroute-Eintrag.
Wenn sich nicht mehrere Clients verbinden, könntest du alternativ eine Server-Konfig ohne "mode server" (Teil der "Kurzform" server 10.8.0.0 255.255.255.0), dann reicht der Routing-Eintrag.
 
Ich nutze meine Fritzbox nicht mit Freez. Alles war ich im Netz zu einem aktuelleren OpenVPN Binary gefunden habe, war, dass es in Freez integriert wäre. Hast du einen Tip, wo ich das aktuellere Binary erhalten kann?
Wenn sich nicht mehrere Clients verbinden
Wenn sich nicht mehrere Clients mit dem OpenVPN-Server verbinden meinst du, richtig? Es werden sich leider mehrere verbinden, daher lässt sich diese Idee nicht umsetzen. Ich versuch es jetzt mit dem client-config-dir auf dem OpenVPN-Server.
 
Welche OpenVPN-Version hast du denn jetzt? Und, sofern ich das nicht überlesen habe, welche Box (damit das Binary passt)?
 
Ich habe die Fritzbox 7270 v2
Version:
OpenVPN 2.1_rc1 mipsel-linux [SSL] [LZO2] [EPOLL] built on Jan 5 2007
Developed by James Yonan
Copyright (C) 2002-2005 OpenVPN Solutions LLC <[email protected]>

Update:
Es läuft nun. Vielen Dank!!!!!!
Wenn du mir noch da neuer Binary besorgen könntest, wäre alles perfekt :-D
 
Zuletzt bearbeitet:
Gut, das sollte passen, denn diese Meldungen (" MULTI: bad source address from ...") oben sind die Folge des fehlenden iroute Eintrags.

Ansonsten hier zwei aktuelle OpenVPN Versionen (mit OpenSSL und PolarSSL) für Mipsel-Boxen wie die 7270.
 

Anhänge

  • openvpn_2.3.2-mipsel-polarssl-static.gz
    282.1 KB · Aufrufe: 5
  • openvpn_2.3.2-mipsel-openssl-static.gz
    546.4 KB · Aufrufe: 9
Danke für die Dateien.

Könntest du mir bitte noch die Dateien für die Fritzbox 6360 Cable zur Verfügung stellen?

Noch eine Frage zu VoIP. Meine Fritzbox ist auch meine Telefonanlage. Wenn ich den Tunnel benutze, kann ich nicht mehr telefonieren. Kann man das beheben?
 
Zuletzt bearbeitet:
Das Thema "VoIP und OpenVPN" hatten wir doch schon...

Ach ja, ab hier.

Kurz: Wenn du die IPs der VoIP-Server kennst, kannst du die über eine statische Route weiter durch das DSL schicken.
Wenn es mehr Anforderungen in der Art gibt, geht es nur mit ersetztem Kernel und policy-routing (steht auch dann weiter in dem oben genannten Thread).

Für die 6360 wird es schwierig, weil die wohl einen ARM-basierten Prozessor (und damit einen anderen als die anderen MIPS-basierten Fritzboxen) nicht im Freetz unterstützt wird (und mit der Freetz-Toolchain baue ich die Programme).
 
Danke für den Tip. Ich habe die Route eingetragen:
route add -net 83.169.182.0/24 dev dsl
Anrufe kommen rein, aber keine gehen raus. Die Fehlermeldung in der Fritzbox lautet:
Internettelefonie mit [email protected] über reg143.kabelphone.de war nicht erfolgreich. Ursache: Forbidden (403)

Ich hab ne Weile gewartet, und nun geht alles!!!
Danke! Dass das mit der 6360 nicht gehen wird ist kein Weltuntergang, aber schade ;-)
 
Zuletzt bearbeitet:
Nun hab ich auch das gleiche Problem wie radislav, d.h. ich kann meine Fritzbox nicht mehr von außen über dyndns erreichen. Die Lösung die Radislav gefunden hat lief über Freez. Daran komm ich dann wohl nicht vorbei, oder?
Kann ich nicht irgendwie von außen über die IP des OpenVPN-Servers ran? Die ist ja statisch, und dann bräuchte ich ja gar kein DynDNS mehr. Ich dachte an eine Lösung, wie sie in der Fritzbox eingetragen ist. Dort spreche ich die IP der Fritzbox z.B. auf dem Port 22 an, und lasse diesen Port an den Rechner mit der IP 192.168.178.x weiterleiten. So müsste ich doch nun den OpenVPN-Server mit seiner IP auf Port 22 ansprechen können, und ihm mitteilen, dass dies bitte an 192.168.178.x weiterzuleiten ist.
 
Zuletzt bearbeitet:
Das einfachste Weg ohne Freetz (und sogar besonders sicher) ist wohl, dich dafür über einen weiteren VPN-Client zum Server zu verbinden und über den auf die Box (zwischen den beiden VPN-Teilnehmern "durch das VPN").
Oder sonst auf andere Weise von deinem vServer, denn den routest du ja "normal" ins Internet (z.B. per ssh ...).

Ansonsten kommst du wohl nicht um Freetz herum, weil du die Pakete nach "nicht Standard-Verfahren" routen müsstest (nicht abhängig vom Ziel, sondern vom Absender oder Ports).
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.