Планування вікна обслуговування 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. Перезавантаження достатньо, коли змінилися лише визначення юніта; зміненому профілю потрібен перезапуск процесу.
Очікуйте, що кожен клієнт перепідключиться, а частина сеансів застосунків не відновиться. Узгодьте чисту паузу з навантаженнями, які цього не витримують.
Прийміть або відкотіться, потім розкажіть користувачам, що змінилося
Приймання — це новий вхід плюс справжня операція плюс обмеження, що досі діють. Активний юніт і зелений рядок стану — це факти процесу. Якщо критерії не виконуються у вікні, відкочуйтеся підготовленим способом, а не відновленням одного файлу з надією; змінений бінарник або політика служби переживуть відновлення конфігурації. Збережіть будь-які зміни відкликання чи авторизації, зроблені у вікні, щоб відкат не скасував роботу з безпеки.
Запишіть версії, зміни профілю й результати приймання для наступного оператора, виведіть пілотний слухач з експлуатації та скажіть користувачам, яким профілем користуватися тепер. Вікно, що закінчується без цієї нотатки, знову стане предметом суперечки під час наступного оновлення.