[Problem] Zwei redundante VPN-Verbindungen (mit Fritzboxen) v2

boomzilla

Neuer User
Mitglied seit
22 Nov 2011
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo liebe Leute!

Ich habe den Beitrag von LarsIP aus 2011 gelesen und habe ein ähnliches Problem, aber ggf. einen anderen Lösungsansatz.
Kern des Problems ist aber auch bei mir: (leicht angepasstes Zitat)
"Ich möchte, dass das Netzwerk am Standort Y über zwei VPN-Verbindungen gleichzeitig erreicht werden kann. In der Folge soll dann eine der beiden Internet-Verbindungen am Standort Y wahlweise zusammenbrechen dürfen und der Verkehr zu Standort X per VPN oder ins Internet dann automatisch über die jeweils andere Verbindung geleitet werden."

Problemstellung:
Standort X:
Dort steht eine FritzBox 7390 mit VPN-Einträgen und Dynamic DNS Eintrag, Internetverbindung dort ist sicher.
Subnetz ist 192.168.40.0
- Auf Standort X greifen auch noch andere Niederlassungen (mit anderen Subnetzen .60, .70 etc.) per VPN zu.

Standort Y:
Dort stehen zwei FritzBoxen (7390 & 7170) mit VPN-Einträgen, eine hängt am Funknetz, eine am DSL-Kabel.
Problem ist: Wechselweise fällt am Standort Y immer wieder mal eine der Verbindungen (Funk oder DSL) aus.
(Kommt bei Beiden öfters vor und läßt sich leider nicht vermeiden)

Standort Y baut über die Fritz-Box(en) je nach Anschluß (Funk oder Kabel) Verbindung zum Internet auf.
Es werden auch zwei unterschiedliche Dynamic DNS Einträge (einer je Fritzbox) erstellt.
Zudem muss aber immer ein VPN vom Standort Y zum Standort X bestehen.
Beides (Internet und VPN) ist für Standort Y absolut lebenswichtig!
Daher wollte ich auch zwei Fritzboxen, wenn mal wieder ein Anschluß streikt.
Nun habe ich keine Lust bei jedem Verbindungsausfall die VPN-Einträge an allen Fritzboxen je nach Ausfalltyp mit der Hand umzustellen (aktiv / inaktiv) und die Arbeitsplatzrechner (Gateway, DNS etc.) gleich auch mit.

Folgende Ideen hätte ich jetzt:

Idee 1:
jedem Arbeitsplatzrechner (Windows) am Standort Y mehrere IPs verpassen (z.B.):
- IP (1) 192.168.20.111 Mask 255.255.255.0 (CIDR 24) -> Subnet A 192.168.20.0
- IP (2) 192.168.21.111 Mask 255.255.255.0 (CIDR 24) -> Subnet B 192.168.21.0
- Gateway (1) 192.168.20.12 Metrik 2 (nicht bevorzugte Metrik)
- Gateway (2) 192.168.21.13 Metrik 1 (bevorzugte Metrik, Funknetz)
- DNS (1) 192.168.20.12
- DNS (2) 192.168.21.13

oder Idee 2
jedem Arbeitsplatzrechner (Windows) am Standort Y eine IP und mehrere Gateways/DNS verpassen (z.B.):
- IP (1) 192.168.20.111 Mask 255.255.254.0 (CIDR 23) -> Subnets A 192.168.20.0 und B 192.168.21.0
- Gateway (1) 192.168.20.12 Metrik 2 (nicht bevorzugte Metrik)
- Gateway (2) 192.168.21.13 Metrik 1 (bevorzugte Metrik, Funknetz)
- DNS (1) 192.168.20.12
- DNS (2) 192.168.21.13

Würden die Rechner dann je nach Ausfall in das Netz 192.168.40.0 reinkommen?
Was mach ich mit den Druckern am Standort Y, auf denen vom Standort X aus gedruckt wird?
Funktioniert so etwas (oder ähnliches) oder hat noch jemand ne bessere Idee?

Im Voraus schon mal vielen Dank, egal wie die Antwort aussieht!
Bitte bitte bitte wenn Ihr etwas wißt, bei mir brennts!

LG Stefan
 
