Failover - Автоматическое переключение маршрутов
Failover routing в VyOS обеспечивает автоматическое переключение маршрутов на основе мониторинга доступности целевых хостов или сервисов, позволяя создавать отказоустойчивые сетевые решения без использования динамических протоколов маршрутизации.
Обзор
Failover routing - это механизм автоматической маршрутизации, который добавляет или удаляет статические маршруты в таблицу маршрутизации ядра на основе результатов проверки доступности (health check) целевых адресов.
Принцип работы:
- Маршруты настраиваются вручную администратором
- Маршрут устанавливается в таблицу маршрутизации только если health-check target доступен
- При недоступности target маршрут автоматически удаляется
- При восстановлении доступности маршрут возвращается
Отличия от других механизмов:
| Механизм | Автоматизация | Скорость обнаружения | Сложность | Overhead |
|---|---|---|---|---|
| Failover routes | Health checks | Средняя (секунды) | Низкая | Минимальный |
| BFD | Протокол мониторинга | Очень высокая (мс) | Средняя | Низкий |
| Динамические протоколы | Полная | Высокая | Высокая | Высокий |
| Static routes + distance | Нет | Нет | Низкая | Нет |
Преимущества:
- Простая настройка без динамических протоколов
- Автоматическое переключение при отказах
- Гибкие health check механизмы
- Поддержка различных типов проверок
- Минимальное потребление ресурсов
- Предсказуемое поведение
Недостатки:
- Медленнее чем BFD
- Требует настройки health check targets
- Не подходит для сложных топологий
- Ограниченная масштабируемость
Основные концепции
Failover Route
Failover маршрут состоит из:
- Subnet - сеть назначения
- Next-hop - следующий переход (gateway)
- Target - адрес для проверки доступности
- Check type - тип проверки (ICMP, ARP, TCP)
- Check parameters - параметры проверки
Health Check
Механизм проверки доступности:
- Периодические проверки target адресов
- Различные типы проверок (ping, ARP, TCP port)
- Настраиваемые интервалы и таймауты
- Политики проверки (all-available, any-available)
Route Installation
Логика установки маршрутов:
- Health check выполняется с заданным интервалом
- Если target доступен - маршрут устанавливается
- Если target недоступен - маршрут удаляется
- При восстановлении - маршрут возвращается
Базовая конфигурация
Простой failover маршрут
Минимальная конфигурация с ICMP health check:
configure
# Failover маршрут к сети 203.0.113.0/24
set protocols failover route 203.0.113.0/24 next-hop 192.0.2.1
set protocols failover route 203.0.113.0/24 next-hop 192.0.2.1 check target '192.0.2.1'
set protocols failover route 203.0.113.0/24 next-hop 192.0.2.1 check type 'icmp'
set protocols failover route 203.0.113.0/24 next-hop 192.0.2.1 interface 'eth0'
commit
saveЭтот маршрут:
- Устанавливается если 192.0.2.1 отвечает на ICMP ping
- Удаляется если 192.0.2.1 недоступен
- Использует интерфейс eth0 для выхода
Синтаксис команд
set protocols failover route <subnet> next-hop <ip-address>
set protocols failover route <subnet> next-hop <ip-address> check target '<target-ip>'
set protocols failover route <subnet> next-hop <ip-address> check type '<type>'
set protocols failover route <subnet> next-hop <ip-address> interface '<interface>'
set protocols failover route <subnet> next-hop <ip-address> metric <1-65535>
set protocols failover route <subnet> next-hop <ip-address> check timeout <1-300>Параметры:
<subnet>- сеть назначения в формате IP/prefix<ip-address>- next-hop адрес<target-ip>- адрес для health check<type>- тип проверки: icmp, arp, tcp<interface>- исходящий интерфейс<metric>- метрика маршрута (по умолчанию 1)<timeout>- таймаут проверки в секундах (по умолчанию 10)
Типы Health Check
ICMP (Ping)
ICMP проверка (по умолчанию) - самый распространенный тип.
set protocols failover route 10.0.0.0/8 next-hop 192.0.2.1 check target '192.0.2.1'
set protocols failover route 10.0.0.0/8 next-hop 192.0.2.1 check type 'icmp'
set protocols failover route 10.0.0.0/8 next-hop 192.0.2.1 check timeout 5Параметры ICMP:
- Отправляется 2 ICMP Echo Request пакета
- Таймаут ответа 1 секунда на пакет
- Health check успешен если получен хотя бы один ответ
- Общий timeout настраивается отдельно
Когда использовать:
- Проверка доступности gateway
- Проверка связности с удаленным хостом
- Общий мониторинг канала связи
Ограничения:
- Может быть заблокирован firewall
- Не проверяет работоспособность сервиса
- Может давать ложные срабатывания при ICMP rate limiting
ARP
ARP проверка - для локальных сетей (Layer 2).
set protocols failover route 172.16.0.0/12 next-hop 192.168.1.1 check target '192.168.1.1'
set protocols failover route 172.16.0.0/12 next-hop 192.168.1.1 check type 'arp'
set protocols failover route 172.16.0.0/12 next-hop 192.168.1.1 interface 'eth1'Параметры ARP:
- Отправляется 2 ARP Request пакета
- Таймаут ответа 1 секунда на пакет
- Health check успешен если получен хотя бы один ARP Reply
- Работает только в локальной подсети
Когда использовать:
- Проверка локального gateway
- Мониторинг устройств в той же L2 сети
- Когда ICMP заблокирован
Ограничения:
- Только для локальной подсети
- Не работает через роутеры
- Проверяет только Layer 2 доступность
TCP Port
TCP проверка - проверка доступности конкретного сервиса.
set protocols failover route 198.51.100.0/24 next-hop 203.0.113.1 check target '203.0.113.10'
set protocols failover route 198.51.100.0/24 next-hop 203.0.113.1 check type 'tcp'
set protocols failover route 198.51.100.0/24 next-hop 203.0.113.1 check port 443
set protocols failover route 198.51.100.0/24 next-hop 203.0.113.1 interface 'eth0'Параметры TCP:
- Проверяет возможность установки TCP соединения
- Требует указания порта через
check port <1-65535> - Health check успешен если порт открыт (TCP handshake завершен)
- Соединение сразу закрывается после проверки
Когда использовать:
- Проверка работоспособности web-сервера (80, 443)
- Мониторинг конкретных сервисов
- Когда важна не только сетевая, но и сервисная доступность
Ограничения:
- Требует открытого TCP порта
- Медленнее чем ICMP/ARP
- Может быть заблокирован firewall
Пример с HTTPS сервером:
# Маршрут к серверам активен только если web-сервер работает
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check target '10.100.1.100'
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check type 'tcp'
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check port 443Множественные target адреса
Поддержка проверки нескольких целевых адресов с различными политиками.
Multiple targets с политикой any-available
По умолчанию: маршрут активен если доступен хотя бы один target.
set protocols failover route 10.20.0.0/16 next-hop 192.0.2.1 check target '8.8.8.8'
set protocols failover route 10.20.0.0/16 next-hop 192.0.2.1 check target '8.8.4.4'
set protocols failover route 10.20.0.0/16 next-hop 192.0.2.1 check policy 'any-available'Логика any-available:
- Маршрут устанавливается если доступен любой из target
- Маршрут удаляется только если недоступны все target
- Полезно для проверки общей связности канала
Multiple targets с политикой all-available
Маршрут активен только если доступны все targets.
set protocols failover route 10.30.0.0/16 next-hop 192.0.2.5 check target '10.30.1.1'
set protocols failover route 10.30.0.0/16 next-hop 192.0.2.5 check target '10.30.2.1'
set protocols failover route 10.30.0.0/16 next-hop 192.0.2.5 check target '10.30.3.1'
set protocols failover route 10.30.0.0/16 next-hop 192.0.2.5 check policy 'all-available'Логика all-available:
- Маршрут устанавливается только если доступны все targets
- Маршрут удаляется если хотя бы один target недоступен
- Полезно для критичных путей требующих полной доступности
Выбор политики:
any-available- для общей проверки связности (по умолчанию)all-available- для гарантии полной доступности инфраструктуры
Failover сценарии
Dual ISP Failover
Автоматическое переключение между двумя интернет-каналами.
Топология:
Internet
|
+---------+---------+
| |
ISP1 (Primary) ISP2 (Backup)
203.0.113.1/30 198.51.100.1/30
| |
eth0 eth1
| |
+------- VyOS -------+
|
LAN (192.168.1.0/24)Конфигурация:
configure
# Интерфейсы ISP
set interfaces ethernet eth0 address '203.0.113.2/30'
set interfaces ethernet eth0 description 'ISP1-Primary'
set interfaces ethernet eth1 address '198.51.100.2/30'
set interfaces ethernet eth1 description 'ISP2-Backup'
# Primary ISP - failover маршрут (metric 10)
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '1.1.1.1'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check policy 'any-available'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check timeout 10
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 metric 10
# Backup ISP - failover маршрут (metric 20)
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check target '1.1.1.1'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check policy 'any-available'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check timeout 10
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 interface 'eth1'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 metric 20
# NAT для обоих ISP
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '192.168.1.0/24'
set nat source rule 100 translation address 'masquerade'
set nat source rule 200 outbound-interface name 'eth1'
set nat source rule 200 source address '192.168.1.0/24'
set nat source rule 200 translation address 'masquerade'
commit
saveЛогика работы:
- Primary ISP (metric 10) устанавливается если доступны DNS сервера
- Backup ISP (metric 20) устанавливается параллельно
- Ядро выбирает маршрут с меньшей метрикой (Primary)
- При отказе Primary маршрут удаляется, трафик идет через Backup
- При восстановлении Primary маршрут возвращается, трафик переключается обратно
Active-Backup Gateway
Failover между двумя gateway в одной сети.
Топология:
Gateway1 (Primary) Gateway2 (Backup)
192.168.1.1 192.168.1.2
| |
+----------+------------+
|
VyOS
eth0: 192.168.1.10
|
LAN: 192.168.10.0/24Конфигурация:
configure
# Primary gateway
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.1
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.1 check target '192.168.1.1'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.1 check type 'arp'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.1 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.1 metric 10
# Backup gateway
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.2
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.2 check target '192.168.1.2'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.2 check type 'arp'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.2 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 192.168.1.2 metric 20
commit
saveИспользование ARP проверки:
- Быстрая проверка локальных gateway
- Не зависит от ICMP блокировок
- Проверяет только L2 доступность
Multi-site VPN Failover
Автоматическое переключение между VPN туннелями.
Конфигурация:
configure
# Primary VPN tunnel (через ISP1)
set protocols failover route 10.20.0.0/16 next-hop 10.100.1.1
set protocols failover route 10.20.0.0/16 next-hop 10.100.1.1 check target '10.20.1.1'
set protocols failover route 10.20.0.0/16 next-hop 10.100.1.1 check type 'icmp'
set protocols failover route 10.20.0.0/16 next-hop 10.100.1.1 interface 'tun0'
set protocols failover route 10.20.0.0/16 next-hop 10.100.1.1 metric 10
# Backup VPN tunnel (через ISP2)
set protocols failover route 10.20.0.0/16 next-hop 10.100.2.1
set protocols failover route 10.20.0.0/16 next-hop 10.100.2.1 check target '10.20.1.1'
set protocols failover route 10.20.0.0/16 next-hop 10.100.2.1 check type 'icmp'
set protocols failover route 10.20.0.0/16 next-hop 10.100.2.1 interface 'tun1'
set protocols failover route 10.20.0.0/16 next-hop 10.100.2.1 metric 20
commit
saveПримеры для облачных провайдеров
Yandex Cloud: Dual ISP с NAT Failover
Конфигурация для Yandex Cloud с двумя публичными IP адресами.
Архитектура:
Yandex Cloud VPC: 10.128.0.0/24
VyOS Instance:
- eth0 (внешний): 10.128.0.10
- Public IP1: 51.250.10.20 (Primary)
- Public IP2: 51.250.10.21 (Backup)
- eth1 (внутренний): 192.168.1.1/24Полная конфигурация:
configure
# Интерфейсы
set interfaces ethernet eth0 address '10.128.0.10/24'
set interfaces ethernet eth0 description 'Yandex-Cloud-External'
set interfaces ethernet eth1 address '192.168.1.1/24'
set interfaces ethernet eth1 description 'Internal-Network'
# Default route через Yandex Cloud gateway
set protocols static route 0.0.0.0/0 next-hop 10.128.0.1
# Failover маршруты для проверки публичной связности
# Проверяем доступность через Primary IP
set protocols failover route 8.8.8.8/32 next-hop 10.128.0.1
set protocols failover route 8.8.8.8/32 next-hop 10.128.0.1 check target '8.8.8.8'
set protocols failover route 8.8.8.8/32 next-hop 10.128.0.1 check type 'icmp'
set protocols failover route 8.8.8.8/32 next-hop 10.128.0.1 check timeout 5
set protocols failover route 8.8.8.8/32 next-hop 10.128.0.1 interface 'eth0'
# Source NAT через Primary IP (приоритет выше)
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '192.168.1.0/24'
set nat source rule 100 translation address '51.250.10.20'
set nat source rule 100 description 'NAT-Primary-IP'
# Source NAT через Backup IP (приоритет ниже, используется при отказе Primary)
set nat source rule 200 outbound-interface name 'eth0'
set nat source rule 200 source address '192.168.1.0/24'
set nat source rule 200 translation address '51.250.10.21'
set nat source rule 200 description 'NAT-Backup-IP'
# Destination NAT для входящих соединений
set nat destination rule 10 destination address '51.250.10.20'
set nat destination rule 10 destination port '443'
set nat destination rule 10 inbound-interface name 'eth0'
set nat destination rule 10 protocol 'tcp'
set nat destination rule 10 translation address '192.168.1.100'
set nat destination rule 10 translation port '443'
commit
saveПроверка:
# Статус failover маршрутов
show ip route failover
# Проверка NAT
show nat source statistics
# Мониторинг переключений
monitor log tailVK Cloud: Multi-AZ Gateway Failover
Failover между gateway в разных зонах доступности VK Cloud.
Архитектура:
VK Cloud VPC: 10.0.0.0/16
Availability Zone 1:
- Gateway1: 10.0.1.1 (Primary)
- VyOS eth0: 10.0.1.10
Availability Zone 2:
- Gateway2: 10.0.2.1 (Backup)
- VyOS eth1: 10.0.2.10Конфигурация:
configure
# Интерфейсы в разных AZ
set interfaces ethernet eth0 address '10.0.1.10/24'
set interfaces ethernet eth0 description 'VK-Cloud-AZ1'
set interfaces ethernet eth1 address '10.0.2.10/24'
set interfaces ethernet eth1 description 'VK-Cloud-AZ2'
# Failover default route через AZ1 (Primary)
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 check target '10.0.1.1'
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 check policy 'all-available'
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 10.0.1.1 metric 10
# Failover default route через AZ2 (Backup)
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 check target '10.0.2.1'
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 check policy 'all-available'
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 interface 'eth1'
set protocols failover route 0.0.0.0/0 next-hop 10.0.2.1 metric 20
# Policy routing для симметричного трафика
set policy route PBR rule 10 source address '10.0.1.0/24'
set policy route PBR rule 10 set table '100'
set policy route PBR rule 20 source address '10.0.2.0/24'
set policy route PBR rule 20 set table '200'
# Таблицы маршрутизации для разных AZ
set protocols static table 100 route 0.0.0.0/0 next-hop 10.0.1.1
set protocols static table 200 route 0.0.0.0/0 next-hop 10.0.2.1
commit
saveПроверка Multi-AZ failover:
# Проверка маршрутов в main table
show ip route
# Проверка policy routing
show policy route statistics
# Проверка доступности обоих AZ
ping 10.0.1.1 source-address 10.0.1.10
ping 10.0.2.1 source-address 10.0.2.10Комбинированный сценарий: VPN + ISP Failover
Failover между VPN каналом и прямым ISP маршрутом.
Конфигурация:
configure
# VPN tunnel (Primary) - через WireGuard
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1 check target '10.50.1.1'
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1 check type 'icmp'
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1 check timeout 5
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1 interface 'wg0'
set protocols failover route 10.50.0.0/16 next-hop 10.200.0.1 metric 10
# Direct ISP route (Backup) - через интернет
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50 check target '10.50.1.1'
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50 check type 'tcp'
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50 check port 443
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50 interface 'eth0'
set protocols failover route 10.50.0.0/16 next-hop 203.0.113.50 metric 50
commit
saveЛогика:
- Primary: трафик через защищенный VPN туннель
- Backup: при отказе VPN трафик через незащищенный интернет
- TCP проверка на backup подтверждает доступность конечного сервиса
Расширенная конфигурация
Custom Timeout и Interval
Настройка таймаутов для различных сценариев.
Быстрое переключение:
# Агрессивные проверки для критичных каналов
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check target '10.100.1.1'
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check type 'icmp'
set protocols failover route 10.100.0.0/16 next-hop 192.0.2.10 check timeout 3Быстрое обнаружение (3 секунды), но больше overhead.
Медленное переключение:
# Консервативные проверки для стабильности
set protocols failover route 10.200.0.0/16 next-hop 192.0.2.20
set protocols failover route 10.200.0.0/16 next-hop 192.0.2.20 check target '10.200.1.1'
set protocols failover route 10.200.0.0/16 next-hop 192.0.2.20 check type 'icmp'
set protocols failover route 10.200.0.0/16 next-hop 192.0.2.20 check timeout 30Медленное обнаружение (30 секунд), избегает ложных срабатываний.
Метрики для приоритизации
Использование метрик для fine-grained контроля.
# Tier 1: Самый быстрый канал (fiber)
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 metric 10
# Tier 2: Средний канал (cable)
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 metric 20
# Tier 3: Медленный канал (DSL backup)
set protocols failover route 0.0.0.0/0 next-hop 192.0.2.1
set protocols failover route 0.0.0.0/0 next-hop 192.0.2.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 192.0.2.1 metric 30
# Tier 4: Последний резерв (4G/LTE)
set protocols failover route 0.0.0.0/0 next-hop 10.64.0.1
set protocols failover route 0.0.0.0/0 next-hop 10.64.0.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 10.64.0.1 metric 100Каскадный failover с четкой иерархией приоритетов.
Интеграция с Firewall
Failover с учетом firewall зон.
configure
# Failover через разные firewall зоны
set firewall zone WAN1 interface 'eth0'
set firewall zone WAN2 interface 'eth1'
# Failover routes
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 metric 10
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 interface 'eth1'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 metric 20
# Firewall правила применяются автоматически при переключении
set firewall zone WAN1 from LAN firewall name LAN-to-WAN
set firewall zone WAN2 from LAN firewall name LAN-to-WAN
commit
saveМониторинг и верификация
Просмотр failover маршрутов
Все failover маршруты:
show protocols failoverВывод:
Failover routes:
route 0.0.0.0/0 next-hop 203.0.113.1
check target: 8.8.8.8
check type: icmp
check timeout: 10
interface: eth0
metric: 10
status: active
route 0.0.0.0/0 next-hop 198.51.100.1
check target: 8.8.8.8
check type: icmp
check timeout: 10
interface: eth1
metric: 20
status: standbyАктивные маршруты в таблице:
show ip routeВидны только failover маршруты, прошедшие health check.
Детали конкретного маршрута:
show ip route 0.0.0.0/0Вывод:
Routing entry for 0.0.0.0/0
Known via "failover", distance 10, metric 10, best
Last update 00:05:23 ago
* 203.0.113.1, via eth0Мониторинг Health Check
Статус проверок:
show protocols failover route 0.0.0.0/0 next-hop 203.0.113.1Вывод:
Route: 0.0.0.0/0
Next-hop: 203.0.113.1
Check targets:
8.8.8.8 - UP (last check: 2s ago, rtt: 15ms)
1.1.1.1 - UP (last check: 2s ago, rtt: 12ms)
Check policy: any-available
Check type: icmp
Check timeout: 10s
Route status: ACTIVE
Uptime: 2h 15m 42sЛоги failover событий:
show log | match failoverВывод:
Oct 15 10:23:45 vyos-gw failover[1234]: Route 0.0.0.0/0 via 203.0.113.1: target 8.8.8.8 DOWN
Oct 15 10:23:45 vyos-gw failover[1234]: Route 0.0.0.0/0 via 203.0.113.1: REMOVED from table
Oct 15 10:25:12 vyos-gw failover[1234]: Route 0.0.0.0/0 via 203.0.113.1: target 8.8.8.8 UP
Oct 15 10:25:12 vyos-gw failover[1234]: Route 0.0.0.0/0 via 203.0.113.1: INSTALLED to tableМониторинг в реальном времени
Непрерывный мониторинг маршрутов:
monitor protocols failoverМониторинг логов:
monitor log | match failoverPing мониторинг target:
monitor ping 8.8.8.8Статистика переключений
Количество failover событий:
show protocols failover statisticsВывод:
Failover Statistics:
Total routes configured: 2
Active routes: 1
Standby routes: 1
Route 0.0.0.0/0 via 203.0.113.1:
Uptime: 2h 15m 42s
Total checks: 1521
Successful checks: 1521
Failed checks: 0
Failover count: 0
Route 0.0.0.0/0 via 198.51.100.1:
Uptime: 0s (standby)
Total checks: 1521
Successful checks: 1521
Failed checks: 0
Failover count: 0Устранение неполадок
Failover маршрут не устанавливается
Проблема: Маршрут не появляется в таблице маршрутизации.
Диагностика:
# Проверка конфигурации
show configuration commands | match failover
# Проверка доступности target
ping <target-ip> source-address <nexthop-interface-ip>
# Проверка интерфейса
show interfaces <interface>
# Проверка firewall
show firewallТипичные причины:
- Target недоступен
- Интерфейс down
- Firewall блокирует health check пакеты
- Неверный target IP
- Routing loop
Решение:
# Временно увеличить timeout
set protocols failover route <subnet> next-hop <ip> check timeout 30
# Изменить тип проверки
set protocols failover route <subnet> next-hop <ip> check type arp
# Проверить другой target
set protocols failover route <subnet> next-hop <ip> check target '<alternative-ip>'
commitЧастые переключения (flapping)
Проблема: Маршрут постоянно добавляется и удаляется.
Диагностика:
# Мониторинг логов
show log | match failover | tail -50
# Проверка latency к target
monitor ping <target-ip>
# Проверка packet loss
ping <target-ip> count 100Типичные причины:
- Нестабильный канал связи
- Слишком агрессивный timeout
- Target перегружен
- ICMP rate limiting
- Сетевые проблемы
Решение - увеличение timeout:
# Увеличить timeout
set protocols failover route <subnet> next-hop <ip> check timeout 30
# Добавить hysteresis (использовать all-available с несколькими targets)
set protocols failover route <subnet> next-hop <ip> check target '<target1>'
set protocols failover route <subnet> next-hop <ip> check target '<target2>'
set protocols failover route <subnet> next-hop <ip> check target '<target3>'
set protocols failover route <subnet> next-hop <ip> check policy 'all-available'
commitМедленное переключение
Проблема: Failover происходит слишком медленно.
Диагностика:
# Проверка текущего timeout
show protocols failover route <subnet> next-hop <ip>Решение:
# Уменьшить timeout
set protocols failover route <subnet> next-hop <ip> check timeout 5
# Использовать более быстрый тип проверки (ARP вместо ICMP)
set protocols failover route <subnet> next-hop <ip> check type arp
commitАльтернатива - BFD:
Для очень быстрого переключения (миллисекунды) используйте BFD вместо failover:
set protocols bfd peer <nexthop-ip> interval transmit 300
set protocols bfd peer <nexthop-ip> interval receive 300
set protocols bfd peer <nexthop-ip> interval multiplier 3
set protocols static route <subnet> next-hop <ip> bfd
commitHealth check не работает
Проблема: Health check всегда показывает DOWN.
Диагностика ICMP:
# Проверка ICMP с source interface
ping <target> source-address <interface-ip>
# Tcpdump для анализа
monitor traffic interface <interface> filter icmpДиагностика ARP:
# Проверка ARP таблицы
show arp
# Очистка ARP cache
reset arp interface <interface> address <target>Диагностика TCP:
# Проверка TCP порта
telnet <target> <port>
# Проверка с curl
run curl -v --connect-timeout 5 http://<target>:<port>Типичные причины:
- Firewall на target блокирует ICMP
- Target не отвечает на ARP
- TCP порт закрыт или filtered
- Source routing проблемы
- Asymmetric routing
Решение:
# Изменить тип проверки
set protocols failover route <subnet> next-hop <ip> check type tcp
set protocols failover route <subnet> next-hop <ip> check port 443
# Или использовать другой target
set protocols failover route <subnet> next-hop <ip> check target '<new-target>'
commitАсимметричная маршрутизация
Проблема: Входящий и исходящий трафик идут разными путями.
Диагностика:
# Traceroute в обе стороны
traceroute <destination>
# На удаленном хосте
traceroute <local-address>Решение - Policy Based Routing:
# Маршрутизация на основе source address
set policy route PBR rule 10 source address '<subnet>'
set policy route PBR rule 10 set table 100
set protocols static table 100 route 0.0.0.0/0 next-hop <specific-gateway>
# Применение к интерфейсу
set interfaces ethernet <interface> policy route PBR
commitЛучшие практики
Выбор Health Check параметров
Timeout:
- 3-5 секунд - для критичных каналов, требующих быстрого failover
- 10 секунд - стандартное значение (по умолчанию)
- 20-30 секунд - для нестабильных каналов, избегание flapping
Тип проверки:
- ICMP - для общей проверки связности (стандартный выбор)
- ARP - для локальных gateway в той же L2 сети
- TCP - для проверки конкретного сервиса
Target выбор:
- Используйте стабильные, всегда доступные targets (8.8.8.8, 1.1.1.1)
- Для критичных маршрутов используйте несколько targets с all-available
- Для общих маршрутов используйте any-available
Метрики и приоритеты
Правило: Разница в метриках должна быть достаточной для четкого приоритета.
# Хорошо: четкая иерархия
metric 10, 20, 30, 50, 100
# Плохо: слишком близкие значения
metric 10, 11, 12, 13Рекомендуемая схема:
- Primary: 10
- Secondary: 20
- Tertiary: 30
- Emergency backup: 100
Избегание Flapping
Используйте hysteresis:
# Несколько targets с all-available
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '1.1.1.1'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check policy 'all-available'Маршрут удаляется только если все targets недоступны.
Адекватный timeout:
# Не слишком агрессивный
set protocols failover route <subnet> next-hop <ip> check timeout 15Документирование
Используйте description:
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 description 'Primary-ISP-Fiber-1Gbps'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 description 'Backup-ISP-Cable-100Mbps'Мониторинг и алертинг
Настройка syslog:
set system syslog global facility protocols level info
set system syslog host 192.168.1.100 facility protocols level warningЛогирование failover событий:
# Все события попадают в syslog
show log | match failoverТестирование Failover
Регулярное тестирование:
# Симуляция отказа - временное отключение интерфейса
set interfaces ethernet eth0 disable
commit
# Проверка переключения
show ip route
# Восстановление
delete interfaces ethernet eth0 disable
commitТестирование с контролируемым трафиком:
# Непрерывный ping во время теста
monitor ping 8.8.8.8Комбинирование с другими технологиями
Failover + VRRP:
- VRRP для локального gateway redundancy
- Failover для upstream маршрутов
Failover + NAT:
- Убедитесь что NAT правила применяются к обоим интерфейсам
- Используйте masquerade для автоматической адаптации
Failover + VPN:
- Health check должен проверять конечный хост за VPN
- Используйте TCP check для критичных VPN сервисов
Сравнение с альтернативами
Failover vs Static Routes + Distance
Static routes + distance:
set protocols static route 0.0.0.0/0 next-hop 203.0.113.1 distance 10
set protocols static route 0.0.0.0/0 next-hop 198.51.100.1 distance 20Проблемы:
- Нет автоматического failover
- Backup route активируется только если Primary nexthop unreachable (not pingable)
- Медленное обнаружение отказов
Failover routes:
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.1 check target '8.8.8.8' metric 10
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.1 check target '8.8.8.8' metric 20Преимущества:
- Активный мониторинг
- Быстрое обнаружение
- Проверка реальной связности
Failover vs BFD
BFD:
set protocols bfd peer 203.0.113.1 interval transmit 300
set protocols static route 0.0.0.0/0 next-hop 203.0.113.1 bfdПреимущества BFD:
- Очень быстрое обнаружение (миллисекунды)
- Протокол мониторинга
- Двунаправленная проверка
Преимущества Failover:
- Проще в настройке
- Не требует поддержки BFD на nexthop
- Гибкие типы проверок (ICMP, ARP, TCP)
- Может проверять end-to-end связность
Когда использовать BFD:
- Критичные приложения требующие sub-second failover
- Nexthop поддерживает BFD
- Нужна двунаправленная проверка
Когда использовать Failover:
- Nexthop не поддерживает BFD
- Нужна проверка конкретного сервиса (TCP)
- Простота важнее скорости
Failover vs динамические протоколы (OSPF/BGP)
OSPF/BGP:
- Автоматическая маршрутизация
- Быстрая конвергенция
- Масштабируемость
Failover routes:
- Ручная настройка
- Контролируемое поведение
- Простота
Когда использовать Failover:
- Простые топологии (2-3 маршрута)
- Stub networks
- ISP не поддерживает BGP
- Нужен полный контроль
Когда использовать динамические протоколы:
- Сложные топологии
- Множественные пути
- Требуется быстрая адаптация
- Enterprise сети
Производительность и ограничения
Производительность
Health check overhead:
- ICMP: минимальный (2 пакета каждые N секунд)
- ARP: минимальный (2 пакета каждые N секунд)
- TCP: средний (полный 3-way handshake)
CPU impact:
- Незначительный для 10-20 failover маршрутов
- Возрастает с количеством маршрутов и частотой проверок
Рекомендации:
- До 50 failover маршрутов на стандартном оборудовании
- Timeout ≥ 5 секунд для минимального overhead
Ограничения
Технические:
- Нет поддержки IPv6 failover routes (только IPv4)
- Один check type на маршрут
- Ограниченные типы проверок (ICMP, ARP, TCP)
Операционные:
- Скорость переключения: секунды (зависит от timeout)
- Нет stateful failover для TCP соединений
- Может вызывать асимметричную маршрутизацию
Интеграция с системами мониторинга
SNMP Monitoring
configure
# Включение SNMP
set service snmp community public authorization ro
set service snmp community public network 192.168.1.0/24
set service snmp listen-address 192.168.1.1
commitМониторинг через SNMP:
- IP-MIB::ipRouteTable - таблица маршрутизации
- IF-MIB::ifOperStatus - статус интерфейсов
Syslog Integration
# Отправка failover событий на syslog сервер
set system syslog host 192.168.1.100 facility protocols level info
set system syslog host 192.168.1.100 port 514
set system syslog host 192.168.1.100 protocol udpCustom Scripts
Интеграция с event handler для автоматических действий:
set system event-handler event failover filter pattern 'failover.*REMOVED'
set system event-handler event failover script path '/config/scripts/failover-alert.sh'Пример скрипта /config/scripts/failover-alert.sh:
#!/bin/bash
# Отправка уведомления при failover
MESSAGE="Failover event detected on $(hostname) at $(date)"
echo "$MESSAGE" | mail -s "VyOS Failover Alert" admin@example.comПримеры полной конфигурации
Enterprise Branch Office
Полная конфигурация для филиала с dual ISP и VPN.
configure
# Интерфейсы
set interfaces ethernet eth0 address '203.0.113.10/30'
set interfaces ethernet eth0 description 'ISP1-Primary'
set interfaces ethernet eth1 address '198.51.100.10/30'
set interfaces ethernet eth1 description 'ISP2-Backup'
set interfaces ethernet eth2 address '192.168.100.1/24'
set interfaces ethernet eth2 description 'LAN'
# Failover default routes
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 check target '1.1.1.1'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 check policy 'any-available'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 interface 'eth0'
set protocols failover route 0.0.0.0/0 next-hop 203.0.113.9 metric 10
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 check target '8.8.8.8'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 check target '1.1.1.1'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 check policy 'any-available'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 check type 'icmp'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 interface 'eth1'
set protocols failover route 0.0.0.0/0 next-hop 198.51.100.9 metric 20
# NAT
set nat source rule 100 outbound-interface name 'eth0'
set nat source rule 100 source address '192.168.100.0/24'
set nat source rule 100 translation address 'masquerade'
set nat source rule 200 outbound-interface name 'eth1'
set nat source rule 200 source address '192.168.100.0/24'
set nat source rule 200 translation address 'masquerade'
# Firewall
set firewall zone LAN interface 'eth2'
set firewall zone WAN1 interface 'eth0'
set firewall zone WAN2 interface 'eth1'
set firewall zone WAN1 from LAN firewall name LAN-to-WAN
set firewall zone WAN2 from LAN firewall name LAN-to-WAN
set firewall name LAN-to-WAN default-action accept
set firewall name LAN-to-WAN enable-default-log
# Syslog
set system syslog global facility protocols level info
set system syslog host 192.168.100.50 facility all level warning
commit
saveСледующие шаги
- Static Routes - базовая статическая маршрутизация
- OSPF - динамическая маршрутизация в enterprise
- BGP - для подключения к ISP
- BFD - быстрое обнаружение отказов
- VPN - для защищенных туннелей
- High Availability - VRRP для gateway redundancy