В этой статье я приведу пример настройки OSPF в BIRD.
Команда установки BIRD в Ubuntu:
1 2 | sudo -i apt install bird |
Настроим логи как я описывал в статье:
Настройка логов BIRD
Откроем файл конфигурации в любом текстовом редакторе:
1 | nano /etc/bird/bird.conf |
Глобально укажем ID маршрутизатора, обычно это IP адрес который смотрим к остальным OSFP соседям, если глобально не указать, то будет выбран случайный IP адрес на интерфейсе, в секциях protocol ospf, protocol bgp и т.д. при необходимости можно дополнительно указывать отдельные router id, если сетевых интерфейсом много с разными IP адресами:
1 | router id 192.168.31.201; |
Настроим протокол который будет отслеживать события интерфейсов, up/down (в зависимости от количества интерфейсов и загрузки CPU в этот момент, можно регулировать период сканирования в секундах, я указал 100, это больше чем обычно, так как на примере беру сервер с accel-ipoe на котором более 10 000 сетевых интерфейсов):
1 2 3 | protocol device { scan time 100; } |
Настроим протокол который будет генерировать маршруты ко всем указанным интерфейсам:
1 2 3 | protocol direct { interface "vlan*", "ipoe*"; } |
Настроим протокол который будет синхронизировать маршруты BIRD с маршрутами ядра (по умолчанию import all, export none):
1 2 3 4 | protocol kernel { import all; export all; } |
При необходимости настроим протокол который позволяет вручную добавить указанные статические маршруты:
1 2 3 4 5 | protocol static { route x.x.x.0/23 blackhole; # route 10.0.0.0/8 unreachable; # route 10.5.0.0/24 via "eth0"; } |
При импорте и экспорте маршрутов желательно использовать фильтры, чтобы избежать непредвиденных ситуаций и импортировать и экспортировать только то что нужно, ниже приведу несколько примеров фильтров.
Первый пример для экспорта маршрутов с маской сети 32, например для сервера с accel-ppp:
1 2 3 4 5 6 7 8 9 10 | filter export_OSPF { if net.len = 32 then { # print "net accepted:", net; accept; } else{ # print "net rejected:", net; reject; } } |
Аналогичный фильтр для импорта:
1 2 3 4 5 6 7 8 9 10 | filter import_OSPF { if net.len = 32 then { # print "net accepted:", net; accept; } else{ # print "net rejected:", net; reject; } } |
Еще пример фильтра который принимает только указанные сети:
1 2 3 4 5 6 7 | filter ixnfo_com prefix set localnet; { localnet = [ 10.5.0.0/24+, X.X.X.0/23+ ]; if net ~ localnet then accept; reject; } |
Теперь настроим протокол OSPF, в котором укажем фильтры, OSPF соседей, сетевой интерфейс в сторону соседей и прочие параметры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | protocol ospf { #router id 192.168.x.x; export filter export_OSPF; import none; area 0.0.0.0 { interface "vlan777" { hello 10; retransmit 5; cost 10; transmit delay 1; dead count 4; wait 40; type broadcast; priority 1; authentication none; #authentication cryptographic; password "ixnfo.com"; neighbors { #192.168.5.100 eligible; 192.168.5.100; }; }; }; } |
Перезапустим bird чтобы применить изменения конфигурации:
1 2 3 | systemctl restart bird.service systemctl status bird.service service bird status |
Проверим запускается ли bird при запуске операционной системы и активируем автозапуск:
1 2 | systemctl is-enabled bird.service systemctl enable bird.service |
Подключимся к консоли bird, посмотрим статистику и соединение с OSPF соседями:
1 2 3 4 5 6 7 8 9 | birdc show status show protocols all show route show route all show ospf show ospf neighbors show ospf topology exit |
DR (Designated Router) — маршрутизатор с наивысшим приоритетом, когда приоритеты равны, то выбирается тот у которого наивысший router-id.
BDR (Backup Designated Router) — следующий маршрутизатор с наивысшим приоритетом после DR.
Если маршрутов очень много, то экспортируем маршруты ядра в текстовый файл и там уже посмотрим их и убедимся что все хорошо:
1 | ip route > ixnfo.com.txt |
Можно мониторить количество маршрутов например с помощью Zabbix:
1 | route -n | wc -l |
Можно выполнять команды birdc прямо из терминала Linux, например:
1 2 | birdc show ospf interface birdc show ospf interface | wc -l |
Смотрите также мои статьи:
Настройка OSPF в Quagga
Настройка OSPF на Juniper MX
Установка и настройка BIRD (BGP)