Re: Freebsd 5.5 multipath routing
- From
- Eugene Grosbein (2:5006/1)
- To
- Vassily Kiryanov
- Date
- 2007-01-09T20:46:34Z
- Area
- RU.UNIX.BSD
Reply-To: eugen@grosbein.pp.ru
09 янв 2007, вторник, в 18:04 KRAST, Vassily Kiryanov написал(а):
EG>> Чем именно криво 3 (кроме эстетического неудовлетворения)?
EG>> У меня сейчас в одном месте система работает через три канала
EG>> одновременно, причем один из них - туннель на серых адресах, который
EG>> там дальше имеет выход в мир, уже после туннеля, и через NAT.
VK> А как реализовано? Какие модули/в какой связке?
Не netgraph, а ipfw fwd + скрипт:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
probe() {
# если еще не тестировали, добавить в список протестированных
# и протестировать, а если уже тестировали - вернуть истину
[ "$1" = "$gw1" ] && l=c1
[ "$1" = "$gw2" ] && l=c2
[ "$1" = "$gw3" ] && l=c3
if eval [ -z \"\$$l\" ]; then
ping -q -c 10 -i 0.3 -t 3 $1 >/dev/null 2>&1
eval $l=$?
fi
eval return \"\$$l\"
}
switch_d() {
route -q delete default
route -q add default $1
echo $0: default route changed to $1
}
select_route() {
# проверяем маршруты по приоритету
for g in $defaultrouter $backupdefault $backupdefault2
do
# если нашелся живой шлюз
if probe $g; then
# если текущий шлюз другой, переключиться на найденный
[ $gw != $g ] && switch_d $g
# прекратить перебор
return
fi
done
}
. /etc/rc.conf || exit 1
gw=`route -n get default | awk '/gateway:/ { print $2}'`
if [ "$gw" = '' ]; then
gw=$defaultrouter
route add default $gw
echo $0: no default route, using $gw
fi
select_route
exit 0
Запускать по крону.
Eugene
--
Знаете ли вы, что...
Иисус имел не менее 4 братьев и 2 сестер (Матф.13:54)
--- slrn/0.9.8.0 (FreeBSD)
* Origin: Svyaz Service JSC (2:5006/1@fidonet)
SEEN-BY: 50/12 400/814 450/159 1024 461/43 132 640 469/999 4616/3 4625/8
SEEN-BY: 4641/444 5000/76 5000 5006/1 8 9 14 16 17 5007/1 5010/70 5011/13
SEEN-BY: 5012/46 5015/28 5019/26 5020/18 175 194 400 545 982 1057 1909 1922
SEEN-BY: 5020/2238 2395 2871 4441 5021/29 5025/3 5026/14 45 5027/12 5030/1080
SEEN-BY: 5030/1957 5034/10 13 5035/38 5036/1 5045/7 5049/1 5051/15 5054/1 4 8
SEEN-BY: 5054/9 11 28 35 36 37 45 66 67 70 75 84 85 5059/9 5060/88 5061/15
SEEN-BY: 5062/10 5063/3 5064/7 5066/18 5075/5 5076/1 5077/70 5084/9 5085/13
SEEN-BY: 5095/20 5096/18 6001/10
PATH: 5006/1 5020/400 545 5054/1 37