FritzBox: Routing seines Internetverkehrs über seinen OpenVPN Server ins Internet

  Warum dieser Blogpost?

  Weil mich dieses Thema die letzten Tage beschäftigt hat. Und wie ich sehen konnte scheint es zum Einen nicht ganz trivial zu sein, zum Anderen wurde ich von jemandem angesprochen, ihm bei der Lösung (s)eines Problems zu helfen.
Gibt man sich also im allumfassenden Netz auf die Suche nach einer hoffentlich brauchbaren und verständlichen Anleitung, die es einem mehr oder weniger Schritt-für-Schritt erklärt, so wird man (zumindest ich) nicht so leicht fündig…. Und damit nun ein für alle Male eine Anleitung brauchbar im Netz verfügbar (und auch für mich nachlesbar 😉 ) steht hier die Anleitung, wie man seinen kompletten Internetverkehr über seine FritzBox über einen OpenVPN Tunnel zu einem OpenVPN Server und von dort frei und ungefiltert ins Internet bekommt.
Wozu denn dieses mag man sich fragen? Warum der Aufwand, die FritzBox macht doch Internet ohne Probleme? Was bringt es mir, wenn ich alles noch zusätzlich über den OpenVPN Server laufen lasse, verringert doch unter Umständen die Performance usw.?
Erste Antwort: Weil ich es kann. Zweite und sinnvolllere Antwort ist wohl die, dass es unter Umständen den Bedarf gibt, seine FritzBox nicht direkt mit dem Internet verbinden zu wollen oder zu können. Oder man hat bestimmte Dienste, die es erforderlich machen, über den VPN Tunnel zu gelangen.


  Zweck und Ziel dieses Projekts

  Dieser Blogpost ist dazu gedacht, seine FritzBox in der Art und Weise abzuändern, dass der gesamte Internetverkehr über einen VPN Tunnel zum OpenVPN Tunnel Endpunkt geroutet wird. Hier findet kein split-tunneling statt, alles soll durch den Tunnel geroutet werden. Alle Datenpakete, die die FritzBox verlassen sind verschlüsselt und kennen nur den einen Weg: Über den OpevnVPN Tunnel zum Server. Keine unverschlüsselten Datenpakete sollen außerhalb des Tunnels vorbei gehen (können).



  Ein Beispiel für einen möglichen Einsatzzweck

  Ein Beispiel wäre, wenn man seinen Internetanschluss in der FritzBox mit Lan1 (also das DSL Modem abschaltet und nicht nutzt) konfiguriert hat und dieser LAN1 Anschluss in einem von anderen Personen administrierten Netzwerk hängt. Dieses Netzwerk vergibt statisch oder dynamisch IP Adressen über Ethernet, die FritzBox routet alles aus dem internen Netzwerk der FritzBox an diesen LAN Port. Über diesen Netzwerkanschluss wird also der komplette Internetzugang realisiert. ohne viel Einfluss auf den Verlauf des Datenverkehrs haben zu können. Die Kontrolle, was unter Umständen in diesem Netzwerk geblockt, mitgelesen oder sonstwie verhindert wird obliegt also nicht dem eigenen Einfluss. Man muss sich also immer überlegen, wie viel Vertrauen man seinem Netzwerkadministrator entgegen bringt.
Es kann ebenfalls sein, dass in diesem fremdadministrierten Netzwerk verschiedene Dienste blockiert werden: Telefonie über VoIP, Webseiten müssen über einen Zwangs-Proxy aufgerufen werden, Mail geht nicht, SSH in die weite Welt ist unterbunden. Vielleicht der Einzige (und nicht gefilterte Dienst) ist VPN und kann für den Zugriff in die weite Welt genutzt werden. Ist auch dieses etwas erschwert (da die Netzadministratoren ja mitunter nicht ganz doof sind) und verschiedene bekannte und üblicherweise genutzte Ports sind blockiert, so muss man sich noch einen weiteren Trick zur Umgehung dieser Hürde einfallen lassen.

