Почему ваш VPN отваливается при каждой смене ключей
Туннель, который умирает по расписанию, обычно срывается на обмене продления, а не на первичном рукопожатии. Сравните предложения, учётные данные и состояние замены.
Соединение работает час, а затем умирает, и клиент не сообщает ничего полезнее disconnected. Именно этот период — подсказка, потому что в обмене продления что-то отличается от первичного рукопожатия. Таймер лишь решает, когда вы с ним столкнётесь. Сохраните сообщения того обмена вместо итоговой метки.
Читайте этап, а не метку
В IKEv2 ассоциация IKE и ассоциация CHILD продлеваются по отдельным расписаниям. Предложение, приемлемое для первых переговоров, не становится автоматически приемлемым для вторых. Одна может завершиться, пока другую отклоняют, и получается туннель, существующий наполовину. Захватите обмен тем инструментом, который им владеет, а не строкой журнала клиента:
swanctl --list-sas
swanctl --log --level 2
ip xfrm state list
Для OpenVPN эквивалентное событие — пересогласование, которым управляют версия и настройки развёртывания. Поведение аутентификации имеет собственные режимы отказа. Значимое сообщение называет сбойный этап, и его нужно записать дословно, а не пересказывать в тикете.
Запишите и метки времени. Обрыв через фиксированный интервал после последних успешных переговоров — совсем иной вывод, чем тот, что приходит случайно во время работы, и интервал часто оказывается единственным сохранившимся доказательством.
Сравните предложение, которое срывается
Отклонённое предложение даёт понятное сообщение на отвечающей стороне. Обычная причина — различие двух концов в алгоритме, длине ключа, группе или сроке. Первые переговоры CHILD могли пройти потому, что их начал другой конец, то есть использовался его список предложений. Посмотрите на оба конца, прежде чем что-то менять.
Расхождения по сроку заслуживают особого внимания, потому что значение, показавшееся щедрым на одном конце, может заставить другой начать продление, которое он не сумеет закончить. Документация о поведении при смене ключей описывает, как запускается продление ассоциации и как два конца могут расходиться в ожиданиях по времени. Сравнивайте то, что каждый конец заявляет как поддерживаемое, а не то, что подразумевает файл конфигурации.
Старый профиль или шаблон провайдера может закрепить предложение, которого текущий выпуск уже не предлагает. Расхождение проявляется только при принудительных новых переговорах.
Отделите проблему учётных данных от недоступного партнёра
Продление, срывающееся на аутентификации, выглядит похоже в клиенте и совсем иначе на сервере. Если учётные данные перепроверяются при пересогласовании, истёкший сертификат, отозванная учётная запись или изменённый пароль дадут обрыв ровно на интервале продления, хотя все предыдущие подключения проходили. Недоступный партнёр — третья возможность, и она не даёт отказа вовсе: пакеты уходят, и никто не отвечает. Этот случай обычно следует за сменой сети, а не за таймером, поэтому проверьте, приходит ли сбой после роуминга, простоя или изменения маршрута.
Различите три случая по тому, что записал дальний конец. Отказ с причиной, сбой аутентификации и тишина — три разные меры. Перезапуск клиента схлопывает их в одно бесполезное наблюдение.
Проверьте даты сертификата и состояние учётной записи, прежде чем винить сеть. И то и другое дёшево проверить, и оба не видны в сообщении самого клиента.
Принудительно вызовите одно продление и прочитайте результат
Принудительно вызовите одно продление поддерживаемым оператором способом, вместо того чтобы ждать час следующего. Сохраняйте требуемую политику отказа нетронутой, пока это делаете. Отключение проверки или растягивание сроков до суток убирает симптом из журналов, ничего не исправляя. Это ещё и оставляет более долгий простой следующему человеку.
Когда исправление на месте, проверьте продлённый туннель и затем сделайте новый запрос из приложения. Сеансу приложения, который был жив при смене ассоциации, может понадобиться собственное восстановление, даже если туннель снова здоров. Пользователи сообщат об этом как о всё ещё сломанном VPN.
Запишите версии выпуска, согласованные таймеры и этап, который сорвался. Следующее повторение тогда можно будет сравнить с этим, а не описывать заново по памяти.