Ospf mikrotik настройка firewall

Обновлено: 06.07.2024

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

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

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

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

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

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

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 следующим образом

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

Интерфейсы

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

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

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

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

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

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

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

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

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

Networks

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

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

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

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

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

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

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

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

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

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

Задачи

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

Настроить цепочку фильтров 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 маршрутов.

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

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

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

OSPF (англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры. В статье подробно рассмотрены различные настройки OSPF на маршрутизаторах Mikrotik. Вся конфигурация будет производится через GUI Winbox.

Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.

Настройка OSPF c одной областью

Рассмотрим, как настроить сеть OSPF c одной областью. Предположим, у нас есть следующая схема.


В примере сеть состоит из трех маршрутизаторов mikrotik, соединенных вместе одним адресным пространством 10.10.1.0/24, и каждый маршрутизатор имеет еще по одной подключенной сети.

В этом примере на маршрутизаторах настроены следующие IP-адреса:

Конфигурация OSPF осуществляется следующими основными шагами

  1. Настроить router-id
  2. Конфигурация области
  3. Конфигурация сети

Настройка router-id

Настраиваем маршрутизатор Микротик R1

Переходим в меню Routing – OSPF вкладка Instances. Здесь должен быть уже созданный экземпляр default , если его нет, то создаем.


Аналогично создаем экземпляры на всех остальных маршрутизаторах.

В консоли эти команды такие

Как видно, router-id равен 0.0.0.0, это означает, что маршрутизатор будет использовать один из IP-адресов роутера в качестве идентификатора маршрутизатора. В большинстве случаев рекомендуется настроить loopback интерфейс как идентификатор маршрутизатора. IP-адрес Loopback интерфейса является виртуальным, программным адресом, который используется для идентификации маршрутизатора в сети. Преимущества в том, что loopback-адрес всегда активен и не может быть недоступен как физический интерфейс. Протокол OSPF использует его для связи между маршрутизаторами, идентифицированными router-id.

Настроим loopback, для этого заходим в меню interfaces т добавляем новый интерфейс, выбираем bridge


Делаем настройки как показаны на рисунке.


Напишем только имя loopback после чего нажимаем OK.

Следующим шагом, настраиваем ip адрес на интерфейсе. Для роутера R1 настроим ip 10.255.255.1/32



Аналогичные настройки делаем на остальных маршрутизаторах R2 и R3

Настройка области OSPF

Переходим к конфигурации области. Область backbone уже создана и дополнительной настройки не требуется.

«Обратите внимание что область backbone area-id должна быть 0.0.0.0»


Настройка Сети

Открываем меню Routing-OSPF вкладка Network, Нажимаем кнопку добавить


В поле Network, прописываем сеть, Area выбираем backbone. Для роутера R1 прописываем адресацию в соответствии со схемой 10.10.1.0/30, 210.13.1.0/28 и 10.10.1.4/30. В результате должна получиться следующая картина


В принципе, для префиксов 10.10.1.0/30 и 10.10.1.4.30 можно было прописать 10.10.1.0/24, тогда получилось бы так


Аналогично настраиваем R2



На этом конфигурация OSPF завершена. Если все сделано правильно, то на вкладке OSPF Interfaces должны появиться интерфейсы, а на вкладке Routes маршруты.

многозонная конфигурация OSPF

Настроим OSPF c несколькими областями как показано на рисунке.


Главной считается корневая (backbone area), имеющая номер 0 именно с ней мы работаем, когда настраиваем OSPF для одной зоны. В случае использования нескольких зон, использование корневой зоны обязательно, остальные же зоны подключаются к ней и называются regular area. Это означает, что мы имеем двухуровневую иерархию: корневая зона и все остальные.

Настраиваем экземпляры и ip адреса как делали это выше. Дальше нам нужно создать области.

Для маршрутизатора R1. Заходим в Routing-OSPF вкладка Areas, нажимаем кнопку добавить и добавляем новую область area1 c Area ID 0.0.0.1


Настраиваем префиксы в соответствии с нашей схемой



Должно получиться следующее


Конфигурация маршрутизатора R2



По такой же схеме настраиваем R3,R4.

Настройка маршрутов

После настройки всех роутеров проверим таблицу маршрутизации. Подключимся к роутеру R3 и дадим команду в консоли

Как видно, удаленные сети 172.16.0.0/16 и 192.168.2.0/24 не входят в таблицу маршрутизации, поскольку они не распространяются OSPF. Функция перераспределения позволяет различным протоколам маршрутизации обмениваться информацией о маршрутизации, что позволяет, например, перераспределять статические или связанные маршруты в OSPF. В нашей настройке нам необходимо перераспределить подключенную сеть. Нам нужно добавить следующую конфигурацию на маршрутизаторах R1, R2 и R3.

Заходим в меню Routing – OSPF, вкладка instance, кликаем 2 раза экземпляру default b меняем Redistribute Connected Routes на as type 1


Или даем команду в консоли

Теперь проверьте маршрутизатор R3, чтобы узнать, установлены ли в таблице маршрутизации маршруты 192.168.2.0/24 и 172.16.0.0/16.

Настройка OSPF в NBMA сетях

NBMA ( Non-Broadcast Multiple Access) сеть с множеством (больше двух) устройств без широковещания, в которой не работает протокол ARP, так как в ней отключена широковещательная передача данных. В таких сетях вместо протокола ARP используется протокол NARP. Примером таких сетей является NBMA — Frame Relay.

Бывают ситуации когда для настройки OSPF предпочтительными являются сети NMBA например

  • в беспроводных сетях доставка мультикастовых пакетов не всегда надежна и использование multicast здесь может создать проблемы стабильности OSPF;
  • использование мультикастовой передачи может быть неэффективным в сетях с мостовой или ячеистой топологии (т. е. широковещательных доменах с большим уровнем 2)

Приступим к настройки по данной схеме


R1. Создаем экземпляр


Настраиваем ip адрес на интерфейсе


По аналогии делаем настройки на R2,R3,R4. Только router-id и ip адрес у каждого будет свой.

На R2
router-id=0.0.0.2
ip=10.1.1.2/24

На R3
router-id=0.0.0.3
ip=10.1.1.3/24

На R4
router-id=0.0.0.4
ip=10.1.1.4/24

В примере только маршрутизаторам C и D разрешено назначать маршруты.

Следующим шагом настраиваем префикс 10.1.1.0/24 в backbone. Заходим на вкладку Networks и нажимаем кнопку добавить, добавляем сеть.


Далее заходим на вкладку NBMA neighbor жмем добавить, и создаем четыре правила


Делаем аналогично для адреса 10.1.1.1 и 10.1.1.2 priority=0, а для адресов 10.1.1.3 и 10.1.1.4 priority=1

В итоге должно получиться следующее


Обратите внимание, что у адресов 10.1.1.3 и 10.1.1.4, т.е маршрутизаторов R3 и R4 Priority = 1.

То же самое через консоль

Эти же настройки делаем на остальных трех роутерах.

Настраиваем приоритеты на роутерах A и B. Добавляем новый интерфейс


Interface – интерфейс для OSPF

Priority = 0

Network Type ставим nbma

На маршрутизаторах C, D (они могут стать назначенным маршрутизатором):


На этом настройка OSPF завершена.

Обучающий курс по настройке MikroTik

Нужно разобраться с MikroTik, но не определились с чего начать? В курсе «Настройка оборудования MikroTik» все по порядку. Подойдет и для начала работы с этим оборудованием, и для того, чтобы систематизировать знания. Это видеокурс из 162 уроков и 45 лабораторных работ, построен на официальной программе MTCNA. Проходить можно, когда удобно и пересматривать по необходимости – материалы курса выдаются бессрочно. Также есть 30 дней на личные консультации с автором. На пробу выдают 25 уроков бесплатно, заказать их можно на странице курса.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Доброго времени суток. Сегодня хотелось бы рассказать о том, что не давало нам жить, взрывало нам мозг долгое время — Mikrotik и OSPF.
Mikrotik сама по себе неплохая железка, с низкой стоимостью, кучей возможностью, но к сожалению, не без недостатков.
У нас следующая схема сети:


ROU1 — Cisco c3845
ROU2 — Cisco c3845
МТ1 — Mikrotik 1100Ahx2
МТ2 — Mikrotik 1100Ahx2
c3550 — Cisco c3550
GW68 — MikroTik RB751U-2HnD
GW69 — MikroTik RB751U-2HnD

На ROU1 и ROU2 у нас туннели до MT1 и до MT2 (IPSec пропущу), заведен процесс OSPF для backbone. Отдается подсеть 10.0.0.0/19:

router ospf 1
router-id 255.255.255.255
redistribute ospf 100 metric-type 1 subnets route-map OSPF_100_to_BB
network 172.20.64.0 0.0.0.3 area 0.0.0.0

router ospf 1
router-id 255.255.255.254
redistribute ospf 100 metric-type 1 subnets route-map OSPF_100_to_BB
network 172.20.64.4 0.0.0.3 area 0.0.0.0

На MT1 и MT2 адреса туннелей соответственно 172.20.64.2 и 172.20.64.6. Area backbone там уже есть по умолчанию.


Но у нас должна быть еще связь между МТ1 и МТ2 напрямую.
Для этого у нас используется новая area IRK. Cisco c3550 у нас не только свитч, он у нас корневое устройство, на нем заведены все вланы, через него проброшены провайдеры, на нем создан vrf и т.д. (если будет интересно, то потом опишу всю организацию сети)
Создадим на c3550 area IRK и два vlan для соединения с MT1 и MT2. Area IRK — это главная область РУ — регионального узла, в которой работают все подключенные к РУ роутеры.

router ospf 100
router-id 10.0.64.0
log-adjacency-changes
redistribute connected metric-type 1 subnets
redistribute static metric-type 1 subnets
network 172.20.64.96 0.0.0.3 area 10.0.64.0
network 172.20.64.100 0.0.0.3 area 10.0.64.0

ip route 10.0.64.0 255.255.224.0 Null0 250
ip route 172.20.64.0 255.255.224.0 Null0 250


Теперь примем на МТ1 и МТ2 эти vlan, и заведем новый ospf instance и area, добавим линк между MT1 и МТ2 и навешаем адрес.

Вроде ничего не забыл, что мы получили:

1. У нас есть два туннеля до центральных роутеров, с каждого микротика по одному.
2. Cost 10 и 40 соответственно. То есть при живом основном роутере (провайдере) MT1, роут из backbone 10.0.0.0/19 мы получим через туннель до ROU1, при мертвом через туннель до ROU2
3. У нас есть прямой линк между MT1 и MT2, для того чтобы не гонять трафик всегда через c3550.

Настроили, поставили. Все работает:

На МТ2 роут до 10ки через ether2, как в принципе и должно быть.

Однажды, на МТ1 умирает провайдер. Подсеть 10.0.0.0/19 становится доступна через туннель до ROU2, все как должно быть:

НО! Как только оживает провайдер на МТ1, мы видим следующее:

Видим, что каждый роутер глядит в свой туннель. Что нас совсем не устраивает. Перезагружаем МТ2. Он начинает получать роут через ether2 от МТ1. Непорядок.

В качестве временного решения, мы завели на ROU1 и ROU2 все area из региональных узлов. Все работало очень красиво, пока однажды наши циски не сказали: too many routing processes

И мы опять вернулись к проблеме с backbone. Долгие битвы с саппортом ни к чему не приводят, но в один прекрасный момент получаем ответ, что микротик при перераспределение роутов между эриями (в данном случае роут из backbone перераспределяется через IRK),
начинает некорректно инсталлировать роуты. И мы получаем картину, что каждый роутер смотрит в свой туннель.
Тогда решение приходит само:
Добавляем IP на ether2, вносим новую подсеть в backbone.

И получаем, что роут 10.0.0.0/19 не перераспределяется через чужую эрию, а принимается в пределах одной. Фуф, одну проблему победили.

Сейчас для рассмотрения второй проблемы, приведем конфиг GW, конфиг на МТ1 и МТ2 я опущу, там нет ничего сложного.

На рисунке у нас есть GW68 и GW69, я приведу настройки только для одного и в сокращении:

Как все работает:

GW68 устанавливает два туннеля до МТ1 и до МТ2, каждый через своего провайдера. На микротике нет дефолта, адреса МТ1 и МТ2 прописаны статиками.
На туннеле до MT1 стоит cost 10, на туннеле до МT2 cost 40. Как только туннель оживает, мы получаем дефолт и все роуты с МТ1 через OSPF. Весь трафик завернут на МТ1. Как только основной провайдер отваливается,
по истечению таймера OSPF, становятся активными роуты через туннель до МТ2.

При живом основном канале, мы видим в логе GW68

20:12:26 route,ospf,info Database Description packet has different master status flag
20:12:26 route,ospf,info new master flag=false

В этот момент у нас трафик сам по себе начинает бежать через туннель до MT2. Туннель до МТ1 живой, а трафик бежит через туннель до МТ2. А так как на магазинах обычно резерв помегабайтный,
то мы получаем высасывание денег без каких-либо на то причин.
Чтобы вернуть все в туннель до МТ1 необходимо было на МТ1 выключить и опять включить туннель до GW68. Причем эта проблема возникала только в некоторых городах, и не на всех роутерах.
На форуме микротика, в тех. поддержке никто нам не помог. Однажды мой коллега, пытаясь поднять туннель MT1-Juniper SRX-650, вооружился кучей алкоголя, сниффером и дебаггером:)
И отлаживая IPSec, наткнулся на ошибки авторизации OSPF микротика. Мы отключили авторизацию на интерфейсах OSPF и вуаля, проблема сама собой исчезла.
Как там проходит авторизация, где сбой, сейчас не помнит ни он, ни я. Но вопрос решен. Почему где-то работало отлично и с авторизацией, я не могу сказать.

