В текущей версии Quagga для Linux я обнаружил, что есть правило, которое может подавлять некоторую информацию о маршрутах от рекламы на соседние маршрутизаторы через RIPv2.
Если маршрутизатор r1 подключается к другому маршрутизатору r2 через интерфейс nic0, а r1 имеет другой интерфейс nic1, подключитесь к другой сети net1. Затем r1 надеется объявить маршрут к net1 своему соседу r2. Сеть, скажем net0, - это сеть, соединяющая r1 и r2, которая, скажем, 10.3.1.32/27, а сеть net1, скажем, 10.3.1.0/24.
В этом случае запись маршрута 10.3.1.0/24 (через nic1) не будет отправлена на r2, потому что программа RIPv2 в Quagga внутренне подавила запись и отбросила ее.
Я проверил исходный код RIPv2 Quagga и обнаружил, что это связано с правилом: 10.3.1.0/24 имеет сетевой префикс, который содержится в префиксе сети 10.3.1.32/27, другими словами, крайние левые 24 бита. 10.3.1.0 является подстрокой крайних левых 27 битов 10.3.1.32.
Но я не понимаю, почему существует такое правило. Это определено стандартом RIPv2 или просто причудой Quagga? Насколько я понимаю, перекрытие между net0 и net1 является допустимым и не должно быть проблемой из-за «правила соответствия самого длинного сетевого префикса» в маршрутизации, а для маршрутизатора r2 действительно необходимо знать, что существует более крупная сеть net1 (сравнивая к net0) можно получить через r1. Если эта информация о маршруте была подавлена Quagga, r2 не узнает об этом, и к хостам в net1 нельзя будет получить доступ из net0 со стороны r2.
Есть кто-нибудь, кто это знает?
Спасибо Вуди
Если сеть 10.3.1.0/24 напрямую подключена к R1, это может создать проблему. В этом случае R1 имеет перекрывающиеся IP-адреса на обоих своих интерфейсах. Я не эксперт по Linux, но я знаю, что это не поддерживается на маршрутизаторах Cisco (и я почти уверен, что он не поддерживается ни на каком другом маршрутизаторе / межсетевом экране).
Если сеть не подключена напрямую к R1, тогда в сети должен быть третий маршрутизатор, назовем его R0. R0 напрямую подключен к сети 10.3.1.0/24 и подключается к R1 через другую сеть, например 172.16.0.0/24. В этом случае настройка должна работать нормально. Я тестировал это на маршрутизаторах Cisco.
10.0.0.0/8 is variably subnetted, 4 subnets, 4 masks
R 10.3.1.0/24 [120/1] via 172.16.0.101, 00:00:13, Ethernet0/1 (nic1)
C 10.3.1.32/27 is directly connected, Ethernet0/0 (nic0)
Возможно, Quagga - хотя и не жалуется на это - также не может обрабатывать эти перекрывающиеся диапазоны IP-адресов на обоих своих интерфейсах.