Выкладываю на общий суд сабж: ну нету БГП ни у одного из моих провов :-(
Нужно простое переключение каналов: при падении основного на резерв, при восстановлении - обратно.роутер - фряха 6.2 (ДНС,почта,апач,помойка,нат...)
xl0 -> 192.168.x.x
rl0 -> ISP A (ADSL 256 kbit)
rl1 -> ISP B (WiFi 1 Mbit)
Сию каку, по имени fallover.sh "пихаю" в 5-ти минутный крон.
#cat fallover.sh
#!/bin/sh
WAN_MAIN_CHECK_IP=google.ru # Надежный как кирпич ip-шник, я так думаю!? :-)
WAN_BACKUP_CHECK_IP= rl0 # Вместо фейса, его ip-шник конечно же.
DEFAULT_ROUTE_IP=`netstat -nr | grep default`
ISP_1_GATE=A.A.A.A
ISP_1_HALFBAND=`expr 32 \* 1024 \* 300 / 2`
ISP_1_ROUTE_COUNT=`ipfw show 40 | awk '{print $3}' ; ipfw -q zero 40`
ISP_2_GATE=B.B.B.B
ISP_2_HALFBAND=`expr 128 \* 1024 \* 300 / 2`
ISP_2_ROUTE_COUNT=`ipfw show 60 | awk '{print $3}' ; ipfw -q zero 60`
if echo $DEFAULT_ROUTE_IP | grep $ISP_1_GATE > /dev/null;
then
if [ "$ISP_1_HALFBAND" -gt "$ISP_1_ROUTE_COUNT" ];
then
if ! (ping -c 3 $WAN_MAIN_CHECK_IP > /dev/null);
then
route delete default;
route add default $ISP_2_GATE;
route add $WAN_BACKUP_CHECK_IP $ISP_2_GATE;
fi
fi
else
if [ "$ISP_2_HALFBAND" -gt "$ISP_2_ROUTE_COUNT" ];
then
if (ping -c 3 $WAN_BACKUP_CHECK_IP > /dev/null) || !(ping -c 3 $WAN_MAIN_CHECK_IP > /dev/null);
then
route delete default;
route delete $WAN_BACKUP_CHECK_IP;
route add default $ISP_1_GATE;
else
echo "<<L1e" > /dev/speaker;
fi
else
echo "<<e3e3e3e3" > /dev/speaker;
fi
fi
Поднимаю еще один НАТ, и добавляю каунты в ipfw:
/sbin/natd -f /etc/natd.conf -n rl1 -P /var/run/8669.pid
ipfw -q add 40 count ip from any to me in via rl0
ipfw -q add 60 count ip from any to me in via rl1
ipfw -q add 70 divert 8669 from any to any via rl1
Сам знаю что данная резолюция не фен-шуй (далеко не..), и скорее всего похожа на протез.
Поетому меня интересует ВАШЕ мнение относительно ее кривизны.
P.S. Просьба, сильно ногами не пинать :-(