IPsec Error MODE_CFG_FAILED: пул виртуальных IP адресов исчерпан
Удаленные пользователи не могут подключиться к корпоративному VPN:
- Ошибки:
IPsec Error: MODE_CFG_FAILED: Virtual IP address pool exhausted on server,cannot allocate address from poolилиreceived INTERNAL_ADDRESS_FAILURE notify error. - Фаза 1 и аутентификация проходят успешно, но клиент не получает виртуальный IP-адрес и отключается.
- Количество активных подключений достигло предельной емкости настроенной подсети (например, /24).
1. Назначение Mode Config / CP (Configuration Payload, RFC 7296)
В сценариях Remote Access клиент после успешной авторизации запрашивает параметры конфигурации сети у шлюза: внутренний виртуальный IP-адрес, маску подсети, адреса DNS и WINS серверов, доменные суффиксы. Шлюз выделяет IP из локального виртуального пула. Если в пуле не осталось свободных адресов, сервер возвращает статус INTERNAL_ADDRESS_FAILURE (Notify 36).
2. Просмотр текущего распределения пула адресов в strongSwan
# Просмотр занятых и свободных адресов в пулах
swanctl --list-pools
# Пример вывода:
# pool 'virtual_pool': 254/254 allocated, 0 free3. Расширение диапазона виртуальных IP адресов
В файле конфигурации swanctl.conf расширьте маску виртуального пула (например, с /24 до /22):
pools {
rw_pool {
# Расширение диапазона до 1022 доступных хостов
addrs = 10.100.0.0/22
dns = 1.1.1.1, 8.8.8.8
split_include = 10.0.0.0/8
}
}
connections {
roadwarrior {
pools = rw_pool
# ... остальные параметры ...
}
}4. Применение новой конфигурации пула
# Перезагрузка пулов без перезапуска активных туннелей
swanctl --load-pools
swanctl --list-pools5. Настройка маршрутизации и NAT для расширенной подсети
Не забудьте обновить правила маскарадинга и форвардинга для новой подсети в файрволе ОС:
# iptables
iptables -t nat -A POSTROUTING -s 10.100.0.0/22 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 10.100.0.0/22 -j ACCEPT Частые вопросы (FAQ)
Почему адреса в пуле не освобождаются сразу после отключения клиента?
Если клиент отключился некорректно (пропал интернет, сел аккумулятор), шлюз держит аренду адреса до тех пор, пока не сработает механизм DPD или не истечет тайм-аут аренды пула.
Можно ли выдавать статические IP конкретным пользователям?
Да. В strongSwan это настраивается через атрибуты пула в связке с RADIUS (атрибут Framed-IP-Address) или явным объявлением static lease в файле конфигурации.
Что такое Split-Include (Split-Tunneling) в Configuration Payload?
Параметр split_include передает клиенту список корпоративных маршрутов. Только трафик к этим сетям пойдет через VPN, а обычный интернет-трафик пойдет через локального провайдера клиента.
Как принудительно очистить все зависшие аренды пула?
Выполните команду 'swanctl --flush-pools' (приведет к кратковременному сбросу назначений) или перезапустите сервис strongswan.