С микротиком можно только гадать на кофейной гуще, так как каждый ответ саппорта — новый вопрос, каждая новая прошивка дарит новую проблему:)

роутербоарс с osfp надписью

В данной статье мы рассмотрим настройку маршрутизации OSPF на роутере MikroTik, а в прошлой статье мы рассмотрели статическую маршрутизацию, выяснили ее плюсы и минусы. Она подойдёт для администрирования небольшого количества сетей, но, а что делать, если у вас их десятки, сотни или тысячи?

Как раз в этом на придёт на помощь протокол динамической маршрутизации OSPF . Используя данную технологию, вам теперь не нужно вручную создавать маршруты на каждом маршрутизаторе, OSPF все сделает за вас. Более того, он выстроит наикратчайший маршрут до пункта назначения с помощью алгоритма Дейкстры. Из особенностей – поддерживает технологию link state, т.е. отслеживает состояние линка, а также:

  • использует IP протокол 89;
  • относится к IGP протоколам (распространяющие топологическую информацию внутри AS);
  • distance 110;
  • метка маршрута Dao (Dynamic Active OSPF);
  • не более 60 устройств в одной Area.
Если вы хотите углубить свои знания по работе с роутерами MikroTik, то наша команда рекомендует пройти курсы которые сделаны на основе MikroTik Certified Network Associate и расширены автором на основе опыта . Подробно читайте ниже.

Как это все работает?

Каждый маршрутизатор обменивается HELLO пакетами (интервал должен быть у всех одинаковый). После обмена устанавливаются соседские отношения. Каждый роутер собирает состояние всех своих линков:

  • Свой id;
  • ID соседа;
  • Сеть и префикс между ними;
  • Тип сети;
  • Стоимость линка.

На основе этой информации формируется пакет LSA (Link State Advertisement), который распространяется соседям, а соседи далее своим соседям и так далее. Каждый роутер, получивший LSA, формирует свою локальную базу данных LSDB и обновляет ее на основе этих же пакетов. В итоге, каждый маршрутизатор знает обо всех линках всех роутеров. В рамках одной AS, LSDB будет одинакова.

Схема стенда OSPF

  • Имеется 4 шюза;
  • 4 ПК;
  • Адресация между роутерами 10.10.1.0/24…10.10.4.0/24;
  • Локальные адреса клиентов 192.168.1.0/24…192.168.4.0/24;
  • RouterOS 6.48.1

Изображение тестовой схемы сети OSPF

Базовая настройка OSPF. Пример 1

Итак, не смотря на первый взгляд сложности протокола, настройка его куда проще. Для базового функционирования OSPF необходимо прописать линки, на всех маршрутизаторах, адресация которых входит в диапазоны подсетей роутера. На первом этапе анонсируем транзитные сети. Подключаемся к R1 и открываем Routing – OSPF – Networks, создаём линк.

