Отказоустойчивые IPsec кластеры: настройка Stateful Failover без разрыва сессий
- При падении основного VPN-шлюза происходит обрыв всех пользовательских сессий, требующий повторной аутентификации.
- Процесс переключения на резервный шлюз занимает от 1 до 3 минут из-за долгого согласования IKE SA заново.
- Рассинхронизация счетчиков Sequence Numbers в криптографических ассоциациях кластера.
- Split-Brain состояние шлюзов, приводящее к конфликту IPsec политик и IP-адресов.
1. Принцип работы IPsec Stateful Failover
В схеме Active/Standby основной маршрутизатор в реальном времени синхронизирует криптографические ключи, таблицы трансляций и счетчики пакетов (IKE/ESP Security Associations) с резервным узлом через выделенный интерконнект-канал (Cluster Link). При аварии резервный узел мгновенно перехватывает плавающий виртуальный IP-адрес без пересогласования сессий.
2. Настройка IPsec High Availability на Cisco ASA (Active/Standby)
! 1. Настройка управляющего интерфейса отказоустойчивости
failover
failover lan unit primary
failover lan interface FO_LINK GigabitEthernet0/3
failover link FO_STATE GigabitEthernet0/4
failover interface ip FO_LINK 172.16.250.1 255.255.255.252 standby 172.16.250.2
failover interface ip FO_STATE 172.16.250.5 255.255.255.252 standby 172.16.250.6
! 2. Включение репликации криптографических сессий
failover ipsec cluster
! 3. Мониторинг интерфейсов
failover monitor outside
failover monitor inside3. Настройка отказоустойчивости на базе Linux strongSwan + Keepalived
В файле /etc/keepalived/keepalived.conf (Основная нода):
vrrp_sync_group VG1 {
group {
VRRP_WAN
VRRP_LAN
}
}
vrrp_instance VRRP_WAN {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass SecretHaPass1
}
virtual_ipaddress {
198.51.100.1/24 dev eth0
}
notify_master "/etc/strongswan/ha-active.sh"
notify_backup "/etc/strongswan/ha-passive.sh"
}4. Синхронизация сессий ядра Linux через CT-Sync (conntrackd)
В файле /etc/conntrackd/conntrackd.conf активируйте синхронизацию состояний:
Sync {
Mode FTFW {
ResendQueueSize 131072
CommitTimeout 180
}
UDP {
IPv4_address 172.16.250.1
IPv4_Destination_Address 172.16.250.2
Port 3780
Interface eth3
}
}5. Проверка состояния кластера
# На Cisco ASA
show failover
show crypto ipsec sa
# В Linux
conntrackd -s
ip addr show dev eth0 Частые вопросы (FAQ)
Что происходит со счетчиками Sequence Numbers при переключении шлюза?
Механизм кластеризации синхронизирует счетчики с небольшим упреждением (окном). Резервный узел подхватывает отправку пакетов с запасом по Sequence Number, предотвращая срабатывание защиты Anti-Replay на стороне клиента.
Как избежать проблемы Split-Brain в двухнодовом кластере?
Используйте как минимум два физически независимых канала для передачи Heartbeat-сигналов и настраивайте Quorum-свидетеля (Witness) или пинг внешнего надежного шлюза.
Поддерживается ли Stateful Failover для динамических туннелей WireGuard?
Для WireGuard классический Stateful Failover не требуется: WireGuard не имеет постоянного состояния рукопожатия. Достаточно синхронизировать приватные ключи и конфигурации и переключить виртуальный IP через Keepalived.
Какое время переключения считается нормальным для IPsec HA?
При корректно настроенном аппаратном кластере (Cisco ASA/FortiGate) переключение происходит за 200–500 миллисекунд без потери единого TCP-пакета.