Страница 2 из 3

Re: OSPF или BGP и два канала

Добавлено: 2007-09-04 14:42:33
Andy
Кстати, кто-то ведь занимался переключением каналов применяя bgp или ospf. Расскажите как, я хочу в статью добавить.

Re: OSPF или BGP и два канала

Добавлено: 2007-09-04 15:48:35
100kg
у микротика консолька родная, залить на ftp.lissyara.su(mikrotik is cracked)? есть еше и winbox, это граф. клиент для админства!

ту ANDY!
довным довно читал! кажись там OSPF enable or ON, в книжке все расписанно! не помню

Re: OSPF или BGP и два канала

Добавлено: 2007-09-04 22:22:45
npu3pak
Andy писал(а):
npu3pak писал(а):что то мне этот MicroTikOS напоминает поделку Stonesoft Stonegate - ядро линюкса, фаер ipchains плюс виндовая администрялка к ней = коммерческий продукт с мегалицензиями. Не понравился он мне - консолька привычнее :roll:
Там и консолька есть. Что за привычка, хаить не попробовав?
дык провбовав сэр, сыт по горло и видеть его больше не желаю. Про то что не пробовал - не пишу :wink:

Re: OSPF или BGP и два канала

Добавлено: 2007-09-05 11:02:37
Andy
npu3pak писал(а):дык провбовав сэр, сыт по горло и видеть его больше не желаю. Про то что не пробовал - не пишу :wink:
Дело твое, конечно. А ты можешь подробнее про bgp/ospf написать?

Re: OSPF или BGP и два канала

Добавлено: 2007-09-05 11:36:15
npu3pak
Andy, что именно? переключение каналов? могу порыться в своих архивах - поискать старые конфиги, но скорый результат не гарантирую.
вот одна из ссылок которыми я пользовался когда учился работать с этим счастьем

http://www.dreamcatcher.ru/docs/quagga_rus_cut.html
ну и оргигнал:
http://www.quagga.net/docs/quagga.html

Re: OSPF или BGP и два канала

Добавлено: 2007-09-05 12:02:58
Andy
npu3pak писал(а):Andy, что именно? переключение каналов? могу порыться в своих архивах - поискать старые конфиги, но скорый результат не гарантирую.
вот одна из ссылок которыми я пользовался когда учился работать с этим счастьем

http://www.dreamcatcher.ru/docs/quagga_rus_cut.html
ну и оргигнал:
http://www.quagga.net/docs/quagga.html
Да-да, интересно переключение каналов при помощи ospf/bgp, спасибо за ссылки. Скорый результат и не надо, я пишу статью по отказоустойчивости интернета, мне как раз нехватает вот этой детали для полноты картины. ;)

Re: OSPF или BGP и два канала

Добавлено: 2007-09-06 12:06:42
Andy
Граждане, а никто vrrp не пробовал? Есть вопросы общего характера.
В поисках ответа, в данный момент раскуриваю rfc.

Re: OSPF или BGP и два канала

Добавлено: 2007-09-12 14:21:17
Andy
Затык что-то с vrrp у меня. Дело в том, что оповещение присылается в тот момент, когда пропадает коннект компа с локалкой, а мне надо
когда с интернетом. Ниже идет недописаная статья (ибо на старой работе сделать не успеваю уже, а новую еще не подыскал), а проверять надо на чем-то. Комментарии, кроме "махрового невежества", "автор мудвин", "говно" и так далее а-ля opennet и лор, приветствуются:
Что хотелось бы. Если есть грамотные люди, способные написать балансировку каналов такую как в статье, на ipfw, просьба прислать рабочий вариант, хотелось бы включить в статью. Те, у кого отказоустойчивость достигается путем применение ospf/bgp - поделитесь с остальными реализацией.
Отказоустойчивость Интернета. Точки над и.
Частенько, на разных форумах посвященных системному администрированию, появляется
вопрос отказоустойчивости соединения с интернетом. Путем коллективного наступания
на грабли по этому вопросу и, как следствие, последующего коллективного изобретения
велосипеда на тему постоянного соединения с Интернетом, хотелось показать возможные
способы решения данной проблемы, а каждый сам выберет тот вариант, который его устраивает.