Анонс первого линка в OSPF сеть

В данном случае мы анонсировали сеть между R1 и R2. Проделаем тоже самое для сети между R1 и R4.

R1 просмотр анонсированных сетей


Перейдём в Interfaces и увидим, что Mikrotik автоматически выбрал необходимые интерфейсы. Теперь на этих портах будут отправляться и приниматься HELLO пакеты.

Просмотр линков R1

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

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

После анонсирования транзитных сетей, каждый Mikrotik будет знать, как добраться до той или иной подсети. Обратите внимание на метрику и состояние.

Список всех маршрутов всех роутеров соседей

Проверим как перестроятся маршруты

Предлагаю проверить, как происходит отслеживание состояния линков, в данном протоколе. На R1 отключу ether2, анонсируемая сеть на данном интерфейсе 10.10.4.0/24.

На скриншоте выше, видно, что шлюз до 10.10.4.0/24 сменился с 10.10.1.1 на 10.10.2.2, т.е. трафик пойдёт по кругу, через большее количество хопов. На R4 также произошли изменения, теперь трафик пойдёт через соседний R3.

Изменения на R4

Теперь анонсируем локальную сеть за R1.

Добавление сетей в OSPF

Маршрут через 2 интерфейса

После того, как мы проделаем аналогичные действия у всех участников, мы увидим ECMP в сети за роутерами.

Просмотр gateway к ЛВС соседей

Предлагаю немного изменить схему. Добавим дополнительные связи. Теперь у нас полная связанность, благодаря 10.10.5.1/24, 10.10.6.1/24.

Создание полно связанной архитектуры

Настроим адреса на интерфейсы согласно схеме и анонсируем новые линки OSPF на микротиках и для всех участниках. Теперь таблица у всех перестроится. Обратите внимание на R2, маршрут к 192.168.4.0/24 через 10.10.6.2. Почему так произошло? Ведь немного странно, было же 2 маршрута, а теперь один. Ответ очевиден – хопов стало меньше. К 192.168.4.0/24 теперь можно добраться на прямую через R4, а не через R3, как это было ранее.

Добавление приоритетных маршрутов

Стоимость линков

Тут мы и подошли к одному из важных моментов. У каждого интерфейса есть своя стоимость. По умолчанию она равна 10. В прошлых примерах у нас получался ECMP маршрут именно по этой причине. Но вы можете регулировать это значение, тем самым перестраивая таблицы так как вам нужно (разная толщина каналов, разная их загруженность и т.д.). Сделаем маршруты внутри схемы резервными. На R1 сделаем линки ether4 стоимостью 20.

Создаем статический линк на R1

Жмём Copy и выставляем значение Cost в 20.

Правим cost интерфейса на R1

Откроем его таблицу. Обратите внимание, что маршрут к 192.168.3.0/24 изменился. Если сложить прыжки через 10.10.1.2 и 10.10.2.2 будет 20, через 10.10.5.2 тоже будет 20.

Проверяем изменение маршрута в ЛВС за R3

Если бы мы выставили стоимость в 30, то была бы другая картина.

Убираем маршрут на R1 с помощью cost

Попробуйте ответить сами себе, почему так произошло?

А теперь на R1 выключим первый и второй интерфейс, представим, что оба канала упало.

Полное перестроение сети OSPF за счет падении 2/3 линков

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

Безопасность

Passive режим на R1

Поговорим немного о безопасности. В прошлых примерах мы указали какие сети хотим анонсировать и Mikrotik автоматически выбирал нужные интерфейсы. Один из них был порт, смотрящий в ЛВС. Это означает, что через него тоже будут отправляться HELLO пакеты. А что делать если мы не хотим анонса через данный порт, но хотим всем соседям сказать, что у нас есть маршрут? Для этого открываем на R1 ether3, жмем Copy и ставим галочку на Passive.

Так же в прошлых примерах мы не использовали аутентификацию участников. Рекомендую настроить. В OSPF – Interfaces создаём новый интерфейс типа all:

Настройка безопасности OSPF

Вы можете не задавать пароль на passive интерфейсах. После удачной авторизации, OSPF снова сойдётся.

Дополнительно

Что если у вас есть на одном из устройств, маршрут в другую сеть через статический роут? Допустим на R1 у нас есть доступ в 192.168.198.0/24 через 192.168.10.1 и вы хотите эту информацию передать соседям.

Нам нужен параметр Redistribute Static Routes. Выбираем as type 1.

Анонсируем статические маршруты

Но имейте ввиду, что данный параметр добавит абсолютно все статические роуты что есть на текущем участнике. Проверим R2. Для эксперимента я также на R1 добавил 192.168.197.0/24.

Проверка добавления статических маршрутов через OSPF на R2

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

Default route так же можно передавать всем участникам.

Анонсируем маршрут последней надежды

Так же есть возможность анонса всех static routes и многое другое.

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

89 вопросов по настройке MikroTik

Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.

Описание из Вики: OSPF(англ. Open Shortest Path First) — протокол динамической маршрутизации, основанный на технологии отслеживания состояния канала (link-state technology) и использующий для нахождения кратчайшего пути алгоритм Дейкстры.

Для чего нужен OSPF и как применять его на сетях, построенных на Mikrotik RouterOS, мы и рассмотрим в этой статье.

Описание работы протокола OSPF

Все, кто работал с сетями, имеющими более одной подсети (провайдеры, компании с филиалами, несколько vlan и т.д.) знают о необходимости существования маршрутов из одной сети в другую. Иначе пакеты в соединении будут просто улетать на шлюз по умолчанию и дропаться где-то в интернете.

Для тех же, кто с этим не знаком, поясню. Представьте, что мы внезапно захотели попасть из Челябинска в Киев, не имя при этом ни карты, ни навигатора. Поедем по указателям - не зря же их ставили.

Таким образом посмотрев на 10-20-100 укзателей мы рано или поздно доберемся до Киева - пакет от отправителя ушел к адресату. Сделали там все свои дела и захотели обратно домой в Челябинск - приложение обработало пакет и отправило ответ инициатору соединения. Но дорогу то мы не помним (в пакете нет никаких данных о прохождении пути. На самом деле есть намеки на это, но с помощью них нельзя восстановить путь пакета). Не беда - поедем по указателям.

Так же как и в первый раз мы каким-то образом вернемся в точку, из которой выехали. Причем, очень важно то, что вернуться мы можем по другим дорогам - на каких то начали укладывать асфальт за время нашего пребывания в Киеве и поставили знаки объезда, где-то просто затор и мы решили объехать по менее нагруженным трассам. Но мы все равно доберемся до места, пусть и затратив большее время.

Итак, мы, инкапсулированные в автомобиль - это данные, инкапсулированные в IP-пакет. Перекрестки на дороге - маршрутизаторы, подключенные к разным сетям (дорогам). А указатели на перекрестках - таблицы маршрутизации отдельных маршрутизаторов, знающие куда повернуть, чтобы попасть в ту или иную точку. И если в одну сторону мы доедем по указателям, а в другую указателей не будет, то пиши пропало - до исходной точки не доберемся. Значит, маршруты до общающихся сетей должны быть прописаны на обеих сторонах. И очень важно понимать, что дорог-маршрутов может быть несколько. И если один перекресток-маршрутизатор в ремонте, то предыдущий может послать нас в объезд, но сначала он должен узнать, что его сосед сломался. И если мы ездим по разным дорогам, значит и время пинга у нас будет разное.

Итак, с маршрутами разобрались. Теперь поговорим о дорожниках, ставящих указатели.

Статические указатели на дорогах - хорошо. Но расстояние между Челябинском и Киевом 2400 км. А значит и указателей должно быть не меньше 24 - по одному на каждые 100 км. И если на одном из перекрестков идет ремонт, необходимо внести изменения на два смежных указателя. А вероятность одновременного ремонта на 24 перекрестах весьма высока. То есть нужна отдельная бригада дорожников, меняющих указатели.

Было бы неплохо соединить все указатели в сеть и позволить им самим оценивать ситуацию на своих участках и передевать эти данные между собой. К сожалению великие и ужасные службы обслуживания дорог об этом ещё не додумались, да и вряд ли это надо - деньги то пилить не получится. А вот айтишники придумали технологии, позволяющие динамически изменять таблицы маршрутизации и обмениваться этой информацией. Эти технологии называются Протоколы Динамической Маршрутизации. И один из них - OSPF, предназначенный для обмена информацией внутри одной автономной системы - AS.

Настрока протокола OSPF на оборудовании Mikrotik

Термины и работа OSPF хорошо описаны в вики микротика. Но я осмелюсь кое-что повторить и перефразировать.
Допустим, есть следующая сеть:

тип маршрутизации сети

Как видим, к сети 172.16.1.0 можно попасть двумя путями: через R2 и через связку R3+R4. Cost’ы, написанные возле каждого линка задают стоимость линка, своеобразный аналог параметра distance в ip-route. Чем ниже значение cost’а, тем выше вероятность того, что трафик пойдет по этому пути. Но как видно на следующем рисунке суммарная стоимость обоих маршрутов к сети 172.16.1.0 составляет 20. Так по какому же пути пойдет трафик?

маршрутизация в сети

В таком случае в таблице маршрутизации увидим примерно такую картину - к одной сети имеем два шлюза. И трафик должен пойти через оба шлюза. В этом случае мы можем управлять тем, куда пойдет трафик. Называется эта технология Policy Based Routing, но тема управления трафиком -- это совсем другая история.

таблица маршрутизации OSPF

Сделать, чтобы OSPF “заработал” в Mikrotik RouterOS очень просто - нужно лишь добавить в backbone на каждом роутере в Routing - OSPF - Networks все ваши сети, между которыми вы хотите динамическую маршрутизацию и “оно заработает”.

настройка OSPF

Но мы ведь хотим управлять процессом. Тот, кто не хочет управлять дальше может не читать. Остальным - добро пожаловать!

Пример организации протокола OSPF

Рассматривать будем сеть, типичную для организации с несколькими филиалами. Имеем центральный офис (Headquarter на схеме, для краткости будем звать его ЦО) с сетью 192.168.0.0/24 (что я, кстати, не рекомендую при дефолтных настройках OSPF. Почему - скажу ниже). В ЦО расположены все основные элементы инфраструктуры - контроллер домена, сервер удаленного доступа, почтовый сервер и т.д. Все филиалы должны иметь доступ ко всем этим сервисам.

