Маршрутизация в Quagga OSPF
-
Доброго дня.
Имеется офис и несколько филиалов.
В офисе1 pfsense01 имеет 2 wan канала, работающих в режиме failover. в филиале2 pfsense02 имеет 1 wan канал.
Между офисом и филиалом подняты два openvpn канала(режим PSK): 1 канал 10.10.9.0/24, port udp 1196; 2 канал 10.13.9.0/24, port udp 1296Встала задача обеспечить отказоустойчивость посредством Quagga OSPF. Пакет установлен и настроен по инструкции c учётом:
Небольшое замечание по настройке OSPF. Не надо делать как на картинках выше. Во-первых, в пакет Quagga OSPF сейчас добрые люди прислали коммит, который не дает сервису OSPFd запустится, если у вас что-то прописано в Disable Redistribution. Во-вторых, даже если это починят, прописывать туда что-либо нет нужды и вообще неправильно.
Т.е. в Global Settings снимаем галку с Redistribute connected subnets и вычищаем все Disable Redistribution. Идем на вкладку Interface Settings и добавляем там наш LAN интерфейс, в настройках которого ставим галку Interface is Passive.
Этого достаточно для того, чтобы соседи по OSPF узнали маршрут в вашу локальную сеть, и такая настройка более лучше соответствует принципам OSPF.Маршруты появились:
============ OSPF network routing table ============
N 10.10.9.2/32 [10] area: 1.1.1.1
directly attached to ovpns3
N 10.13.9.2/32 [20] area: 1.1.1.1
directly attached to ovpns6
N 192.168.0.0/24 [10] area: 1.1.1.1
directly attached to re0
N 192.168.4.0/24 [20] area: 1.1.1.1
via 10.10.9.2, ovpns3============ OSPF router routing table =============
============ OSPF external routing table ===========
Codes: K - kernel route, C - connected, S - static, R - RIP,
O - OSPF, I - IS-IS, B - BGP, A - Babel,
> - selected route, * - FIB routeK>* 0.0.0.0/0 via 95.66.187.52, pppoe0
K>* 8.8.4.4/32 via 84.53.192.2, pppoe1
K>* 8.8.8.8/32 via 95.66.187.52, pppoe0
K>* 10.2.2.0/24 via 10.9.9.2, ovpns2
K>* 10.8.0.0/24 via 10.8.0.2, ovpns1
C>* 10.8.0.2/32 is directly connected, ovpns1
C>* 10.9.9.2/32 is directly connected, ovpns2
O 10.10.9.2/32 [110/10] is directly connected, ovpns3, 15:55:42
C>* 10.10.9.2/32 is directly connected, ovpns3
C>* 10.11.9.2/32 is directly connected, ovpns4
C>* 10.12.9.2/32 is directly connected, ovpns7
O 10.13.9.2/32 [110/20] is directly connected, ovpns6, 15:55:42
C>* 10.13.9.2/32 is directly connected, ovpns6
C>* 10.14.9.2/32 is directly connected, ovpns5
C>* 84.53.192.2/32 is directly connected, pppoe1
K>* 84.53.199.254/32 via 84.53.192.2, pppoe1
K>* 84.53.200.24/32 via 84.53.192.2, pppoe1
C>* 95.66.187.52/32 is directly connected, pppoe0
K>* 95.66.187.247/32 via 95.66.187.52, pppoe0
K>* 95.66.188.11/32 via 95.66.187.52, pppoe0
C>* 127.0.0.0/8 is directly connected, lo0
O 192.168.0.0/24 [110/10] is directly connected, re0, 15:55:42
C>* 192.168.0.0/24 is directly connected, re0
K>* 192.168.2.0/24 via 10.14.9.2, ovpns5
O>* 192.168.4.0/24 [110/20] via 10.10.9.2, ovpns3, 15:55:3310.10.9.1 link#16 UHS 0 0 16384 lo0
10.10.9.2 link#16 UH 0 0 1500 ovpns310.13.9.1 link#17 UHS 0 0 16384 lo0
10.13.9.2 link#17 UH 0 0 1500 ovpns6192.168.4.0/24 10.10.9.2 UG1 0 52389 1500 ovpns3
И вот в чём возникла загвоздка: с филиала в сеть офиса доступ есть, а вот наоборот по разному.
После поднятия ospf: С офиса был доступен(ping) сервер филиала 192.168.4.2, но не был доступен(ping) voip шлюз 192.168.4.3
После перезагрузки pfsense офиса и филиала сервер 192.168.4.2 стал не доступен(ping), но стал доступен(ping) voip шлюз 192.168.4.3.
Делаю tracert до 192.168.4.2 и первый хоп сразу уходит на шлюз провайдера.Правила для обоих pfsense одинаковы: правило для Lan - разрешено все, правило для OpenVpn - разрешено все.
Установлена галка - Load Balancing * Allow default gateway switching
-
1. Зачем два канала между одними и теми же точками ?
2.
Правила для обоих pfsense одинаковы: правило для Lan - разрешено все, правило для OpenVpn - разрешено все.
Этого мало. Необходимо создать на LAN отдельное правило, где в source - lan subnet , а в dest - сеть за openvpn-клиентом. Возможно, что и указать явно Gateway прийдется.
Далее, директиву iroute прописывали в Client Specific overrides ? Иначе сеть клиента не будет доступна из сети сервера.И еще. Ospf - это замечательно, но если маршрутов немного, может обойтись директивами route\push route\iroute на сервере\клиенте?
Upd. Как вариант - исп. IPsec + OSPF.
-
1. Зачем два канала между одними и теми же точками ?
филиал должен при падении одного из каналов в головном офисе автоматически переключаться на другой, компы офиса и филиала должны видеть друг-друга.
вроде для этого и надо поднимать 2 экземпляра openvpn сервера(гл. офис) и 2 экземпляра openvpn клиента(филиал).Необходимо создать на LAN отдельное правило, где в source - lan subnet , а в dest - сеть за openvpn-клиентом.
по поводу правила-попробую ваш вариант.
по инструкции rubic рекомендует
Ни в головном офисе, ни в филиале на серверах и клиентах не прописаны ни Remote Network, ни какие-либо route.
если не ошибаюсь, то Client Specific overrides нет при создании openvpn в режиме PSK.
если маршрутов немного, может обойтись директивами route\push route\iroute на сервере\клиенте
дело в том, что филиалы будут добавляться.
если отбросить ospf, то все прекрасно работает: организована связь глав. офиса и 3х филиалов и филиалы видят гл. офис и друг друга.
если на сервере и клиентах openvpn прописывать remote network и route(для обеспечения связи между филиалами) и использовать ospf, то по истечении нек. времени основной openvpn канал падает и его перезапуск не помогает.
-
заметил одну особенность в правилах Firewall, вкладка LAN:
если в основном правиле(отмечено красным) поменять поле Gateway с multiwan на default, то при реализации ospf сеть филиала доступна.
но в основном правиле LAN, в поле Gateway рекомендуют выставлять группу шлюзов для обеспечения отказоустойчивости при падении одного из каналов.
если в основном правиле(отмечено красным) оставить поле Gateway со значением multiwan и создать новое правило(отмечено зеленым) со значением Gateway - default, то сеть филиала тоже доступна.Правильна ли такая реализация с точки зрения корректности?
-
Так и должно быть. Красное правило с gateway - это policy routing, который не принимает во внимание системные маршруты (gateway-то уже указан), а зеленое - наоборот действует по системной таблице маршрутов. Оставляйте оба и именно в этом порядке.
-
спасибо, что разъяснили. тему можно закрывать.