OSPF: как рекламировать подсеть сервера OpenVPN?
Я успешно настроил OSPF на всех наших маршрутизаторах HP ProCurve 7102 и на большинстве наших внутренних маршрутизаторов Linux. Маршруты рекламируются, и все хорошо.
За исключением маршрутов в подсети, которые обрабатываются различными службами OpenVPN и другими VPN-соединениями по всей компании. Пожалуйста, рассмотрите картинку ниже, которая показывает часть сети компании:
Красные стрелки - VPN-соединения. Синяя область внизу показывает область OSPF 0 (магистраль), которая включает маршрутизаторы во всех других офисах. Розовая зона изображает зону 177 OSPF для одного из наших офисов. Оранжевый прямоугольник - это рассматриваемая сеть OpenVPN, размещенная на маршрутизаторе Linux, обозначенном синим значком со стрелками.
Подсеть 10.177.0.0/16 должным образом объявлена всем остальным областям OSPF. Однако, несмотря на то, что сеть 10.180.1.0/24 включена в конфигурацию OSPF, а интерфейс tun0 включен в область 177(как пассивный интерфейс), эта подсеть не объявляется.
Это потому, что это на самом деле внешний маршрут? Если да, то как бы я сказал демону OSPF рекламировать этот маршрут?
2 ответа
Первая мысль, которая приходит на ум, заключается в том, что вам нужно перераспределить маршруты ядра в дополнение к подключенным маршрутам в Quagga/Zebra OSPF. Поскольку OpenVPN сам добавляет маршруты, Zebra не будет перераспределять их, если в вашей конфигурации есть только "перераспределить статические".
Я также использую OpenVPN в средах OSPF, и все прекрасно перераспределяется.
Примечание: вам может понадобиться добавить некоторые фильтры списка перераспределения, чтобы предотвратить перераспределение других маршрутов ядра, которые не должны рекламироваться.
Другим вариантом является добавление статического маршрута в Zebra для 10.180.1.0/24, переходящего в ноль, или устройства loopback.
Я столкнулся с подобной проблемой после оргии "избавиться от ядра и статических маршрутов".
Решение для моего случая состоит в том, чтобы поместить сеть OpenVPN в другую область OSPF, а затем использовать хитрый трюк с заменой префикса /32, связанного с адресом конечной точки сервера, на префикс подсети /24. например
192.168.22.0/24 - это подсеть OpenvVPN на моем сервере FreeBSD 10.3-PRERELEASE OpenVPN.
В 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
NB Это работает только через границу области.