URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92847
[ Назад ]

Исходное сообщение
"FreeBSD, резервирование маршрутизатора."

Отправлено tcpmss , 06-Янв-12 21:47 
Добрый час!
Уважаемые пользователи, подскажите пожалуйста как лучше реализовать схему резервирования софт маршрутизатора на FreeBSD?

В данный момент используется следующая структура сети:

Линк от провайдера подключен к 2 порту (untagged) коммутатора (D-Link DES-3026), к первому порту (tagged) подключена машина с FreeBSD (FreeBSD 8.2-STABLE), 5 порт - trunk порт идет на следующий коммутатор к которому подключены абоненты. Машина выполняет функции маршрутизации трафика, DNS resolving и ipfw nat. Абонентов в сети порядка 70. До каждого абонента идет отдельный vlan. Некоторым выдается сеть /24 из серых ip-адресов, некоторым выдается 1 белый ip-адрес (то есть на vlan'e роутера 2.2.2.1/30, у пользователя 2.2.2.2/30).

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

Первое что приходит на ум - это CARP. Но к сожалению я не до конца понимаю как его прикрутить к сети /30, для /24 понятно.

В связи с вышесказанным возникают следующие вопросы:
Реально ли использовать в данном случае CARP? Если да, то очень хотелось бы услышать решение. Если нет, то в как в таком случае реализовать подобную failover-схему?


Содержание

Сообщения в этом обсуждении
"FreeBSD, резервирование маршрутизатора."
Отправлено universite , 06-Янв-12 22:27 
> Линк от провайдера подключен к 2 порту (untagged) коммутатора (D-Link DES-3026), к
> первому порту (tagged) подключена машина с FreeBSD (FreeBSD 8.2-STABLE), 5 порт
> - trunk порт идет на следующий коммутатор к которому подключены абоненты.
> Машина выполняет функции маршрутизации трафика, DNS resolving и ipfw nat. Абонентов
> в сети порядка 70. До каждого абонента идет отдельный vlan. Некоторым
> выдается сеть /24 из серых ip-адресов, некоторым выдается 1 белый ip-адрес
> (то есть на vlan'e роутера 2.2.2.1/30, у пользователя 2.2.2.2/30).

Откройте для себя ip unnumbered

> Первое что приходит на ум - это CARP. Но к сожалению я
> не до конца понимаю как его прикрутить к сети /30, для
> /24 понятно.

Нужно вторую машину соединить с первой череp персональную сеть/влан, чтоб можно было проверять доступность.
Настраиваете carp на первой машине с нужной маской /30 или даже /32
Вторая машина тупо пингует первую, если первая перестает отвечать, то вторая машина скриптом поднимает у себя нужный IP или еще и MAC и светит провайдеру.
Иногда еще придется изменять ip шлюза для внутренней сети.


"FreeBSD, резервирование маршрутизатора."
Отправлено tcpmss , 06-Янв-12 22:56 
>[оверквотинг удален]
>> Первое что приходит на ум - это CARP. Но к сожалению я
>> не до конца понимаю как его прикрутить к сети /30, для
>> /24 понятно.
> Нужно вторую машину соединить с первой череp персональную сеть/влан, чтоб можно было
> проверять доступность.
> Настраиваете carp на первой машине с нужной маской /30 или даже /32
> Вторая машина тупо пингует первую, если первая перестает отвечать, то вторая машина
> скриптом поднимает у себя нужный IP или еще и MAC и
> светит провайдеру.
> Иногда еще придется изменять ip шлюза для внутренней сети.

Подскажите пожалуйста на примере одного из vlan'ов:
$ cat /etc/rc.conf

ifconfig_vlan111="vlan 111 vlandev eth"
ifconfig_vlan111_alias0="2.2.2.1/28"

адреса с 2 по 14 заняты пользователями, у них шлюз - 2.2.2.1. Я так понимаю что carp прикручивать некуда.

Если например было бы так:
$ cat /etc/rc.conf

ifconfig_vlan111="vlan 111 vlandev eth"
ifconfig_vlan111_alias0="2.2.2.14/28"

Предположим что заняты адреса с 2 по 13, в таком случае можно сделать так:
ifconfig_carp0="vhid 1 pass testpass 2.2.2.1/28"

у пользователя шлюз 2.2.2.1 и все прекрасно фэиловерится.

Верно?


"FreeBSD, резервирование маршрутизатора."
Отправлено universite , 07-Янв-12 05:44 
> Подскажите пожалуйста на примере одного из vlan'ов:
> $ cat /etc/rc.conf

Неправильно.
во-первых, eth - это интерфейс из линукса
во-вторых, rc.conf - это набор сценариев для выполнения shell команд.

Для понимания, вы нарисуйте похожую схемку.

                             |---- vlan1 <server #1> vlan2 ---
                             |
  ISP: no vlan --<switch L2>-|
                             |
                             |---- vlan1 <server #2> vlan2 ---

Для правильной постановки задачи уточняю:
Вам провайдер выделил сеть белых адресов /28? один из IP он забрал себе на шлюз?



"FreeBSD, резервирование маршрутизатора."
Отправлено tcpmss , 07-Янв-12 10:09 
>[оверквотинг удален]
>            
>       |
>            
>            
>       |---- vlan1 <server #2> vlan2
> ---
>

> Для правильной постановки задачи уточняю:
> Вам провайдер выделил сеть белых адресов /28? один из IP он забрал
> себе на шлюз?

eth - просто так обозначил сетевой адаптер чтобы не уточнять модель. Если быть более точным, то на машине сетевая карта Broadcom, а драйвер bge.
В rc.conf прописаны cloned_interfaces и vlan'ы в виде, который приводился мною выше. Согласен что не очень удобно, но так исторически сложилось в нашей организации.

Провайдер выдал нам две сети /25, которые статично смаршрутизированы на нашу машину. Мы, в свою очередь, раздаем абонентам адреса.

На вилне который смотрит в сторону провайдера адресация x.x.x.254/30
defaultrouter="x.x.x.253"

Пример с /28 сеткой - это один из вланов, адреса из которого принадлежат абонентам (в нашем случае исключение из правила vlan per user). Хотелось бы на данном примере понять как внедрить вторую машину и использовать CARP.

Спасибо.



"FreeBSD, резервирование маршрутизатора."
Отправлено universite , 07-Янв-12 16:25 

>[оверквотинг удален]
> Согласен что не очень удобно, но так исторически сложилось в нашей
> организации.
> Провайдер выдал нам две сети /25, которые статично смаршрутизированы на нашу машину.
> Мы, в свою очередь, раздаем абонентам адреса.
> На вилне который смотрит в сторону провайдера адресация x.x.x.254/30
> defaultrouter="x.x.x.253"
> Пример с /28 сеткой - это один из вланов, адреса из которого
> принадлежат абонентам (в нашем случае исключение из правила vlan per user).
> Хотелось бы на данном примере понять как внедрить вторую машину и
> использовать CARP.

Если вам провайдер вам организовал канал /30, то CARP в нынешней реализации не будет работать.

Если хотите устойчивости, то клонируйте настройки на второй тазик.
И запускаете простой скрипт, который по неответу по пингу первого тазика запускает скрипты, которые поднимает сетевые настройки на внутреннем и внешнем интерфейсе.
Ессно на стороне свитча прописаны нужные вланы.


"FreeBSD, резервирование маршрутизатора."
Отправлено tcpmss , 07-Янв-12 16:39 
>[оверквотинг удален]
>> Пример с /28 сеткой - это один из вланов, адреса из которого
>> принадлежат абонентам (в нашем случае исключение из правила vlan per user).
>> Хотелось бы на данном примере понять как внедрить вторую машину и
>> использовать CARP.
> Если вам провайдер вам организовал канал /30, то CARP в нынешней реализации
> не будет работать.
> Если хотите устойчивости, то клонируйте настройки на второй тазик.
> И запускаете простой скрипт, который по неответу по пингу первого тазика запускает
> скрипты, которые поднимает сетевые настройки на внутреннем и внешнем интерфейсе.
> Ессно на стороне свитча прописаны нужные вланы.

Ясно. Спасибо. Просто хотел сделать более красивое решение с карпом.


"FreeBSD, резервирование маршрутизатора."
Отправлено universite , 07-Янв-12 18:29 

> Ясно. Спасибо. Просто хотел сделать более красивое решение с карпом.

Просите, чтоб провайдер соорудил ip unnumbered
и у вас будет три ip вместо одного :)