2011/4/13 Alexander Bolshakov <[email protected]>:
> Доброе время суток!
>
> Я понимаю, что вопрос несколько другой тематики, но т.к. реализация на
> топике, то рискну спросить здесь. :)
> Итак, есть ящик под фрёй-8.2, в него приходят два линка от одного провайдера
> (мир+UA-X) и третий - от второго. Наш мир не идеален, потому каналы
> непериодически падают. Задача в том, чтоб следить за состоянием каналов и
> менять маршрутизацию в зависимости от ситуации. Как дополнительный бонус -
> хочется(нужно) использовать канал второго провайдера при заполнении того или
> другого канала первого. Карты - em, воткнуты в медиаконверторы. Если что-то
> мрёт (а в последнее время что-то участилось), то чаще всего - канал оптики
> или за ней, т.е., физически для ящика канал всегда жив. Как и чем такое
> можно реализовать? Каковы рекомендации опытных собаководов? Вариант через
> cron слишком инертен. :(
Если хочеться без динамического роутинга (хотя с ним правильней)
конфиг на базе ifstated
Проверяется живость непосредственно next-hop и сервера с хорошим
аптаймом в дельта окресности.
Имена провадеров вымышленные, совпадения случайны.
# $OpenBSD: ifstated.conf,v 1.6 2005/02/07 06:08:10 david Exp $
# $Id: ifstated.conf,v 1.3 2005/05/05 16:06:08 mdg Exp $
# Set the initial state
init-state auto
# MACROS varset
#
# if_test = string ".link." ( "up" | "down" | "unknown" )
# ext_test = string "every" number
pri_link_up = '( "ping -q -c 3 -n -t 4 -S 10.34.2.5 zzz.zzz.40.193"
every 180 || "ping -q -c 2 -n -t 4 -S 10.34.2.5 xxx.xxx.64.7" every
180 )'
sec_link_up = '( "ping -q -c 2 -n -t 4 -S xxx.xxx.50.250
xxx.xxx.50.249" every 180 && "ping -q -c 2 -n -t 4 -S xxx.xxx.50.250
xxx.xxx.64.7" every 180 )'
# STATE DEFINITIONS
state auto{
if ( $pri_link_up ) set-state primary
if ( $sec_link_up ) set-state backup
}
# Freenet link
state primary {
init {
run "logger -t ifstated Using Freenet "
run "route change default 10.34.2.1"
}
if (! $pri_link_up && $sec_link_up)
set-state backup
}
# GT
state backup {
init {
run "logger -t ifstated Using GoldenTelecom "
run "route change default xxx.xxx.xx.249"
run "sleep 10"
}
if $pri_link_up
set-state primary
if ! $sec_link_up
set-state auto
}
--
Best regards,
Andriy Yakovlev (AYA-RIPE)