Маршрутизация OSPF через FRRouting

Руководство: Динамическая маршрутизация 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.