Eine andere Idee: Man möchte auf der FritzBox (s)einen VoIP Provider für die Telefonie nutzen. Angeschlossen ist die FritzBox ebenfalls über ein nicht vertrauenswürdiges Netz. Alle Sprachdaten würden/ könnten mitgelesen bzw. abgehört werden. Traut man nun seinem Netzanbieter, über den der VPN Server angeschlossen ist mehr als seinem Netzlieferant der FritzBox-Internetanbindung, so macht auch hier wieder ein Tunnel Sinn.
Möglichkeiten und Einsatzzwecke gibt es also zur Genüge. HomeOffice, Standortvernetzung usw. sind ebenfalls denkbar.

Selbstverständlich kann die FritzBox bei dem nachfolgenden Aufbau auch ganz normal über das eingebaute ADSL Modem über einen ADSL Anschluss mit seinem Internetserviceprovider verbunden sein. Das bleibt sich schlussendlich gleich und ändert in der Anleitung nichts.


  Voraussetzungen

  Wie schon bei meinen anderen Blogposts mit OpenVPN setze ich hier eine funktionsfähige Installation und (Grund)Kenntnisse bei der Konfiguration und Einrichtung von OpenVPN voraus. Ein funktionsfähiger OpenVPN Server ist für die Einrichtung Grundvoraussetzung. Sollte der nicht eingerichtet sein bzw. die FritzBox noch nicht als OpenVPN Client konfiguriert sein, so sollte dieses in meinem Blogpost http://www.rotzoll.net/2010/04/fritzbox-7270-als-openvpn-client/ nachgelesen und entsprechend eingerichtet werden. Ein Zugriff auf die Konfigurationsdatei des OpenVPN Servers (um beispielsweise das LogLevel zum Debuggen zu erhöhen) ist ebenfalls erforderlich.
Ebenfalls sind Linux und im späteren Verlauf IPtables Kenntnisse erforderlich.

Die angesprochenen Konfigurationsschritte beziehen sich auf AVM FritzBox 7390’er und 7270’er, die als OpenVPN Client erweitert wurden. Sicherlich sind die angegebenen Konfigurationsschritte und Beispiele auch auf andere FritzBoxen übertragbar und lassen sich dort ebenfalls abbilden.

Da es bei der Einrichtung auch an das Routing zwischen der FritzBox und der OpenVPN Server geht, ist es sinnvoll, noch einen zweiten Internetzugang für „den Fall der Fälle“ zu haben. Also über UMTS oder ähnlich noch ein zweiter Weg im Notfall, sollte man das Routing fehlerhaft verstellt haben oder aus sonstwelchen Gründen nicht mehr an den OpenVPN Server kommen. Es hilft, sich vorher Gedanken über Plan B zu machen.
Und nicht erst, wenn man sein Routing zerstört und keinen Zugriff mehr auf den OpenVPN Server hat 😉


  Begrifflichkeiten und Netzwerke

  In der nachfolgenden Beschreibung gehe ich von folgenden Begrifflichkeiten aus:

  • Der OpenVPN Server ist über eine offizielle IP Adresse 20.30.40.50 erreichbar
  • Das Netzwerkinterface am Server Richtung Internet heißt eth0
  • Das VPN Netzwerkinterface heißt tun0
  • IP Netz für die VPN Client: 10.1.2.0/24
  • IP Netz für die Clients hinter der FritzBox: 192.168.178.0/24

Alles sind natürlich nur Beispieldaten und müssen, je nach eigener Konstellation angepasst, werden.
Ebenfalls werden die Aufrufe auf dem OpenVPN Server als root ausgeführt. Natürlich kann auch mit sudo gearbeitet werden. Der Einfachheit halber habe ich aber in der Beschreibung darauf verzichtet. Wenn mit sudo gearbeitet wird, so ist vor die Aufrufe sudo vorzusetzen. Das erklärt sich aber sicher von selbst….


Telnet zur FritzBox

  Voraussetzung für die Konfiguration der FritzBox ist, dass der Zugriff per Telnet auf diese aktiviert ist. Auf dem konfigurierenden Rechner ist ein Programm zur Nutzung von Telnet installiert und kann ausgeführt werden (Linux/ Mac Nutzer: Terminal öffnen und telnet IP_der_FritzBox eingeben; Windows Nutzer: Putty starten, als Verbindungstyp telnet auswählen, IP_der_FritzBox eingeben; Loginpasswort ist das normale Webpasswort).
Eine Verbindung von seinem Rechner zur FritzBox per Telnet ist nachfolgend immer dann nötig, wenn Änderungen/ Anpassungen auf dieser beschrieben werden. In meinen Beispielen ist dieses ebenfalls zu erkennen an der Bezeichnung der Konsolenausgabe.

Ganz wichtig: Man sollte die komplette Einrichtung natürlich nur aus dem lokalen Netzwerk vornehmen. Meint man, dass man dieses auch von remote einrichten kann, so könnte wird man sich ganz schnell den Ast absägen, auf dem man sitzt. Es geht natürlich auch, dann darf man sich allerdings beim Löschen der Default-Route nicht an die von mir angegebene Reihenfolge halten und muss erst die Host-Route zum OpenVPN Host setzen eh man die Default-Route löscht.
Ebenfalls kann es sein, dass man die FritzBox neu starten möchte. Dann hilft es, wenn man diese in Zugriff hat 😉


  Routing des kompletten Datenverkehrs in den Tunnel hinein

Der VPN Tunnel kann aufgebaut werden und der Tunnel steht. Von der FritzBox kann ein Ping auf die IP des VPN Tunnelendpunktes (die interne VPN IP Adresse des OpenVPN Servers) gemacht werden, Pakete werden beantwortet. Wenn dieses erfüllt ist, beenden wir erstmal den OpenVPN Client auf der FritzBox durch ein kill der Prozess-ID:

telnet:~ fritzBox$ # ps | grep openvpn
1234 root 2072 S /var/media/ftp/DEVICENAME/vpn/openvpn –config openvpnclient.conf –daemon
(Man erhält die Ausgabe zu dem openvpn Dienst. Die Prozess ID ist die este Spalte, in diesem Beispiel also 1234.)

Durch einen Aufruf auf der Konsole der FritzBox von

telnet:~ fritzBox$ # kill 1234

wird der Prozess auf der FritzBox beendet. Der Prozess wird beendet und das Tunneldevice tun0 sollte nicht mehr vorhanden sein (Test mit: ifconfig tun0).

Nun soll das Routing des Datenverkehrs soweit abgeändert werden, dass der gesamte Datenverkehr nicht mehr seinen „normalen“ Weg ins Internet geht sondern über den VPN Tunnel geroutet wird.
Auf der Fritzbox muss hierzu das Default-Gateway (normalerweise also die Anbindung ans Internet und namentlich als Device dsl in der Routingtabelle) gelöscht werden. Danach wird eine einzelne Host-Route angelegt, die die IP Adresse des OpenVPN Servers auf das „Internetdevice“ routet. Nachdem der OpenVPN Tunnel aufgebaut wurde wird der gesamte Internetverkehr über das Tunnel-Device tun0 als Default-Gateway geroutet:

Wir löschen auf der FritzBox das default Gateway, welches uns mit netstat angezeigt wird und als Route für das Ziel 0.0.0.0 definiert ist:

telnet:~ fritzBox$ # netstat -nr
Destination     Gateway     Genmask     Flags MSS Window irtt Iface
0.0.0.0     0.0.0.0     0.0.0.0     U     0 0     0 dsl
telnet:~ fritzBox$ # route del default dev dsl
(Das Default-GW wird gelöscht.)

Nun wurde das Default-GW aus der Routingtabelle der FritzBox gelöscht. Würden wir nun versuchen, den OpenVPN Client zu starten hätte dieser keine Möglichkeit, den OpenVPN Host zu erreichen. Also setzen wir eine Host-Route für die IP des OpenVPN Servers auf das Device dsl:

