Диагноз: когда статика начинает болеть
Поднял офис. Три роутера, два филиала, VPN между ними. Прописал статику на каждом — работает. Потом добавился четвёртый роутер, пятый, резервный канал к провайдеру. И в какой-то момент ты уже держишь в голове двадцать маршрутов на шести устройствах, а когда падает один канал — полчаса правишь конфиги вручную.
Знакомо? Это не твоя ошибка — это просто предел статической маршрутизации.
Что получишь после этой статьи: рабочий OSPF с аутентификацией на Cisco и MikroTik, понимание BGP на уровне «подключить второго провайдера и не сломать интернет», плюс разбор самых частых ошибок с командами для диагностики. Примерно 1,5-2 часа на вдумчивое чтение и настройку.
Что нужно: доступ к роутерам по SSH или консоли, базовые знания IP-адресации, нарисованная топология сети. Последнее — обязательно. Без схемы настраивать OSPF это как собирать мебель без инструкции.
Что разберём:
- Когда переходить со статики и почему
- Как работает OSPF изнутри — коротко, без воды
- Пошаговая настройка на Cisco IOS и MikroTik
- OSPF с MD5-аутентификацией
- Базовая настройка BGP для двух провайдеров
- Troubleshooting: 7 реальных ошибок и их решение
- Безопасность, мониторинг, бэкап конфигов
Причины: почему статика не тянет
Конкретно. Без философии.
1. Нет автоматического восстановления при отказе
Упал канал — статика молчит. Пакеты идут в никуда, пока ты не придёшь и не уберёшь маршрут вручную. OSPF обнаружит отказ за 40 секунд (по умолчанию), с BFD — за 1 секунду, и перестроит таблицу автоматически.
2. Линейный рост сложности
Добавил один роутер — правишь конфиги на всех остальных. У тебя 10 роутеров и добавился 11-й: 10 правок вручную. При OSPF — настраиваешь только 11-й.
3. Нет балансировки нагрузки
Статика не умеет сама распределять трафик по нескольким каналам одинаковой стоимости. OSPF поддерживает ECMP (Equal Cost Multi-Path) — несколько маршрутов одновременно.
4. Ошибки — молча
Опечатался в маске или следующем хопе — статика это проглотит. Трафик пойдёт не туда, и ты будешь искать проблему часами. OSPF не даст установить некорректное соседство.
5. Не масштабируется в несколько площадок
Три офиса, пять VPN-туннелей, два дата-центра. Статические таблицы превращаются в кашу, которую никто не хочет поддерживать. А потом уходит тот, кто это строил, и остаётся legacy которое «трогать нельзя, само работает».
База: как работает OSPF
Понимать протокол нужно хотя бы на уровне «что происходит», иначе при отладке будешь тыкать наугад.
Этапы работы OSPF
Шесть состояний OSPF соседства по порядку: Down, Init, 2-Way, Exstart, Exchange, Loading, Full. Тебя интересует только одно — Full. Всё остальное промежуточное. Если застрял не в Full — читай troubleshooting ниже.
Ключевые понятия
| Термин | Что это | Зачем знать |
|---|---|---|
| Router ID | Уникальный ID роутера в OSPF (формат IPv4) | Задавай вручную, иначе роутер выберет сам и это создаст сюрпризы |
| Area | Логическая группа роутеров | Area 0 — обязательная backbone area. Все остальные должны граничить с ней |
| LSDB | Link State Database — полная карта топологии | Должна быть одинаковой на всех роутерах одной Area |
| Cost | Метрика OSPF = 100 Мбит / пропускная способность | GigE cost=1, FastE cost=10, старые 10Мбит cost=100 |
| DR / BDR | Designated Router / Backup DR | На Ethernet-сегментах выбирается один DR для экономии LSA-трафика |
| Hello / Dead | Таймеры приветствия и смерти | Hello=10 сек, Dead=40 сек по умолчанию. Должны совпадать у соседей |
| Wildcard mask | Инвертированная маска подсети | /24 = wildcard 0.0.0.255, /30 = 0.0.0.3, /32 = 0.0.0.0 |
Выбор протокола: OSPF, BGP, RIP или EIGRP
| Протокол | Тип | Когда использовать | Когда не использовать |
|---|---|---|---|
| RIP v2 | Distance Vector | Учебные лабы | Никогда в продакшне. Метрика только в хопах, конвергенция медленная |
| OSPF | Link State | Корпоративные сети, филиалы, ЦОД | Сеть из 1-2 роутеров — избыточно |
| EIGRP | Hybrid | Сети только на Cisco | Если есть хоть один не-Cisco — проблемы |
| IS-IS | Link State | Провайдерские сети, крупные ISP | Корпоративные сети — OSPF проще |
| BGP | Path Vector | Подключение к провайдерам, несколько AS | Внутри одной компании — OSPF справится |
Подготовка к настройке
Системные требования
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| Cisco IOS | 12.4(T) | 15.x и новее |
| MikroTik RouterOS | 6.x | 7.x (OSPF переработан) |
| Juniper JunOS | 12.1 | 20.x и новее |
| FRRouting (Linux) | 7.x | 9.x и новее |
| RAM на роутере | 64 МБ | 256+ МБ при большой LSDB |
На момент публикации актуальна Cisco IOS 17.x, MikroTik RouterOS 7.14. Перед настройкой проверь свежие релизы на официальных сайтах.
Топология для примеров
Буду использовать одну топологию на протяжении всей статьи. Нарисуй у себя то же самое.
Порты OSPF и BGP
| Протокол | Транспорт | Порт / адрес | Назначение |
|---|---|---|---|
| OSPF Hello | IP протокол 89 | Multicast 224.0.0.5 | Обнаружение соседей, все OSPF роутеры |
| OSPF DR/BDR | IP протокол 89 | Multicast 224.0.0.6 | Трафик к DR и BDR |
| BGP | TCP | 179 | Сессии между BGP peers |
| BFD | UDP | 3784 (control), 3785 (echo) | Быстрое обнаружение отказов |
Что сделать до настройки
- Нарисуй топологию со всеми IP-адресами
- Убедись, что все интерфейсы подняты и роутеры пингуют друг друга напрямую
- Сними backup конфигов: copy running-config tftp или export compact на MikroTik
- Запиши Router ID, который будешь использовать (рекомендую loopback-адреса)
- Определи, какие сети нужно анонсировать в OSPF
Настройка OSPF на Cisco IOS: шаги
Шаг 1. Настрой интерфейсы и loopback
Loopback не падает никогда — в отличие от физических интерфейсов. Используй его как Router ID и для управления роутером.
HQ-Router:
configure terminal
interface Loopback0
ip address 1.1.1.1 255.255.255.255
description OSPF-Router-ID
interface GigabitEthernet0/0
description Link-to-Branch1
ip address 10.0.0.1 255.255.255.252
no shutdown
interface GigabitEthernet0/1
description Link-to-Branch2
ip address 10.0.0.5 255.255.255.252
no shutdown
end
write memory
Branch1-Router:
configure terminal
interface Loopback0
ip address 2.2.2.2 255.255.255.255
description OSPF-Router-ID
interface GigabitEthernet0/0
description Link-to-HQ
ip address 10.0.0.2 255.255.255.252
no shutdown
interface GigabitEthernet0/1
description LAN-Filial1
ip address 192.168.10.1 255.255.255.0
no shutdown
end
write memory
Branch2-Router — аналогично, IP-адреса по топологии выше.
Проверка перед OSPF — убедись что пинг работает:
! С HQ пингуем оба филиала
ping 10.0.0.2 source 10.0.0.1
ping 10.0.0.6 source 10.0.0.5
Шаг 2. Включи процесс OSPF и задай Router ID
Process ID — локальное число, не нужно совпадение на разных роутерах. Router ID — уникальный в масштабах всего OSPF домена.
HQ-Router:
configure terminal
router ospf 1
router-id 1.1.1.1
log-adjacency-changes detail
end
Branch1-Router:
configure terminal
router ospf 1
router-id 2.2.2.2
log-adjacency-changes detail
end
Branch2-Router — то же самое, router-id 3.3.3.3.
Шаг 3. Анонсируй сети в OSPF
Два метода. Первый — через network в процессе OSPF, второй — через ip ospf прямо на интерфейсе. Второй точнее — явно виден какой интерфейс участвует.
Метод 1 — через network (Cisco-классика):
! HQ-Router
configure terminal
router ospf 1
! Сеть к филиалу 1
network 10.0.0.0 0.0.0.3 area 0
! Сеть к филиалу 2
network 10.0.0.4 0.0.0.3 area 0
! Loopback
network 1.1.1.1 0.0.0.0 area 0
end
! Branch1-Router
configure terminal
router ospf 1
network 10.0.0.0 0.0.0.3 area 0
network 192.168.10.0 0.0.0.255 area 0
network 2.2.2.2 0.0.0.0 area 0
end
Метод 2 — через интерфейс (рекомендуется):
! HQ-Router - альтернативный способ
configure terminal
interface Loopback0
ip ospf 1 area 0
interface GigabitEthernet0/0
ip ospf 1 area 0
interface GigabitEthernet0/1
ip ospf 1 area 0
end
LAN-интерфейсы филиалов переведи в passive mode — они анонсируются в OSPF, но Hello не отправляют. Это снижает нагрузку и убирает лишний трафик в сеть конечных пользователей.
! На Branch1 и Branch2
configure terminal
router ospf 1
passive-interface GigabitEthernet0/1
end
P2P-каналы между роутерами переведи в режим point-to-point. Так не нужны выборы DR/BDR и сходимость быстрее.
! На всех WAN-интерфейсах между роутерами
configure terminal
interface GigabitEthernet0/0
ip ospf network point-to-point
end
Шаг 4. Настрой OSPF с аутентификацией MD5
Без аутентификации любой роутер в сегменте может стать OSPF-соседом и вбросить в сеть левые маршруты. Это и атака, и случайная ошибка. Настраивай аутентификацию всегда.
! HQ-Router - аутентификация на интерфейсе к Branch1
configure terminal
interface GigabitEthernet0/0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 SecureOSPF-Key-2024
interface GigabitEthernet0/1
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 SecureOSPF-Key-2024
end
! Branch1-Router - тот же ключ, иначе соседство не установится
configure terminal
interface GigabitEthernet0/0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 SecureOSPF-Key-2024
end
Шаг 5. Оптимизируй таймеры сходимости
Стандартные таймеры Hello/Dead (10/40 сек) дают сходимость за 40-50 секунд. Для корпоративных сетей это много. Уменьши до 2/8 или включи BFD.
Вариант 1 — быстрые Hello-таймеры:
configure terminal
interface GigabitEthernet0/0
! Hello каждые 2 секунды, Dead через 8
ip ospf hello-interval 2
ip ospf dead-interval 8
end
Вариант 2 — BFD (лучше, работает быстрее):
configure terminal
interface GigabitEthernet0/0
! BFD: интервал 300 мс, multiplier 3 = обнаружение за ~900 мс
bfd interval 300 min_rx 300 multiplier 3
ip ospf bfd
end
router ospf 1
bfd all-interfaces
end
Настройка OSPF на MikroTik RouterOS 7
В RouterOS 7 OSPF переработан — синтаксис изменился. Если у тебя RouterOS 6 — часть команд будет другой.
MikroTik — настройка через CLI
HQ-Router на MikroTik:
# Создаём OSPF instance
/routing ospf instance
add name=ospf-main router-id=1.1.1.1
# Создаём Area 0
/routing ospf area
add instance=ospf-main name=backbone area-id=0.0.0.0
# Добавляем интерфейсы в OSPF
/routing ospf interface-template
add instance=ospf-main area=backbone interfaces=ether1 type=ptp \
auth=md5 auth-key="SecureOSPF-Key-2024"
add instance=ospf-main area=backbone interfaces=ether2 type=ptp \
auth=md5 auth-key="SecureOSPF-Key-2024"
# LAN - пассивный
add instance=ospf-main area=backbone interfaces=bridge1 passive=yes
# Анонсируем loopback
/routing ospf interface-template
add instance=ospf-main area=backbone interfaces=lo type=ptp
Проверка соседства на MikroTik:
/routing ospf neighbor print
/ip route print where routing-mark=ospf-main
Проверка: OSPF работает или нет
После настройки — три команды, которые дадут полную картину.
Cisco — команды проверки
! Команда 1 - соседи
show ip ospf neighbor
! Ожидаемый вывод:
! Neighbor ID Pri State Dead Time Address Interface
! 2.2.2.2 1 FULL/ - 00:00:35 10.0.0.2 GigabitEthernet0/0
! 3.3.3.3 1 FULL/ - 00:00:38 10.0.0.6 GigabitEthernet0/1
! State FULL - всё в порядке
! Если FULL/ - (с дефисом) - это p2p интерфейс, DR/BDR не выбираются
! Команда 2 - маршруты от OSPF
show ip route ospf
! Ожидаемый вывод:
! 192.168.10.0/24 [110/2] via 10.0.0.2, GigabitEthernet0/0
! 192.168.20.0/24 [110/2] via 10.0.0.6, GigabitEthernet0/1
! O - маршрут от OSPF, [110/2] - AD=110, метрика=2
! Команда 3 - база данных топологии
show ip ospf database summary
! Все роутеры одной Area должны иметь одинаковую LSDB
! Количество LSA должно совпадать
! Тест сквозной связности
! С HQ пингуем LAN-сеть Branch2 через Branch1-маршрут
ping 192.168.20.1 source 192.168.10.1 repeat 10
Результат: если получил 10 ответов — OSPF работает корректно.
Настройка BGP: два провайдера, без катастроф
BGP — это не просто протокол, это политика маршрутизации между автономными системами. Ошибка в BGP-конфиге может повлиять на связность за пределами твоей сети. Это не страшилка — это факт, который нужно держать в голове.
Когда реально нужен BGP
- Два или более провайдера, нужна балансировка или резервирование
- Есть собственный номер AS (выдаётся через RIPE/ARIN)
- Есть собственный публичный IPv4/IPv6-блок для анонса
- Нужен контроль входящего трафика от разных провайдеров
Если у тебя просто два провайдера и нужен фейловер — сначала посмотри на IP SLA + static routes с разной метрикой. Это проще BGP и решает 80% задач.
Архитектура: OSPF внутри, BGP на границе
Шаг 1. Настройка eBGP с двумя провайдерами
Сценарий: у тебя AS65100, публичный блок 203.0.113.0/24, два провайдера.
configure terminal
! BGP процесс с твоим AS-номером
router bgp 65100
bgp router-id 1.1.1.1
bgp log-neighbor-changes
! Анонсируем свой публичный блок
network 203.0.113.0 mask 255.255.255.0
! Сосед провайдер 1
neighbor 198.51.100.1 remote-as 65000
neighbor 198.51.100.1 description ISP-1-Primary
! Получаем только default route, не весь интернет
neighbor 198.51.100.1 prefix-list ONLY-DEFAULT in
! Анонсируем наш блок провайдеру
neighbor 198.51.100.1 prefix-list OUR-BLOCK out
! Сосед провайдер 2
neighbor 203.0.113.254 remote-as 65001
neighbor 203.0.113.254 description ISP-2-Backup
neighbor 203.0.113.254 prefix-list ONLY-DEFAULT in
neighbor 203.0.113.254 prefix-list OUR-BLOCK out
end
! Prefix-list - только default route от провайдеров
ip prefix-list ONLY-DEFAULT permit 0.0.0.0/0
! Prefix-list - только наш блок в сторону провайдеров
ip prefix-list OUR-BLOCK permit 203.0.113.0/24
Шаг 2. Приоритизация провайдеров через Local Preference
ISP-1 основной, ISP-2 резервный. Local Preference работает внутри AS — чем выше, тем предпочтительнее.
configure terminal
! Route-map для ISP-1 - высокий приоритет
route-map ISP1-IN permit 10
set local-preference 200
! Route-map для ISP-2 - низкий приоритет
route-map ISP2-IN permit 10
set local-preference 100
! Применяем к соседям
router bgp 65100
neighbor 198.51.100.1 route-map ISP1-IN in
neighbor 203.0.113.254 route-map ISP2-IN in
end
Теперь весь исходящий трафик идёт через ISP-1, при его падении — автоматически переключается на ISP-2.
Шаг 3. Редистрибуция default route в OSPF
Внутренние роутеры должны знать куда слать пакеты в интернет. Рассказываем им через OSPF.
configure terminal
router ospf 1
! Анонсируем default route в OSPF только если BGP его знает
default-information originate
end
Проверка BGP
! Статус соседства
show ip bgp summary
! Ожидаемый вывод:
! Neighbor V AS MsgRcvd MsgSent Up/Down State/PfxRcd
! 198.51.100.1 4 65000 452 448 03:22:11 1
! 203.0.113.254 4 65001 441 437 03:22:08 1
! PfxRcd = 1 - получен один маршрут (default route), всё верно
! BGP-таблица
show ip bgp
! Что анонсируем провайдерам
show ip bgp neighbors 198.51.100.1 advertised-routes
! Что получаем от провайдеров
show ip bgp neighbors 198.51.100.1 received-routes
Осложнения: 7 реальных ошибок
Ошибка 1: Соседство OSPF не устанавливается
show ip ospf neighbor пустой или соседи в состоянии DOWN.
| Причина | Диагностика | Решение |
|---|---|---|
| Нет физической связности | ping [IP соседа] | Проверь кабель, no shutdown на интерфейсах |
| Интерфейс не в OSPF | show ip ospf interface | Добавь network или ip ospf area |
| Разные Area ID | show ip ospf interface detail | Приведи к одной Area |
| Несовпадение Hello/Dead | show ip ospf interface detail | ip ospf hello-interval / dead-interval |
| Блокировка firewall | debug ip ospf adj | Разреши протокол 89, multicast 224.0.0.5 |
| MTU mismatch | show interface MTU | ip ospf mtu-ignore или выровняй MTU |
| Несовпадение MD5-ключей | debug ip ospf adj | Проверь ключи на обоих концах |
! Диагностика MTU на интерфейсе
show interface GigabitEthernet0/0 | include MTU
! Если MTU разные - либо выровняй, либо:
configure terminal
interface GigabitEthernet0/0
ip ospf mtu-ignore
! Детальный лог соседства
debug ip ospf adj
! После диагностики - обязательно выключи debug:
undebug all
Ошибка 2: Соседи застряли в состоянии EXSTART/EXCHANGE
Это классика MTU mismatch. Один роутер пытается отправить DBD-пакет, другой его не принимает из-за размера.
! Проверь MTU на обоих роутерах
show interface GigabitEthernet0/0 | include MTU
! Временное решение
interface GigabitEthernet0/0
ip ospf mtu-ignore
! Нормальное решение - выровняй MTU на обоих интерфейсах
interface GigabitEthernet0/0
mtu 1500
Ошибка 3: Соседство FULL, но маршрутов нет
! Проверяем LSDB - есть ли нужная сеть
show ip ospf database | include 192.168.10
! Если сети нет в LSDB - она не анонсируется
! Проверяем на Branch1 что настроен network
show run | section ospf
! Проверяем конкурирующие маршруты
show ip route 192.168.10.0
! Если есть статика с AD ниже 110 - она перекрывает OSPF
Ошибка 4: Медленная сходимость после падения канала
По умолчанию Dead-интервал 40 секунд. Плюс время на пересчёт SPF. Итого 45-60 секунд недоступности. Решение — BFD или уменьшение таймеров.
! Уменьшаем таймеры SPF
configure terminal
router ospf 1
timers throttle spf 50 200 5000
timers throttle lsa 50 200 5000
Ошибка 5: BGP сессия не поднимается
! Проверяем статус
show ip bgp summary
! Смотрим на State - если не Established:
! Idle - нет маршрута до соседа, проверь физику
! Active - TCP соединение не устанавливается, проверь firewall (порт 179)
! Connect - проблемы с TCP handshake
! Проверяем доступность BGP-соседа
ping 198.51.100.1
! Проверяем что порт 179 не заблокирован
telnet 198.51.100.1 179
Ошибка 6: BGP сессия UP, но маршрутов нет
! Смотрим что получаем
show ip bgp neighbors 198.51.100.1 received-routes
! Если пусто - провайдер ничего не анонсирует или soft-reconfiguration не включён
router bgp 65100
neighbor 198.51.100.1 soft-reconfiguration inbound
! Применяем политики заново без сброса сессии
clear ip bgp 198.51.100.1 soft in
Ошибка 7: Асимметричная маршрутизация
Трафик уходит через ISP-1, возвращается через ISP-2. Stateful firewall в этом случае может рвать сессии. Это не всегда ошибка — иногда норма, но нужно знать.
! Проверяем через какой интерфейс уходит трафик
traceroute 8.8.8.8
! Если нужна симметрия - используй одинаковый Local Preference
! или настрой policy-based routing
Безопасность OSPF и BGP
OSPF — минимальный набор
configure terminal
router ospf 1
! Пассивный режим по умолчанию для всех
passive-interface default
! Явно активируем только нужные
no passive-interface GigabitEthernet0/0
no passive-interface GigabitEthernet0/1
end
MD5-аутентификация уже настроена выше — не пропускай этот шаг.
BGP — защита от утечек маршрутов
configure terminal
! Максимальное количество маршрутов от провайдера
router bgp 65100
neighbor 198.51.100.1 maximum-prefix 10 80
! 80% - предупреждение, 100% - сессия сбрасывается
! GTSM - TTL security против спуфинга BGP-сессий
neighbor 198.51.100.1 ttl-security hops 1
end
! Firewall - разрешаем BGP только от конкретных соседей
ip access-list extended BGP-PEERS
permit tcp host 198.51.100.1 any eq 179
permit tcp any host 198.51.100.1 eq 179
deny tcp any any eq 179
permit ip any any
SSH и ограничение управления
configure terminal
! SSH вместо telnet
ip ssh version 2
ip ssh authentication-retries 3
line vty 0 4
transport input ssh
access-class MGMT-ONLY in
! Доступ к управлению только из своей сети
ip access-list standard MGMT-ONLY
permit 192.168.1.0 0.0.0.255
deny any
end
Резервное копирование конфигураций
Перед любым изменением в маршрутизации — снимай backup. Без вопросов.
Что бэкапить
- Running configuration всех роутеров
- Таблицы маршрутизации (show ip route) — для сравнения до/после
- BGP-таблицы если используешь BGP
Как и как часто
! Cisco - сохранение конфига на TFTP
copy running-config tftp://192.168.1.100/HQ-Router-backup.cfg
! Или на flash
copy running-config flash:HQ-Router-backup.cfg
! MikroTik
/export compact file=mikrotik-backup
! Автоматический бэкап через EEM (Cisco)
configure terminal
event manager applet DAILY-BACKUP
event timer cron name DAILY cron-entry "0 2 * * *"
action 1.0 cli command "copy running-config tftp://192.168.1.100/router-backup.cfg"
end
Хранить: минимум 7 дней ротации, лучше 30. Минимум две копии в разных местах.
Мониторинг OSPF и BGP
Что мониторить
| Метрика | SNMP OID / команда | Порог тревоги |
|---|---|---|
| Состояние OSPF-соседей | ospfNbrState (1.3.6.1.2.1.14.10.1.6) | Не равно 8 (Full) |
| Количество OSPF-маршрутов | show ip route summary | Резкое изменение +-10% |
| BGP-сессия | bgpPeerState (1.3.6.1.2.1.15.3.1.2) | Не равно 6 (Established) |
| Изменения топологии (LSA) | ospfSpfRuns | Более 10 за минуту — нестабильность |
| CPU при SPF | show processes cpu sorted | Более 80% длительно |
! Лог-треп на OSPF-события
configure terminal
snmp-server enable traps ospf state-change
snmp-server enable traps bgp
snmp-server host 192.168.1.200 version 2c public ospf bgp
end
Обновление: как не сломать маршрутизацию
Порядок действий при обновлении IOS
- Сними backup конфига и запиши текущую версию IOS
- Проверь release notes на изменения в OSPF/BGP поведении
- Обновляй сначала филиальные роутеры, HQ — последним
- После каждого обновления проверяй: show ip ospf neighbor, show ip route ospf
- Дай сети 15 минут стабилизироваться перед следующим роутером
! Откат если что-то пошло не так
configure terminal
! Загрузка резервной версии IOS
boot system flash:iosname-old.bin
end
reload
Профилактика: как не сломать снова
Правило 1: Документируй топологию и конфиги
Нарисованная схема — это не бюрократия. Это то, что спасёт тебя в 3 ночи когда что-то упало и нужно быстро понять где искать. Держи актуальную схему в draw.io или NetBox. После каждого изменения — обновляй.
Правило 2: Тестируй отказоустойчивость заранее
Раз в квартал — плановые тесты. Физически отключи WAN-кабель на HQ и засеки время сходимости. Проверь что все филиалы переключились. Запиши результат. Узнать что фейловер не работает лучше во время планового теста, а не во время реального инцидента.
! Имитация падения интерфейса без физического отключения
configure terminal
interface GigabitEthernet0/0
shutdown
! Через минуту - проверяем что маршруты пересчитались
show ip route ospf
show ip ospf neighbor
! Возвращаем
interface GigabitEthernet0/0
no shutdown
end
Правило 3: Мониторь OSPF-соседство, не только пинг
OSPF может упасть при живом пинге. Если сосед перешёл в DOWN — пинг между интерфейсами всё равно проходит, но маршруты уже не обновляются. Мониторь именно ospfNbrState через SNMP или через Zabbix/Prometheus.
! Простой bash-скрипт для проверки OSPF-соседей через SNMP
! Запускай по cron каждые 5 минут
#!/bin/bash
ROUTER="192.168.1.1"
COMMUNITY="public"
# OID состояния соседей: 1.3.6.1.2.1.14.10.1.6
RESULT=$(snmpwalk -v2c -c $COMMUNITY $ROUTER 1.3.6.1.2.1.14.10.1.6 2>/dev/null | grep -v "= INTEGER: 8")
if [ -n "$RESULT" ]; then
echo "OSPF NEIGHBOR DOWN: $RESULT"
# Тут отправка алерта в Slack/Telegram
fi
Правило 4: Защита конфигов от случайных изменений
На Cisco можно заблокировать изменение OSPF-конфига без предварительного подтверждения через Configuration Archive и Change Logging.
configure terminal
! Ведение журнала изменений конфига
archive
log config
logging enable
notify syslog contenttype plaintext
hidekeys
end
Правило 5: Контролируй рост LSDB
В большой сети LSDB разрастается и начинает жрать RAM. Если у тебя больше 200 роутеров в одной Area — пора думать о разделении на несколько Area или о route summarization.
! Смотрим размер LSDB
show ip ospf database database-summary
! Если роутеров > 200 в одной Area - добавляем ABR (Area Border Router)
! и делим сеть на area 0 (backbone) + area 1, area 2 и т.д.
! Агрегация маршрутов на ABR - уменьшаем LSDB
router ospf 1
! Если в area 1 есть 192.168.10.0/24, 192.168.11.0/24 ... 192.168.15.0/24
area 1 range 192.168.10.0 255.255.248.0
Продвинутые возможности OSPF
Multi-area OSPF: когда Area 0 не хватает
Одна Area 0 справляется с сетями до 50-100 роутеров комфортно. При большем количестве — LSDB растёт, SPF-пересчёт становится дороже по CPU. Решение — разделить на несколько Area.
! Настройка ABR (Area Border Router) - роутер в двух Area
configure terminal
interface GigabitEthernet0/0
! Интерфейс к Area 0
ip ospf 1 area 0
interface GigabitEthernet0/1
! Интерфейс к Area 1
ip ospf 1 area 1
router ospf 1
router-id 10.0.0.1
! Суммаризация маршрутов из Area 1 в Area 0
area 1 range 192.168.10.0 255.255.255.0
end
Stub Area: для удалённых офисов
Stub area — это Area, в которую не передаются External LSA (Type 5). Маленький офис не нуждается во всей топологии — ему достаточно default route от ABR. Экономит RAM и упрощает конвергенцию.
! На ABR - настраиваем Area 1 как stub
configure terminal
router ospf 1
area 1 stub
end
! На всех роутерах Area 1 - то же самое
configure terminal
router ospf 1
area 1 stub
end
! Все роутеры в одной Area должны иметь одинаковый тип Area
Виртуальный канал OSPF (Virtual Link)
Если по какой-то причине Area не имеет прямого соединения с Area 0 — нужен virtual link. Это редкий случай, но встречается при слиянии компаний когда две независимые OSPF-сети нужно соединить.
! Virtual link через транзитную Area 2
! На обоих ABR, которые граничат с Area 2
router ospf 1
area 2 virtual-link [Router-ID удалённого ABR]
BGP: продвинутые политики
AS-PATH prepend: управление входящим трафиком
Local Preference управляет исходящим трафиком — через какой ISP уходить. AS-PATH prepend управляет входящим — через какой ISP к тебе приходить. Чем длиннее AS-PATH, тем менее предпочтителен маршрут для удалённых роутеров.
configure terminal
! ISP-2 - резервный. Делаем AS-PATH длиннее через него
route-map ISP2-OUT permit 10
! Добавляем свой AS три раза - маршрут станет менее привлекательным
set as-path prepend 65100 65100 65100
router bgp 65100
neighbor 203.0.113.254 route-map ISP2-OUT out
end
! Применяем без сброса сессии
clear ip bgp 203.0.113.254 soft out
MED (Multi-Exit Discriminator): для двух точек подключения к одному ISP
Если к одному провайдеру подключён в двух точках — MED говорит провайдеру через какую точку лучше слать трафик к тебе.
configure terminal
! Основная точка - низкий MED (предпочтительнее)
route-map PRIMARY-POINT permit 10
set metric 100
! Резервная точка - высокий MED
route-map BACKUP-POINT permit 10
set metric 200
router bgp 65100
neighbor 198.51.100.1 route-map PRIMARY-POINT out
neighbor 198.51.100.5 route-map BACKUP-POINT out
end
BGP Community: теггирование маршрутов
Community — это тег на маршруте, который помогает применять политики без написания отдельных prefix-list. Провайдеры используют community для управления локальными предпочтениями.
configure terminal
! Помечаем анонсы для ISP-1 как основные
route-map MARK-PRIMARY permit 10
set community 65000:100
! Помечаем анонсы для ISP-2 как резервные
route-map MARK-BACKUP permit 10
set community 65001:200
router bgp 65100
neighbor 198.51.100.1 route-map MARK-PRIMARY out
neighbor 203.0.113.254 route-map MARK-BACKUP out
! Разрешаем передавать community атрибут
neighbor 198.51.100.1 send-community
end
BGP на MikroTik RouterOS 7
# Создаём BGP instance
/routing bgp instance
add name=bgp-main as=65100 router-id=1.1.1.1
# Добавляем соседей (peers)
/routing bgp peer
add name=ISP-1 instance=bgp-main remote-address=198.51.100.1 \
remote-as=65000 out-filter=OUR-BLOCK-OUT in-filter=ONLY-DEFAULT-IN
add name=ISP-2 instance=bgp-main remote-address=203.0.113.254 \
remote-as=65001 out-filter=OUR-BLOCK-OUT in-filter=ONLY-DEFAULT-IN
# Routing filters (MikroTik RouterOS 7)
/routing filter rule
add chain=OUR-BLOCK-OUT rule="if (dst == 203.0.113.0/24) { accept } else { reject }"
add chain=ONLY-DEFAULT-IN rule="if (dst == 0.0.0.0/0) { accept } else { reject }"
# Анонсируем наш блок
/routing bgp network
add network=203.0.113.0/24
# Проверка
/routing bgp peer print
/routing bgp peer print detail
Замена статических маршрутов: план миграции
Не делай migration в одно окно. Делай поэтапно с возможностью отката на каждом шаге.
Этап 0: Подготовка
Сними backup всех конфигов. Запиши текущие статические маршруты на каждом роутере. Запланируй maintenance window — минимум 2 часа. Убедись что у тебя есть out-of-band доступ к роутерам (консоль или управление через отдельный интерфейс).
Этап 1: Запусти OSPF параллельно со статикой
! Включаем OSPF - статика остаётся, имеет приоритет (AD=1 vs AD=110)
configure terminal
router ospf 1
router-id 1.1.1.1
interface GigabitEthernet0/0
ip ospf 1 area 0
end
! Проверяем что OSPF-маршруты появились (они ещё не активны - вытеснены статикой)
show ip route ospf
Этап 2: Проверь что OSPF видит все нужные сети
! Сравни список OSPF-маршрутов со списком статических
show ip route ospf
show ip route static
! Если какой-то сети нет в OSPF - не переходи к следующему этапу
! Найди почему она не анонсируется и исправь
Этап 3: Удаляй статику по одному маршруту
! Удаляем один статический маршрут
no ip route 192.168.10.0 255.255.255.0 10.0.0.2
! Немедленно проверяем что OSPF подхватил
show ip route 192.168.10.0
! Тест доступности
ping 192.168.10.1
! Если всё OK - переходим к следующему маршруту
! Если нет - возвращаем статику
ip route 192.168.10.0 255.255.255.0 10.0.0.2
Этап 4: После полного перехода
! Убеждаемся что статики не осталось
show ip route static
! Финальный backup конфига
write memory
copy running-config tftp://192.168.1.100/post-ospf-migration.cfg
Весь процесс миграции для сети из 5 роутеров занимает 2-3 часа при аккуратном подходе. Торопиться некуда — у тебя есть возможность откатиться на каждом шаге.
Альтернативные решения
IP SLA + статика — когда BGP избыточен
Два провайдера, нужен простой фейловер без BGP. IP SLA проверяет доступность через каждый канал и переключает маршрут.
configure terminal
! Трекер - проверяем доступность 8.8.8.8 через ISP-1
ip sla 1
icmp-echo 8.8.8.8 source-interface GigabitEthernet0/2
frequency 5
ip sla schedule 1 life forever start-time now
track 1 ip sla 1 reachability
! Основной маршрут через ISP-1 - активен пока track 1 UP
ip route 0.0.0.0 0.0.0.0 198.51.100.1 10 track 1
! Резервный маршрут через ISP-2 - большая метрика, включается при падении трека
ip route 0.0.0.0 0.0.0.0 203.0.113.1 20
end
FRRouting на Linux — полноценный OSPF/BGP без Cisco
Если нет бюджета на Cisco — FRRouting даёт тот же функционал на обычном Linux-сервере. Синтаксис почти идентичен Cisco.
# Установка FRRouting на Ubuntu
curl -s https://deb.frrouting.org/frr/keys.gpg | sudo apt-key add -
echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) frr-stable | sudo tee -a /etc/apt/sources.list.d/frr.list
sudo apt update && sudo apt install frr frr-pythontools
# Включаем OSPF и BGP демоны
sudo nano /etc/frr/daemons
# ospfd=yes
# bgpd=yes
sudo systemctl restart frr
# Настройка через vtysh
sudo vtysh
configure terminal
router ospf
router-id 1.1.1.1
network 10.0.0.0/30 area 0
end
FAQ
Почему OSPF не видит соседей хотя пинг работает?
Самые частые причины: firewall блокирует IP-протокол 89 (не TCP/UDP, а именно 89), интерфейс в passive mode, несовпадение Area ID или таймеров Hello/Dead. Проверь по порядку: show ip ospf interface — убедись что интерфейс в нужной Area и не passive. Если всё верно — debug ip ospf adj и смотри что происходит при попытке установить соседство. Не забудь undebug all после диагностики.
Как проверить что OSPF пересчитал маршруты после падения канала?
Три команды: show ip ospf neighbor покажет что соседство упало, show ip route ospf покажет новые маршруты через резервный путь, show ip ospf покажет счётчик SPF runs — если он вырос, пересчёт произошёл. Для проверки скорости сходимости используй continuous ping: ping 192.168.20.1 repeat 1000, и в процессе физически отключи кабель — посчитай сколько пакетов потерял.
Что если нужен OSPF между Cisco и MikroTik?
OSPF — открытый стандарт, работает между любыми производителями. Главное: одинаковые Area, совпадающие таймеры Hello/Dead, одинаковый тип аутентификации и ключ. На p2p-каналах убедись что оба конца в режиме point-to-point — это убирает выборы DR/BDR и устраняет половину проблем совместимости.
Можно ли запустить OSPF параллельно со статикой при миграции?
Да, и это правильный подход. Запусти OSPF, проверь что маршруты появились. Статика с Administrative Distance 1 будет иметь приоритет над OSPF (AD 110). Когда убедишься что OSPF работает корректно — удаляй статику по одному маршруту. Откатиться всегда просто: ip route обратно.
Нужен ли BGP если есть только один провайдер?
Нет. Один провайдер — статический дефолтный маршрут плюс OSPF для анонса внутри сети. BGP оправдан от двух провайдеров и выше, или если у тебя есть собственный AS и публичный IP-блок. В остальных случаях это избыточная сложность.
Почему AD у OSPF равна 110, а не меньше?
Administrative Distance — условный приоритет источника маршрута. Connected: AD=0, Static: AD=1, eBGP: AD=20, OSPF: AD=110, RIP: AD=120. Статика с AD=1 имеет приоритет над OSPF с AD=110 намеренно: явно прописанный маршрут — это сознательное решение администратора, OSPF не должен его перекрывать. Это же позволяет при миграции запускать OSPF параллельно — статика активна пока ты сам её не уберёшь.
Как быстро OSPF переключается при падении канала?
По умолчанию: Dead-интервал 40 секунд + SPF-пересчёт 1-5 секунд = 41-45 секунд простоя. С таймерами 2/8 (Hello/Dead): 8-10 секунд. С BFD 300 мс / multiplier 3: менее 1 секунды. Для офисных приложений хватает 8-10 секунд. BFD нужен если возишь VoIP или real-time трафик.
Что такое ECMP и как включить?
Equal Cost Multi-Path — балансировка трафика между несколькими маршрутами одинаковой метрики. Если два WAN-канала одинаковой полосы — OSPF будет использовать оба. По умолчанию до 4 путей, настраивается до 16.
configure terminal
router ospf 1
maximum-paths 8
end
! Проверка ECMP в таблице маршрутизации
show ip route 192.168.30.0
! O 192.168.30.0/24 [110/2] via 10.0.0.2, GigabitEthernet0/0
! [110/2] via 10.0.0.6, GigabitEthernet0/1
! Оба маршрута активны одновременно
Результат: что теперь работает
Ты перешёл со статики на OSPF. Роутеры сами обмениваются маршрутами, сами пересчитывают пути при падении канала, сами уведомляют соседей об изменениях. Добавить новый роутер — это настройка одного устройства, не правка конфигов на всех остальных. Это ценно не в день запуска, а через полгода когда ты добавишь четвёртый филиал.
Если настроил BGP с двумя провайдерами — у тебя автоматическое резервирование на уровне интернет-подключения. ISP-1 упал — трафик ушёл через ISP-2, и ты узнаешь об этом из мониторинга, а не от пользователей которые не могут зайти в облако.
Если что-то не заработало — пиши в комментариях. Укажи: топологию, оборудование, вывод show ip ospf neighbor и show ip route ospf. Разберём конкретную ситуацию.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →



