IPsec Error INITIAL_CONTACT_RECEIVED: сброс устаревших ассоциаций безопасности
При переподключении клиента или перезагрузке одного из узлов происходят неожиданные сбои:
- В логах появляется запись:
IPsec Error: INITIAL_CONTACT_RECEIVED: Resetting old Phase 2 security associationsилиdeleting duplicate IKE_SA for peer. - Существующие активные VPN-подключения с тем же IP-адресом или общим логином мгновенно сбрасываются.
- Внезапный разрыв туннелей у мобильных клиентов (Road Warriors), находящихся за общим NAT-шлюзом с одним публичным адресом.
1. Назначение уведомления INITIAL_CONTACT (RFC 7296)
Уведомление INITIAL_CONTACT передается клиентом в первом запросе IKE_AUTH. Оно сигнализирует серверу: «Я только что загрузился/инициализировался и у меня нет никаких старых SA с тобой». Получив этот флаг, сервер считает любые ранее существовавшие сессии с данным идентификатором (IKE ID) или IP-адресом зависшими (zombie/stale SAs) и немедленно удаляет их для освобождения ресурсов памяти.
2. Проблема NAT и множественных клиентов за одним IP
Если несколько разных удаленных клиентов подключаются из одного офиса через один NAT, сервер может ошибочно принять подключение второго клиента за перезагрузку первого и удалить туннель первого пользователя.
3. Конфигурация параметра Unique ID в strongSwan
Отредактируйте /etc/strongswan.conf или параметры соединений:
# strongSwan.conf
charon {
# Разрешить множественные одновременные сессии для одного ID
reuse_ikesa = yes
}
# swanctl.conf
connections {
roadwarrior {
# Возможные значения: never, keep, replace, no
unique = never
# ... остальные параметры ...
}
}Значения директивы unique:
never: никогда не удалять старые SA при получении INITIAL_CONTACT с тем же ID;replace: немедленно заменять старую сессию новой (поведение по умолчанию);keep: отклонять новую попытку подключения, если старая еще активна.
4. Настройка Cisco ASA для параллельных сессий
# Разрешение одновременных логинов одного пользователя на Cisco ASA
group-policy ROADWARRIOR_POLICY attributes
vpn-simultaneous-logins 105. Проверка состояния активных IKE SA
swanctl --list-sas
ipsec statusall Частые вопросы (FAQ)
Зачем протокол IPsec вообще использует INITIAL_CONTACT?
Он предотвращает накопление зависших ассоциаций безопасности (Dead SAs) в памяти сервера, если удаленный маршрутизатор внезапно перезагрузился по питанию и не успел отправить сообщение Delete IKE SA.
Почему при обрыве связи мобильного клиента туннель восстанавливается не сразу?
Если сервер не получил INITIAL_CONTACT или настроен в режим 'unique = keep', он будет ждать истечения тайм-аута DPD (Dead Peer Detection) перед тем, как разрешить клиенту подключиться повторно.
Как идентифицируются разные клиенты за одним NAT шлюзом?
Они должны использовать уникальные сертификаты X.509 с разными Subject Alternative Names (SAN) или уникальные EAP/XAUTH логины, чтобы сервер не воспринимал их как один субъект.
Влияет ли INITIAL_CONTACT на Route-Based туннели (VTI)?
Да, при сбросе старой SA виртуальный интерфейс VTI кратковременно переходит в состояние Link-Down, что может вызывать сброс соседства протоколов динамической маршрутизации (BGP/OSPF).