Первичная настройка OpenBGPd.
В портах FreeBSD есть openbgp – продукт из проекта OpenBSD для поддержки протокола динамической маршрутизации BGP. Проэкт OpenBSD славится отсутствием проблем с безопасностью и одним из методов достижения этого является реализация всего необходимого по возможности своими силами. То есть они стараются минимизировать наличие продуктов от сторонних разработчиков в своей системе.
Ну а как по мне, то просто интересно посмотреть на продукт отличный от Quagga. Для этого я сделал небольшую тестовую лабораторию из двух хостов. На одном будет стоять Quagga, на втором хосте поставим OpenBGPd. Задача обменяться анонсами.
Конфиг Quagga выглядит так:
! hostname Router hostname bgpd log stdout ! password zebra enable password zebra ! interface em0 ipv6 nd suppress-ra ! interface lo0 ! router bgp 65534 bgp router-id 192.168.0.6 network 192.168.1.0/24 network 192.168.2.0/24 network 192.168.3.0/24 network 192.168.4.0/24 neighbor 192.168.0.15 remote-as 65535 ! line vty !
Теперь перейдем к установке OpenBGPd. Ставить будем из портов:
cd /usr/ports/net/openbgpd/ make install clean
В небольшом диалоговом окне сборки можно ничего не отмечать. По крайней мере тем, кто не использует IPv6.
┌────────────────────────────────────────────────────────────────────┐ │ Options for openbgpd 4.6.20100227 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] IPV6LLPEER Support nexthop using IPv6 link-local address │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
После установки первый сюрприз. Нет конфигов, ни примеров, ничего. Но ничего есть маны. Второе разочарование – отсутствует специальная оболочка для настройки, как в Quagga. Я отлично понимаю, что это совсем разные проекты, что наличие шела и телнет доступа – потенциальная дыра в безопасности, но все же.
Ну да ладно, после чтения манов получился вот такой первый конфиг /usr/local/etc/bgpd.conf:
AS 65535 network 192.168.5.0/24 network 192.168.6.0/24 network 192.168.7.0/24 network 192.168.8.0/24 network 192.168.9.0/24 group "peering AS65534" { remote-as 65534 neighbor 192.168.0.6 { descr "Quagga" announce all } }
В принципе чем то похоже на конфиги Juniperов b Vyatta.
Теперь делаем обязательно:
chmod 600 bgpd.conf
И можно разрешать старт openBGP.
echo 'openbgpd_enable="YES"' >> /etc/rc.conf
и теперь его запустить.
/usr/local/etc/rc.d/openbgpd start
После запуска смотрим на Quagga:
# show ip bgp su BGP router identifier 192.168.0.6, local AS number 65534 RIB entries 17, using 1088 bytes of memory Peers 1, using 2520 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.0.15 4 65535 189 191 0 0 0 01:33:59 5 Total number of neighbors 1
Сессия поднялась.
Теперь разберемся как увидеть тоже самое в OpenBGPd.
Для этого служит команда bgpctl.
bgpctl show Neighbor AS MsgRcvd MsgSent OutQ Up/Down State/PrfRcvd Quagga 65534 5 4 0 00:00:50 4
Ну а, например после изменения конфигурационного файла, можно выполнить bgpctl reload и будут применены новые настройки. Причем текущие сессии не будут разорваны.
И по итогам того, что у меня получилось, могу сказать, что для меня OpenBGPd выглядит неудобным, но он вполне рабочий. Остается разобраться с фильтрацией анонсов и работой с bgpctl.



