LinuxForum.Fans
Тема

Смена канала

Автор: asleep 4 сообщений 1151 просмотров
#186582

Доброго времени суток всем!

Нуждаюсь в помощи, или как минимум в хорошем совете.

Описываю ситуацию.
Есть 2 канала интернета. В комп подходит 2 сетевых кабеля, установлено 2 сетевухи. Каналы не сказать чтобы особо стабильные оба, периодически выключается то один, то другой. Активным держится только один канал.

Задача
Если активный канал перестаёт функционировать, то по прошествии 3-ёх минут его отключать и включать "резервный" и направлять весь трафик по нему, но не переставать следить за "основным" и как только он снова будет нормально функционировать (допустим в течении 2-3 минут бесперебойной работы) снова направлять весь трафик на "основной" канал.

Буду рад любой помощи, так как понятия не имею как сделать счётчик. Ну или вообще может прийдёт кому более светлая мысль в голову, как сделать что-то подобное.

Заранее спасибо.

#186591

Напиши скрипт и запускай его по cron

#202536

у меня похожая задача, вот что нарыл

http://linuxforum.ru/viewtopic.php?id=15893 по мне сложновато пока

text
# 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

если кому не лень, не могли бы прокоментировать?

и

text
 #! /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

тут не понял, переключит ли он на основной канал обратно, когда тот подниметься?

#202537
Сергей В. написал:
у меня похожая задача, вот что нарыл

http://linuxforum.ru/viewtopic.php?id=15893 по мне сложновато пока

А что там непонятного? Вроде всё просто.

Да, основной канал подключится, если он будет рабочим.

Войдите или зарегистрируйтесь, чтобы ответить.