1. Как правило, первое что приходит в голову, хотя наверное не самое очевидное, это
написание скрипта, который пингует с определенной частотой один канал и, в случае,
отсутствия ответа, переключает сервер на пользование вторым каналом (данный скрипт
выложил o2x на форуме Лиссяры, в разделе "Скрипты написанные на коленке", за что
автору выражается благодарность, я лишь немного подробнее его откомментировал):

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

#! /bin/sh
# пути к используемым программам
route="/sbin/route"
ping="/sbin/ping"
natd="/sbin/natd"
sleep="/bin/sleep"
killall="/usr/bin/killall"
touch="/usr/bin/touch"

# внешние сетевые карты
lan_isp1="rl0"
lan_isp2="rl1"

# первый и второй шлюзы
GW1=194.242.118.61
GW2=83.218.237.45

# утилита запускается с ключами "безмолвного" вывода (ключ -q) и отправкой и
# получением двух пакетов (ключ -c 2) на первый шлюз ($GW1), перенаправляя потоки
# stderr и stdout в никуда 

$ping -q -c 2 $GW1 > /dev/null 2>&1

# Если код завершения пинга 1 = error
if [ $? !=0 ]; then
        # пингуем второй канал
        $ping -q -c 2 $GW2 > /dev/null 2>&1
        # если код завершение true =0
        if [ $? =0 ]; then
                # Если файла gw2.changed нет, создаем его.
                # Он определяет переход на основной канал,
                # даже если есть и резервный
                # GW2 будет маршрутом по умолчанию
                if [ ! -f /tmp/gw2.changed ]; then
		# удаляем путь по умолчанию
                $route delete default
		# завершаем работу демона трансляции
                $killall natd
		# добавляем новый путь по умолчанию
                $route add default $GW2
		# создаем файл
                $touch /tmp/gw2.changed
		# ждем 15 секунд
                $sleep 15
		# производим трансляцию адресов на другой интерфейс
                $natd -n ${lan_isp2}
		# запускаем правила файрвола для другого интерфейса
                . /etc/fwrules2.sh
                exit 0;
                fi
        else
                echo "Оба канала не доступны";
                exit 1;
        fi
else
        # Если пинганулся первый шлюз
        # Если файл gw2.changed найден, удаляем его
        # GW1 будет маршрутом по умолчанию
        if [ -f /tmp/gw2.changed ]; then
                $route delete default
                $killall natd
                $route add default $GW1
                $rm /tmp/gw2.changed
                $sleep 15
                $natd -n ${lan_isp1}
                . /etc/fwrules1.sh
                exit 0;
        fi
        echo "Основной канал работает и установлен по умолчанию";
        exit 0;
fi
Как видно, скрипт написан для применения с ipfw. Пользующиеся pf, как я,
придется воспользоваться примерно схожим скриптом, немного видоизмененным,
с учетом той возможности, что pf сам умеет транслировать адреса, в следствии чего остается только остановить файрвол, загрузить другие правила и заново его запустить.

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

#! /bin/sh
route="/sbin/route"
ping="/sbin/ping"
pfctl="/sbin/pfctl"
grep="/usr/bin/grep"
awk="/usr/bin/awk"  

GW1=192.168.0.170
GW2=192.168.0.207

$ping -q -c 2 $GW1 > /dev/null 2>&1

if [ $? != 0 ]; then 
  echo "Канал ${GW1} не работает"
    $ping -q -c 2 $GW2 > /dev/null 2>&1
      if [ $? != 0 ]; then 
         echo "Канал ${GW2} тоже не работает."
         exit 1;
      fi     
         $route delete default
         $route add default $GW2 
         $pfctl -f /etc/pf2.conf
         echo "Теперь используется канал ${GW2}"
         exit 0;
else 
         $route -n get default | grep gateway | awk '{print$2}'
          if [ $? != $GW1 ]; then 
           $route delete default
           $route add default $GW1 
           $pfctl -f /etc/pf.conf
           echo "Вернулись на основной канал ${GW1}"
          else 
            echo  "Основной канал работает!"
          fi  

fi
2. Как безскриптовый вариант, можно рассмотреть балансировку нагрузки на оба канала.
Явное достоинтсво этого метода заключается в том, что не приходится следить за
доступностью шлюзов, ибо при отказе какого-то одного из них, полоса пропускания сужается и пакеты начинают уходить через другой шлюз. Разумеется, не стоит забывать
о присвоении конкретному адресу, конкретного гейта (пример ниже для использующих
pf):

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

lan_net = "192.168.0.0/24"
int_if  = "fxp0"
ext_if1 = "xl0"
ext_if2 = "fxp1"
ext_gw1 = "212.34.53.105"
ext_gw2 = "81.195.215.53"

#  nat outgoing connections on each internet interface
nat on $ext_if1 from $lan_net to any -> ($ext_if1)
nat on $ext_if2 from $lan_net to any -> ($ext_if2)

#  default deny
block in  from any to any
block out from any to any

#  pass all outgoing packets on internal interface
pass out on $int_if from any to $lan_net
#  pass in quick any packets destined for the gateway itself
pass in quick on $int_if from $lan_net to $int_if
#  load balance outgoing tcp traffic from internal network.
pass in on $int_if route-to \
    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
    proto tcp from $lan_net to any flags S/SA modulate state
#  load balance outgoing udp and icmp traffic from internal network
pass in on $int_if route-to \
    { ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
    proto { udp, icmp } from $lan_net to any keep state

#  general "pass out" rules for external interfaces
pass out on $ext_if1 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if1 proto { udp, icmp } from any to any keep state
pass out on $ext_if2 proto tcp from any to any flags S/SA modulate state
pass out on $ext_if2 proto { udp, icmp } from any to any keep state

#  route packets from any IPs on $ext_if1 to $ext_gw1 and the same for
#  $ext_if2 and $ext_gw2
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any
В правилах приведенных выше, выходящий трафик равномерно распределятся
по двум каналам. Пакеты отправляются на тот интерфейс, откуда они пришли. Недостаток
данного метода состоит в одновременном использовании двух каналов, ибо
это может оказаться накладным исходя из финансовых соображений.

3. Существуют промышленные стандарты для построения отказоустойчивых серверов. Одним из таких является VRRP (Virtual Router Redundancy Protocol), на данный протокол существует RFC (http://www.faqs.org/rfcs/rfc2338.html). Протокол позволяет объединить два компьютера, с разными каналами в интернет в один виртуальный роутер, присваиванием двум компьютерам одного виртуального ip адреса. Один из двух комьютеров назначается Master'ом, а другой - Slave'ом. При отключении Master'а, его обязанности берет на себя Slave, для пользователей все прозрачно, ибо адресом шлюза назначается виртуальный ip. В портах существует утилита freevrrp, реализующая возможность построения отказоустойчивого кластера. Установим ее:

cd /usr/ports/net/freevrrpd/ && make install clean

По умолчанию, freevrrpd читает свой конфигурационный файл по адресу /usr/local/etc/freevrrpd.conf. Создаем конфигурационный файл для master'а и записываем в него следующее:

[VRID]
# определяем идентификатор виртуального роутера 1
serverid = 1
# интерфейс, на который будут отправляться уведомления vrrp
interface = xl0
# приоритет = 255 - это Master
priority = 255
# устанавливаем ip адрес
addr = 192.168.0.248/24
# аутентификация vrrp пакетов.
password = vrid1

На компьютере с другим каналом, создаем slave'а. Кофигурационный файл будет схожим,
с тем отличием, что переменная priority будет выставляться для backup'а.

[VRID]
# определяем идентификатор виртуального роутера 1
serverid = 1
# интерфейс, на который будут отправляться уведомления vrrp
interface = xl0
# приоритет = 255 - это Master
priority = 254
# устанавливаем ip адрес
addr = 192.168.0.248/24
# аутентификация vrrp пакетов.
password = vrid1

Переименуем скрипт запуска frevrrpd:
cp /usr/local/etc/rc.d/freevrrpd.sh.sample /usr/local/etc/rc.d/freevrrpd.sh
Вставим строку запуска freevrrpd в /etc/rc.conf:
freevrrpd_enable="YES"

Перезагрузим компьютер и убедимся в том, что freevrrp демон загрузился:
ps -ax | grep freevrrp

Мы должны получить примерно следующее:
898 ?? Ss 0:00,16 /usr/local/sbin/freevrrpd

В фарволе, необходимо разрешить прохождение пакетов vrrp/carp (номер
протокола 112, согласно /etc/protocols). Далее, на клиентских машинах указываем в качестве шлюза, виртуальный адрес нашего кластера.

Во FreeBSD, начиная с версии 5.24, есть возможность создания отказоустойчивого роутера, благодаря перенесенному с OpenBSD протоколу CARP. CARP является
свободной альтернативой протоколу VRRP, на который Cisco наложила грабли. Вначале,
необходимо создать интерфейс carp.





В процессе подготовки статьи, использовалась следующая литература:

Перевод документации на carp, Михаила Сгибнева - http://dreamcatcher.ru/index.php?option ... 6&Itemid=6

Сайт Евгения Миньковского - http://house.hcn-strela.ru/BSDCert
Раздел документации по VRRP в Mikrotik - http://www.mikrotik.com/testdocs/ros/2.9/ip/vrrp.php
Документация на pf, с сайта OpenBSD - http://www.openbsd.org/faq/pf/filter.html

Re: OSPF или BGP и два канала

Добавлено: 2008-03-22 12:41:11
AcidSly
Если на машине которая держит 2 канала используется еще:
1. Squid
2. Ipsec
2. Tunneling (gif interface)
Вопрос, каким образом можно разрулить балансирование туннелей, если сейчас они создаются по паре на каждый канал к примеру и в случае падения одного из каналов тунели перенастроить на оставшийся????
Заранее благодарен за ответ!!!

Re: OSPF или BGP и два канала

Добавлено: 2008-06-10 20:17:54
freeman
Andy писал(а): Как видно, скрипт написан для применения с ipfw. Пользующиеся pf, как я,
придется воспользоваться примерно схожим скриптом, немного видоизмененным,
с учетом той возможности, что pf сам умеет транслировать адреса, в следствии чего остается только остановить файрвол, загрузить другие правила и заново его запустить.
Вопрос - не понял для чего останавливать PF ? Правила загружать/перезагружать/модифицировать в PF можно на лету.

P.S> В виндовсе можно на каждый сетевой интерфейс повесить несколько шлюзов. "Вешая" с разными метриками получаем отказоустойчивость, так как при отпадании шлюза с меньшей метрикой ОС переключается на шлюз с большей и т.д. В линуксе тоже метрики в routed вроде есть, а во фре такой простой встроенный метод есть ? То что в 8ке обкатывают патч, позволяющий задавать два равнозначных дефолтных шлюза тут поможет же ?

Re: OSPF или BGP и два канала

Добавлено: 2008-06-10 21:09:41
paradox
незнаю как в винде
в линухе там свои методы утилитой
а в bsd токо патчами
routed это не то
как по мне

Re: OSPF или BGP и два канала

Добавлено: 2008-06-11 8:43:39
freeman
paradox писал(а):в линухе там свои методы утилитой
название оной в студию можно ?
paradox писал(а):а в bsd токо патчами
Патч или методику настройки роутинга по метрикам простые есть ?
paradox писал(а):routed это не то как по мне
Чем не то ? Идеальный (простой, эффективный, интегрированный в базовую ОС) способ достижения отказоустойчивости путём задания нескольких дефолт гатевеев с различными метриками. Вот только в bsd с этим туго как я понимаю.
А если хочется чего то более крутого то ставим зебру и рулим bgp, ospf, etc.
Ещё вариант CARP in PF.
Вот только для сети с десятком шлюзов и таким же большим кол-вом возможных маршрутов это одно. А для единичного шлюза с двумя интерфейсами смотрящими в инет :?
Хотя с удовольствием прочитаю, постараюсь поучавствовать в "обкатке" статью для такого примера с применением зебры :)

Re: OSPF или BGP и два канала

Добавлено: 2008-06-11 8:52:08
zingel
тему в NETWORKS нужно, и вообще есть чудная штука port-channel load-balance src-dst-port, mpls, CFS

Re: OSPF или BGP и два канала

Добавлено: 2008-06-11 9:25:44
paradox
freeman писал(а):
paradox писал(а):в линухе там свои методы утилитой
название оной в студию можно ?
непомню
но там именно по метрикам
почти тоже самое что bsd с патчами
freeman писал(а):
paradox писал(а):а в bsd токо патчами
Патч или методику настройки роутинга по метрикам простые есть ?
ссылок непомню на опенете было все рассписано
freeman писал(а):
paradox писал(а):routed это не то как по мне
Чем не то ? Идеальный (простой, эффективный, интегрированный в базовую ОС) способ достижения отказоустойчивости путём задания нескольких дефолт гатевеев с различными метриками. Вот только в bsd с этим туго как я понимаю.
А если хочется чего то более крутого то ставим зебру и рулим bgp, ospf, etc.
Ещё вариант CARP in PF.
Вот только для сети с десятком шлюзов и таким же большим кол-вом возможных маршрутов это одно. А для единичного шлюза с двумя интерфейсами смотрящими в инет :?
Хотя с удовольствием прочитаю, постараюсь поучавствовать в "обкатке" статью для такого примера с применением зебры :)
routed это RIP
но радости он вам недостивит так же как и OSPF
про CARP незнаю нескажу
а вот BGP это то что надо

и ненадо забывать
что то бы поднять любой из этих протоколов маршрутизации с другой стороны должен их тоже кто то поддерживает
RIP мертвый протокол
OFPF если кто и юзает то в сильно закрученых инфраструктурах
а вот BGP поддерживают очень многие

и выходит что для единичного шлюза смотрящего в инет такие конструкции неподходят
врядли провайдер будет вам давать свой BGP
а если два канала то как минимум два провайдера
точно пошлют)))
поэтому крутить токо на самой bsd
своими путями
так что
либо
1 что посоветовал znigel
2 помоему еще что то умел PF
3 или искать патчи для bsd
4 крутить свои самописные скрипты которые будут что то проврять и передергивать маршруты

Re: OSPF или BGP и два канала

Добавлено: 2008-12-05 0:45:01
voider
хорошая статья я вот все обдумывал как сдеалть автономную систему спомощью этих протоколов

Re: OSPF или BGP и два канала

Добавлено: 2008-12-05 9:07:21
zingel
Зарегистрируй сетку, потом AS, укажи анонсы....

Re: OSPF или BGP и два канала

Добавлено: 2008-12-18 15:21:34
voider
zingel писал(а):Зарегистрируй сетку, потом AS, укажи анонсы....
как это сделать объясни? как зарегить сетку ,и сколько мин компов должно быть чтоб зарегили если хаватть не будут варю поставлю

Re: OSPF или BGP и два канала

Добавлено: 2008-12-18 15:31:11
zingel

Re: OSPF или BGP и два канала

Добавлено: 2008-12-18 17:09:43
voider
фэнк буду изучать

Re: OSPF или BGP и два канала

Добавлено: 2009-01-09 1:05:09
dekloper
вот тут еще повтыкать можно...

Re: OSPF или BGP и два канала

Добавлено: 2009-01-09 21:08:08
voider
вооо !! это как раз и хотел :) зебра и все такое ,а аналог зебры есть?

Re: OSPF или BGP и два канала

Добавлено: 2009-01-11 15:45:06
Al
Если 2 прова,то по оспфу будет немного геморно балансировку настраивать,насколько я себе это представляю, да и смысла нет. Через полиси роутинг можно разрулить. А вот если контора большая и требуется серьезная отказоустойчивость, то надо грутить бгп. Для начала регистрируется АС и блок адресов (минимум /24. Анонсы по /25,поговаривают,не все магистральщики ретранслируют.). Стоит около 500$ эта затея. Потом надо сообразить пограничник с памятью из рассчета 250-300МБ фул -вью от каждого прова +ось. Я б киску 72 серии посоветовал для этих целей. Хотя,говорят,и на 28 мутили. ПОтом договариваешься с провами. Кстати,соглашаются не все. Мы одного из наших провов послали после того,как он отказался по бгп работать. Дальше настраиваешь циску и радуешься провайдеронезависимым адресам со всеми вытекающими. Да,кстати,для таких операций неплохо бы ccnp иметь. Сорри,если написал не в тему.
Короче,кому сильно интересно bgp - пишите в асю,постараюсь рассказать.

Re: OSPF или BGP и два канала

Добавлено: 2009-01-24 13:22:22
voider
Al а почему 500 баксов? вроде адреса бесплатно выдают

Re: OSPF или BGP и два канала

Добавлено: 2009-01-26 4:58:23
paradox
раздают условно бесплатно
что бы стать лиром ты платишь взнос ежегодный
а от обычного пользователя неприймут заявку и вообще фиг что выдадут
поэтому токо через лира
а лир сбивает деньги за точто будет тебе все делать
ему же нужно отбивать свои которые он платит за лира и за большой блок адрессов

Re: OSPF или BGP и два канала

Добавлено: 2009-01-27 20:04:59
voider
а тепрь просто вопрос кто такой Лир и чем его едят Короля Лира знаю :) профан в этом деле просто