====== Маршрутизация OSPF через FRRouting ======
{{data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld2JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsb2dvLWljb24iPjxwYXRoIGQ9Ik00IDExYTkgOSAwIDAgMSA5IDkiPjwvcGF0aD48cGF0aCBkPSJNNCA0YTE2IDE2IDAgMCAxIDE2IDE2Ij48L3BhdGg+PGNpcmNsZSBjeD0iNSIgY3k9IjE5IiByPSIxIj48L2NpcmNsZT48L3N2Zz4=}} NetDocs
* [[#intro|Введение]]
* [[#install|Шаг 1. Установка FRR]]
* [[#global-config|Шаг 2. Глобальные настройки]]
* [[#ospf-process|Шаг 3. Процесс OSPF]]
* [[#interfaces|Шаг 4. Настройка интерфейсов]]
* [[#save|Шаг 5. Сохранение]]
* [[#debug|Шаг 6. Диагностика]]
====== Руководство: Динамическая маршрутизация OSPF (FRR) поверх туннелей ======
Пошаговая инструкция по развертыванию протокола OSPF между маршрутизаторами.
Данный гайд описывает процесс поднятия динамической маршрутизации с использованием пакета **FRRouting (FRR)**. Процесс будет одинаковым для любых маршрутизаторов в вашей инфраструктуре, отличаться будут лишь локальные IP-адреса и идентификаторы.
**Обратите внимание на TTL:** Если вы поднимаете OSPF поверх IPIP или GRE туннелей, пакеты маршрутизации могут не доходить из-за слишком маленького Time-To-Live. Убедитесь, что для вашего туннеля установлен достаточный TTL.
# Увеличение TTL для туннельного интерфейса:
nmcli con mod ваш_туннельный_интерфейс ip-tunnel.ttl 64
===== Шаг 1. Установка и запуск FRR =====
Для начала установим пакет ''%%frr%%'' из стандартных репозиториев операционной системы:
apt-get update && apt-get install -y frr
Добавляем сервис в автозагрузку и сразу запускаем его. Это действие также инициализирует служебный файл конфигурации демонов:
systemctl enable --now frr
По умолчанию все протоколы маршрутизации отключены. Нам нужно явно включить процесс OSPF. Откройте конфигурационный файл:
vim /etc/frr/daemons
Найдите строку ''%%ospfd=no%%'' и измените ее на ''%%yes%%'':
ospfd = yes
Сохраните файл (''%%ESC%%'' -> ''%%:wq%%'') и перезапустите службу для применения новых настроек:
systemctl restart frr
===== Шаг 2. Глобальные настройки маршрутизации =====
Переходим к непосредственной настройке через консоль VTYSH (встроенный CLI-интерфейс FRR, похожий на Cisco IOS):
vtysh
conf t
**Особенность работы FRR:** В момент первой загрузки FRR подхватывает системное значение ''%%ip.ipv4.ip_forward%%'' (1 или 0) и записывает его себе в конфиг как ''%%ip forwarding%%'' или ''%%no ip forwarding%%'' соответственно. Во время последующей загрузки системы FRR может перезаписать его поверх ''%%/etc/net/sysctl.conf%%''. Поэтому нам нужно действовать на опережение и явно разрешить пересылку пакетов.
Разрешаем транзит пакетов между интерфейсами (ip forwarding):
ip forwarding
===== Шаг 3. Запуск процесса OSPF =====
Инициализируем процесс маршрутизации OSPF:
router ospf
Каждому маршрутизатору в сети требуется уникальный идентификатор (Router ID). Укажите его в формате IPv4-адреса. (Например, для первого роутера это может быть ''%%1.1.1.1%%'', для второго — ''%%2.2.2.2%%'' и так далее):
ospf router-id ID_вашего_роутера
В целях безопасности крайне рекомендуется перевести все интерфейсы маршрутизатора в пассивный режим по умолчанию. Это предотвратит случайную отправку OSPF Hello-пакетов в пользовательские сети (где их могут перехватить злоумышленники):
passive-interface default
===== Шаг 4. Настройка интерфейсов и аутентификации =====
Теперь нужно привязать процесс OSPF к конкретным сетевым интерфейсам. Перейдем в режим настройки интерфейса туннеля (через который роутеры общаются друг с другом):
int ваш_туннельный_интерфейс
Указываем, что данный интерфейс принадлежит к нулевой зоне OSPF (Area 0, магистральная зона):
ip ospf area 0
Поскольку ранее мы сделали все интерфейсы пассивными, нам нужно явно включить раздачу OSPF маршрутов на этом конкретном порту:
no ip ospf passive
Для защиты OSPF-соседства от подмены маршрутов, настроим шифрование MD5. Укажите одинаковый пароль на всех связанных роутерах:
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 ваш_пароль_ospf
Так как это туннель между двумя точками (а не широковещательная сеть), укажем тип сети point-to-point. Это ускорит установку соседства и избавит от выбора DR/BDR маршрутизаторов:
ip ospf network point-to-point
**Добавление локальных сетей:** Вам необходимо повторить этот блок настройки для каждого интерфейса, который должен участвовать в маршрутизации OSPF.
int ваш_локальный_интерфейс
ip ospf area 0
===== Шаг 5. Сохранение конфигурации =====
Выйдите из режима конфигурации и запишите изменения в энергонезависимую память (startup-config), иначе после перезагрузки все настройки пропадут:
end
wr mem
q
Для гарантированной проверки работы системы можно отправить маршрутизатор в перезагрузку:
reboot
===== Шаг 6. Диагностика и проверка (Troubleshooting) =====
После перезагрузки и поднятия сервисов вернитесь в консоль FRR:
vtysh
Проверьте установку OSPF соседства с другими роутерами (должно быть состояние ''%%Full%%''):
show ip ospf neighbor
Проверьте таблицы маршрутизации:
show ip ospf route
show ip route ospf
exit
Выполните обычный пинг до удаленного узла (подставьте свой адрес):
ping IP_адрес_удаленной_сети
==== Продвинутая отладка (если маршруты не передаются) ====
Если соседство не поднимается, включите мониторинг OSPF-пакетов в реальном времени. Внутри ''%%vtysh%%'' введите:
debug ospf event
debug ospf packet hello
debug ospf zebra
terminal monitor
**Анализ результатов:**
* Если после включения дебага //FRR ничего не выводит// на экран — значит между роутерами нет физической или туннельной связности, либо пакеты блокируются (например, из-за неправильного параметра ''%%ip-tunnel.ttl%%'').
* Если //вывод есть, но OSPF-маршруты не появляются// — проблема заключается в логике конфигурации FRR (несовпадение паролей MD5, несовпадение Area ID, или интерфейсы остались в passive-режиме).
© 2026 Network Documentation Hub.