Ma tot chinui de cateva zile sa "conving" linuxu meu cu cunostintele mele... ca 
atunci cand pica conexiunea principala sa se mute pe o conexiune de back-up pe 
urmatoarea scheama:

- Pica conexiunea principala se muta pe BackUp1
- Sta pe BackUp1 pana isi revine conexiunea principala sau pana pica BackUp1
- Daca pica BackUp1 se muta pe BackUp2
- Sta pe BackUp2 pana isi revine conexiunea principala / BackUp1 sau pana pica 
BackUp2
.....

Aseara am reusit sa fac ceva....
Insa are 1 "hiba" se muta de la o conexiune la alta si cand e canalu full si 
cresc timpii de ping.

Si problema care mai apare la mine e ca BackUp1 e conexiune PPPoE si daca pica 
(indiferent pe ce conexiune lucreaza linuxu) in momentul in care se 
reconecteaza imi genereaza si ruta default prin el si anuleaza tot ce face 
programu.

Uitati programelu :-) (era mai maricel da am mai taiat din el ca erau chestii 
specifice retzelei mele)

Aaa... da... si o alta hiba.... Conexiunile care au IP real nu sunt vizibile 
din net daca nu e atunci setat gw-ul prin ele (urmeaza zilele astea sa 
aprofundetz si problema asta).

La mine sunt retele de cartier si mai pica din cand in cand... :-)

#!/bin/bash
# interfetze externe
UPLINK1="eth1"
UPLINK2="ppp0"
UPLINK3="eth0"
UPLINK4="eth3"

# adresa serverului pt. nat
NAT1="X.X.X.X"
NAT2="X.X.X.X"
NAT3="X.X.X.X"
NAT4="X.X.X.X"

# GW
GW1="X.X.X.X"
GW2="X.X.X.X"
GW3="X.X.X.X"
GW4="X.X.X.X"

# IP-uri pt. test
T1="X.X.X.X"
T2="X.X.X.X"
T3="X.X.X.X"
T4="X.X.X.X"

# adresele locale pe care se face NAT
SMECHERZ="192.168.0.0/255.255.255.0"

iptables -F; iptables -t nat -F; iptables -t mangle -F
modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe iptable_mangle
modprobe iptable_nat
modprobe ipt_LOG
modprobe ipt_limit
modprobe ipt_state
modprobe ipt_MASQUERADE
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_ftp
modprobe ip_nat_tftp
modprobe ip_nat_irc
 
iptables -P INPUT ACCEPT
iptables -A INPUT -i ! ${UPLINK1} -j ACCEPT
iptables -A INPUT -i ! ${UPLINK2} -j ACCEPT
iptables -A INPUT -i ! ${UPLINK3} -j ACCEPT
iptables -A INPUT -i ! ${UPLINK4} -j ACCEPT

route add $T1 gw $GW1 dev $UPLINK1
route add $T2 gw $GW1 dev $UPLINK2
route add $T3 gw $GW1 dev $UPLINK3
route add $T4 gw $GW1 dev $UPLINK4

for s in ${SMECHERZ}
do
   iptables -t nat -A POSTROUTING -o ${UPLINK4} -s ${s} -d $T4 -j SNAT 
--to-source ${NAT4}
   iptables -t nat -A POSTROUTING -o ${UPLINK3} -s ${s} -d $T3 -j SNAT 
--to-source ${NAT3}
   iptables -t nat -A POSTROUTING -o ${UPLINK2} -s ${s} -d $T2 -j SNAT 
--to-source ${NAT2}
   iptables -t nat -A POSTROUTING -o ${UPLINK1} -s ${s} -d $T1 -j SNAT 
--to-source ${NAT1}

   iptables -t nat -A POSTROUTING -o ${UPLINK4} -s ${s} -j SNAT --to-source 
${NAT4}
   iptables -t nat -A POSTROUTING -o ${UPLINK3} -s ${s} -j SNAT --to-source 
${NAT3}
   iptables -t nat -A POSTROUTING -o ${UPLINK2} -s ${s} -j SNAT --to-source 
${NAT2}
   iptables -t nat -A POSTROUTING -o ${UPLINK1} -s ${s} -j SNAT --to-source 
${NAT1}
done

retval1=1
retval2=1
retval3=1
retval4=1

while /bin/true; do
    ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1
    retval1=$?
    ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1
    retval2=$?
    ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1
    retval3=$?
    ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1
    retval4=$?
    if [ $retval1 -eq 0 ]; then
        route del default
        route add default gw $GW1 dev $UPLINK1
        clear
        echo Conexiunea 1 activa
        ifconfig $UPLINK1
        while [ $retval1 -eq 0 ]; do
            ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1
            retval1=$?
            ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1;
            retval2=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1;
            retval3=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1;
            retval4=$?;
            sleep 50;
        done;

    elif [ $retval2 -eq 0 ]; then
        route del default
        route add default gw $GW2 dev $UPLINK2
        clear
        echo Conexiunea 2 activa
        ifconfig $UPLINK2
        while [ $retval1 -eq 1 -a $retval2 -eq 0 ]; do
            ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1;
            retval1=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1;
            retval2=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1;
            retval3=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1;
            retval4=$?;
            sleep 50;
        done;

    elif [ $retval3 -eq 0 ]; then
        route del default
        route add default gw $GW3 dev $UPLINK3
        clear
        echo Conexiunea 3 activa
        ifconfig $UPLINK3
        while [ $retval1 -eq 1 -a $retval2 -eq 1 -a $retval3 -eq 0 ]; do
            ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1;
            retval1=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1;
            retval2=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1;
            retval3=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1;
            retval4=$?;
            sleep 50;
        done;

    elif [ $retval4 -eq 0 ]; then
        route del default
        route add default gw $GW4 dev $UPLINK4
        clear
        echo Conexiunea 4 activa
        ifconfig $UPLINK4
        while [ $retval1 -eq 1 -a $retval2 -eq 1 -a $retval3 -eq 1 -a $retval4 
-eq 0 ]; do
            ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1;
            retval1=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1;
            retval2=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1;
            retval3=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1;
            retval4=$?;
            sleep 50;
        done;

    else
         route del default
        route add default gw $GW1 dev $UPLINK1
        clear
        echo Conexiunea 1 activa
        ifconfig $UPLINK1
        while [ $retval1 -eq 0 ]; do
            ping -c 5 -w 10 -i 0.5 -n -q ${T1} 1>/dev/null 2>&1;
            retval1=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T2} 1>/dev/null 2>&1;
            retval2=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T3} 1>/dev/null 2>&1;
            retval3=$?;
            ping -c 5 -w 10 -i 0.5 -n -q ${T4} 1>/dev/null 2>&1;
            retval4=$?;
            sleep 50;
        done;

    fi;

sleep 50;
done;
_______________________________________________
RLUG mailing list
[email protected]
http://lists.lug.ro/mailman/listinfo/rlug

Raspunde prin e-mail lui