MikroTik Для больших дядей часть 2

И так я надеюсь вы все успешно настроили маршрутизаторы из первой части, и добрались до данного этапа.

Помните важную деталь так как мы строго соблюдаем все правила, у нас у всех должна быть полностью идентичные настройки.

И так давайте приступим к следующей части нашей эпопеи, а именно настройка маршрутизации.

Наша задача на сегодня это связать все маршрутизаторы с помощью протокола OSPF так, чтобы любой маршрутизатор мог достучаться до любого другого маршрутизатора.

И для этого нам потребуется знать следующие аспекты.

Любая сеть OSPF начинается с Backbone это магистральная область, которая знает о том как достучаться до всех других областей, в OSPF Backbone имеет номер 0.0.0.0 в любой сети где есть OSPF обязательно должна быть такая Area. Так как у нас сеть одна и она небольшая мы будем сразу делать на Backbone благо в RouterOS уже есть такая Area по дефолту.

Фильтры OSPF

Очень частая ошибка при конфигурации OSPF это не использовать фильтры маршрутов, если один из маршрутизаторов будет настроен не правильно он может “Выплюнуть” в сеть лишние маршруты которые приведут к развалу всей сети, особенно это заметно при построении туннелей, а так же когда используется связка BGP и OSPF в особенности когда есть Full View, одна галочка, и на всех маршрутизаторах закончилась память. А так как OSPF передаёт только изменения, память прибиться очищать либо отключением протокола OSPF либо перезагрузкой.

Прежде чем настраивать OSPF нам необходимо настроить фильтры, для того чтобы в дальнейшем не допустить ошибку и не нарваться на неё.

В OSPF у нас есть возможность указать какие маршруты мы можем принять и добавить в таблицу маршрутизации (не путать с таблицей LSDB) а какие нет, ну и также можем указать какие маршруты из таблицы маршрутизации отдавать в сеть OSPF. При этом мы не можем, точнее у нас не получиться запретить на отдачу внутренние маршруты по которым строятся связь OSPF. Так как такие маршруты являются неотъемлемой частью LSDB таблицы, а она должна быть на всех маршрутизаторах одинакова в одной area.

В первой части, мы продумали адресаций для каждого типа оборудования, а теперь наступил момент воспользоваться тем, что у нас явно все типы адресов находятся в одной сети.

Я покажу на примере

/routing filter add chain=ospf-in prefix=172.31.255.0/24 prefix-length=32 action=accept

chain=ospf-in - цепочка фильтров которая по умолчанию назначена на дефолтный instance OSPF в RouterOS. Говорит о том, что мы будем проверять на соответствие некому правилу, и если не запрещено то такой маршрут будем добавлять в таблицу маршрутизации.

prefix=172.31.255.0/24 - префикс это не маршрут, префикс это адресное пространство из которого мы будем выискивать маршруты с определённой длинной.

prefix-length=32 - а вот тут уже непосредственно длинна маршрута.

Другими словами мы будем разрешать action=accept все маршруты у которых длина соответствует prefix-length а также сам маршрут лежит в более большой сети prefix. Наши Loopback интерфейсы как раз на маршрутизаторах имеют адреса из данной сети и маску /32.

Также нам необходимо разрешить Loopback адрес для PE и CE устройств.

И конечно в конце, чтобы не прилетели лишние маршруты мы должны добавить /routing filter add chain=ospf-in action=discard

Я предпочитаю также использовать цепочку ospf-out, что бы при ошибке не улетело нечего лишнего, поэтому давайте также продублируем все что было в ospf-in в цепочке ospf-out.

Фильтры так же как и правила firewall обрабатывают по порядку, поэтому сначала разрешаем, а в конце цепочки всё запрещаем.

OSPF instance

Instance это процесс ospf в большинстве случаев он нам нужен только один. Зачастую второй Instance нужен если вы предлагаете своим клиентам услугу l3vpn, но нам до неё ещё как до луны или если вы делаете соединение ospf сетей с другой сетью, и чтобы в вашу LSDB таблицу не было доставлено лишних маршрутов используют разные Instance. На данном этапе нам достаточно одного дефолтного instance.

Особенность Instance вы должны указать некое уникальное значение Router-id, это не IP адрес, но записывается так же как и IP принцип и длину 4 октета по 8 бит. Если не указывать, то маршрутизатор самостоятельно выберет из наименьшего активного IP адреса, нам некоем случаем нельзя полагаться на волю судьбы. Для данного решения у нас есть адрес Loopback который отлично подходит под значение Router-ID.

Назначается Router-id следующим образом

/routing ospf instance set default router-id=172.31.255.#

Значения Loopback адресов возьмите с адреса интерфейса Br-lo либо с нашей схемы.

Интерфейсы

Для работы OSPF необходимо указать на каких интерфейсах будет работать процесс OSPF слушать и отправлять.

В RouterOS есть одна особенность как только вы укажите подсеть в разделе networks на интерфейсах на которых объявлены IP адреса из данной подсети сразу запуститься процесс OSPF. Категорически необходимо исключить такое поведение изменить “не добавление” нельзя, но можно создать шаблон по умолчанию, для всех интерфейсов которые будут добавлен в процесс автоматически. Как вы наверное уже догадались я категорически не приветствуют всего того, что может быть изменено динамически и привести к проблемам в работе сети.