Hi, ich hatte aus Kostengründen die Load-Balancing- bzw. Backup-VPN-Geschichte nicht weiter verfolgt - so wichtig war mir das dann auch nicht. Im alten Thread sind ja (teure) Ansätze aufgeführt wie man das auf "Router-Ebene" bewerkstelligen könnte. Deine Vorschläge was man auf Ebene der Clients noch so probieren kann sind interessant und sicherlich einen Versuch wert - vor allem aber günstiger. Es kommt wohl auf die jeweiligen Anforderungen an inwiefern eine "Client-Bastellösung" ausreichend ist.
 
Hallo Lars!
Danke erst mal für die schnelle Antwort!
(Auch wenn Du damals leider nicht zu einem Ergebnis gekommen bist)
Vielleicht kennt sich ja jemand mit diesem Windows-Routen-Thema aus.
Warten wir mal ab.
LG Stefan
 
Versuch das bitte nicht über die Clients, das ist zu fehleranfällig! Sowas sollte immer zentralisiert werden, da es im Fehlerfall deutlich einfacher mit dem troubleshooting ist. Ist das ein Privat-Projekt?

Wenn es Dir wirklich auf die Zuverlässigkeit ankommt, dann solltest Du dafür eine ordentliche Lösung (e.g. Lancom-Router) nutzen, alles andere wäre nur gefrickel. Alternativ nimm für die Lösung einen eigenen Server und baue Dir ein redundantes Routing auf.
 
Hallo Maverrick!

Das Problem ist, dass bereits mehrere Fritz-Boxen per VPN auf o.g. Standort X zugreifen und dies den Tausch mehrerer Geräte verursachen würde. Das wird also teuer. Da würde ich mir das Gefrickel an dem fehlerträchtigen Standort Y schon gönnen.
Die Kernfrage ist also: geht sowas über Einstellungen an den Clients bzw. eine intelligente Subnetaufteilung oder nicht? Damit kenne ich mich leider nicht so gut aus.

Zudem kann man die IP-Einrichtung der Clients ja über ein Batch-File realisieren, das die Leute am Standort Y bei Ausfall einmal morgens starten könnten, bis das Netz wieder "repariert" wurde. So ein Batch-File hab ich mir gerade schon mal gebastelt. Sieht in etwa so oder ähnlich aus (erster Versuch nur mit der Umschaltung einer IP/Gateway/DNS und den oberen Teil hab ich irgendwo kopiert):
Code:
:::::::::::::::::::::::::::::::::::::::::
:: Automatically check & get admin rights
:::::::::::::::::::::::::::::::::::::::::
@echo off
CLS 
ECHO.
ECHO =============================
ECHO Running Admin shell
ECHO =============================

:checkPrivileges 
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges ) 

:getPrivileges 
if '%1'=='ELEV' (shift & goto gotPrivileges)  
ECHO. 
ECHO **************************************
ECHO Invoking UAC for Privilege Escalation 
ECHO **************************************

setlocal DisableDelayedExpansion
set "batchPath=%~0"
setlocal EnableDelayedExpansion
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%temp%\OEgetPrivileges.vbs" 
ECHO UAC.ShellExecute "!batchPath!", "ELEV", "", "runas", 1 >> "%temp%\OEgetPrivileges.vbs" 
"%temp%\OEgetPrivileges.vbs" 
exit /B 

:gotPrivileges 
::::::::::::::::::::::::::::
:START
::::::::::::::::::::::::::::
setlocal & pushd .

REM Run shell as admin (example) - put here code as you like
REM !!! Ab hier wird es interessant !!!

@ECHO OFF 
SET MYTIMEOUT=60
SET MYSELECT=nix

REM Prüfung auf Rechnername und Computereinstellungen !!!
  IF /i "%COMPUTERNAME%" == "xx-comp" (
    SET MYCOMPNAME=xx-comp
    SET MYCONNECT=LAN-Verbindung
    SET MYSOURCE=static
    SET MYIPADR=192.168.20.100
    SET MYSUBMASK=255.255.255.0
    rem bei MYSELECT muss immer was drinstehen, gewertet wird nur "nix" und "select"!!!
    SET MYSELECT=select
    SET MYGATEWAY=
    SET MYGATEWAY1=192.168.20.12
    SET MYGATEWAY2=192.168.20.13
    SET MYDNS=
    SET MYDNS1=192.168.20.12
    SET MYDNS2=192.168.20.13
  )

REM Nix gefunden? dann ...
  IF /i "%MYSELECT%" == "nix" (
    ECHO.
    ECHO.Fehler !!!
    ECHO.Rechnername und IP-Adresse nicht gefunden.
    GOTO WEITER
  )

:Computer_gefunden
REM Hier landet man wenn der if-Ausdruck etwas gefunden hat
  ECHO.
  ECHO.MYCOMPNAME = %MYCOMPNAME%
  ECHO.MYCONNECT = %MYCONNECT%
  ECHO.MYSOURCE = %MYSOURCE%
  ECHO.MYIPADR = %MYIPADR%
  ECHO.MYSUBMASK = %MYSUBMASK%
  ECHO.MYSELECT = %MYSELECT%
  ECHO.MYGATEWAY = %MYGATEWAY%
  ECHO.MYGATEWAY1 = %MYGATEWAY1%
  ECHO.MYGATEWAY2 = %MYGATEWAY2%
  ECHO.MYDNS = %MYDNS%
  ECHO.MYDNS1 = %MYDNS1%
  ECHO.MYDNS2 = %MYDNS2%
  IF /i "%MYSELECT%" == "select" (
    ECHO.
    ECHO.Gateway auswaehlen:
    ECHO.-  MYGATEWAY1 = %MYGATEWAY1% Taste 1
    ECHO.-  MYGATEWAY2 = %MYGATEWAY2% Taste 2
    ECHO.
    rem CHOICE /C:AB /M:"Warte %MYTIMEOUT% Sekunden (Default: A) ..." /D:A /T:%MYTIMEOUT%
    SET /p MYCHOICE=Eingabe:
  )
  rem ECHO.%MYCHOICE% %ERRORLEVEL%
  SET MYGATEWAY=%MYGATEWAY1%
  SET MYDNS=%MYDNS1%
  IF %MYCHOICE% == 1 (
    rem ECHO.MYCHOICE.%MYCHOICE%
    SET MYGATEWAY=%MYGATEWAY1%
    SET MYDNS=%MYDNS1%
  )
  IF %MYCHOICE% == 2 (
    rem ECHO.MYCHOICE %MYCHOICE%
    SET MYGATEWAY=%MYGATEWAY2%
    SET MYDNS=%MYDNS2%
  )

  ECHO.
  ECHO.Gateway gewaehlt: %MYGATEWAY%
  ECHO.DNS gewaehlt: %MYDNS%

  NETSH interface ipv4 set address name="%MYCONNECT%" source=dhcp
  NETSH interface ipv4 set address name="%MYCONNECT%" source=%MYSOURCE% address=%MYIPADR% mask=%MYSUBMASK% gateway=%MYGATEWAY%
  NETSH interface ipv4 delete dnsserver name="%MYCONNECT%" address=all
  NETSH interface ipv4 set dnsserver name="%MYCONNECT%" source=%MYSOURCE% address=none 
  NETSH interface ipv4 add dnsserver "%MYCONNECT%" %MYDNS% 
  ECHO.
  NETSH interface ipv4 show config name="%MYCONNECT%"
  GOTO WEITER

:WEITER
  ECHO.
  ECHO.Programmende. Have a nice Day!
  ECHO.
  CHOICE /M:"Warte %MYTIMEOUT% Sekunden ..." /T:%MYTIMEOUT% /C:jn  /D:j
Wie schon gesagt, ist nur ein erster Wurf für eine IP/Gateway/DNS, aber das kriegt man schnell auch für zwei oder so hin.
Das wäre jetzt eine Lösung mit einer manuellen Umschaltung der Rechner für die User, ist aber auch erst mal egal, Hauptsache man muss die Fritzboxen nicht jedes Mal verbiegen.

Stefan
 
Zuletzt bearbeitet:
Ja, es lässt sich auch über die Clients regeln. Dafür setzt Du beide Fritzboxen in das gleiche Subnetz (e.g. default: 192.168.178.1 & Hot Standby: 192.168.178.2). Beide konfigurierst Du unabhängig voneinander, so das beide funktionieren und eine entsprechende VPN-Verbindung aufbauen. Wenn das erledigt ist, musst Du bei Problemen nur das Default-Gateway an den Clients umschalten (192.168.178.1 -> 192.168.178.2).

