Ein OpenVPN-Wartungsfenster planen, ohne den Host zu verlieren
Tunnel stoppen, Sitzung verlieren. Die laufende Unit erfassen, ein Wiederherstellungsset bauen, auf einem Pilot-Listener proben und dann von außerhalb des VPN umschalten.
Ein Neustart des VPN-Dienstes beendet jede Sitzung, die ihn nutzt, deshalb muss das Fenster um Gespräche herum gebaut werden und nicht um den Paketmanager. Nutzer brauchen genug Vorlauf, um sensible Arbeit abzuschließen, und Sie brauchen einen Weg zurück, der nicht von dem Tunnel abhängt, den Sie gleich stoppen. Alles andere im Playbook existiert, damit diese beiden Tatsachen beherrschbar bleiben. Lassen Sie eine davon weg, und ein Routine-Update wird zu einem Ausfall ohne Ausweg.
Die Reihenfolge unten ist bewusst gewählt: jede Stufe erzeugt etwas, das die nächste braucht, und jede Stufe kann die Änderung beenden, bevor sie beginnt.
Erfassen Sie den Dienst, der existiert, bevor Sie ihn ändern
Lesen Sie die installierte Unit und nicht die, von der Sie glauben, sie geschrieben zu haben: systemctl cat [email protected] gibt die Unit und alle Drop-ins aus, und systemctl show [email protected] -p ExecStart -p User -p WorkingDirectory zeigt, was tatsächlich läuft und unter welcher Identität. Fragen Sie das Binary ab, das die Unit nennt, denn openvpn --version aus einer Shell kann sich auf einen anderen Build auflösen. Notieren Sie den Profilpfad und jede Datei, auf die er verweist.
Beachten Sie auch die lauschenden Sockets: ss -lunp | grep 1194 sagt Ihnen, welche Adresse und welches Protokoll der Daemon heute besitzt. Wenn die Antwort nicht die ist, die das Profil nahelegt, überschreibt ein Drop-in oder eine Umgebungsdatei sie, und das Upgrade erbt diese Überraschung.
Stellen Sie ein Wiederherstellungsset zusammen, das auch jemand anderes nutzen kann
Das Wiederherstellungsset muss um 03:00 von einer Kollegin ohne Ihren Kontext nutzbar sein. Nehmen Sie die effektive Konfiguration mit jeder referenzierten Datei auf, das Vertrauens- und Widerrufsmaterial unter Kontrolle des PKI-Eigentümers, die Zuweisungen und Hooks pro Client sowie die genauen heute installierten Paketversionen. Eine Kopie eines Dateinamens ist keine Konfiguration. Lagern Sie es an einem Ort, den der Rufbereitschafts-Operator ohne das VPN erreicht.
Zugriffskontrollen gelten auch für dieses Set, denn es enthält private Schlüssel oder Backend-Zugangsdaten. Bauen Sie die CA nicht neu und stellen Sie keine Identitäten neu aus, nur weil sich eine Paketversion geändert hat.
Proben Sie auf einem Pilot-Listener mit einem echten Client
Betreiben Sie den Kandidaten-Release auf einem separaten Listener mit eigenem Port- und Adressplan, nicht neben der Produktionsinstanz auf demselben Socket. Verbinden Sie sich mit den Client-Engines, die Ihre Nutzer tatsächlich einsetzen, auch mit der unangenehmen. Prüfen Sie Adresszuweisung, gepushtes DNS, eine Anwendung, auf die es ankommt, und einen Pfad, der blockiert bleiben soll. Eigene Hooks müssen im realen Rechte- und Dateisystemkontext des Dienstes laufen, denn eine Root-Shell beweist darüber nichts.
Lesen Sie die Release Notes auf Verhaltensänderungen und nicht nur auf neue Funktionen. Cipher- und TLS-Standards verschieben sich zwischen Versionen, und ein Profil, das noch parst, kann trotzdem an einem Handshake scheitern. Wenn das Upgrade Profil- oder Zertifikatsänderungen braucht, planen Sie das als eigenen Schritt, statt es in das Paket-Update zu packen.
Schalten Sie einmal um, von einem Pfad außerhalb des Tunnels
Beginnen Sie das Fenster von einer Konsole oder einem Managementnetz, das den Dienst nicht durchquert. Bestätigen Sie, dass die Nutzer informiert sind und ein zweiter Operator weiß, wie man zurückrollt. Wenden Sie die vorbereitete Änderung über ihren Eigentümer an, starten Sie dann mit sudo systemctl restart [email protected] neu und verfolgen Sie das Journal mit journalctl -u openvpn-server@office -b -f. Ein Reload genügt, wenn sich nur Unit-Definitionen geändert haben; ein geändertes Profil erfordert einen Neustart des Prozesses.
Erwarten Sie, dass jeder Client neu verbindet, und erwarten Sie, dass manche Anwendungssitzungen nicht fortgesetzt werden. Koordinieren Sie eine saubere Pause mit den Arbeitslasten, die das nicht vertragen.
Abnehmen oder zurückrollen, dann den Nutzern sagen, was sich geändert hat
Abnahme heißt ein frischer Login plus eine echte Operation plus die Einschränkungen, die weiterhin gelten. Eine aktive Unit und eine grüne Statuszeile sind Prozessfakten. Wenn die Kriterien im Fenster scheitern, rollen Sie mit der vorbereiteten Methode zurück, nicht durch Wiederherstellen einer einzelnen Datei und Hoffen; ein geändertes Binary oder eine Dienstrichtlinie überlebt eine Konfigurationswiederherstellung. Bewahren Sie jede Widerrufs- oder Autorisierungsänderung aus dem Fenster, damit der Rollback keine Sicherheitsarbeit rückgängig macht.
Halten Sie Versionen, Profiländerungen und Abnahmeergebnisse für den nächsten Operator fest, nehmen Sie den Pilot-Listener außer Betrieb und sagen Sie den Nutzern, welches Profil sie jetzt verwenden sollen. Ein Fenster, das ohne diese Notiz endet, wird beim nächsten Update erneut verhandelt.