Апр 20 2010

Первичная настройка 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.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть