Het stoppen van de dienst verwijdert de interface zelfs met persist-tun ingesteld. Dat is de optie die werkt zoals gedocumenteerd, geen fout. De optie beschrijft één herstartpad binnen een draaiend proces, en systemctl stop is dat pad niet.

Lees de twee namen samen en het ontwerp wordt duidelijk. De ene houdt een descriptor vast, de andere houdt sleutelmateriaal vast, en beide bestaan vanwege wat er gebeurt nadat de privileges zijn losgelaten.

De twee bronnen en de herstart waartoe ze behoren

OpenVPN signaleert zijn eigen herstart in twee gewone situaties. Een expliciete SIGUSR1 doet dat, en een ping-restart die door een dode peer wordt veroorzaakt doet hetzelfde. Beide laten het proces in leven en voeren de verbindingsopzet opnieuw uit, en daar verdienen de opties hun plaats.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun at the next start

Alleen de rij van de zachte herstart is wat deze twee opties veranderen, en het werk dat ze overslaan is het dure deel op een drukke link. Een apparaat opnieuw openen breekt de adressen en routes die eraan hangen af, en ze opnieuw opbouwen kan pakketten laten vallen die onderweg waren toen de herstart begon. Een stop vernietigt dezelfde objecten zonder enige optie om ze te bewaren.

Waarom de opties überhaupt bestaan

Een geharde OpenVPN-server start meestal als root, opent zijn sleutels en zijn apparaat en gaat dan over naar een niet-geprivilegieerde gebruiker. Na die overgang zijn sommige bewerkingen simpelweg weg. Het lezen van een sleutelbestand met modus 0600, het aanmaken van een netwerkinterface of het wijzigen van routes kan allemaal geweigerd worden.

Zonder de persist-opties zou een peer die lang genoeg stil blijft om ping-restart te veroorzaken precies die bewerkingen afdwingen. De herverbinding zou mislukken ook al was er niets aan de configuratie veranderd. Het proces zou lijken te sterven zonder reden, en het logboek zou een machtigingsfout tonen in plaats van een netwerkfout.

Met hen hergebruikt de zachte herstart wat de geprivilegieerde fase al heeft verkregen. Er is geen magie in het spel en het proces overleeft niets. Het verwerven van bronnen wordt simpelweg uitgesteld.

Lees de eerste fout, niet de laatste

Wanneer een herstart mislukt, lees de eerste fout in plaats van de laatste. Een beschermde sleutel, een auth-bestand, een interface-ioctl en een externe hook zijn vier verschillende bronnen. Eén behouden zegt niets over toegang tot de andere. Een hook die een firewallhulpmiddel aanroept heeft nog steeds de privileges nodig die dat hulpmiddel eist.

Hooks hebben hun eigen schakelaar. De OpenVPN-handleiding koppelt de persist-opties aan up-restart, dat bepaalt of de up- en down-scripts na een herstart opnieuw draaien. Een interface die bleef staan vertelt u dus niets over of uw resolver-integratie is vernieuwd.

# 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

Dat paar opdrachten scheidt de twee faalmodi in seconden. Een interface die aanwezig is met ontbrekende routes is een hook- of routeprobleem. Een interface die verdween betekent dat het proces echt is geëindigd.

Een behouden interface is geen kill switch

Als de eis is dat verkeer de tunnel nooit mag verlaten, levert een behouden apparaat dat niet. Routes voor de andere adresfamilie, een tweede standaardroute en het geval waarin het proces volledig eindigt blijven allemaal buiten het bereik van de optie.

Behandel de twee eisen afzonderlijk. Het tunnelobject over herverbindingen heen behouden is een gemak voor de daemon. Het blokkeren van uitgaand verkeer wanneer de tunnel neerligt is een firewallbeleid met eigen regels en een eigen test. Ze verwarren levert een configuratie op die defensief lijkt en zich gedraagt als een herverbinding naar beste vermogen.

Benoem de gebeurtenis voordat u die diagnosticeert. Een zachte herstart, een mislukte verbindingspoging en een dienststop zijn drie gebeurtenissen met drie gedragingen, en alleen de eerste is wat deze opties beschrijven.

Gerelateerde artikelen