Настройка OSPF в BIRD

В этой статье я приведу пример настройки OSPF в BIRD.

Команда установки BIRD в Ubuntu:

sudo -i
apt install bird

Настроим логи как я описывал в статье:
Настройка логов BIRD

Откроем файл конфигурации в любом текстовом редакторе:

nano /etc/bird/bird.conf

Глобально укажем ID маршрутизатора, обычно это IP адрес который смотрим к остальным OSFP соседям, если глобально не указать, то будет выбран случайный IP адрес на интерфейсе, в секциях protocol ospf, protocol bgp и т.д. при необходимости можно дополнительно указывать отдельные router id, если сетевых интерфейсом много с разными IP адресами:

router id 192.168.31.201;

Настроим протокол который будет отслеживать события интерфейсов, up/down (в зависимости от количества интерфейсов и загрузки CPU в этот момент, можно регулировать период сканирования в секундах, я указал 100, это больше чем обычно, так как на примере беру сервер с accel-ipoe на котором более 10 000 сетевых интерфейсов):

protocol device {
    scan time 100;
}

Настроим протокол который будет генерировать маршруты ко всем указанным интерфейсам:

protocol direct {
	interface "vlan*", "ipoe*";
}

Настроим протокол который будет синхронизировать маршруты BIRD с маршрутами ядра (по умолчанию import all, export none):

protocol kernel {
	      import all;
	      export all;
}

При необходимости настроим протокол который позволяет вручную добавить указанные статические маршруты:

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:

filter export_OSPF {
        if net.len = 32 then {
#                print "net accepted:", net;
                accept;
        }
 else{
#  print "net rejected:", net;
         reject;
 }
}

Аналогичный фильтр для импорта:

filter import_OSPF {
        if net.len = 32 then {
#                print "net accepted:", net;
                accept;
        }
 else{
#  print "net rejected:", net;
         reject;
 }
}

Еще пример фильтра который принимает только указанные сети:

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 соседей, сетевой интерфейс в сторону соседей и прочие параметры:

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 чтобы применить изменения конфигурации:

systemctl restart bird.service
systemctl status bird.service
service bird status

Проверим запускается ли bird при запуске операционной системы и активируем автозапуск:

systemctl is-enabled bird.service
systemctl enable bird.service

Подключимся к консоли bird, посмотрим статистику и соединение с OSPF соседями:

birdc
show status
show protocols all
show route
show route all
show ospf
show ospf neighbors
show ospf topology
exit

Если маршрутов очень много, то экспортируем маршруты ядра в текстовый файл и там уже посмотрим их и убедимся что все хорошо:

ip route > ixnfo.com.txt

Можно мониторить количество маршрутов например с помощью Zabbix:

route -n | wc -l

Можно выполнять команды birdc прямо из терминала Linux, например:

birdc show ospf interface
birdc show ospf interface | wc -l

Смотрите также мои статьи:
Настройка OSPF в Quagga
Настройка OSPF на Juniper MX
Установка и настройка BIRD (BGP)

Оставьте комментарий

Добавить комментарий