failover internet

Sziasztok

Lenne egy oxlna kérdésem, hogy hogyan lehet megoldani azt, hogyha a szerver egyik hálózati kapcsolata megszűnik akkor átváltson egy tartalék kapcsolatra? Hosszas böngészés után rátaláltam erre, vizsont ebben állítólag load balncing is van, ami nekem nem kéne:

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table bsnl
ip route add default via 192.168.1.1 table bsnl
ip route add 192.168.0.0/24 dev eth2 src 192.168.0.10 table tata
ip route add default via 192.168.0.1 table tata
ip rule add from 192.168.1.10 table bsnl
ip rule add from 192.168.0.10 table tata
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 1 nexthop via 192.168.0.1 dev eth2 weight 4

Kombinálva lenne egy SNATT-al, amit viszont iptablesben csinálnék meg, mert azt még vágom is. Az a kérdésem hogy ez a konfig mennyire alkalmas a failoverre, és hogyan lehetne átalakítani hogy ne legyen benne load balancing? Ill. a gép először az iptables-en engedi át a csomagokat, utána az ip route 2 es routing táblákon?

Köszönöm a válaszokat

Hozzászólások

Szemely szerint en csinalnek egy daemont vagy cronbol futtatnek egy bash vagy perl scriptet, ami folyamatosan(cronnal ugye idonkent) pingeli egyik IFen a netet, ha fail, ifup masikIF, route atallit, stb. Ha ujra helyrejon, ugyanez csak visszaallit.
Kerdes itt a server-daemonok hogyan allnak at a masik IFen hallgatozasra(ha kell ilyen egyaltalan).

Hogy érted hogy megszűnik? Nem tud adatot forgalmazni vagy az interfész down-ba megy? Mert ha az első, akkor azt csak aktív vizsgálattal tudod ellenőrizni, ahogy dorsy írta.

Egyébként ezt jobb routerek is meg tudják oldani, például Linksys RV042. Be lehet neki állítani ping ellenőrzést. De már a régi Draytek-ünk is tudta, csak akkor még ISDN backup volt.

esetleg írhatnál többet is arról a szerverről meg a környezetéről, mert így túl sok választási lehetőség van...

lenne két internetkapcsolat ( egy bérelt vonal és egy adsl ) és 3 belső hálózat. ha a bérelt vonal szakad, akkor tállna az adsl-re, majd ha visszajön a bérelt vonal, akkor viszsaváltana rá.

Kicsit kerestem, és találtam aegy scriptet:

#!/bin/bash
#Copyright Angsuman Chakraborty, Taragana. Permission is granted for personal, non-commercial use.
#The script may not be re-distributed in any form without written permission from Angsuman Chakraborty ( angsuman@taragana.com ).
#The script may be modified for personal use.
#THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR ACCEPTS NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.

# Conventionally 0 indicates success in this script.

# Time between checks in seconds
SLEEPTIME=10

#IP Address or domain name to ping. The script relies on the domain being
#pingable and always available
TESTIP=www.yahoo.com

#Ping timeout in seconds
TIMEOUT=2

# External interfaces
EXTIF1=eth1
EXTIF2=eth2

#IP address of external interfaces. This is not the gateway address.
IP1=192.168.1.10
IP2=192.168.0.10

#Gateway IP addresses. This is the first (hop) gateway, could be your router IP
#address if it has been configured as the gateway
GW1=192.168.1.1
GW2=192.168.0.1

# Relative weights of routes. Keep this to a low integer value. I am using 4
# for TATA connection because it is 4 times faster
W1=1
W2=4

# Broadband providers name; use your own names here.
NAME1=BSNL
NAME2=TATA

#No of repeats of success or failure before changing status of connection
SUCCESSREPEATCOUNT=4
FAILUREREPEATCOUNT=1

# Do not change anything below this line

# Last link status indicates the macro status of the link we determined. This is down initially to force routing change upfront. Don't change these values.
LLS1=1
LLS2=1

# Last ping status. Don't change these values.
LPS1=1
LPS2=1

# Current ping status. Don't change these values.
CPS1=1
CPS2=1

# Change link status indicates that the link needs to be changed. Don't change these values.
CLS1=1
CLS2=1

# Count of repeated up status or down status. Don't change these values.
COUNT1=0
COUNT2=0

while : ; do
ping -W $TIMEOUT -I $IP1 -c 1 $TESTIP > /dev/null 2>&1
RETVAL=$?

if [ $RETVAL -ne 0 ]; then
echo $NAME1 Down
CPS1=1
else
CPS1=0
fi

if [ $LPS1 -ne $CPS1 ]; then
echo Ping status changed for $NAME1 from $LPS1 to $CPS1
COUNT1=1
else
if [ $LPS1 -ne $LLS1 ]; then
COUNT1=`expr $COUNT1 + 1`
fi
fi

