Страница 1 из 1

Переключение между каналами (FreeBSD)

Добавлено: 31 мар 2010, 11:15
Raven
Скрипт для шлюзов с двумя внешними каналами (FreeBSD), проверяющий и переключающий их в случае отсутствия интернета. на основном канале.

Код: Выделить всё

#! /bin/sh

route="/sbin/route"
ping="/sbin/ping"
natd="/sbin/natd"
sleep="/bin/sleep"
killall="/usr/bin/killall"
touch="/usr/bin/touch"

# внешние сетевые карты
lan_isp1="rl0"
lan_isp2="rl1"

GW1=194.242.118.61
GW2=83.218.237.45

$ping -q -c 2 $GW1 > /dev/null 2>&1

# Если код завершения пинга 1 = error
if [ $? !=0 ]; then
        # пингуем второй канал
        $ping -q -c 2 $GW2 > /dev/null 2>&1
        # если код завершение true =0
        if [ $? =0 ]; then
                # Если файла gw2.changed нет, создаем его.
                # Он определяет переход на основной канал,
                # даже если есть и резервный
                # GW2 будет маршрутом по умолчанию
                if [ ! -f /tmp/gw2.changed ]; then
                $route delete default
                $killall natd
                $route add default $GW2
                $touch /tmp/gw2.changed
                $sleep 15
                $natd -n ${lan_isp2}
                . /etc/fwrules2.sh
                exit 0;
                fi
        else
                echo "Оба канала не доступны";
                exit 1;
        fi
else
        # Если пинганулся первый шлюз
        # Если файл gw2.changed найден, удаляем его
        # GW1 будет маршрутом по умолчанию
        if [ -f /tmp/gw2.changed ]; then
                $route delete default
                $killall natd
                $route add default $GW1
                $rm /tmp/gw2.changed
                $sleep 15
                $natd -n ${lan_isp1}
                . /etc/fwrules1.sh
                exit 0;
        fi
        echo "Основной канал работает и установлен по умолчанию";
        exit 0;
fi

Re: Переключение между каналами (FreeBSD)

Добавлено: 02 апр 2013, 12:52
xvz
Raven
как будет если обе PPPoE подключение?

Re: Переключение между каналами (FreeBSD)

Добавлено: 02 апр 2013, 21:14
Raven
В принципе так же, за исключением нескольких нюансов.

Re: Переключение между каналами (FreeBSD)

Добавлено: 06 апр 2013, 21:03
xvz
Raven
можете поподробнее
# внешние сетевые карты
lan_isp1="rl0"
lan_isp2="rl1"

GW1=194.242.118.61
GW2=83.218.237.45
здесь что изменится если ip динамический?

Re: Переключение между каналами (FreeBSD)

Добавлено: 07 апр 2013, 19:43
Infernal Flame
xvz
даже при динамическом ИПе у провайдера шлюз не меняется. Т.е. его можно оставить статично в скрипте... Ну или уж на самый крайний случай получать grep'ом из выхлопа ifconfig (или как он там во фряхе зовется?)

Re: Переключение между каналами (FreeBSD)

Добавлено: 07 апр 2013, 22:43
Raven
Infernal Flame
Да, а имена интерфейсов будут соответственно pppХ