LINUX.ORG.RU
ФорумAdmin

Два канала: один падает, другой автоматом поднимается


0

0

linux. Мне нужно реализовать вариант, когда падает канал одного провайдера и автоматом нужно задействовать другой. Решит ли эту проблему следующая строка?

ip route add default scope global nexthop via $ip_prov1 dev ppp0 weight 1 nexthop via $ip_prov2 dev ppp1 weight 2

Или может это значит, что пакеты будут делиться соотношением 2:1?

Если кто реализовывал такую схему, поделитесь, пожалуйста.

anonymous

Походу таким образом только распределяется канал на 2 провов. Сперва хорошо бы определить критерий, на основании к-рого можно было бы заключить, что 1 пров сдох. Сразу на ум приходит пещерный вариант с использованием пинга, с последующей обработкой результатов его работы (самое простое

ping -c 10 some.unavailable.host

if [ $? = "2" ]; then

route add default prov2's.gateway.ip.address

fi

). Но тут возможен риск ошибиться (мало ли что может случиться с пингуемым хостом, тогда необходим анализ ответа пинга в строковом виде, а не кода возврата), но по крайней мере есть от чего плясать.

Коды возврата описаны в <sysexits.h> (согласно бессмертному и единственно верному man ping).

Узбеков !

FiL0

anonymous
()

короче, не знаю, возможны ли такие вещи стандартными средствами, но я такое на перле делал.

висит перловый демон, который каждые 3 минуты форкает чайлд, который один раз пингует ченнить. Если связь есть(пинг позвращается) спим спокойно. Если пинг не прошел, в динамиках компа гудит гудок, что связь пропала и пора вставать нажимать на кнопку на сотовом телефоне.

в твоем случае, если пинг не прошел, меняется типа оператора допустим.

если надо скрипт - вышлю.

vilfred ☆☆
()

Спасибо, но очень хотелось бы это по-нормальному сделать. К сожалению, документация по iproute никакая. Наверняка там есть такая возможность.

anonymous
()

Дополнение. Эта строка делает два шлюза по-умолчанию ip route add default scope global nexthop via $ip_prov1 dev ppp0 weight 1 nexthop via $ip_prov2 dev ppp1 weight 2

Хотелось бы узнать, что именно задают параметры weight?

anonymous
()

#!/usr/bin/python
""" Проверка инета.
    Если больше половины из перечистенных адресов
    не пингуются, значить есть проблемы с инетом
"""
import os

def check():
    checkedSites=0
    sites=["ya.ru","mail.ru","rambler.ru"]
    for i in sites[:]:
        cmd="ping -c1 "+i+" > /dev/null 2>&1"
        if os.system(cmd):
            checkedSites=checkedSites+1
    if checkedSites > len(sites)/2:
        return 1
    else:   
        return 0

fagot ★★★★★
()

"Спасибо, но очень хотелось бы это по-нормальному сделать" - ты говоришь о скорости? - дык скорость то не важна, все скоростное преимущество Сплюсплюшных прог съедается временем пинга до сайта...

по моему, самое то, и еще к тому же платформонезависимое, хотя я не знаю твоих задач.

p.s. это я не навязываюсь, а типа как обиделся :)

vilfred ☆☆
()

угу, если писать уметь грамотно проги на любом языке - это и будет по нормальному. какая разница на чем, главна лишь оптимизировать затрату ресурсов и времени. на определенную задачу.

anonymous
()

а zebra тут случайно не подойдет?

anonymous
()

Насколько я понял, Zebra не поддерживает ядро 2.4.x Currently we are developing zebra under: GNU/Linux 2.0.X and 2.2.X FreeBSD 2.2.8 FreeBSD 3.1 FreeBSD 4.X NetBSD 1.4 OpenBSD 2.4

anonymous
()

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.