Startseite > 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 Schlagwörter: , , , , ,
  1. Es gibt noch keine Kommentare.
  1. No trackbacks yet.

Schreibe einen Kommentar

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

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

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

Facebook-Foto

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

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: