Планирование окна обслуживания OpenVPN без потери хоста
Остановите туннель — потеряете сеанс. Зафиксируйте работающий юнит, соберите набор восстановления, отрепетируйте на пилотном слушателе, затем переключитесь извне VPN.
Перезапуск службы 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. Перезагрузки достаточно, когда изменились только определения юнита; изменённому профилю нужен перезапуск процесса.
Ожидайте, что каждый клиент переподключится, а часть сеансов приложений не возобновится. Согласуйте чистую паузу с нагрузками, которые этого не переносят.
Примите или откатитесь, затем расскажите пользователям, что изменилось
Приёмка — это новый вход плюс настоящая операция плюс всё ещё действующие ограничения. Активный юнит и зелёная строка состояния — это факты процесса. Если критерии не выполняются внутри окна, откатывайтесь подготовленным способом, а не восстановлением одного файла в надежде; изменённый бинарник или политика службы переживут восстановление конфигурации. Сохраните любые изменения отзыва или авторизации, сделанные в окне, чтобы откат не отменил работу по безопасности.
Запишите версии, изменения профиля и результаты приёмки для следующего оператора, выведите пилотный слушатель из эксплуатации и скажите пользователям, каким профилем пользоваться теперь. Окно, которое заканчивается без этой заметки, снова станет предметом спора при следующем обновлении.