Как настроить маршрутизатор BIRD для связи с соседом в другой подсети?

Вступление

Я пытаюсь установить базовую связь по протоколу RIPv2 между двумя хостами, на которых работает демон маршрутизации BIRD.

у меня есть Host A с интерфейсом enp0 который имеет адрес 10.0.1.50/24,
У меня есть другой хозяин Host B с интерфейсом enp1 который имеет адрес 10.1.1.25/24, Эти интерфейсы напрямую связаны кабелем. Я могу пропинговать между обеими машинами, если я добавлю статический маршрут на обе машины.

Конфигурационные файлы

У меня есть следующее bird.conf на Host A:

protocol kernel {
        learn;                  # Learn all alien routes from the kernel
        persist;                # Don't remove routes on bird shutdown
        scan time 20;           # Scan kernel routing table every 20 seconds
        export all;             # Default is export none
}

protocol device {
    scan time 10;           # Scan interfaces every 10 seconds
}

protocol direct {
        interface "enp0"
}

protocol rip MyRIP {    
    export all;
    import all;
    interface "enp0" { mode multicast;};
}

bird.conf на Host B идентичен, за исключением enp0 заменяется на enp1

Начальные результаты

После запуска птичьего демона на обоих хостах, я могу сделать tcpdump -ni enp0 -vv

13:21:41.943537 IP (tos 0xc0, ttl 1, id 4933, offset 0, flags [none], proto UDP (17), length 132)
    10.1.1.25.520 > 224.0.0.9.7742: [udp sum ok] UDP, length 104
13:21:41.943704 IP (tos 0xc0, ttl 1, id 150, offset 0, flags [none], proto UDP (17), length 272)
    10.0.1.50.520 > 224.0.0.9.7742: [bad udp cksum 0xec48 -> 0x1219!] UDP, length 244

Я могу прыгать в birdcl командная строка и запустить show rip neighbors и получить пустую таблицу.

Заставить это работать

Если я установлю адреса в одной подсети, я могу запустить show rip neighbors и я могу видеть 10.0.1.50 в моих списках соседей.

Заворачивать

Как я могу заставить эти маршрутизаторы перечислять друг друга как соседей, если два конца ссылки не находятся в одной подсети?

У меня должна быть какая-то неправильная мысленная картина того, как работают сети, не нужно ли маршрутизаторам общаться с соседями, которые не находятся в одной подсети все время?

Я не зациклен на конкретном ПТИЦЕ ответе.

1 ответ

Решение

Еще в древние времена, когда в сети было больше протоколов, чем TCP/IP, я запустил RIP. Тогда это был RIPv1, и он использовал трансляции. Сетевые топологии выглядели примерно так:

[10.0.0.0/24] <-- router --> [10.0.1.0/24] <-- router --> [10.0.2.0/24]
[10.0.3.0/24] <-- router ------^        ^---- router  --> [10.0.4.0/24]
[10.0.5.0/24] <-- router -------^      ^----- router  --> [10.0.6.0/24]

Где все маршрутизаторы будут совместно использовать подсеть, в которой есть только маршрутизаторы. Для установок с двумя маршрутизаторами между ними был проложен один кабель, как вы делаете. Для больших установок было бы быстрое сетевое устройство, работающее с подсетью (надеюсь, коммутатор, но не всегда). Таким образом, все было в 2 прыжках, и схождение маршрута прошло просто. Это то, что у нас было в то время.

Затем появился RIPv2 и многоадресная рассылка, и наличие большего количества переходов было менее подвержено проблемам сходимости. Если для многоадресного TTL было установлено значение +1 по диаметру прыжка, каждый маршрутизатор эффективно объявлял данные напрямую всем другим маршрутизаторам, что ускоряло конвергенцию.

Однако следует подумать о ключевом моменте: посмотрите на адреса источников в выходных данных TCPDUMP.

 10.1.1.25.520 > 224.0.0.9.7742
 10.0.1.50.520 > 224.0.0.9.7742

Роутер 10.0.1.50 было сказано, что маршрутизатор в 10.1.1.25 имеет подсеть 10.1.1.0/24 местный к этому. Тем не менее, маршрутизатор в 10.0.1.50 нет маршрута к адресу 10.1.1.25, поэтому он не добавит его в таблицу. Многоадресная передача - это ваш канал объявлений, но он не может передавать маршрутизированный трафик.

Еще не все потеряно.

Если по какой-то причине вы ограничены одним кабелем, вы можете определить виртуальные интерфейсы. куда enp0.0 на 10.3.1.0/24 и enp0.1 находится на 10.0.1.0/24. Таким образом, вы можете использовать 10.3.1.0/24 в качестве "сети маршрутизации".

Другие вопросы по тегам