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

готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 10:59:48
mediamag
Есть ли в портах фряхи готовая приблуда для автосмены на резервный канал, если основной упал и переключения назад?? Или придется изобретать?

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 14:15:02
hizel
в гуглах есть

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 14:17:29
paradox
BGP с автономнкой называеться :-D

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:30:23
mediamag
это платная шняга..уже почитал...мне бы просто чтобы скрипт пинговал какой нить хост и при отсутствии пинга например 15 сек в rc.conf менялся defaultrouter и rc.conf перезапускался....но при этом чтобы скрипт пытался пинговать удаленный хост через главный канал и если он пойдет, то defaultrouter опять на основной канал и рестарт rc.conf

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:34:23
paradox
в 8бсд уже можно больше двух роутов добавлять
поэтому мне не понятен ваш секс

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:37:31
hizel
с 7.1

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:38:29
paradox
hizel писал(а):с 7.1
темболее
к томуже на форуме уже писали такие скрпты

так что гуглите

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:50:27
mediamag
ну не могу найти не по каким запросам на форуме скрипт...может кому на глаза попадался..напишите плиз

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 16:54:27
paradox
у вас 6 бсд? или 4?

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-09-28 22:05:42
mediamag
у меня 7,1...но про два гетвея я не нашел в инете..даже синтаксис написания

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-10-01 16:38:11
sch
hizel писал(а):с 7.1
Ты точно про Equal Cost Multi-Path Routing написал?

Получается как в песне - "У нас есть такие приборы! Но мы вам про них не расскажем!"

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-10-01 16:43:31
sch
mediamag писал(а):у меня 7,1...но про два гетвея я не нашел в инете..даже синтаксис написания
можно использовать sysutils/monit

правило

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

check host gw1 with address A.A.A.A
IF FAILED ICMP TYPE ECHO COUNT 10 TIMEOUT 2 SECONDS 2 CYCLES
     THEN exec "route change default B.B.B.B"
     ELSE IF recovered THEN exec "route change default A.A.A.A"

monit конечно не обязателен - можно и самому скрипт написать и в крон засунуть... Вот только monit помогает много чего проверять и автоматически реагировать на ситуации.

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-10-01 17:00:52
schizoid
paradox писал(а):в 8бсд уже можно больше двух роутов добавлять
поэтому мне не понятен ваш секс
а можно пример команды?

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-10-01 17:18:39
terminus
ЕМНИП

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

options  RADIX_MPATH
в ядро и можно савить больше одного маршрутоа на один путь.

Правда в тамом случае "балансировка/бекап" будет работать, только когда физически пропадает связь на сетевухе (down) - иначе он будет в пустую слать трафик через неработающий линк? :unknown:

---

новее не нашел, но помню что что-то было недавно в листах.
http://lists.freebsd.org/pipermail/cvs- ... 89956.html

Re: готовый порт для автосмены каналов интернета

Добавлено: 2009-10-01 22:40:25
helloworld
paradox писал(а):BGP с автономнкой называеться :-D
всё, дальше топик не читал :ROFL:

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 17:56:29
microbash
У когонить заработало RADIX_MPATH ?

Пытаюсь поработать с mpath. Не получается (то, что по идее бы должно).
Схема такая:
Компьютер 1 - WinXP+SP3
сетевая 1 - 192.168.0.23/24
сетевая 2 - 10.1.0.1/24
сетевая 3 - 10.2.0.1/24
На всякий случай: IPEnableRouter=1, EnableDeadGWDetect=1
Компьютер 2 - Freebsd 8.0 + option RADIX_MPATH
сетевая 4 - 10.1.0.2/24 xl0
сетевая 5 - 10.2.0.2/24 sis0
"Кривой" кабель 1 соединяет сетевую 2 и 4.
"Кривой" кабель 2 соединяет сетевую 3 и 5.

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

test1# ping 10.1.0.1
PING 10.1.0.1 (10.1.0.1): 56 data bytes
64 bytes from 10.1.0.1: icmp_seq=0 ttl=129 time=0.134 ms

test1# ping 10.2.0.1
PING 10.2.0.1 (10.2.0.1): 56 data bytes
64 bytes from 10.2.0.1: icmp_seq=0 ttl=129 time=0.226 ms
Добавляем роуты по одному (для проверки).
-------------

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

test1# route add default 10.1.0.1
add net default: gateway 10.1.0.1

