Wat persist-tun a persist-key an OpenVPN wierklech iwwerliewe
Béid Optiounen decken e sanften Neistart an engem liewegen Prozess of. Si behalen d’Schnittstell net no engem Stopp, a si sinn keng Politik fir Verkéier ze blockéieren.
De Service stoppen hëlt d’Schnittstell ewech och mat persist-tun gesat. Dat ass d’Optioun déi funktionéiert wéi dokumentéiert, keen Feeler. D’Optioun beschreift ee Neistartwee an engem lafenden Prozess, an systemctl stop ass net dee Wee.
Liest déi zwee Nimm zesummen an den Design gëtt kloer. Dee een hält en Deskriptor, deen aneren hält Schlësselmaterial, an déi zwee existéieren wéinst deem wat geschitt nodeems d’Privilegien ofginn goufen.
Déi zwee Ressourcen an den Neistart zu deem se gehéieren
OpenVPN signaliséiert säin eigenen Neistart an zwou gewéinlechen Situatiounen. En explizitten SIGUSR1 mécht dat, an en ping-restart deen vun engem doudege Partner ausgeléist gëtt mécht datselwecht. Béid loossen de Prozess lieweg a féieren d’Verbindungsastellung nach eng Kéier aus, an do verdéngen d’Optiounen hire Plaz.
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
Nëmmen déi Rei vum sanften Neistart ass dat wat dës zwou Optiounen änneren, an d’Aarbecht déi se iwwersprangen ass dee deieren Deel op enger beschäftegter Verbindung. En Apparat nach eng Kéier opmaachen räisst d’Adressen an d’Routen of déi drun hänken, an se nei opbauen kann Paketen droppe loossen déi ënnerwee waren wéi den Neistart ugefaang huet. E Stopp zerstéiert déiselwecht Objeten ouni eng Optioun se ze behalen.
Firwat d’Optiounen iwwerhaapt existéieren
En gehäerte OpenVPN-Server fänkt normalerweis als root un, mécht seng Schlësselen an säin Apparat op, a geet dann op en net-privilegéierte Benotzer. No deem Iwwergang sinn e puer Operatiounen einfach fort. Eng Schlësselfichier am Modus 0600 liesen, eng Netzwierkschnittstell uleeën oder Routen änneren kann alles refuséiert ginn.
Ouni d’persist-Optiounen géif en Partner dee laang genuch schweigt fir ping-restart auszeléisen genau déi Operatiounen erzwéngen. D’Reconnexion géif feelen och wann sech näischt an der Konfiguratioun geännert hätt. De Prozess géif ausgesinn wéi wann en ouni Grond stierft, an de Log géif e Berächtigungsfeeler weisen anstatt e Netzwierkfeeler.
Mat hinnen benotzt den sanften Neistart erëm wat d’privilegéiert Phas schonn erhalen huet. Et ass keng Magie am Spill an de Prozess iwwerlieft näischt. D’Acquisitioun vu Ressourcen gëtt just opgeschoben.
Liest den éischte Feeler, net de leschten
Wann en Neistart feelt, liest den éischte Feeler anstatt de leschten. En geschützte Schlëssel, eng auth-Fichier, en Interface-ioctl an en externen Hook sinn véier verschidde Ressourcen. Ee behalen seet näischt iwwer den Zougang zu deenen aneren. En Hook deen en Firewall-Tool opruffe brauch nach ëmmer d’Privilegien déi deen Tool verlaangt.
Hooks hunn hire eigenen Echangeur. D’OpenVPN-Handbuch paart d’persist-Optiounen mat up-restart, wat decidéiert ob d’up- an down-Skripten no engem Neistart nach eng Kéier lafen. Eng Schnittstell déi uewen bliwwen ass seet iech also näischt doriwwer ob ären Resolver-Integratioun aktualiséiert gouf.
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
Dee Paar Kommandoen trennt déi zwee Feelmuster a Sekonnen. Eng Schnittstell déi do ass awer där hir Routen feelen ass en Hook- oder Routeproblem. Eng Schnittstell déi verschwonne ass bedeit de Prozess ass wierklech fäerdeg.
Eng behalen Schnittstell ass keen Kill-Switch
Wann d’Ufuerderung ass datt de Verkéier ni baussen aus dem Tunnel soll kommen, dann leeschtert en Apparat deen behale gëtt dat net. Routen fir déi aner Adressfamill, eng zweet Standardroute an de Fall wou de Prozess komplett erausgeet bleiwen all baussen dem Geltungsberäich vun der Optioun.
Behandelt déi zwou Ufuerderungen getrennt. Den Tunnelobjet iwwer Reconnexionen ze behalen ass eng Bequemlechkeet fir den Daemon. Den Ausgang blockéieren wann den Tunnel ënnen ass ass eng Firewall-Politik mat hiren eegene Reegelen an hirem eigenen Test. Béides ze vermëschen ergëtt eng Konfiguratioun déi defensiv ausgesäit an sech wéi eng Reconnexion no beschtem Effort behält.
Nennt d’Evenement ier dir et diagnostizéiert. E sanften Neistart, e feelgeschloenen Verbindungsversuch an e Service-Stopp sinn dräi Evenementer mat dräi Verhalen, an nëmmen dat éischt ass dat wat dës Optiounen beschreiwen.