telnet:~ fritzBox$ # route add -host 20.30.40.50 dev dsl
(Routing auf die IP Adresse des VPN Servers über das Device dsl.)

Hiernach kann der OpenVPN Client auf der FritzBox wieder gestartet werden, das Ziel ist über die Hostroute erreichbar und der Client kann sich gegen den Host connecten. Ist der Tunnel erfolgreich initialisiert (Prüfung im Log des VPN Servers und des Clients hilft hier bei etwaigen Problemen sehr…), so erscheint das Netzwerkdevice tun0 auf der FritzBox:

telnet:~ fritzBox$ # ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.1.2.22 P-t-P:10.1.2.21 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST MTU:1500 Metric:1
RX packets:379 errors:0 dropped:0 overruns:0 frame:0
TX packets:218 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:3690 (3.7 MiB) TX bytes:1744 (1.7 MiB)

Nun ist der OpenVPN Server über den VPN Tunnel erreichbar. Allerdings soll ja der gesamte Internetdatenverkehr über diesen Tunnel geroutet werden. Also setzen wir einen Default-Gateway Eintrag auf dieses Device:

telnet:~ fritzBox$ # route add -net 0.0.0.0/0 dev tun0
(Das Default-GW wird auf das VPN Device tun0 gelegt.)

Die Routingtabelle über netstat -nr zeigt nun auf, dass wir eine Hostroute haben, ein default-GW und natürlich die normalen Netzrouten-Einträge für das OpenVPN Netz.


  Aktivierung als Gateway

  Vermutlich wird der OpenVPN Server noch nicht als Gateway dienen. Vielleicht hat dieser ein „externes“ Interface für das Internet, auf ihm laufen vll. noch ein paar Internetdienste (HTTPd usw.) und noch der OpenVPN Serverdienst. Bisher wurde der Server noch nicht als Router (Gateway für verschiedene Netze) genutzt.
Es fehlt somit die Einrichtung, dass zwischen den Netzen geroutet werden soll. Hierzu muss eine Option im Kernel gesetzt sein, die das Routing zwischen den Netzen steuert. Als Werte gibt es 0 (keine Gatewayfunktion) oder 1 (es wird geroutet). Wir prüfen ersteinmal, ob der Kernelwert schon gesetzt ist:

OpenVPNserver$ # cat /proc/sys/net/ipv4/ip_forward
0
(Hier wäre das Routing zwischen den Netzen deaktiviert.)

Ist der Wert auf 1, so kann der nachfolgende Aufruf gespart werden. Andernfalls muss der Wert von 0 auf 1 geändert werden:

OpenVPNserver$ # echo 1 > /proc/sys/net/ipv4/ip_forward
(Aktiviert das Routing zwischen den Netzen.)

Nun wird zwischen den unterschiedlichen Netzen (z.B. eth0 für das externe Interface und tun0 für das VPN Netz) geroutet. Dieses sollte ebenfalls reboot-save gemacht und bei Ubuntu in die Datei /etc/sysctl.conf eingetragen werden bzw. der Wert muss auf 1 gesetzt werden. Die Zeile wird schon in der Datei vorhanden, aber unter Umständen mit einem ‚#‘ Zeichen „deaktiviert“ sein. Das Raute-Zeichen muss entfernt werden und die Zeile wie folgt in drinstehen:

net.ipv4.ip_forward = 1
(Aktiviert das Routing zwischen den Netzen.)

Nun sollte das Routing prinzipiell erlaubt sein und funktionieren. Man kann durch den obigen Aufruf abermals prüfen, ob der Kernel nun mit dem Wert versehen ist und erhält statt ‚0‘ nun eine ‚1‘.


  Anpassung der IPtables Regeln auf dem OpenVPN Server

  Auf dem OpenVPN Server müssen, wenn hierzu IPtables genutzt wird, Regeln erstellt werden, die das Masquerading und „Weiterleiten“ der Pakete erlaubt. Wird statt IPtables IPchains genutzt, so muss dieses eigenständig nachgeschlagen werden. Es wird aber ähnlich ablaufen…