test1# ping 192.168.0.23
PING 192.168.0.23 (192.168.0.23): 56 data bytes
64 bytes from 192.168.0.23: icmp_seq=0 ttl=129 time=0.171 ms

test1# route delete default 10.1.0.1
delete net default: gateway 10.1.0.1
------------

test1# route add default 10.2.0.1
add net default: gateway 10.2.0.1

test1# ping 192.168.0.23
PING 192.168.0.23 (192.168.0.23): 56 data bytes
64 bytes from 192.168.0.23: icmp_seq=0 ttl=129 time=0.221 ms

test1# route delete default 10.2.0.1
delete net default: gateway 10.2.0.1
-------------

Добавляем роуты сразу оба.

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

test1# route add default 10.1.0.1
add net default: gateway 10.1.0.1
test1# route add default 10.2.0.1
add net default: gateway 10.2.0.1

test1# netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            10.1.0.1           UGS         0        0    xl0 =>
default            10.2.0.1           UGS         0        0   sis0
10.1.0.0/24        link#2             U           1      580    xl0
10.1.0.2           link#2             UHS         0        0    lo0
10.2.0.0/24        link#1             U           0        8   sis0
10.2.0.2           link#1             UHS         0        0    lo0
127.0.0.1          link#4             UH          0      184    lo0

test1# ping 192.168.0.23
PING 192.168.0.23 (192.168.0.23): 56 data bytes
64 bytes from 192.168.0.23: icmp_seq=0 ttl=129 time=0.146 ms
Пакеты идут через xl0 (tcpdump).

Теперь главное! Вытаскиваем кабель 1 (между сетевыми 2 и 4).
test1# ping 192.168.0.23
Пинга нету, пакеты не идут. Т.Е. фря не выбирает второй маршрут по умолчанию.
Что я делаю не правильно?
Может есть какой-то параметр таймаута, чтобы фря смогла переключиться? Хелп.

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 18:20:01
terminus
А из-под какого IP идут пакеты от FreeBSD когда 2 канала и пингуете 192.168.0.23 ? В тцпдампе видно? Случайно не из-под 10.1.0.2?
Просто может винда сама получив такой пакет не знает куда его слать, если маршрута больше нет к 10.1.0.2.

Трейсруты еще посмотреть было бы любопытно...

---

Да еще одна мысля появилась. насколько я помню там механизм распределения завязан на хеш-таблице. Попробуйте внешнему виндовому интерфейсу дать еще один адрес (скажем 192.168.0.24) и попинговать/потрейсрутить его - может для него хеш дасть другой маршрут...

:unknown:

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 19:10:55
microbash
terminus писал(а):А из-под какого IP идут пакеты от FreeBSD когда 2 канала и пингуете 192.168.0.23 ? В тцпдампе видно? Случайно не из-под 10.1.0.2?
Просто может винда сама получив такой пакет не знает куда его слать, если маршрута больше нет к 10.1.0.2.

Трейсруты еще посмотреть было бы любопытно...

---

Да еще одна мысля появилась. насколько я помню там механизм распределения завязан на хеш-таблице. Попробуйте внешнему виндовому интерфейсу дать еще один адрес (скажем 192.168.0.24) и попинговать/потрейсрутить его - может для него хеш дасть другой маршрут...

:unknown:
Вначале сам подумал, что может не выходит обратный маршрут найти, но тут другое: в tcdump нету вообще ничего. Пакеты именно не уходят с моей стороны.

Второй ип давать не хочу - теряется вообще весь смысл затеи. Если ип изначально два это можно реализовать через статичные роуты (каждый ип через свой сетевой интерфейс).
Мне в идеале нужно 2 машрута к одной подсети. Сейчас рассматривается простейшая конфигурация.
Если уже она не работает, то к ему весь гундеж про mpath во фре...

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 20:00:31
microbash
terminus писал(а):А из-под какого IP идут пакеты от FreeBSD когда 2 канала и пингуете 192.168.0.23 ? В тцпдампе видно? Случайно не из-под 10.1.0.2?
Просто может винда сама получив такой пакет не знает куда его слать, если маршрута больше нет к 10.1.0.2.

Трейсруты еще посмотреть было бы любопытно...

---

Да еще одна мысля появилась. насколько я помню там механизм распределения завязан на хеш-таблице. Попробуйте внешнему виндовому интерфейсу дать еще один адрес (скажем 192.168.0.24) и попинговать/потрейсрутить его - может для него хеш дасть другой маршрут...