if [[ $COUNT1 -ge $SUCCESSREPEATCOUNT || ($LLS1 -eq 0 && $COUNT1 -ge $FAILUREREPEATCOUNT) ]]; then
echo Uptime status will be changed for $NAME1 from $LLS1
CLS1=0
COUNT1=0
if [ $LLS1 -eq 1 ]; then
LLS1=0
else
LLS1=1
fi
else
CLS1=1
fi

LPS1=$CPS1

ping -W $TIMEOUT -I $IP2 -c 1 $TESTIP > /dev/null 2>&1
RETVAL=$?

if [ $RETVAL -ne 0 ]; then
echo $NAME2 Down
CPS2=1
else
CPS2=0
fi

if [ $LPS2 -ne $CPS2 ]; then
echo Ping status changed for $NAME2 from $LPS2 to $CPS2
COUNT2=1
else
if [ $LPS2 -ne $LLS2 ]; then
COUNT2=`expr $COUNT2 + 1`
fi
fi

if [[ $COUNT2 -ge $SUCCESSREPEATCOUNT || ($LLS2 -eq 0 && $COUNT2 -ge $FAILUREREPEATCOUNT) ]]; then
echo Uptime status will be changed for $NAME2 from $LLS2
CLS2=0
COUNT2=0
if [ $LLS2 -eq 1 ]; then
LLS2=0
else
LLS2=1
fi
else
CLS2=1
fi

LPS2=$CPS2

if [[ $CLS1 -eq 0 || $CLS2 -eq 0 ]]; then
if [[ $LLS1 -eq 1 && $LLS2 -eq 0 ]]; then
echo Switching to $NAME2
ip route replace default scope global via $GW2 dev $EXTIF2
elif [[ $LLS1 -eq 0 && $LLS2 -eq 1 ]]; then
echo Switching to $NAME1
ip route replace default scope global via $GW1 dev $EXTIF1
elif [[ $LLS1 -eq 0 && $LLS2 -eq 0 ]]; then
echo Restoring default load balancing
ip route replace default scope global nexthop via $GW1 dev $EXTIF1 weight $W1 nexthop via $GW2 dev $EXTIF2 weight $W2
fi
fi
sleep $SLEEPTIME
done

Nekem a load blaancing nem kellene, elég ha ezt a 3 sort törlöm, illetve a fenti ip route os parancsok közül kiszedem az utolsót?

elif [[ $LLS1 -eq 0 && $LLS2 -eq 0 ]]; then
echo Restoring default load balancing
ip route replace default scope global nexthop via $GW1 dev $EXTIF1 weight $W1 nexthop via $GW2 dev $EXTIF2 weight $W2

Ez alapvetően nem rossz, csak a cselekmény részeket írnám át teljesen.
Ha nem kell az, hogy folyamatosan menjen a két vonal egyszerre, hanem az adsl hidegtartalék, akkor kell egy felhúzott interfész a bérelt vonalhoz, azon pingeled a bérelt vonalhoz kapott default gw-t, ha az elszállt, akkor kiveszed a default gw route bejegyzést és elindítod az adsl-hez a pppoe-t.

Ha visszajött, akkor lelövöd a pppoe-t és visszarakod a default gw-t.

Másik lehetséges megoldás, hogy megkéred a bérelt vonali szolgáltatódat, hogy valami routing protokollon hirdessen neked default gw-t és ha az van, akkor megy a bérelt vonal, ha nincs, akkor pppoe indít.

Kérdés, hogy állandóan elérhető-e mindkét net és hogy külön interface-en jön-e a két kapcsolat.
Ha mindkét kérdésre igen a válasz, akkor én csinálnék egy fail-over bonding-ot.

Egyébként kapható elérhető áron 2 WAN portos SOHO router, ami tud failovert.

Üdv,
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Mikrotik RB750 vagy RB750G, olcsó, egyszerü, agyonállítgatható. Megfelelő beállítással tudja a backup megoldást is. Nem kattingatós a beállítása, inkább cisco-s.
5 port van rajta 100Mbit vagy Gbit-esek, egy belső switchen, de már belül külön látod mindet a szoftverben. Az 5 portot bármire használhatod, akár milyen felosztásban.
Pl.: - 2 WAN, 1 LAN(-> 3 switch)
- 3 WAN, 2 különböző LAN
- 2 WAN, 2 különböző LAN, 1 LAN AP-knek (szürve)

Sosem próbáltam, de szerintem két default gw eltérő metric értékkel megoldja:

route add default gw 111.111.111.111 metric 1
route add default gw 222.222.222.222 metric 1000

Üdv!

Arrabonus

En pfSense-szel csinaltam ilyet egy ADSL-Chello kombon, Chello a default, es vissza is all ra, ha visszajott. Elvileg a 2 default gw-es megoldast hasznalja az ipcop is, ki kell probalni...