Про настройку динамической маршрутизации по протоколу Rip в bird

Файл конфигурации для корректной работы rip в bird может выглядеть так:

#Router ID
router id 192.168.1.100;
 
 
#kernel1 configuration:
protocol kernel {
#    disabled;
    learn;
    persist;
    scan time 10;
    import all;
    export all;
}
 
#device1 configuration:
protocol device {
#    disabled;
    scan time 10;
}
 
protocol direct {
    interface "*";
}
 
#rip configuration:
protocol rip {
#    disabled;
    import all;
    export all;
    port 1520;
    period 15;
    infinity 16;
    garbage time 60;
    interface "eth0" { mode broadcast; };
}

Что означает строка import all в протоколе kernel?

Протокол kernel отвечает за взаимодействие демона bird с таблицей маршрутизации ядра linux.

import all означает что демон bird будет брать все существующие маршруты из таблицы маршрутизации ядра.

Что означает строка export all в протоколе kernel?

export all означает что демон bird будет обновлять таблицу маршрутизации ядра всеми маршрутами полученными по протоколу rip

Как настроить фильтр для import и export?

Для примера перепишем секцию протокола rip:

protocol rip {
#    disabled;
	import filter { print "importing"; if ifname = "eth0" then  reject;accept; };
    export all;
    port 1520;
    period 15;
    infinity 16;
    garbage time 60;
    interface "eth0" { mode broadcast; };
}

В строке import вместо all стоит filter. И это означает что протокол rip будет принимать маршруты на всех интерфейсах кроме интерфейса eth0.

Аналогичным способом можно сделать фильтр по ip-адресам

import filter { print "importing"; if net ~ 192.168.1.0/24 then reject; accept; };

Как включить отладку?

В каждую из секций протоколов можно добавить строку:

debug all;

и тогда при запуске bird из консоли будет вестить расширенная отладка:

bird4 -d -c /etc/bird4.conf