IPsec Error TEMPORARY_FAILURE: удаленный узел исчерпал ресурсы для создания SA
При попытке установить или пересогласовать IPsec туннель соединение отклоняется:
- В журналах фиксируется ошибка:
IPsec Error: TEMPORARY_FAILURE: Remote peer out of resources to accept SAилиreceived TEMPORARY_FAILURE notify error (type 43). - Шлюз назначения отвечает ошибкой при всплеске нагрузки (DDoS, одновременный реконнект сотен филиалов).
- Высокая утилизация CPU (100%) на криптошлюзе из-за генерации ключей Диффи-Хеллмана (Diffie-Hellman).
1. Природа уведомления TEMPORARY_FAILURE (RFC 7296)
Уведомление TEMPORARY_FAILURE указывает инициатору, что ответчик в текущий момент не может обработать запрос на создание IKE_SA или CHILD_SA из-за временной нехватки системных ресурсов (исчерпание дескрипторов, таблиц SA в ядре, перегрузка криптографического процессора). Стандарт предписывает инициатору повторить попытку через случайный промежуток времени (Exponential Backoff).
2. Диагностика системных лимитов и памяти на сервере Linux
# Проверка свободной оперативной памяти и Slab кэша
free -m
slabtop -o -s c | head -n 15
# Проверка лимитов файловых дескрипторов процесса Charon
cat /proc/$(pgrep charon)/limits | grep 'Max open files'
# Проверка лимита политик XFRM в ядре
sysctl net.core.xfrm_acq_expires net.ipv4.xfrm4_gc_thresh3. Настройка троттлинга полуоткрытых сессий (DoS Protection)
В strongSwan (/etc/strongswan.d/charon.conf) увеличьте лимиты параллельных потоков обработки (Threads):
charon {
# Увеличение пула воркеров для обработки криптографии
threads = 32
# Настройка лимитов очереди
job_queues {
critical = 64
high = 512
medium = 1024
low = 2048
}
# Включение защиты от перегрузки полуоткрытыми сессиями
half_open_timeout = 5
max_halfopen = 500
}4. Оптимизация групп Диффи-Хеллмана (DH Groups)
Устаревшие группы (MODP-2048 / MODP-4096) требуют огромных вычислительных затрат CPU. Перейдите на эллиптические кривые (Curve25519 или ECP-256/384), которые в 10–50 раз быстрее рассчитывают общий секрет:
# Оптимальные предложения IKEv2 proposals (swanctl.conf)
proposals = aes256-sha256-x25519, aes256-sha256-ecp2565. Настройка параметров повторных попыток на стороне клиента
# Настройка задержки повтора при получении временного сбоя
connections {
to-server {
# Экспоненциальная задержка повтора соединения
rekey_time = 4h
over_time = 10m
}
} Частые вопросы (FAQ)
Что должен делать инициатор при получении ошибки TEMPORARY_FAILURE?
Инициатор не должен разрывать сессию навсегда. Он обязан запустить таймер задержки (Backoff timer) и повторить попытку согласования через 5–30 секунд.
Как лицензии оборудования влияют на эту ошибку?
На маршрутизаторах Cisco, Fortinet и CheckPoint ошибка TEMPORARY_FAILURE часто возвращается, если достигнут аппаратный или лицензионный лимит максимально разрешенных одновременных VPN-туннелей.
Помогает ли включение SYN Cookies / IKE Cookies?
Да, активация IKEv2 Cookie Threshold заставляет шлюз проверять подлинность IP инициатора до выделения памяти под тяжелые вычисления Diffie-Hellman.
Почему использование x25519 снижает риск ошибки TEMPORARY_FAILURE?
Кривая Curve25519 (DH Group 31) требует на порядок меньше тактов CPU на одну операцию скалярного умножения по сравнению с классическими группами RSA MODP, снижая утилизацию процессора до минимума.