LINUX.ORG.RU
решено ФорумAdmin

vrrp & ospfd


0

1

Есть желание сделать дублируюций маршрутизатор обслуживающий несколько подсетей в двух зданиях соединенных оптикой. На роутере используется простые правила фильтрации (без conntrack), dhcpd и локальный кеширующий dns-сервер.

Для каждой локальной подсети шлюз по-умолчанию для клиентов реализован через vrrp/keepalived.

Список локальный сетей (~15) периодически меняется, так что прописывать статикой маршруты на вышестоящем маршрутизаторе не хочется (сейчас ospf отлично справляется с этой задачей).

Соответственно хочется как-то сигнализировать quagga-ospfd, что в данный момент такой-то интерфейс у нас перешел в состояние мастер и cost ему нужно понизить, а если он перешел в backup, то cost ему повысить, чтобы на вышестоящем маршрутизаторе правильно направляли трафик. Тем более, что на смену состояния в keepalived можно запускать сркипты.

У quagga/ospf есть интерфейс управления через telnet. Реализовать через expect & telnet localhost ospfd такой функционал не сложно. Но может такой велосипед уже есть для синхронизации состояний интерфейсов между vrrp & ospf?

★★★★★

Мне кажется, что можно обойтись без этих костылей.

Допустим у тебя есть N виртуальных интерфейсов (VLAN скорее всего), которые являются дефолт-гейтами для своих подсетей.

Ты настраиваешь на эти интерфейсы keepalived, а в ospf прописываешь эти интерфейсы как passive и прописываешь сети.

На мастере ip-адреса гейтов в этих сетях подняты - ospf эти сети анонсирует. На слейве ip-адресов нет, ospf их не анонсирует.

После отключения мастера адреса улетают на слейв и ospf начинает их анонсировать.

Есличо сам не проверял, но работать должно.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

На мастере ip-адреса гейтов в этих сетях подняты - ospf эти сети анонсирует. На слейве ip-адресов нет, ospf их не анонсирует.

на мастере и на бекапе есть адреса.

Мысль интересная. Адреса для работы vrrp можно не включать в ospf-area, а виртуальный адрес брать из подсети входящей в ospf-area.

Интересная идея, но не радует удвоение числа подсетей (из-за правил фильтрации).

У vrrp/keepalived есть режим (use_vmac), когда он создает интерфейс и назначает ему адрес в режиме МАСТЕР, но у этого режима есть недостаток - при смене состояния нужно как минимум рестартовать dhcpd который работает с таким интерфейсом. А этот колхоз со скриптами перезапуска меня совсем не радует.

vel ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

Оказывается vrrp работает и без адресов! Спасибо за подсказку!

Нужно теперь проверить как ospfd реагирует на появление/удаления адреса. Если все хорошо, то [пере]запуск dhcpd будет наименьшим злом.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Не за что :) а dhcpd работает вообще через raw sockets вроде, ему айпи адреса и прочее до фонаря. Ну и можно сделать dhcp failover, это стандартный режим работы у него.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

ip интерфейса ему нужен для того, чтобы связать интенфейс и описание подсети. В конфиге isc-dhcpd нет привязки к имени интерфейса. Первый пакет от клиента 0.0.0.0->255.255.255.255 и определить из какой сети он пришел можно по ip-адресу интерфейса ( в понятиях isc dhcpd).

isc dhcpd просто не стартует, если на интерфейсе нет адреса. Если его запустить после появления адреса, то дальше он работает и не реагирует на исчезновение адреса. С другой стороны он не реагирует на появление в системе новых интерфейсов и на смену настроек интерфейсов.

Патчить isc dhcpd мне уже приходилось - подправить что-то в нем не очень сложно. Фактически ему нужно объяснить, что интерфейса без адреса связан с определенным subnet. Тем более, что я его уже патчил на тему привязки fixed-address к подсети/группе.

vel ★★★★★
() автор топика
Ответ на: комментарий от vel

Никто не мешает повесить на интерфейс какую-то фейковую подсеть и прописать ее в конфиге, делов то.

У меня, по сути, так и работает: все реальные DHCP запросы приходят unicast-пакетами от свичей, которые терминируют вланы и релеят DHCP запросы на сервер.

blind_oracle ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.