:unknown:
Проверил еще раз: пакеты пинга идут с 10.1.0.2 по интерфейсу xl0.
По sis0 ничего нету.

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 20:01:59
microbash
Соотвественно до винды пакеты даже не доходят.

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 20:06:48
terminus
Вероятно использовать RADIX_MPATH для балансировки локального трафика - нельзя. Ведь локальным демонам/программам для открытия сокета надо использовать какой-то IP, вот они и берут тот, что первый для таблицы маршрутизации (у вас 10.1.0.2).

Думаю, что для маршрутизируемого трафика картина будет другой. Вам надо обеспечить балансировку именно для локального трафика или все же цель балансировать трафик клиентов находящихся за FreeBSD рутером?

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-28 21:18:58
microbash
terminus писал(а):Вероятно использовать RADIX_MPATH для балансировки локального трафика - нельзя. Ведь локальным демонам/программам для открытия сокета надо использовать какой-то IP, вот они и берут тот, что первый для таблицы маршрутизации (у вас 10.1.0.2).

Думаю, что для маршрутизируемого трафика картина будет другой. Вам надо обеспечить балансировку именно для локального трафика или все же цель балансировать трафик клиентов находящихся за FreeBSD рутером?
Попытался проверить эту идею.
Собрал еще одну машинку "клиент". Подцепил его к фре через отдельную сетевушку.
Пингую с него по прежнему 192.168.0.23. Смотрю пакеты ICMP tcpdump-ом на интерфейсах фре sis0 и xl0.
Когда оба кабеля подключены к винде есть пакеты на xl0.
Когда отключаю кабель с xl0, и ожидаю что для сеетвого клиента фря будет гнать пакеты через sis0 - фиг, ничего нету.

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-31 11:04:31
freeman
А действительно юзает ли кто эту новую фишку для данного случая или как я как по старинке скриптами сделали влом трогать работающее ? :oops:

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-03-31 11:06:46
terminus
Я не пробовал еще даже. И 8.0 еще не использую...

Re: готовый порт для автосмены каналов интернета

Добавлено: 2010-04-04 22:59:39
budmo
Пример скрипта переключения. IP1,IP2,RUN1,RUN2 поменять для себя. Имена файлов тоже...
#!/bin/sh
IP1="210.10.10.11"
IP2="110.10.10.11"
FLG="/ram/pcheck.flg";
CNF="/ram/pcheck.cnt";
LOG="/var/log/zz_connect.log"
RUN1="/sbin/pfctl -f /etc/pf.conf"
RUN2="echo > /etc/pf.empty; /sbin/pfctl -f /etc/pf.empty"
CHK=0
mexit(){
if [ -f $FLG ] ; then rm -f $FLG; fi; exit;
}
# Флаг выполнения скрипта
# if [ -f $FLG ] ; then exit; fi; echo>$FLG;
# Прочитать значение счетчика проверки пинга из файла
if [ ! -f $CNF ] ; then echo "0">$CNF; fi; CNT=`cat $CNF`
# Проверка доступа к соседям
/sbin/ping -c3 -t3 $IP1 > ${FLG}.nb1
NB1=`cat ${FLG}.nb1 | grep ms`;
/sbin/ping -c3 -t3 $IP2 > ${FLG}.nb2
NB2=`cat ${FLG}.nb2 | grep ms`;
# Если нет доступа к аплинку - установить флаг
if [ "$NB1" = "" ] ; then CHK=1; fi
if [ "$NB2" = "" ] ; then CHK=2; fi
# Eсли есть доступ к аплинку
if [ $CHK -eq 0 ] ; then
# Если на предыдущем вызове доступа к аплинку не было (CNT>0)
# запустить правила PF
if [ $CNT -gt 0 ] ; then $RUN1 2>>/dev/null; echo "0">$CNF; fi
# Если доступа не было более одного вызова - послать сообщение
# о восстановлении сессии
if [ $CNT -gt 1 ] ; then echo "SESSION ESTABLISHED."; fi
mexit
fi
# Если хоть к одному аплинку доступа нет - увеличить счетчик таймаута
CNT=`expr $CNT + 1 `
# Если прошло три таймаута - запустить "пустые" правила для PF и
# послать сообщение о разрыве сессии
if [ $CNT -eq 3 ] ; then $RUN2 2>>/dev/null; echo "SESSION BREAK"; CNT=4; fi
# Если счетчик таймаута меньше 5 - записать его значение в файл (MAX=4)
if [ $CNT -lt 5 ] ; then echo "$CNT" >$CNF; fi
mexit