Ich bin Dein Batch-Script nur kurz überflogen aber das ist ein wenig mit Kanonen auf Spatzen geschossen. Es müssen keine alternativen IP-Adressen verwendet werden, umgeschaltet werden oder sonst was...

Ein simples
Code:
route DELETE 0.0.0.0 MASK 0.0.0.0 192.168.178.1
route ADD 0.0.0.0 MASK 0.0.0.0 192.168.178.2
reicht da völlig aus! Und wenn Du etwas mehr lange Weile hast, dann baust Du noch eine Abfrage ein, die prüft welche IP als Default-Gateway derzeit verwendet wird und dann automatisch die andere setzt. So kommen die Leute auch wieder relativ einfach zurück zur schnellen DSL-Verbindung.
 
Zuletzt bearbeitet:
Hallo Maverrick!

Erst mal Danke für den ROUTE DELETE / ADD Tip, das probiere ich mal aus.

Nun zu der Geschichte mit den zwei Fritzboxen im selben Subnet:
Genau das haben wir gerade, und zwar am Standort Y mit 192.168.20.0 CIDR /24 (beide) und eben die eine Box am Standort X mit mit 192.168.30.0 CIDR /24 (unproblematisch).
Insgesamt kommt es mit dieser Konstellation zu massiven Problemen, die sogar dazu führen können, dass die Boxen neu gestartet werden müssen. Beispiel: Leitung (2) ist momentan als VPN genutzt, Leitung (2) schmiert ab, dann heißt das noch lange nicht, dass Leitung (1) als VPN aktiv wird. Die Box am Standort X versucht z.B. weiterhin mit Leitung (2) VPN zu betreiben, das ist aber nicht da, und Leitung (1) wird nicht zugelassen, weil ja das selbe Subnet angesprochen wird. Manchmal gibt sich das von selbst wieder, manchmal aber auch nicht. Meistens müssen aber die einzelnen VPN in den Boxen aktiviert/deaktiviert werden und wenn's dumm läuft sind auch Neustarts fällig.

MfG Stefan
 
hmm...... Das ist ein wenig merkwürdig. Eigentlich sollte es kein Problem darstellen, wenn in der Routingtabelle mehrere Wege in ein und das selbe Subnetz existieren. Dafür gibts ja die Metrik, die dann die Priorität festlegt.

Baust Du mit beiden FBs gleichzeitig am Standort Y eine VPN-Verbindung auf? Kannst Du an der FB an Standort X mal schauen wie die routingtabelle aussieht? Müsstest dafür telnet aktivieren und "route" eintippen. Ergebniss bitte posten.
 
-> Maverrick

Oh, jetzt habe ich vermutlich ein kleineres Problem.
Standort X ist eine Fritzbox bei einem ISP mit Server-Housing. Das ist zwar auch nur in der nächsten Ortschaft, aber ich muss dort trotzdem ein Telefon anklemmen und das Telnet mit #96*7* manuell aktivieren. Das kann ein oder zwei Tage dauern. Ich melde mich wieder, wenn ich fertig bin.
mfg Stefan

-> andilao

pfsense kann mehrere WAN-Verbindungen
Danke auch noch mal an Dich, wenn gar nix mehr geht versuche ich damit mein Glück, so schnell gebe ich aber nicht auf. Ich hab bis dato schon ein paar mal im Web gelesen, dass andere Leute vergleichbare Fritzbox-Redundanz-Probleme haben, und das Sauberste scheint mir, auf jede Box ein anderes Subnet zu legen. Das Ding wird irgendwie geknackt, und wenn's das letzte ist was ich mache bevor ich den Herrn AVM erschieße.

mfg Stefan
 
Zuletzt bearbeitet:
Nee, du musst nicht unbedingt hinfahren. Versuch es doch erstmal mit der Wählhilfe. So mache ich das bei meiner 7390, da dort kein Telefon dran hängt.

Aktiviere die Wählhilfe: Telefonie -> Telefonbuch -> Wählhilfe -> Wählhilfe verwenden

Danach trägst Du ins Telefonbuch folgende Rufnummern/Einträge ein.

Code:
	telnetd off	#96*8*	privat	
	telnetd on	#96*7*	privat

Wenn Du dann auf die Rufnummer klickst, fängt die Fritzbox an zu wählen - Sprich sie aktiviert telnet :)


