MikroTik для Больших Дядей (Задание 2)

MikroTik для Больших Дядей (Задание 1)

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

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

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

Наша зада на сегодня это связать все маршрутизаторы с помощью протокола 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 - цепочка фильтров которая по умолчанию назначена на дефолтный инстанс 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.

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

OSPF instance

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

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

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

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

Значения 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, а у нас она не такая, а также вы не можете указать каким типом 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

  • Разрешить адреса loopback P маршрутизаторов
  • Разрешить адреса loopback PE маршрутизаторов
  • Разрешить адреса loopback CE маршрутизаторов
  • Запретить все остальные маршруты

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

  • Разрешить адреса Loopback (в зависимости от маршрутизатор P,PE или CE) маршрутизаторов
  • Запретить все остальные маршруты

Подсказка все фильтры в цепочке 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 для подключения к маршрутизаторам.

Схема сети MPLS MikroTik by vasilevkirill

Следующий пост с заданием MikroTik для Больших Дядей (Задание 3)

Ссылка для обсуждений

Рассказать друзьям

Чатик телеграм

@mikrotikme