HSRP для начинающих: как сделать сеть отказоустойчивой с помощью виртуального маршрутизатора

Вместо вступления: Почему один маршрутизатор — это плохо

Представьте, что в вашем офисе есть только один выход в интернет через одного «дверного охранника» — маршрутизатор. Пока он на месте, все работают спокойно. Но если охранник заболел (маршрутизатор сломался), никто не может попасть ни в интернет, ни в другие отделы. Все сидят и ждут, когда починят оборудование.

В реальных сетях так делать нельзя. Клиенты (ваши компьютеры) должны всегда иметь доступ к сети, даже если один из маршрутизаторов вышел из строя. И здесь на сцену выходит HSRP — протокол, который позволяет нескольким маршрутизаторам работать как одна команда, создавая иллюзию одного надёжного «швейцара» для всех устройств в сети.

HSRP: Виртуальный маршрутизатор, который никогда не спит

HSRP (Hot Standby Router Protocol) — это протокол Cisco, который создаёт виртуальный маршрутизатор из группы физических устройств. Клиенты в сети настраиваются на один виртуальный IP-адрес и MAC-адрес, а реальную работу выполняет тот маршрутизатор, который в данный момент является активным (Active). Второй маршрутизатор находится в режиме ожидания (Standby) и мгновенно берёт управление на себя, если активный перестаёт отвечать.

Как это выглядит для пользователя?

Для компьютера в сети существует один «шлюз по умолчанию» с адресом, скажем, 192.168.1.1. Он всегда доступен. А за кулисами два маршрутизатора договариваются между собой: «Сегодня я активный, ты — резервный». Если активный маршрутизатор выключается, резервный мгновенно становится активным и начинает отвечать на тот же виртуальный IP-адрес. Компьютер даже не замечает подмены.

Как маршрутизаторы выбирают главного? Приоритеты и Preempt

Активный маршрутизатор выбирается на основе приоритета (priority). У кого приоритет выше, тот и становится активным. По умолчанию у всех маршрутизаторов приоритет равен 100, но его можно изменить:

Router(config-if)# standby 1 priority 150

В этом примере маршрутизатору назначен приоритет 150 для группы HSRP номер 1. Если у другого маршрутизатора в той же группе приоритет ниже (например, 100), этот станет активным.

Но есть важный нюанс: что произойдёт, если маршрутизатор с высоким приоритетом временно отключился, а потом снова заработал? Без дополнительной настройки он не сможет вернуть себе роль активного, даже если у него приоритет выше, потому что текущий активный маршрутизатор спокойно продолжает работать. Чтобы исправить это, используется команда preempt (вытеснение):

Router(config-if)# standby 1 preempt

Эта команда разрешает маршрутизатору с более высоким приоритетом «перехватить» активную роль, как только он станет доступен. Без preempt активным останется тот, кто первым занял эту роль, и ручное вмешательство не поможет.

Самое интересное: Умное переключение через объекты (Tracking)

Базовая настройка HSRP переключает роли только при полной потере связи с активным маршрутизатором. Но что, если активный маршрутизатор жив, но потерял выход в интернет? Он продолжит быть активным для локальной сети, но трафик никуда не уйдёт. Это похоже на охранника, который сидит на посту, но потерял ключи от главного входа.

Для решения этой проблемы используется отслеживание объектов (object tracking). Вы создаёте объект, который следит за определённым условием (например, работает ли интерфейс, доступен ли удалённый сервер, существует ли маршрут), и привязываете его к HSRP. Если объект переходит в состояние «сбой», приоритет активного маршрутизатора снижается на заданное значение (decrement). Когда приоритет становится ниже, чем у резервного маршрутизатора, резервный становится активным.

Вариант 1: Отслеживание состояния интерфейса

Самый частый сценарий — следить за интерфейсом, который смотрит «наружу» (в интернет или в другую сеть).

Пример настройки:

! Создаём объект отслеживания №10, который следит за интерфейсом Ethernet0/1
Router(config)# track 10 interface Ethernet0/1 line-protocol
Router(config-track)# exit

! Настраиваем интерфейс, где работает HSRP
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip address 192.168.1.2 255.255.255.0
Router(config-if)# standby 1 ip 192.168.1.1
Router(config-if)# standby 1 priority 110
Router(config-if)# standby 1 preempt
! Привязываем объект 10: если он упал, снижаем приоритет на 20
Router(config-if)# standby 1 track 10 decrement 20
Router(config-if)# end

Что произойдёт: пока интерфейс Ethernet0/1 работает, приоритет маршрутизатора — 110. Он активный. Как только интерфейс Ethernet0/1 отключается (line-protocol down), объект 10 переходит в состояние Down, и приоритет автоматически снижается до 90 (110 — 20). Резервный маршрутизатор с приоритетом 100 становится активным и начинает обслуживать трафик, потому что его приоритет теперь выше.

Вариант 2: Отслеживание доступности IP-адреса (IP SLA)

Что делать, если интерфейс физически работает, но провайдер перестал маршрутизировать трафик? Отслеживание интерфейса здесь не поможет. Для таких случаев используют IP SLA — технологию, которая искусственно «пингует» (проверяет доступность) удалённый адрес (например, шлюз провайдера или DNS-сервер).

Пример настройки (общая логика):

! Создаём IP SLA операцию №57 для проверки доступности адреса 7.7.7.7
Router(config)# ip sla 57
Router(config-ip-sla)# icmp-echo 7.7.7.7
Router(config-ip-sla)# frequency 5
Router(config-ip-sla)# exit
Router(config)# ip sla schedule 57 life forever start-time now

! Создаём объект отслеживания, который следит за результатом IP SLA
Router(config)# track 1 rtr 57 reachability
Router(config-track)# exit

! Привязываем объект к HSRP так же, как в примере выше
Router(config-if)# standby 1 track 1 decrement 20

Если IP SLA перестаёт получать ответ от адреса 7.7.7.7, объект 1 переходит в состояние Down, и приоритет маршрутизатора снижается. Это гарантирует переключение даже в тех случаях, когда «интернет есть, но не работает».

Вариант 3: Отслеживание маршрута в таблице маршрутизации

Иногда нужно переключить HSRP, если из таблицы маршрутизации пропадает определённый маршрут (например, маршрут по умолчанию). Это можно сделать с помощью команды track ip route. Cisco NX-OS поддерживает такой тип отслеживания, проверяя существование и достижимость маршрута.

Пример (общая идея):

! Объект 2 отслеживает, существует ли маршрут к сети 209.165.201.0/8
Router(config)# track 2 ip route 209.165.201.0/8 reachability
Router(config-track)# exit

! Привязываем к HSRP (команды могут отличаться в зависимости от ОС)
Router(config-if)# standby 1 track 2 decrement 30

Если маршрут исчезает, приоритет HSRP падает, и происходит переключение на резервный маршрутизатор.

Вариант 4: Полное отключение HSRP группы (shutdown)

Вместо снижения приоритета можно настроить HSRP на полное отключение группы при сбое отслеживаемого объекта. Это радикальный метод, который гарантирует, что маршрутизатор не будет даже пытаться стать активным, если критическое условие нарушено.

Router(config-if)# standby 1 track 100 shutdown

В этом случае, если объект 100 переходит в состояние Down, HSRP группа на этом интерфейсе полностью деактивируется, и управление гарантированно переходит к другому маршрутизатору.

Проверка настройки: Команда show standby

Чтобы убедиться, что всё работает, используйте команду:

Router# show standby

В выводе вы увидите:

  • Текущее состояние (Active или Standby).
  • Приоритет (текущий и настроенный).
  • Информацию об отслеживаемых объектах и их состоянии.

Пример вывода для маршрутизатора, который стал резервным из-за сбоя:

Ethernet0/0 - Group 10
State is Standby
Priority 80 (configured 110)
Track object 100 state Down decrement 30
Active router is 172.16.10.2, priority 100

Здесь видно, что приоритет снизился с 110 до 80 из-за того, что объект 100 перешёл в состояние Down.


Важные нюансы для начинающих (и не только)

  1. Preempt обязателен для автоматического возврата. Без этой команды маршрутизатор с более высоким приоритетом не сможет вернуть себе роль активного после восстановления.
  2. Идеальный сценарий: Активный маршрутизатор всегда должен иметь чуть более высокий приоритет, чем резервный, чтобы избежать «качелей» (когда оба пытаются стать активными).
  3. Проверяйте настройки в эмуляторах. На виртуальных устройствах (например, в GNS3 или EVE-NG) интерфейсы могут вести себя иначе. Интерфейс может никогда не переходить в состояние down физически, только в administratively down. Для тестирования лучше использовать IP SLA или ручное отключение интерфейса.

Полезные ресурсы

  • Cisco Documentation (HSRP): официальная документация с примерами — Cisco HSRP Configuration Guide.
  • NetworkLessons (HSRP Preempt): отличное визуальное объяснение работы preempt — HSRP Preemption Explained.

Заключение

HSRP — это не просто протокол, это страховка для вашей сети. А технология object tracking превращает его из «слепого» инструмента в «умного» помощника, который видит не только свои интерфейсы, но и состояние всей сети. Настройте отслеживание правильно — и ваши пользователи никогда не узнают, что один из маршрутизаторов внезапно вышел из строя.

Прокрутить вверх