Доброго времени суток всем!
Нуждаюсь в помощи, или как минимум в хорошем совете.
Описываю ситуацию.
Есть 2 канала интернета. В комп подходит 2 сетевых кабеля, установлено 2 сетевухи. Каналы не сказать чтобы особо стабильные оба, периодически выключается то один, то другой. Активным держится только один канал.
Задача
Если активный канал перестаёт функционировать, то по прошествии 3-ёх минут его отключать и включать "резервный" и направлять весь трафик по нему, но не переставать следить за "основным" и как только он снова будет нормально функционировать (допустим в течении 2-3 минут бесперебойной работы) снова направлять весь трафик на "основной" канал.
Буду рад любой помощи, так как понятия не имею как сделать счётчик. Ну или вообще может прийдёт кому более светлая мысль в голову, как сделать что-то подобное.
Заранее спасибо.
Смена канала
Напиши скрипт и запускай его по cron
у меня похожая задача, вот что нарыл
http://linuxforum.ru/viewtopic.php?id=15893 по мне сложновато пока
# Default gateways
GW1=IP_шлюза_основного_провайдера
GW2=IP_шлюза_резервного_провайдера
# Interfaces
eth1=IP_основного_провайдера
eth2=IP_резервного_провайдера
# Destinations
contr1=www.ya.ru
/sbin/ping -q -c 1 -S $eth1 $contr1 > /dev/null 2>&1
if [ $? != 0 ]; then
/sbin/route change default $GW2
&& touch /etc/ppp/gw.changed
else
if [ -f /etc/ppp/gw.changed ]; then
/sbin/route change default $GW1
&& rm /etc/ppp/gw.changed
fi
fi
если кому не лень, не могли бы прокоментировать?
и
#! /bin/bash
MAIN=192.168.100.1
SECOND=192.168.100.100
# Получаем текущий роутер по умолчанию.
CURRENT=$(route -n | tail -1 | awk '{ print $2}')
#echo $CURRENT
# Проверяем, пингуется ли основной роутер.
if ping -c4 $MAIN > /dev/null 2>&1; then
# echo "MAIN working"
# Если пингуется, проверяем, является ли он
# сейчас роутером по умолчанию.
if [ $MAIN = $CURRENT ]; then
# Если да, то просто выходим
# echo "MAIN current. Exit"
exit 0
else
# Если нет, то меняем маршрут на основной роуер.
# echo "MAIN not Current, switch yo MAIN"
route del default 2> /dev/null
route add default gw $MAIN
logger "Default route switch to MAIN: $MAIN"
# echo "Default route switched to MAIN: $MAIN"
exit 0
fi
else
# echo "MAIN not working"
# Если MAIN не является маршрутом по умолчанию
# Проверяем, является ли SECOND маршрутом по умолчанию.
if [ $SECOND = $CURRENT ]; then
# Если является, то ничего не далаем.
# echo "Second = Current. Exit"
exit 0
else
# Если не является, то меняем маршрут
# на вспомогательный роутер/
# echo "Second not Current. switch to Second"
route del default 2> /dev/null
route add default gw $SECOND
logger "Default route switch to SECOND: $SECOND"
# echo "Default route switched to SECOND: $SECOND"
exit 0
fi
fi
тут не понял, переключит ли он на основной канал обратно, когда тот подниметься?
у меня похожая задача, вот что нарыл
http://linuxforum.ru/viewtopic.php?id=15893 по мне сложновато пока
А что там непонятного? Вроде всё просто.
Да, основной канал подключится, если он будет рабочим.