====== Маршрутизация 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.