Настройка OSPF на MikroTik RouterOS 7: полный гайд от диагноза до проверки

Время на настройку: 15–30 минут на базовую связку двух роутеров. Нужны: два MikroTik с RouterOS 7.x, IP-связность между ними, доступ по SSH или Winbox.

1. Диагноз: почему OSPF на RouterOS 7 — это не RouterOS 6

Поднял роутер, скопировал конфиг с RouterOS 6. OSPF не стартует. /routing ospf instance — пусто. Знакомо?

В RouterOS 7 MikroTik полностью переписал стек маршрутизации. Старые команды /routing ospf network add и /routing ospf instance set 0 — не существуют. Вообще. Новая архитектура: Instance → Area → Interface Template. Три уровня вместо двух.

Что получишь из этой статьи:

  • Базовую связку OSPF между двумя RouterOS 7
  • Multi-area OSPF (backbone + stub)
  • Redistribute connected и static в OSPF
  • OSPF поверх WiFi-линка (актуально для беспроводных backhaul)
  • Настройку на CHR (Cloud Hosted Router)
  • Полный troubleshooting с командами

Что нужно:

  • RouterOS 7.1 и выше (в идеале 7.10+)
  • Два или более MikroTik (железо или CHR)
  • IP-связность между роутерами (хотя бы /30 на линке)
  • SSH-доступ или Winbox 3.x (поддерживает ROS7)

2. Причины, по которым OSPF не поднимается на RouterOS 7

Причина Почему ломает
Конфиг скопирован с ROS6 Синтаксис несовместим. В ROS7 нет /routing ospf network и нет instance set 0
Не создан Instance или Area Без Instance процесс OSPF не запускается вообще. Без Area — интерфейс некуда добавить
Несовпадение Hello/Dead таймеров Default: Hello=10s, Dead=40s. Если на одной стороне изменили — соседство не поднимется
Несовпадение Router ID Если два роутера имеют одинаковый Router ID (например, оба 0.0.0.0) — OSPF молча игнорирует соседа
Firewall блокирует мультикаст OSPF использует 224.0.0.5 и 224.0.0.6. Правило drop all на forward — убивает hello-пакеты
Разные OSPF Area на линковых интерфейсах Оба конца линка должны быть в одной Area. Area 0 ≠ Area 1

3. Рецепт: настройка OSPF RouterOS 7 шаг за шагом

Топология для примера

Два роутера: R1 и R2. Линк между ними: 10.0.0.0/30. Loopback на R1: 192.168.100.1/32, на R2: 192.168.100.2/32. Всё в Area 0 (backbone).

Схема
[R1]---ether1(10.0.0.1/30)---ether1(10.0.0.2/30)---[R2]
 lo: 192.168.100.1/32                    lo: 192.168.100.2/32

Шаг 0. Подготовка — проверь IP-связность

Сначала убедись, что пинг между линковыми адресами проходит. Без этого OSPF не поднимется — и искать проблему будешь не там.


# На R1:
/ping 10.0.0.2 count=3

Результат: три успешных ответа. Если нет — сначала разбирайся с L2/L3, потом возвращайся сюда.

Шаг 1. Создай Loopback-интерфейс (Router ID)

Router ID в OSPF должен быть уникальным и стабильным. Loopback не падает при флапе физического интерфейса — это важно.


# R1:
/interface bridge add name=lo comment="loopback for OSPF RID"
/ip address add address=192.168.100.1/32 interface=lo

# R2:
/interface bridge add name=lo comment="loopback for OSPF RID"
/ip address add address=192.168.100.2/32 interface=lo

Результат: /ip address print показывает 192.168.100.x/32 на lo, статус R (running).

Шаг 2. Создай OSPF Instance

Instance — это сам процесс OSPF. Один роутер может иметь несколько Instance (например, для разных VRF). Здесь делаем один.


# R1:
/routing ospf instance
add name=ospf-main router-id=192.168.100.1 version=2

# R2:
/routing ospf instance
add name=ospf-main router-id=192.168.100.2 version=2
Вот тут важно: version=2 — это OSPFv2 (IPv4). Для IPv6 используй version=3. Не перепутай — они несовместимы.

Проверка:


/routing ospf instance print

Видишь строчку с name=ospf-main и своим router-id — хорошо. Идём дальше.

Шаг 3. Создай OSPF Area

Area 0 — это backbone. Все остальные Area должны быть с ней связаны. Начинаем с простого — всё в Area 0.


# R1 и R2 - одинаково:
/routing ospf area
add name=backbone area-id=0.0.0.0 instance=ospf-main type=default

Результат: /routing ospf area print показывает area с area-id=0.0.0.0.

Шаг 4. Добавь интерфейсы через Interface Template

Смотри: в ROS7 ты не привязываешь конкретный интерфейс напрямую. Используется Interface Template — шаблон, который может матчить интерфейсы по имени или wildcard. Это мощнее, чем в ROS6.


# R1 - линковый интерфейс:
/routing ospf interface-template
add area=backbone interfaces=ether1 type=ptp comment="линк к R2"

# R1 - loopback (passive, только анонсируем):
/routing ospf interface-template
add area=backbone interfaces=lo passive=yes comment="loopback RID"

# R2 - то же самое:
/routing ospf interface-template
add area=backbone interfaces=ether1 type=ptp comment="линк к R1"

/routing ospf interface-template
add area=backbone interfaces=lo passive=yes comment="loopback RID"
type=ptp (point-to-point) на линковых /30 — убирает DR/BDR выборы. Быстрее сходится, меньше трафика. На Ethernet-сегменте с несколькими роутерами ставь type=broadcast.

Passive=yes на loopback — роутер анонсирует сеть, но не слушает hello на этом интерфейсе. Это правильно.

Шаг 5. Проверь соседство — подожди 40 секунд


/routing ospf neighbor print

Что должно быть:

Ожидаемый вывод
Columns: INSTANCE, AREA, ADDRESS, ROUTER-ID, STATE, STATE-CHANGES, LSAS
# INSTANCE   AREA      ADDRESS    ROUTER-ID      STATE  ST-CH  LSAS
0 ospf-main  backbone  10.0.0.2   192.168.100.2  Full   6      4

State=Full — соседство поднято, LSA-ы обменяны. Готово.

Настройка OSPF через WiFi-линк на RouterOS 7

OSPF поверх беспроводного backhaul (mikrotik routeros 7 wifi)

Если линк между роутерами — беспроводной (например, два MikroTik в режиме station bridge / ap bridge), OSPF работает, но есть нюансы.

Проблема 1: WiFi-интерфейс флапает → OSPF пересчитывает топологию. Решение: повышай Dead Interval или используй BFD.

Проблема 2: На WiFi-сегменте несколько роутеров → нужен type=broadcast и DR-выборы. На PtP-линке — type=ptp.


# Для WiFi PtP линка:
/routing ospf interface-template
add area=backbone interfaces=wlan1 type=ptp \
    hello-interval=5s dead-interval=20s \
    comment="wifi backhaul PtP"
Не ставь hello=1s на WiFi. Беспроводка имеет джиттер. Будешь получать флапы соседства при каждом порыве ветра (буквально). Оптимум: hello=5s, dead=20s.

Настройка OSPF на MikroTik CHR (Cloud Hosted Router)

Особенности mikrotik routeros chr для OSPF

CHR — это та же RouterOS 7, только запускается как VM (KVM, VMware, Hyper-V, облако). Все команды выше — идентичны. Единственное отличие: интерфейсы называются ether1, ether2 и т.д., но в зависимости от гипервизора могут быть ens3 после переименования. Проверь имена:


/interface print

На AWS/GCP часто нужно вручную задать Router ID, потому что loopback там не добавляется автоматически. Делай явно — как в Шаге 1.


# CHR на облаке - задай router-id явно:
/routing ospf instance
add name=ospf-main router-id=10.10.10.1 version=2

OSPF Redistribute Connected и Static в RouterOS 7

Как анонсировать connected-сети через OSPF

По умолчанию OSPF анонсирует только сети, которые добавлены через Interface Template. Если хочешь пробросить connected или static маршруты — используй redistribute.


# Redistribute connected (все подключённые сети):
/routing ospf instance
set ospf-main redistribute=connected

# Redistribute static:
/routing ospf instance
set ospf-main redistribute=static

Или через отдельную конфигурацию (более гибко):


/routing filter rule
add chain=ospf-out rule="if (dst-len == 24) { accept }" comment="только /24"

/routing ospf instance
set ospf-main out-filter-chain=ospf-out redistribute=connected
Без фильтра redistribute=connected пробросит ВСЕ connected — включая management-интерфейсы. Добавляй фильтр в продакшне всегда.

4. Проверка OSPF на RouterOS 7 — команды


# Статус соседства:
/routing ospf neighbor print

# Состояние всех OSPF-интерфейсов:
/routing ospf interface print

# LSDB (база состояния каналов):
/routing ospf lsa print

# Маршруты, полученные от OSPF:
/ip route print where ospf

# Детальный вывод с метриками:
/ip route print detail where ospf

# Живой дебаг (осторожно на продакшне):
/routing ospf monitor ospf-main

Что должно быть в /ip route print where ospf:

Ожидаемый вывод маршрутов
Flags: D - dynamic; X - disabled, I - inactive, A - active;
o - OSPF
 #   DST-ADDRESS      GATEWAY        DIST  METRIC
 0 DAo 192.168.100.2/32  10.0.0.2    110    1

Видишь маршрут до loopback R2 — OSPF работает.

5. Осложнения: troubleshooting OSPF RouterOS 7

Ошибка / симптом Причина Решение Команда
State застрял в ExStart MTU несовпадение. Один конец шлёт DD-пакеты больше, чем другой может принять Выровняй MTU или отключи проверку: dont-fragment-bit=no /routing ospf interface-template set [id] dont-fragment-bit=no
State 2-Way, не переходит в Full На broadcast-сегменте DR/BDR не выбраны. Или оба роутера имеют priority=0 Установи priority > 0 хотя бы на одном /routing ospf interface-template set [id] priority=1
Сосед не появляется вообще Firewall блокирует мультикаст 224.0.0.5 Добавь accept-правило в filter chain input/forward /ip firewall filter add chain=input protocol=ospf action=accept place-before=0
Сосед появляется и пропадает (флапает) Нестабильный линк или Dead Interval слишком мал Увеличь dead-interval, проверь физику /routing ospf interface-template set [id] dead-interval=40s
Router ID = 0.0.0.0 или совпадает на двух роутерах Не задан явно, RouterOS взял несуществующий адрес Задай router-id вручную в Instance /routing ospf instance set ospf-main router-id=X.X.X.X
OSPF-маршруты есть, но пинг не проходит RPF (Reverse Path Filtering) или firewall блокирует forward Проверь /ip firewall filter на forward chain /ip firewall filter print where chain=forward
После обновления с ROS6 OSPF не стартует Старый конфиг несовместим. ROS7 не мигрирует ospf-конфиг автоматически Пересоздай Instance, Area, Interface Templates с нуля Используй команды из Шага 1–4 этой статьи

Как включить детальный лог OSPF


# Включить debug-логи OSPF:
/system logging add topics=ospf action=memory

# Смотреть в реальном времени:
/log print follow where topics~"ospf"

# Выключить после диагностики (не забудь!):
/system logging remove [find topics~"ospf"]
Не оставляй debug-логи включёнными на продакшне. На нагруженном роутере OSPF-лог забьёт память за час и роутер начнёт работать медленно.
[/su_note>

6. Multi-Area OSPF на RouterOS 7

Backbone Area 0 + Stub Area 1

Три роутера: R1 и R2 в Area 0, R3 в Area 1. R2 - ABR (Area Border Router), он в обоих Area.


# На R2 (ABR) - создаём Area 1:
/routing ospf area
add name=area1 area-id=0.0.0.1 instance=ospf-main type=stub

# Интерфейс к R3 добавляем в Area 1:
/routing ospf interface-template
add area=area1 interfaces=ether2 type=ptp comment="линк к R3"

# На R3 - создаём такую же Area 1:
/routing ospf area
add name=area1 area-id=0.0.0.1 instance=ospf-main type=stub

/routing ospf interface-template
add area=area1 interfaces=ether1 type=ptp comment="линк к R2"
/routing ospf interface-template
add area=area1 interfaces=lo passive=yes

R2 автоматически станет ABR и будет суммировать маршруты между Area 0 и Area 1. Проверь:


/routing ospf neighbor print
# Должны быть ДВА соседа: один в backbone, один в area1

7. Профилактика: как не сломать OSPF снова

Мониторинг


# Скрипт для проверки состояния OSPF (запускай через Scheduler):
:local neighbors [/routing ospf neighbor print count-only]
:if ($neighbors < 1) do={
  /log warning message="OSPF: no neighbors! Check routing."
}

# Добавить в Scheduler - каждые 5 минут:
/system scheduler
add name=ospf-check interval=5m on-event="/routing ospf neighbor print count-only" \
    comment="OSPF health check"

Бэкап конфига


# Экспорт OSPF-конфига в читаемом виде:
/routing ospf export file=ospf-backup

# Полный бэкап системы:
/system backup save name=("backup-" . [/system identity get name] . "-" . [/system clock get date])

Автозапуск и стабильность

  • Всегда задавай router-id явно - не надейся на автодетект
  • Используй loopback как Router ID - он не флапает
  • На production-линках ставь type=ptp для /30, type=broadcast для /24
  • Включай passive=yes на всех клиентских и management-интерфейсах
  • После обновления RouterOS - сразу проверяй /routing ospf neighbor print
  • Документируй Area ID и Router ID в комментариях (comment=)

Альтернативы OSPF на MikroTik RouterOS 7

OSPF vs BGP vs RIP на RouterOS 7: что выбрать

Протокол Когда использовать Плюсы Минусы
OSPF Один AS, десятки роутеров, нужна быстрая конвергенция Быстро сходится, масштабируется через Area Сложнее конфигурировать, требует единого дизайна
BGP (iBGP/eBGP) Несколько AS, стыки с провайдерами, большие сети Гибкие политики, масштаб интернет-уровня Медленная конвергенция, сложные фильтры
RIP v2 Маленькая сеть (до 15 хопов), легаси Просто настроить Медленно сходится, не масштабируется
Static + BFD Два роутера, предсказуемая топология Минимум overhead, полный контроль Нет автоматического перестроения

По факту: OSPF - выбор для корпоративных LAN и ISP-агрегации. Если у тебя два роутера и три подсети — хватит статики. Если роутеров больше пяти и топология меняется - OSPF оправдан.


Настройка BGP на MikroTik RouterOS 7 MikroTik Firewall RouterOS 7: полный гайд Установка и настройка MikroTik CHR с нуля Настройка WiFi на MikroTik RouterOS 7

FAQ по OSPF RouterOS 7

Почему OSPF не поднимает соседство после миграции с RouterOS 6?

В RouterOS 7 полностью изменена архитектура: теперь нужны Instance + Area + Interface Template. Команды из ROS6 (/routing ospf network, /routing ospf instance set 0) не работают. Пересоздай конфиг по схеме из этой статьи - займёт 10 минут.

Как проверить, что OSPF работает корректно на RouterOS 7?

Три команды:

  • /routing ospf neighbor print - State должен быть Full
  • /ip route print where ospf - должны быть маршруты с флагом o
  • /routing ospf lsa print - должна быть непустая LSDB

Что если OSPF State застрял в Init или ExStart?

Init - роутер получает hello, но сосед не видит нас в своём hello. Чаще всего: firewall, неправильный интерфейс в template, или несовпадение Area ID. ExStart - MTU-проблема. Добавь dont-fragment-bit=no в Interface Template и проверь MTU на обоих концах.

Можно ли запустить OSPF на MikroTik без лицензии RouterOS?

CHR в режиме free работает с ограничением 1 Mbit/s throughput, но OSPF полностью функционален. Для тестирования и лабораторий - хватает. В продакшне нужна лицензия (минимум P1 = $45).

Как настроить OSPF authentication на RouterOS 7?


# MD5-аутентификация на интерфейсе:
/routing ospf interface-template
set [find interfaces=ether1] auth=md5 auth-key="MySuperSecret123"

Оба конца должны иметь одинаковый auth-key. Без этого - соседство не поднимется даже при правильной конфигурации.

Почему после перезагрузки роутера OSPF не поднимается 2–3 минуты?

Это нормальное поведение. RouterOS сначала поднимает интерфейсы, потом стартует routing daemon. OSPF ждёт hello (10s) × dead-interval (40s) = до 40 секунд на первое соседство. Если ждёшь дольше 2 минут - смотри логи: /log print where topics~"ospf".

Итог: что получилось

Ты прошёл полный путь: от чистого роутера до работающего OSPF на RouterOS 7. Создал Instance с явным Router ID, добавил Area 0, настроил Interface Templates с правильными типами, проверил соседство. Если шёл по шагам - в /routing ospf neighbor print сейчас State=Full.

Дальше - по задаче: хочешь multi-area, добавляй Area через ABR. Нужен redistribute - три строки конфига. Переходишь на CHR - команды те же, только проверь имена интерфейсов. RouterOS 7 стал сложнее в начальной настройке, но гибче в эксплуатации. Один раз разобрался - дальше летит.

💬 Не заработало?

Если что-то пошло не так — пиши в комментарии. Укажи: версию RouterOS (/system resource print | find where name~"version"), вывод /routing ospf neighbor print и вывод /log print where topics~"ospf". Разберёмся.

Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх