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

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

Зафиксируйте существующую службу до изменений

Читайте установленный юнит, а не тот, который, как вам кажется, вы писали: systemctl cat [email protected] печатает юнит и все drop-in, а systemctl show [email protected] -p ExecStart -p User -p WorkingDirectory показывает, что на самом деле запущено и от чьего имени. Спрашивайте тот бинарник, который называет юнит, потому что openvpn --version из оболочки может указывать на другую сборку. Запишите путь профиля и каждый файл, на который он ссылается.

Отметьте и слушающие сокеты: ss -lunp | grep 1194 сообщает, какой адрес и протокол демон занимает сегодня. Если ответ не тот, что подразумевает профиль, его переопределяет drop-in или файл окружения, и обновление унаследует этот сюрприз.

Соберите набор восстановления, которым сможет воспользоваться другой

Набор восстановления должен быть пригоден для коллеги в 03:00 без вашего контекста. Включите действующую конфигурацию со всеми упомянутыми файлами, материалы доверия и отзыва под контролем владельца PKI, назначения и хуки по каждому клиенту, а также точные версии пакетов, установленных сегодня. Копия одного имени файла — это не конфигурация. Храните его там, куда дежурный оператор доберётся без VPN.

Контроль доступа относится и к этому набору, потому что в нём приватные ключи или учётные данные бэкенда. Не перестраивайте CA и не перевыпускайте идентичности только потому, что сменилась версия пакета.

Отрепетируйте на пилотном слушателе с настоящим клиентом

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

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

Переключитесь один раз, с пути вне туннеля

Начинайте окно с консоли или из сети управления, которая не идёт через службу. Убедитесь, что пользователей предупредили, а второй оператор знает, как откатиться. Примените подготовленное изменение через его владельца, затем перезапустите с sudo systemctl restart [email protected] и следите за журналом через journalctl -u openvpn-server@office -b -f. Перезагрузки достаточно, когда изменились только определения юнита; изменённому профилю нужен перезапуск процесса.

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

Примите или откатитесь, затем расскажите пользователям, что изменилось

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

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

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