Несколько филиалов (Branche на схеме, для краткости - СП - Структурное Подразделение) с адресами 192.168.X.0/24. Между ЦО и каждым СП шифрованный туннель SSTP (или любой другой VPN) - адреса в туннелях из подсети 192.168.255.0/24 (192.168.255.10 - ЦО, 192.168.255.1 - СП1, 192.168.255.2 - СП2, . ). Между филиалами связь не нужна, т.к. все службы в ЦО. Когда филиалов 3, нам легко добавить 3 маршрута на роутер в ЦО и по одному на каждый из роутеров СП. Итого 6 движений мышкой. А что если СП у нас не 3, а 33 и необходимы маршруты от каждого каждому, а ещё есть подрядчики с доступом к нескольким СП? Тут и приходит на помощь OSPF.

организация сети на предприятии

Кому надо “быстро и все равно как оно работает”, могут пойти по схеме, предложенной выше - добавить в backbone все свои сети.

Добавление сетей в Backbone

Почему именно backbone? Backbone в переводе с английского - хребет, позвоночник. OSPF оперирует понятиями Area (область), Autonomous System (AS, автономная система). AS - все сети, которые принадлежат вам и между которыми может работать ваш протокол динамической маршрутизации. Area - часть этой сети. На картинке ниже показана одна AS с тремя Area, одна из которых - backbone (Area 0 с ID 0.0.0.0). Каждая Area имеет свой ID, похожий на IP адрес. Backbone всегда имеет ID 0.0.0.0. Все области в OSPF должны иметь линк с backbone. Иначе ничего работать не будет.

сеть OSPF

В нашем примере мы решили долго не думать и загнать все в backbone. По большому счету это ничем не грозит и работать будет. Но если провайдер отдает одному из ваших филиалов частный адрес из 192.168.0.0/16 (192.168.18.27/29, например), то в вашей таблице маршрутизации появится сеть провайдера. И если кто-то с другой стороны провайдера использует такие же настройки (или просто указал маршрут к вашим сетям), то он сможет беспрепятственно попасть в вашу сеть. А уж случайно это сделали или намеренно - узнаете когда данные из вашей БД всплывут в интернете.

В этом случае можно использовать авторизацию на каждом интерфейсе Routing - OSPF - Interfaces.

Протокол OSPF

Или указать, что интерфейс, смотрящий к провайдеру будет в пассивном режиме.

Протокол OSPF

Настройка OSPF в ручном режиме

Теперь поговорим о том, как сделать “правильно” - не вещать свои сети куда попало и позволить грамотно траблшутить работу OSPF.
Как мы говорили выше, каждая область имеет свой ID. Также и каждый участник OSPF имеет свой ID. По умолчаню он выставляется автоматически и выбирается из IP адресов, присвоенных интерфейсам роутера. Но нам надо проставить его в ручную, чтобы была какая-то логика в именовании и мы всегда знали откуда пришел запрос. Ставится это в Routing - OSPF - Instances - Router ID.

Протокол OSPF

В нашей схеме имеется несколько областей. Как мы выяснили, основная область, соединяющая все остальные - backbone. Именно в этой области летают пакеты от одного роутера к другому, позволяющие обмениваться маршрутной информацией. Значит, этой областью должны быть туннели, соединяющие СП и ЦО, что видно на рисунке ниже.

Протокол OSPF

Таким образом, нам необходимо выделить на каждом маршрутизаторе по две зоны - backbone и свою локальную сеть. На примере ЦО:
routing ospf area add name=Area0 area-id=192.168.0.0
routing ospf network add area=Area0 network=192.168.0.0/24
routing ospf network add area=backbone network=192.168.255.0/24

И точно так же на остальных маршрутизаторах, только заменив Area-ID, Area name и network на свои.

Теперь на каждом маршрутизаторе можем увидеть маршруты ко всем остальным сетям с буквами D и o в описании, что означает, что эти маршруты D - динамические (прилетели в резудльтате работы протоколов динамической маршрутизации) и o - из протокола OSPF.

Протокол OSPF

Так мы получили простую и надежную настройку протокола динамической маршрутизации. У OSPF ещё имеется куча дополнительных настроек, таких как приоритет роутера, стоимость интерфейса, время определения состояний и многое, многое другое. Это позволяет очень гибко настроить маршрутизацию под свои нужды.

Читайте также: