Чтобы поднять OSPF на RouterOS 7: создай Instance (/routing ospf instance add), добавь Area (/routing ospf area add), привяжи интерфейс (/routing ospf interface-template add). Соседство появится через 10–40 секунд. Проверь: /routing ospf neighbor print. Если State не Full — смотри раздел «Осложнения» ниже.
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=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"
Настройка 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
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"]
[/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". Разберёмся.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →



