1

В сети есть два шлюза через разных провайдеров. Как сделать так что бы выход в интернет как то динамически распределялся между двумя шлюзами? И в случае не работы одного из них использовался рабочий канал?
Если более подробно описывать инфраструктуру то на данный момент у меня один правайдер. Для выхода в интернет используется Linux шлюз который авторизируется у провайдера по pptp со всеми ограничениями по договору. Так же есть шлюз cisco 1921 который просто получает ip внутрений от правайдера и поднимает тунель с другой организации (МИАЦ). Его скорость не как не ограничена, и этот тунель используется для терминального доступа тонких клиентов. Сейчас планируется подключить второго правайдера. Как лучше всего го вписать в существующую инфраструктуру?

2

semperN пишет:

В сети есть два шлюза через разных провайдеров. Как сделать так что бы выход в интернет как то динамически распределялся между двумя шлюзами? И в случае не работы одного из них использовался рабочий канал?
Если более подробно описывать инфраструктуру то на данный момент у меня один правайдер. Для выхода в интернет используется Linux шлюз который авторизируется у провайдера по pptp со всеми ограничениями по договору. Так же есть шлюз cisco 1921 который просто получает ip внутрений от правайдера и поднимает тунель с другой организации (МИАЦ). Его скорость не как не ограничена, и этот тунель используется для терминального доступа тонких клиентов. Сейчас планируется подключить второго правайдера. Как лучше всего го вписать в существующую инфраструктуру?

Через таблици маршрутизации.
Описано в lartc, глава 4.2. "Маршрутизация через несколько каналов/провайдеров."

Ещё как вариант протоколы динамической маршрутизации, BGP, RIP. А если попроще, скрипт.


Вот рабочий вариант, только тут для 3-х провайдеров, но думаю это не проблема  bx

#!/bin/bash
isp1=ppp0;
isp2=t253n1;
isp3=eth3;
remote_site=ya.ru;
isp0=$isp1;
logfile="/var/log/gateways.log";
gwcurr ()
 {
curr=$(ip route show|grep default|awk '{print $3}');
 }
gwcurr
if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp1 up" >> $logfile
        exit 0
        fi
else
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp1 down" >> $logfile
isp0=$isp2;
    if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
gwcurr
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp2 up" >> $logfile
        exit 0
        fi
    else
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp2 down" >> $logfile
isp0=$isp3;
    if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
gwcurr
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp3 up" >> $logfile
        exit 0
        fi
        else
date '+ %d.%m.%Y% %H:%M:%S'>> $logfile
echo "WARNING! DOWN ALL!" >> $logfile
  fi
fi
fi
Спасибо, Вы очень любезны.

4

Сергей В. пишет:

Ещё как вариант протоколы динамической маршрутизации, BGP, RIP. А если попроще, скрипт.


Вот рабочий вариант, только тут для 3-х провайдеров, но думаю это не проблема  bx

#!/bin/bash
isp1=ppp0;
isp2=t253n1;
isp3=eth3;
remote_site=ya.ru;
isp0=$isp1;
logfile="/var/log/gateways.log";
gwcurr ()
 {
curr=$(ip route show|grep default|awk '{print $3}');
 }
gwcurr
if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp1 up" >> $logfile
        exit 0
        fi
else
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp1 down" >> $logfile
isp0=$isp2;
    if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
gwcurr
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp2 up" >> $logfile
        exit 0
        fi
    else
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp2 down" >> $logfile
isp0=$isp3;
    if ping -c 4 -I $isp0 $remote_site > /dev/null 2>&1; then
gwcurr
        if [ $curr = $isp0 ]; then
        exit 0
        else
        ip route del default > /dev/null;
        ip route add default dev $isp0;
date '+ %d.%m.%Y %H:%M:%S' >> $logfile
echo "isp3 up" >> $logfile
        exit 0
        fi
        else
date '+ %d.%m.%Y% %H:%M:%S'>> $logfile
echo "WARNING! DOWN ALL!" >> $logfile
  fi
fi
fi

ваш скрипт вроде для переключения шлюза а не как длля балансировки траффика.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.
semperN пишет:

И в случае не работы одного из них использовался рабочий канал?

Я понял так. Ну да ладно

А для балансировки http://www.opennet.ru/docs/RUS/LARTC/x348.html дальше по теме nexthop

Спасибо, Вы очень любезны.

6

Сергей В. пишет:
semperN пишет:

И в случае не работы одного из них использовался рабочий канал?

Я понял так. Ну да ладно

А для балансировки http://www.opennet.ru/docs/RUS/LARTC/x348.html дальше по теме nexthop

угу плюс к этому проще прикрутить ospf чем скрипты.

Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.