Btw. sind Doppelposts hier unerwünscht. Führe die beiden Posts mal bitte zusammen und lösche den überflüssigen.
 
Na das ist ja echt geil. Prima Idee!
So also:
Code:
BusyBox v1.19.3 (2012-10-12 14:52:09 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

ermittle die aktuelle TTY
tty is "/dev/pts/0"
Console Ausgaben auf dieses Terminal umgelenkt
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.180.1   *               255.255.255.255 UH    2      0        0 dsl
192.168.180.2   *               255.255.255.255 UH    2      0        0 dsl
xx.xx.xxx.224   *               255.255.255.224 U     2      0        0 dsl
192.168.179.0   *               255.255.255.0   U     0      0        0 guest
192.168.40.0    *               255.255.255.0   U     0      0        0 lan
169.254.0.0     *               255.255.0.0     U     0      0        0 lan
default         *               0.0.0.0         U     2      0        0 dsl

Die xxx sind die ersten Stellen der externen IP-Adresse ins Netz.

Ach So und vielleicht hilt das ja auch (aus der Box am Standort X)

Code:
VPN-Verbindungen
Akt Name                       IP    lokales Netz       entferntes Netz    Status
ja <dyndns Standort Y  Line 2> XXX   192.168.40.0 /24   192.168.20.0 /24   aktiv
ja <dyndns Standort Z2       > XXX   192.168.40.0 /24   192.168.z2.0 /24   
ja <dyndns Standort Z1       > XXX   192.168.40.0 /24   192.168.z1.0 /24   aktiv
ja <dyndns Standort Z3       > XXX   192.168.40.0 /24   192.168.z3.0 /24   aktiv
ja <dyndns Standort Y  Line 1> XXX   192.168.40.0 /24   192.168.20.0 /24   aktiv
ja <dyndns Standort Z0       > XXX   192.168.40.0 /24   192.168.z0.0 /24   aktiv
 
Zuletzt bearbeitet:
Welche Subnetze verwendest Du denn an den beiden Standorten? Stehen gerade beiden VPN-Verbindung zum Standort Y ?
 
Subnets siehe oben.
Gerade im Moment stehen beide.
 
hmm... Irgendwie fehlt mir in der Routing-Tabelle von Standort-X die Routen in den Standort Y. Sicher das die VPN-Verbindungen liefen, als Du die Tabelle gezogen hast?
 
Ich habe soeben mit "route" nochmal abgerufen, da liefen auch beide, identisch gleiches Ergebnis wie oben.
 
Merkwürdig. Ich weiss leider nicht, wie AVM das VPN umsetzt. Normalerweise findet man solche routen sinnigerweise in der routingtabelle. Scheint hier dann ja wohl nicht der Fall zu sein. Es gibt eine /var/vpnroutes. Kannst Du mal bitte dort rein schauen ob dort irgendwas hinterlegt ist?
 
na logisch:

Code:
# cat vpnroutes
192.168.20.0 255.255.255.0
192.168.z2.0 255.255.255.0
192.168.z1.0 255.255.255.0
192.168.z3.0 255.255.255.0
192.168.20.0 255.255.255.0
192.168.z0.0 255.255.255.0
#

Die Z sind die anderen Standorte.
 
Zuletzt bearbeitet:
Hmm.... wenn das jetzt tatsächlich die Routing-Tabelle für die Fritzbox ist, dann bekommen wir das Problem nicht gelöst. Es fehlt hier die Möglichkeit Prioritäten für die einzelnen Routen setzen zu können. Merkwürdig ist hier auch, dass das Interface für die Route nicht definiert wird. Mich wundert das es so überhaupt funktioniert.

Vielleicht meldet sich ja noch jemand, der sich mal intensiver mit dem Thema AVM VPN auf Konsole befasst hat.
 
Hallo Maverrick!
Auf jeden Fall mal vielen Dank für die rege Beteiligung und den Trick mit der Telefonie.
Ich hoffe auch, dass sich noch jemand findet, auf jeden Fall probiere ich weiter herum, ob man auf Seite der Clients was machen kann.
wenn ich zu einer brauchbaren Lösung komme stelle ich das hier ein.
mfg Stefan
 
Kostenlos!

Statistik des Forums

Themen
248,899
Beiträge
2,304,440
Mitglieder
378,594
Neuestes Mitglied
kerbilg