Шаблон для всех интерфейсов назначается с помощью alias интерфейса all

/routing ospf interface add interface=all passive=yes

Все интерфейсы которые будут добавлены динамически будут обладать свойствами passive=yes

passive=yes - обозначает что на данном интерфейсе не будет запущен процесс ospf, не будут отсылаться пакет ospf и будут проигнорированы водящие пакеты ospf.

Т.е тем самым мы все динамические интерфейсы которые могут быть добавлены из-за вашей ошибки в дальнейшем (а они будут) помечаем как пассивные для протокола ospf.

Далее нам необходимо добавить интерфейсы в процесс ospf

/routing ospf interface add interface=ether1 network-type=broadcast

И обязательно указать тип сети в нашем случае это Broadcast так как мы используем сеть отличную от /32.

Обращаю ваше внимание, что вы должны добавить только те интерфейсы за которыми находятся соседние ВАШИ маршрутизаторы. Не надо добавлять Loopback интерфейсы. Если интерфейс используется для соединения с другим маршрутизатором, то добавляем, особенно обратите внимание на CE маршрутизаторах, на них используется только один интерфейс.

Networks

Настал момент непосредственно запуска процесса ospf. Вам необходимо на всех маршрутизаторах добавить сети (обращаю внимание именно СЕТИ, а не IP адреса). Сети в которых находятся другие маршрутизаторы в вашей сети использующие протокол OSPF. Указывать надо именно те сети которые непосредственно присоединены к текущему маршрутизатору.

Обращаю внимания, что нет необходимости добавлять в networks сети любые другие отличные от тех которые используются для связи между маршрутизаторами.

Например, на P-1 будет три сети, а на CE только одна.

Так же вы можете просто посмотреть на схему из первой части, и сети будут прописаны между маршрутизаторами.

Часто в инструкциях вы можете найти информацию примерно такого рода “добавьте в networks те сети которые вы хотите опубликовать в OSPF “, да есть такой кейс, но его лучше всего применять только в STUB area. У нас не используется STUB, а также вы не можете указать каким типом Type-1 или Type-2 будет распространяться данный маршрут, так как он будет intra-area т.е внутренний маршрут.

Добавить можно таким образом:

/routing ospf network add area=backbone network=172.31.252.0/30

Обращаю ещё раз внимание именно СЕТЬ с маской и только сеть между маршрутизаторами.

Редистрибьюция

Ну и наконец кульминация всего, это непосредственно распространение маршрутной информации с помощью редистрибьюции. Наша задача рассказать всем маршрутизаторам о там, что на маршрутизаторах есть адрес Loopback, а так как маршрут, который формируется на основании наличия IP адреса является connected именно с таким типом маршруты мы будем опубликовывать в сети OSPF.

/routing ospf instance set default redistribute-connected=as-type-1

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

Задачи

На всех маршрутизаторах:

Настроить цепочку фильтров ospf-in

Настроить цепочку фильтров ospf-out

Подсказка все фильтры в цепочке ospf-in у вас будут одинаковые, а вот ospf-out будут отличаться.

Указать на всех маршрутизаторах router-id для instance default, указать Router-id аналогичный, как и Loopback адрес.

Добавить дефолтный шаблон интерфейсов с пассивным поведением

Добавить все интерфейсы на которых будет запущен процесс ospf

Добавить connected сети, по которым строится процесс OSPF.

Запустите процесс редистрибьюции connected маршрутов.

Итог

Если вы все правильно сделали, то на всех маршрутизаторах вы будете наблюдать примерно такую картину.

/ip route print
Flags: X - disabled, A - active, D - dynamic, 
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, 
B - blackhole, U - unreachable, P - prohibit 
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADC  172.31.252.36/30   172.31.252.38   ether2                    0
 1 ADC  172.31.252.40/30   172.31.252.42   ether1                    0
 2 ADC  172.31.252.44/30   172.31.252.45   ether3                    0
 3 ADo  172.31.253.1/32                    172.31.252.46           110
 4 ADo  172.31.253.2/32                    172.31.252.41           110
                                           172.31.252.37     
 5 ADC  172.31.254.1/32    172.31.254.1    Br-Lo                     0
 6 ADo  172.31.254.2/32                    172.31.252.41           110
                                           172.31.252.37     
 7 ADo  172.31.255.1/32                    172.31.252.41           110
 8 ADo  172.31.255.2/32                    172.31.252.41           110
 9 ADo  172.31.255.3/32                    172.31.252.41           110
10 ADo  172.31.255.4/32                    172.31.252.37           110
11 ADo  172.31.255.5/32                    172.31.252.37           110
12 ADo  172.31.255.6/32                    172.31.252.37           110

Как видите мы видим маршруты с флагом o - OSPF до всех loopback адресов всех маршрутизаторов.

Если вы используете средство виртуализации (я использую GNS3) и вам удобнее использовать Winbox вы можете создать локальное подключение и использовать ROMON для подключения к маршрутизаторам.

Васильев Кирилл MikroTik Vasilev Kirill MPLS Для больших дядей

Поделиться

Обсуждение