Home > Deutsch > default gateway failover / redundant gateway

default gateway failover / redundant gateway

Szenario / Aufgabenstellung:

In einem vorhandenen LAN soll zur Lastverteilung ein weiterer Zugang zum Internet eingebaut werden. Die beiden Internetzugänge müssen über zwei verschiedene Geräte laufen und sind auch räumlich getrennt. Der Einsatz teurer Load-Balance Lösungen ist aus Kostengründen ausgeschlossen.
Die Clients im LAN laufen mit Windows XP oder Windows Vista.

Lösungsweg:

Es wird in dem LAN zwei default-gateways geben. Ein Teil der Clients benutzt den einen Gateway und ein anderer Teil den anderen. Für den Fall dass ein Gateway ausfällt sollen die jeweiligen Clients aber über den anderen Gateway geleitet werden, ohne das der Benutzer etwas ändern muss. Ist der Gateway wieder vorhanden, musss der Client wieder automatisch zurück umschalten.

Dazu habe ich ein kleines BATCH-Script geschrieben. Dieses Script wird einfach per Autostart ausgeführt und läuft im Hintergrund mit.

@echo off
rem: ist das WLAN an und im richtigen NETZ?
rem: das Script soll nur in dem eigenen Netzt ausgeführt werden
rem: wenn der Benutzer sich mit seinem Laptop in ein anderes Netzt hängt darf das Script nicht
rem: ausgeführt werden
:start
ipconfig | find "174.111.33.1"
 if errorlevel 1 (goto sleep)  

 set GATEWAY1=174.111.33.10
 set GATEWAY2=174.111.33.1

 rem: die Adresse, die zur Überprüfung des Gateways gepingt werden soll
 set PINGDEST="174.112.1.2"       

 rem: GATEWAY1 als default setzen
 call route delete 0.0.0.0 mask 0.0.0.0
 call route add 0.0.0.0 mask 0.0.0.0 %GATEWAY1% 

 set CURRENTGATEWAY=%GATEWAY1% 

 :CheckGateway
 ping -n 3 %PINGDEST% | find "TTL="
 rem: wenn der Ping nicht ankommt Gateway wechseln
 if errorlevel 1 (goto ChangeGateway2) else (goto ChangeGateway1) 

 :ChangeGateway1
 rem: wenn dieser Gateway gesetzt ist, dann warte ab und beginne von vorn
 rem: 174.111.254.254 sollte nicht erreichbar sein, aber im selben Netz liegen
 if "%GATEWAY1%"=="%CURRENTGATEWAY%"   (
 ping 174.111.254.254 -n 1 -w 60000 > NULL
 goto CheckGateway
 )

 rem: wieder prüfen ob wir nicht zwischenzeitlich in einem anderen Netz sind, oder gar keine Verbindung haben
 ipconfig | find "174.111.33.1"
 if errorlevel 1 (goto sleep) 

 rem: sonst ändere den Gateway
 set CURRENTGATEWAY=%GATEWAY1%
 echo failover to %CURRENTGATEWAY%
 call route delete 0.0.0.0 mask 0.0.0.0  
 call route add 0.0.0.0 mask 0.0.0.0 %CURRENTGATEWAY%
 goto CheckGateway 

 :ChangeGateway2
 rem: wenn dieser Gateway gesetzt ist, dann warte ab und beginne von vorn
 rem: 174.111.254.254 sollte nicht erreichbar sein, aber im selben Netz liegen
 if "%GATEWAY2%"=="%CURRENTGATEWAY%"   (
 ping 174.111.254.254 -n 1 -w 6000 > NULL
 goto CheckGateway
 )
 rem: sonst ändere den Gateway
 set CURRENTGATEWAY=%GATEWAY2% 

 rem: wieder prüfen ob wir nicht zwischenzeitlich in einem anderen Netz sind, oder gar keine Verbindung haben
 ipconfig | find "174.111.33.1"
 if errorlevel 1 (goto sleep) 

 rem: Gateway wechseln
 echo failover to %CURRENTGATEWAY%
 call route delete 0.0.0.0 mask 0.0.0.0  
 call route add 0.0.0.0 mask 0.0.0.0 %CURRENTGATEWAY%
 goto CheckGateway 

 :sleep
 rem: da es bei batch leider keinen ordentlichen sleep gibt, diese Krücke
 echo waiting for WLAN
 ping -n 65 localhost >NULL
 goto start
Kategorien:Deutsch Tags:, , , , ,
  1. Es gibt noch keine Kommentare.
  1. Keine Trackbacks bisher.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

Gravatar
WordPress.com-Logo

Melde Dich bitte bei WordPress.com an, um einen Kommentar auf deinem Blog zu schreiben.

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Log Out / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Log Out / Ändern )

Verbinde mit %s

Follow

Get every new post delivered to your Inbox.