Die nachfolgenden Regeln richten NAT (Network-Adress-Translation) zwischen dem OpenVPN Interface tun0 und dem externen Netzwerkinterface eth0 ein. Wer die genaueren Aktionen verstehen will, der sollte sich einmal die Grundlagen von IPtables ansehen. Hier werde ich nicht näher auf die einzelnen Optionen eingehen und die Aufrufe erläutern sondern gebe diese als gegeben an. Auf der Konsole werden die Zeilen nacheinander eingegeben (oder, sofern man ein IPtables Regelwerk schon hat, in dieses eingebaut):

OpenVPNserver$ # iptables -I FORWARD -i tun0 -j ACCEPT
OpenVPNserver$ # iptables -I FORWARD -o tun0 -j ACCEPT
OpenVPNserver$ # iptables -t nat -A POSTROUTING -o eth0 -s 10.1.2.0/24 -j MASQUERADE
OpenVPNserver$ # iptables -t nat -A POSTROUTING -o eth0 -s 192.168.178.0/24 -j MASQUERADE
OpenVPNserver$ # iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
(In Kurzform: Pakete auf dem tun0 Interface werden erlaubt und das OpenVPN/ FritzBox Netz ge’nat’net.)

Natürlich kann man obige Aufrufe noch seinen eigenen Bedürfnissen anpassen oder erweitern. NAT sollte vollkommen ausreichend sein, da zusätzlich noch auf der FritzBox ge’nat’net wird. Also ein DoppelNAT 😉
Reicht einem dieses aus eigenem Sicherheitsempfinden nicht, so kann auch über einzelne Portregeln (z.B. nur HTTP Port 80, 443 und DNS auf vorgegebene DNS Server) der ausgehende Verkehr ins Internet eingeschränkt werden. Das wäre aber nicht sinnvoll, da wir ja auf der FritzBox noch ein paar andere Dienste (VoIP usw.) nutzen wollen und uns das Leben somit unnötig kompliziert machen würden.


  Sind obige Regeln aktiviert, so sollte von der FritzBox ein Ping in die Weite Welt erfolgreich durchgeführt werden können. Dieses kann auf dem OpenVPN Server durch einen TCPdump geprüft werden. Hier werden nun Pakete ein- und ausgehend auf dem Interface tun0 laufen. Aber nicht nur von der FritzBox direkt, auch von einem angeschlossenen Rechner sollte das nun möglich sein, sofern dieser die FritzBox als Default-GW hat.
  IP Pakete laufen nun vom PC zur FB, dort in den VPN Tunnel, gehen verschlüsselt durch den Tunnel über die „Internet“anbindung (ob nun DSL oder LAN->Internet) zum OpenVPN Server, werden entschlüsselt und gehen von dort ins Internet. Ruft man eine Seite zur Ausgabe seiner derzeitigen IP Adresse auf (z.B. http://checkip.dyndns.org oder http://www.wieistmeineip.de), so wird einem die öffentliche IP des OpenVPN Servers angezeigt.
Bingo. Ziel quasi erreicht 😉


  Prüfung, ob der Datenverkehr auf dem OpenVPN Host aus dem Tunnel ankommt

Der Datenverkehr wird nun durch die FritzBox in den Tunnel geschickt und kommt auf dem OpenVPN Server an. Kommt der das wirklich über den Tunnel?
Wenn man beim Routing einfach mal sehen möchte, was die obigen Regeln erlauben, so kann man mit TCPdump vor und während des Aufrufs die Pakete mitlesen.

Wir überprüfen dieses durch einen tcpdump auf dem OpenVPN Host:

OpenVPNserver$ # tcpdump -i tun0 -vvv

Auf dem Rechner im FritzBox-Netz rufen wir nun beispielsweise die Seite http://www.google.com auf. Wie im tcpdump nun einfach zu sehen sein sollte kommuniziert der über den VPN Tunnel angeschlossene Host mit der IP 192.168.178.X mit dem externen Server www.google.com. Wir sehen Pakete, die aus dem Tunnel ins Internet und umgekehrt beantwortet wieder in den Tunnel gehen.


  Konfiguration reboot-save machen

  Wenn obige Schritte erfolgreich durchgeführt wurden und alles funktioniert, so kann bzw. sollte man dieses alles reboot save machen. Schließlich sollen die Änderungen sowohl nach einem restart der FritzBox als auch des OpenVPN Servers wieder funktionieren.
Auf dem OpenVPN Server
Die Einstellungen für IPtables sollte man in einem Skript (wo sicherlich schon ein paar andere Einträge für IPtables stehen) einfügen. Dieses wird beim Booten ausfgeführt. Alternativ sollte man ein Startskript erstellen oder den Aufruf von IPtables in ein anderes mit einfügen.
Eine andere sehr schöne Variante ist die Nutzung der up und down Befehle in der server.conf des OpenVPN Servers. Hiermit können Skripte angegeben werden, die beim Start eines Tunneldevices (tun0) bzw. Stop ausgeführt werden. Damit kann man die IPtables Regeln automatisch setzen wenn der OpenVPN Server startet und ebenfalls diese Regeln wieder löschen (wenn man das möchte).
Hierzu müssen folgende Zeilen in die server.conf eingefügt werden:

script-security 2
up "./tun_up.sh"
down "./tun_down.sh"

Das Setzen von script-security auf ‚2‘ erlaubt es, alle Arten von (User)Skripten auszuführen. Die Angabe bei up und down verweist auf die Skripte, die beim Hochnehmen oder Herunternehmen des Interfaces ausgeführt werden. Das UP Skript beinhaltet eigentlich nur die IPtables Regeln, die wir vorhin schon händisch aufgerufen haben:


#!/bin/sh
iptables -t nat -A POSTROUTING -o eth0 -s 10.1.2.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.178.0/24 -j MASQUERADE

Wenn das Skript erstellt wurde muss dieses ausführbar gemacht werden:


OpenVPNserver$ # chmod 755 tun_up.sh

Ein Neustart des OpenVPNd liest die Konfiguration komplett neu ein, das Skript wird nun passend gestartet.

Auf der FritzBox
Das Startskript zur Ausführung des OpenVPN Clients funktioniert und existiert schon aus meinem früheren Blogpost.
In dieses Skript könnte man nun die für die FritzBox nötigen Änderungen einfließen lassen und dieses anpassen. Nach dem Aufbau des Tunnels durch den Start des OpenVPN Clients auf der FritzBox bauen wir eine kurze Pause ein, bis der Tunnelendpunkt angepingt werden kann. Danach ändern wir die Routingeinträge ab und fertig. An das bisherige Skript startup.sh zum Start des VPN Clients hängen wir noch folgende Zeilen an:


# Ans Ende der startup.sh anfuegen.....
# Warten, bis der Tunnel steht
echo Waiting for VPN Tunnel connection
while !(ping -c 1 10.1.2.1); do
echo Tunnel noch nicht gestartet
echo
sleep 5
done

#Aendern der Route zum OpenVPN Server
route add -host 20.30.40.50 dev dsl
sleep 2
# Aenderung des Default-Gateway
route del default dev dsl
sleep 3
route add -net 0.0.0.0/0 dev tun0

echo Routing zum VPN Server aktiviert
# # # # ENDE # # # #

Wird dieses mit in die startup.sh eingefügt, so wird nach dem Start des OpenVPN Tunnels automatisch das Default-Gateway auf den VPN Tunnel gesetzt. Aller Traffic aus dem internen „FritzBox Netz“ geht über die FritzBox in den VPN Tunnel und über diesen zum OpenVPN Server. Auf diesem


  auftretende Probleme

Die wohl häufigsten auftretenden Probleme sind, dass vom OpenVPN Server die aus dem OpenVPN Tunnel kommenden Datenpakete nicht richtig geroutet und auf das dortige Default-Gateway (Anbindung ans Internet) gelangen. IPtables ist hierfür verantwortlich und muss richtig konfiguriert werden. Sehr hilfreich ist es, wenn man sich auf dem OpenVPN Server mit TCPdump die Datenpakete ansieht, die dort ankommen. Anhand dessen erkennt man schon recht schnell, in welche Richtung die Pakete gehen bzw. dass die Antwortpakete ausbleiben. Sieht man auf dem Server schon gar keine Pakete mit IP Adressen aus dem privaten IP Adressbereich der FritzBox bzw. die VPN IP Adresse der FritzBox selbst, so funktioniert das Routing von der FritzBox in den Tunnel nicht richtig. Mindestens sollte man diese unterschiedlichen Pakete sehen, die dann vom OpenVPN Server geroutet werden müssen.

Ein weiteres Manko fällt bei IPtables auf: Man kann die Regeln nicht auf virtuelle Interface (z.B. eth0:1) beziehen. Hat man also virtuell eine zweite IP Adresse auf dem VPN Server, die für die ausgehende Kommunikation aus dem FritzBox-Netz genutzt werden soll, so kann IPtables mit den Regeln ... -o eth0:1 nichts anfangen und verweigert die Aufnahme dieser Regel. Schade eigentlich.


  Disclaimer/ Haftungsausschluss

Wie immer gilt auch hier: ALLES geschieht auf eigene Verantwortung! Ich übernehme für keine Probleme oder Folgen irgendeine Gewähr, keine Garantie oder sonstige Verantwortung. Jede Änderungen und Anpassungen, Ausführung oder/ und Aufruf irgendwelcher Befehle/ Skripte sollte wohl überlegt und verstanden sein.
Das Umgehen von Sicherheitsmaßnahmen (Sperrung von Ports/ bestimmten Diensten; Umgehung von Zwangsproxys usw.) sollte wohl überlegt sein. Schließlich gibt es durch die Netzbetreuer gute Gründe, warum das so ist. Oder die Anbieter haben im Kleingedruckten die Nutzung bestimmter Dienste untersagt und filtern auf den Core Routern diese Dienste heraus, verlangsamen oder behindern diese.

Jeder ist für sein Handeln selbst verantwortlich. Da mit IPtables & Co. schnell Fehler in der Konfiguration gemacht werden können sollte man sich schon etwas damit auskennen. Unbedachtes Handeln kann ungewünschte Ergebnisse/ Folgen nach sich ziehen.


Dieser Beitrag wurde unter Allgemeines, Dokus und Tipps, FritzBox, Linux/ UNIX, Technikspielkram abgelegt und mit , , , , , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

7 Kommentare zu FritzBox: Routing seines Internetverkehrs über seinen OpenVPN Server ins Internet

  1. Saminator sagt:

    Hallo, ich habe gerade Ihren Blob ovpn 7270.. durchgelesen. Ich habe einige Fragen für mein eigenes Projekt. Sicherlich könnte man dass HowTo etwas erweitern. So jetzt die Fragen: Funktioniert dass auch mit einem transparenten squid server, pc -> fb -> tunnel -> ovpnserver -> proxy -> 0.0.0.0 ? Müssten die Iptables regeln dann anders aussehen? Wenn ja wie? Was ist wenn ich statt nur einer FritzBox, 15 fritzBoxen einsetzten möchte? Jede Box muss ja eine eigene IP bekommen, oder? Kann ich DHCP vom Server zu den FBs und dann zu den PCs durchschleifen? Macht dass Sinn?
    Können Sie mir evtl. helfen? Dass Howto könnte erweitert werden und es hätten vielleicht noch viele etwas davon … ! mfg saminator

  2. Patrick sagt:

    Hallo, vielleicht können Sie mir weiterhelfen. Ich habe mich nun kommt an ihr Konzept oben gehalten. Das Problem habe ich auch nicht in der Problematik der FritzBox sondern beim OpenVPN Server, dieser läuft auf einem Windows 2003 Server bei Strato im Rechenzentrum. OpenVPN Server läuft dort bisher stabil. Wie kann ich dort die entsprechenden Einstellungen herausbekommen, wie ich benötige und zum anderen wie bekomme ich das Skript mit den Routing Parametern implementiert. Es existiert wie gesagt der OpenVPN Server, es existiert auch eine server.conf Datei wo die Zertifikate und Keys usw. angegeben sind. Der Server hat eine statische IP Adresse (Netzwerkkarte) und die IP Adresse im OpenVPN Netzwerk (172.16.30.1). Ich versuche mit der FritzBox wie oben beschrieben das Routing entsprechend anzupassen, dass der komplette Internet Verkehr getunnelt wird.

    Ich hoffe auf Ihre Hilfe. Vielen Dank!

  3. Stefan sagt:

    Endlich eine Seite, mit der meine Probleme gelöst wurden.
    DANKE!

  4. Matthias sagt:

    Hallo, und vielen dank für dieses tolle How to.
    Es würde mich interessieren ob das prinzipiell auch funtioniert wenn ich anstelle eines Open-VPN Servers auch eine 2. Fritzbox einsetzen kann.
    Ich stelle mir das so vor (Normales VPN von LAN zu LAN mittels AVM Fernzugang ist eingerichtet):

    An der 2. Fritzbox (entferntes Netz) lösche ich per Telnet das default Gateway.

    Dann füge ich mit „route add -host 20.30.40.50 dev dsl“ eine Host Route auf das DSL Device hinzu damit ich überhaupt wieder ein Tunnel aufbauen kann.

    Danach setze ich das Default Gateway auf das Tunnel Device mit „route add -net 0.0.0.0/0 dev tun0“

    zum Schluss ergänze ich die CFG Datei der VPN Einstellungen für das Haupnetz (welches den I-Net Zugang machen soll) um folgenden Eintrag:
    ike_forward_rules = „udp 0.0.0.0:500 0.0.0.0:500“,
    „udp 0.0.0.0:4500 0.0.0.0:4500“;

    Geht das? Komme vorerst nicht dazu das real zu testen wollte nur mal wissen ob ich auf dem richtigen weg bin.
    Sollte das der richtige Weg sein wird der nächste schritt so aussehn dass ich das DSL Device des entfernten Netz gegen das UMTS(USB Stick) Device ersetzen muss.

  5. Denis sagt:

    Tolles HowTo, hat gleich auf Anhieb geklappt.

    Wollte aber bei mir es noch etwas „tunen“ indem ich 2 VPN’s lege, einen für das Normale Netz und eins, was ich gerne Bridgen würde für den Gastzugang an der Fritz.Box, leider weiß ich aber nicht wie der Gastzugang abgeschottet wird, da er nicht mal den normalen VPN zugriff sieht.

    Hintergrund des Bridgen sind einfach die Broadcast vom anderen LAN, die beim normalen Tunnel verloren gehen, die für manche Spiele ja wichtig sind.

    Danke

  6. Tesser sagt:

    Danke fuer diese Anleitung!
    Habe es vor einigen Wochen ausprobiert und es klappt wunderbar. Nun moechte ich das ganze allerdings noch ein bisschen erweitern: und zwar wuerde ich gerne das Gast-Netz der Fritzbox (192.168.179.0/24 statt 192.168.178.0) ganz normal ins DSL routen.
    Habe dazu einfach noch eine route hinzugefuegt (192.168.179.0 Iface: dsl) und dachte, dadurch kommt der Traffic normal ins DSL. Allerdings kommt es bei mir dadurch auch auf dem VPN-Server an (und wird dort brav durch iptables verworfen).
    Ich denke, durch die Umstellung des default-gw. Hast du vielleicht eine Idee, wie man ein zweites Netz ganz normal ins DSL schickt?

    Vielen Dank!

    • rotzoll sagt:

      Hej,

      dazu musst du mit source-based routing auf der FB routen. Dort muss der Traffic aus dem 192.168.179.0/24 Netz auf das dls Interface geroutet werden.
      Derzeit hast du ja ein Default-GW auf das tun0 Interface.

      Gruß,
      malte

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*