Протокол динамической маршрутизации OSPF -- настройка на Mikrotik RouterOS
Описание из Вики: 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 “заработал” в Mikrotik RouterOS очень просто - нужно лишь добавить в backbone на каждом роутере в Routing - OSPF - Networks все ваши сети, между которыми вы хотите динамическую маршрутизацию и “оно заработает”.
Но мы ведь хотим управлять процессом. Тот, кто не хочет управлять дальше может не читать. Остальным - добро пожаловать!
Пример организации протокола 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. Иначе ничего работать не будет.
В нашем примере мы решили долго не думать и загнать все в backbone. По большому счету это ничем не грозит и работать будет. Но если провайдер отдает одному из ваших филиалов частный адрес из 192.168.0.0/16 (192.168.18.27/29, например), то в вашей таблице маршрутизации появится сеть провайдера. И если кто-то с другой стороны провайдера использует такие же настройки (или просто указал маршрут к вашим сетям), то он сможет беспрепятственно попасть в вашу сеть. А уж случайно это сделали или намеренно - узнаете когда данные из вашей БД всплывут в интернете.
В этом случае можно использовать авторизацию на каждом интерфейсе Routing - OSPF - Interfaces.
Или указать, что интерфейс, смотрящий к провайдеру будет в пассивном режиме.
Настройка OSPF в ручном режиме
Теперь поговорим о том, как сделать “правильно” - не вещать свои сети куда попало и позволить грамотно траблшутить работу OSPF.
Как мы говорили выше, каждая область имеет свой ID. Также и каждый участник OSPF имеет свой ID. По умолчаню он выставляется автоматически и выбирается из IP адресов, присвоенных интерфейсам роутера. Но нам надо проставить его в ручную, чтобы была какая-то логика в именовании и мы всегда знали откуда пришел запрос. Ставится это в Routing - OSPF - Instances - Router ID.
В нашей схеме имеется несколько областей. Как мы выяснили, основная область, соединяющая все остальные - backbone. Именно в этой области летают пакеты от одного роутера к другому, позволяющие обмениваться маршрутной информацией. Значит, этой областью должны быть туннели, соединяющие СП и ЦО, что видно на рисунке ниже.
Таким образом, нам необходимо выделить на каждом маршрутизаторе по две зоны - 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 ещё имеется куча дополнительных настроек, таких как приоритет роутера, стоимость интерфейса, время определения состояний и многое, многое другое. Это позволяет очень гибко настроить маршрутизацию под свои нужды.






























Furukawa
Grandway
V-Solution
Ubiquiti Networks
D-Link
Mikrotik
TP-Link
Edge-core
BDCOM
Jirous
Ok-net
Cambium Networks
Tenda
ZTE
Huawei
Ripley
Fujikura
DVP
Jilong
Одескабель
Netis
FiberField
Totolink
Grandstream
Yokogawa
Mimosa
OpenVox
Hikvision
Keenetic
Ютекс
Signal Fire
Utepo
Dahua
ONV
Prolum
ATcom
Ritar
Zyxel
Ruijie
APC
Fibaro
Merlion
Mercusys
MULTITEST
Reolink
ЗЗКМ
GEAR
ATIS
CSV
Full Energy
Авторизуйтесь, чтобы добавить отзыв