Мы решили поделиться частью наших трудов в более удобном для разработки, изучения и использования формате — залили их на гитхаб.
Пока там репозитории для четырех наших проектов:
Looking Glass для BIRD
Предотвращение спама в phpbb3
Определение номеров и направлений фродовых вызовов
и практическая часть статьи Asterisk REST Interface (ARI) — реализация на asterisk конференции при помощи ARI и NodeJS.
Метки статьи: ‘bird’
Кратко о BIRD:
The BIRD project aims to develop a fully functional dynamic IP routing daemon. - Both IPv4 and IPv6 - Multiple routing tables - BGP - RIP - OSPF - Static routes - Inter-table protocol - Command-line interface - Soft reconfiguration - Powerful language for route filtering WWW: http://bird.network.cz/
Пользователи FreeBSD могут найти демоны BIRD в портах: IPv4 версия: /usr/ports/net/bird IPv6 версия: /usr/ports/net/bird6
С момента размещения статьи Используем BIRD для создания «пограничного» маршрутизатора размещенную zaikini, я все мечтал найти время и уделить его изучению и пробам BIRD.
О демоне BIRD народ хорошо отзывается, да и многие IX`ы держат свои Route Server`а именно на этом демоне.
И вот наконец мне предоставилась такая возможность. Для одного проекта понадобилось автоматом генерить blackhole маршруты для BGP и тут я вспомнил что как раз давно хотел попробовать BIRD.
Поднял на тестовом стенде из тройки виртуальных машин:
- FreeBSD 9.1 + BIRD 1.3.11
- FreeBSD 8.4 + BIRD 1.3.11
- FreeBSD 7.2 + BIRD 1.3.2
- FreeBSD 7.2 + BIRD 1.3.11
Погонял BGP и OSPF в различных конфигурациях и схемах — понравилось. Даже больше скажу — очень понравилось. Есть конечно в BIRD некоторые вещи пока не совсем мне понятные или как это сказать не до конца логичные, НО в целом абалденный демон. Респект и уважуха разработчикам BIRD.
Итоговый «приговор» по BIRD: must have.
До сего момента мы работали на Quagga, но она иногда реально достает своими непонятными приколами, когда после реконфига чего либо помогает тока рестарт демонов дабы эти изменения наконец сказались.
Рестарт bgpd и о чудо ! Все непонятки устраняются и все работает как и положено. Но сейчас не об этом речь 🙂
Вообщем пересели мы на BIRD. Что дальше ? А дальше, как это водится, понадобился Looking Glass для BIRD`а, не всегда ж есть желание/возможность лазать в консоль 🙂
Погуглил… нагуглил только sileht/bird-lg и ulg—universal-looking-glass — оба написаны на python.
Попытки найти нечто подобное лукинг глассу для Cisco/Quagga/Juniper и на PHP мне не удалось.
«Ну что ж… Толи лыжи, толи … получается что нету… значит надо написать самому.» — сказал я и приступил к реализации :).
Через некоторое время первая версия LG на PHP была готова и протестирована.
Пока из функционала было реализовано самое необходимое — возможность посмотреть маршрут, пингать и трасернуть.
Потом я подумал о том, что скорее всего я не один такой, кто не хочет/может пользоваться LG на питоне, так же о (похоже) единственно существующем варианте LG для BIRD`а, а так же о том что сам пользуюсь бесплатным ПО, которое пишут и выкладывают другие и … и решил что нужно так же поделиться с общественностью своей разработкой.
Итак представляю вам свой труд и новый проект в рамках проекта Subnets.ru: BIRD Looking Glass на PHP.
Для работы LG вам необходимо:
- установленный и запущенный BIRD
- web сервер (аля apache)
- PHP5: модуль для apache и CLI версия
Более детально написано в README и ошибках, которые, если чего то не хватает, вам будет выдавать web интерфейс LG после его установки.
Я не смотрю на свои возможности через «розовые очки», я больше сис.админ чем программист, но все же кое что напрограммить и я могу 🙂
Лично я свою первоочередную задачу (наличие хоть какого LG для BIRD на PHP) решил. Возможно сей «продукт» поможет и вам.
Это явно не последняя версия этого LG, как снова дойдут руки — буду допиливать функционал далее, благо дело мыслей много, а желаний (как это обычно и бывает) ещё больше :).
В LG встроен механизм проверки наличия новой версии, поэтому если таковая появится, то те кто установит и будет использовать узнают об этом зайдя на главную страницу своего LG.
Надо ли пояснять, что для функционирования сего механизма сервер с LG должен иметь доступ к Инету, а если быть точнее то к URL`у http://bird-lg.subnets.ru/.
Работа LG проверена под OS FreeBSD, если у вас другая ось то вы как раз проверите сами.
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Уважайте чужой труд.
Автор: Николаев Дмитрий (virus (at) subnets.ru)
Используем BIRD (Internet Routing Daemon) для создания «пограничного» маршрутизатора.
Описание схемы сети.
Подготовка к созданию конфигурации BIRD, коротко о BIRD.
С документацией по использованию BIRD можно ознакомиться здесь. Самое основное в понимании работы с BIRD — это представление о таблицах маршрутизации и протоколах, которые работают с этими таблицами. BIRD поддерживает работу протоколов BGPv4, RIPv2, OSPFv2, OSPFv3 и виртуального протокола Pipe для обмена маршрутами между различными таблицами маршрутизации. Для всех протоколов реализована работа с IPv6. Между таблицей маршрутзации и протоколом устанавливаются два фильтра export и import, которые могут принимать, блокировать или изменять получаемую и передаваемую информацию из таблицы в протокол и обратно. Export — направление от таблицы к протоколу, import — в обратную сторону. Когда маршрут передается из протокола в таблицу, его стоимость пересчитывается и об этом оповещаются все протоколы, которые используют данную таблицу, после чего каждый протокол формирует update и рассылает сообщение согласно своему механизму оповещения об изменении маршрута. По-умолчанию в BIRD существует таблица master, которая может использоваться всеми протоколами, если иное в конфигурации протокола не было указано. Кроме указанных выше протоколов, есть еще псевдопротокол kernel, отчечающий за синхронизацию между таблицами маршрутизации BIRD и ядра системы, протокол static — отвечающий за статическую маршрутизацию, протокол direct — создающий маршруты в BIRD на основе настроек сетевых интерфейсов полученных из ядра, и протокол device, отслеживающий состояниме интерфефсов в системе (up/down).
-
bgpAS65002 (в BIRD для работы с bgp соседом необходмо запустить отдельную «ветку» протокола) — для работы с основным провайдером;
-
bgpAS65001 — для работы с резервным провайдером;
-
ospfAS65000 — для обеспечения маршрутизации внутри сети;
-
static1 — понадобится для объявления маршрута по-умолчанию;
-
static2 — используем для объявления нашего «большого» префикса;
-
kernel — понадобится для передачи маршрутов из BIRD в систему;
-
direct и device — их назначение описано выше.
Т.к. конфигурация сети у нас довольно простая, будем использовать только одну таблицу маршрутизации — master.
Для составления конфигурационного файла, лучше все взаимосвязи сначала отразим на схеме:
На схеме видно, что нам для работы с информацией из таблицы master и из протоколов потребуются фильтры. Мы их опишем уже непосредственно в конфиге BIRD.
Файл конфигурации BIRD.
Для проверки работы фильтров, состояния протоколов, маршрутов и т.п. в BIRD есть свой CLI:
# /usr/local/sbin/birdc
BIRD 1.2.4 ready.
bird> >?
configure [soft] [«<file>»] Reload configuration
debug … Control protocol debugging via BIRD logs
disable <protocol> | «<pattern>» | all Disable protocol
down Shut the daemon down
dump … Dump debugging information
echo [all | off | <mask>] [<buffer-size>] Configure echoing of log messages
enable <protocol> | «<pattern>» | all Enable protocol
exit Exit the client
help Description of the help system
mrtdump … Control protocol debugging via MRTdump files
quit Quit the client
reload <protocol> | «<pattern>» | all Reload protocol
restart <protocol> | «<pattern>» | all Restart protocol
restrict Restrict current CLI session to safe commands
show … Show status information
З.Ы. При копировании статьи ссылка на источник ОБЯЗАТЕЛЬНА ! Пожалуйста, уважайте чужой труд.