Посмотрите, как филиал возвращается после сбоя канала, и шлюз видит то, что никогда не появляется в обычный день: десятки ноутбуков приходят одновременно с одного публичного адреса. Каждый из них — законное устройство, и каждый начинает обмен IKE, который ещё не завершён. Удастся ли этот всплеск, зависит от лимитов, не имеющих ничего общего с тем, сколько сотрудников сервер может выдержать. Всплеск короткий, и это ровно та нагрузка, для которой строился путь приёма.

Проследите один ноутбук, возвращающийся в сеть

Клиент отправляет начальный запрос и ждёт, и пока обмен не завершён, шлюз держит состояние приёма для этой попытки. Другие устройства за тем же адресом приходят, пока первое ещё ждёт, и встают в очередь за лимитом, который считает адреса, а не пользователей. Снаружи симптом выглядит так: несколько пользователей подключаются, а большая группа получает тайм-аут.

Ничто в этой последовательности не является сбоем. Путь приёма делает то, для чего он настроен.

Считайте полуоткрытую работу отдельным ресурсом

strongSwan разделяет две совокупности: полностью установленные ассоциации и попытки, которые ещё подключаются или ждут обработки. Порог блокировки применяется к полуоткрытым ассоциациям, отнесённым к одному адресу партнёра, а пороги cookie действуют глобально и на каждый адрес. Эти счётчики защищают демон от расхода на неаутентифицированную работу, и это в точности форма шторма переподключений. Ничто из этого состояния не отображается в списке установленных туннелей.

Читать их как потолок пользовательских сессий — ошибка, ведущая к поднятию всего сразу. Сервер, несущий четыреста установленных туннелей, не обязан автоматически поглощать четыреста одновременных первых пакетов, потому что две затраты приходятся в разных местах.

Задержка аутентификации определяет, как долго каждая попытка остаётся в числе полуоткрытых. Медленно отвечающий бэкенд превращает короткий всплеск в длинную очередь, даже когда интенсивность прихода скромная.

swanctl --stats
swanctl --list-sas | grep -c ESTABLISHED

Прочитайте настройки приёма, прежде чем их менять

Найдите значения, которые работающий демон действительно загрузил, прежде чем составлять о них мнение. Конфигурация часто разделена между главным файлом и каталогом фрагментов для каждого плагина, поэтому значение, заданное в одном месте, может быть перекрыто в другом. Поиск ниже показывает каждый файл, где упоминаются эти настройки.

Затем решите, какое число слишком мало. Если один адрес законно представляет целый офис, порог блокировки на адрес — это значение, которое должно вместить такую концентрацию. Глобальный порог cookie защищает демон от более широкого потока, и его не следует ослаблять из-за того, что один объект переподключается. Сравните это значение на адрес с крупнейшим объектом, который у вас действительно есть.

Оставьте механизм cookie включённым. Cookie заставляют клиента доказать, что он может принимать на заявленном адресе, прежде чем демон потратит реальную работу на обмен, и их отключение не является нейтральным расширением ёмкости. Поднимайте порог только с измеренной интенсивностью прихода и заявленным бюджетом аутентификации за ним.

grep -rn -E 'block_threshold|cookie_threshold' /etc/strongswan.conf /etc/strongswan.d/
swanctl --stats | grep -i half

Планируйте возвращение, а не только устойчивое состояние

Цель доступности, считающая только установленные сессии, описывает тихий послеобеденный час, а не восстановление. Спросите вместо этого, как целевая совокупность возвращается после общего сетевого события и может ли путь приёма поглотить такую форму.

Распределение переподключения по управляемому парку часто дешевле увеличения лимитов, потому что устраняет искусственный всплеск, а не платит за него постоянно. Следите за полуоткрытым состоянием и событиями приёма рядом с успешными установлениями и считайте растущее число полуоткрытых при ровных успехах ранним предупреждением, а не курьёзом.

Справочник производителя по этим настройкам — документация strongswan.conf, где названы счётчики и выпуск, в котором появился порог cookie на адрес. Читайте раздел для установленной версии, а не самую новую страницу, потому что значения по умолчанию меняются между выпусками.

Похожие статьи