Как добавить в BIRD обычную информацию о маршрутизации маршрутизатора?
Предположим следующую структуру сети:
R1: R2:
10.1.1.0/24 <--- 10.1.1.1, 192.168.1.1 <----------> 192.168.1.2, 10.1.2.1 ---> 10.1.2.0/24
BIRD установлен как на R1, так и на R2. Вся информация о топологии сети предоставляется автоматически. Насколько я понимаю, BIRD автоматически перераспределит эту информацию, чтобы все станции могли подключиться. Но все не так просто: R1 и R2 автоматически создают «динамические» маршруты для своих соответствующих подсетей, но они не обрабатываются автоматически.
Протокол устройства не импортирует/экспортирует маршруты . В документах говорится о прямом протоколе:
[...] Хотя в некоторых случаях используется прямой протокол (например, злоупотребление eBGP в качестве протокола маршрутизации IGP), в большинстве случаев нет необходимости иметь эти маршруты устройств в таблице маршрутизации BIRD и использовать прямой протокол. [...]
Я думал, что протокол ядра автоматически импортирует эти маршруты, поскольку они являются частью таблицы маршрутизации ядра. Но в документации указано:
К сожалению, есть одна вещь, которая несколько усложняет синхронизацию таблицы маршрутизации. В таблице маршрутизации ядра также есть маршруты устройств для сетей с прямым подключением. Эти маршруты обычно управляются самой ОС (как часть конфигурации IP-адреса), и мы не хотим этого трогать. Они полностью игнорируются во время сканирования таблиц ядра, а также экспорт маршрутов устройств из таблиц BIRD в таблицы маршрутизации ядра ограничен во избежание случайного вмешательства.
Таким образом, никто (ни один протокол) не хочет нести ответственность за распределение тех самых маршрутов, которые соединят две сети. То, что осталось, статично , но мне нужно будет воссоздать всю связь маршрутизатора в файле конфигурации Bird, и я думал, что OSPF через BIRD подойдет для меня. Это то, что я должен делать?
Как должны выглядеть файлы конфигурации для R1 и R2?
router id 192.168.1.1;
protocol device {
scan time 10;
}
protocol direct {
interface "*"; # should I use this?
}
protocol kernel {
learn;
export all;
import all;
device routes true; # OR SHALL I USE THIS?
}
# I would like to avoid doing this:
#protocol static {
# export all;
# route 10.1.1.0/24 via 192.168.1.1;
#}
protocol ospf {
import all;
export all;
area 0 {
interface "eth0", "eth1" {
cost 10; hello 10; transmit 2; wait 5; dead 40;
type broadcast;
authentication cryptographic;
password "1234567890";
};
};
}
И:
router id 192.168.1.2;
protocol device {
scan time 10;
}
protocol direct {
interface "*"; # should I use this?
}
protocol kernel {
learn;
export all;
import all;
device routes true; # OR SHALL I USE THIS?
}
# I would like to avoid doing this:
#protocol static {
# export all;
# route 10.1.2.0/24 via 192.168.1.2;
#}
protocol ospf {
import all;
export all;
area 0 {
interface "eth0", "eth1" {
cost 10; hello 10; transmit 2; wait 5; dead 40;
type broadcast;
authentication cryptographic;
password "1234567890";
};
};
}