Я успешно настроил OSPF на всех наших маршрутизаторах HP ProCurve 7102 и большинстве наших внутренних маршрутизаторов Linux. Маршруты рекламируются, и все выглядит красиво.
За исключением маршрутов в подсети, обрабатываемых различными службами OpenVPN и другими VPN-соединениями в компании. Обратите внимание на картинку ниже, на которой изображена часть сети компании:
Красные стрелки - это VPN-подключения. Синяя область внизу показывает область OSPF 0 (магистраль), которая включает маршрутизаторы во всех других офисах. Розовая область изображает зону OSPF 177 для одного из наших офисов. Оранжевый прямоугольник - это рассматриваемая сеть OpenVPN, размещенная на маршрутизаторе Linux, обозначенном синим значком со стрелками.
Подсеть 10.177.0.0/16 правильно объявляется для всех других областей OSPF. Однако, несмотря на то, что сеть 10.180.1.0/24 включена в конфигурацию OSPF, а интерфейс tun0 включен в область 177 (как пассивный интерфейс), эта подсеть не объявляется.
Это потому, что это на самом деле внешний маршрут? Если да, как я могу сказать демону OSPF прорекламировать этот маршрут?
Первая мысль, которая приходит в голову, заключается в том, что вам необходимо перераспределить маршруты ядра в дополнение к подключенным маршрутам в Quagga / Zebra OSPF. Поскольку OpenVPN добавляет маршруты самостоятельно, Zebra не будет перераспределять их, если в вашей конфигурации есть только «перераспределение статических».
Я тоже использую OpenVPN в среде OSPF, и все перераспределяется нормально.
Примечание: вам может потребоваться добавить некоторые фильтры списка перераспределения, чтобы предотвратить перераспределение других маршрутов ядра, которые не следует рекламировать.
Другой вариант - добавить статический маршрут в Zebra для 10.180.1.0/24, обнуляющегося или устройства обратной связи.
Я столкнулся с аналогичной проблемой после оргии "избавиться от ядра и статических маршрутов".
В моем случае решение состоит в том, чтобы поместить сеть OpenVPN в другую область OSPF, а затем использовать изящный трюк, состоящий в замене префикса / 32, связанного с адресом конечной точки сервера, на префикс подсети / 24. например
192.168.22.0/24 - это подсеть OpenvVPN на моем сервере OpenVPN FreeBSD 10.3-PRERELEASE.
В openvpn.conf:
dev tun
server 192.168.22.0 255.255.255.0
При запуске OpenVPN интерфейс tun0 имеет следующую конфигурацию:
munchkin# ifconfig tun0
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
options=80000<LINKSTATE>
inet6 fe80::222:15ff:fe4b:7e10%tun0 prefixlen 64 scopeid 0x1c
inet 192.168.22.1 --> 192.168.22.2 netmask 0xffffffff
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
Opened by PID 2746
В ospfd.conf:
router ospf
...
network 192.168.11.0/24 area 0.0.0.0
network 192.168.22.0/24 area 0.0.0.1
area 0.0.0.1 range 192.168.22.1/32 substitute 192.168.22.0/24
OSPF объявляет 192.168.22.0/24 вместо 192.168.22.1/32.
N.B. Это работает только через границу области.