Zastavenie služby odstráni rozhranie aj s nastaveným persist-tun. To je voľba pracujúca podľa dokumentácie, nie zlyhanie. Voľba opisuje jednu cestu reštartu vnútri bežiaceho procesu a systemctl stop nie je tou cestou.

Prečítajte obe mená spolu a návrh je jasný. Jedno drží deskriptor, druhé drží kľúčový materiál a obe existujú kvôli tomu, čo sa deje po odhodení oprávnení.

Dva zdroje a reštart, ku ktorému patria

OpenVPN signalizuje vlastný reštart v dvoch bežných situáciách. Explicitný SIGUSR1 to urobí a ping-restart vyvolaný mŕtvym partnerom urobí to isté. Oba nechávajú proces živý a znova spúšťajú nastavenie spojenia, a práve tam si voľby zaslúžia svoje miesto.

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

Iba riadok mäkkého reštartu je to, čo tieto dve voľby menia, a práca, ktorú preskakujú, je drahá časť na vyťaženom spoji. Opätovné otvorenie zariadenia strhne adresy a trasy, ktoré sú k nemu pripojené, a ich opätovné zostavenie môže zahodiť pakety, ktoré boli na ceste, keď reštart začal. Zastavenie zničí tie isté objekty bez akejkoľvek voľby ich zachovať.

Prečo tieto voľby vôbec existujú

Ztužený server OpenVPN zvyčajne štartuje ako root, otvorí svoje kľúče a svoje zariadenie a potom prejde na neprivilegovaného používateľa. Po tomto prechode niektoré operácie jednoducho zmiznú. Čítanie kľúčového súboru s režimom 0600, vytvorenie sieťového rozhrania alebo zmena trás môžu byť odmietnuté.

Bez volieb persist by partner, ktorý stíchne dosť dlho na vyvolanie ping-restart, vynútil práve tie operácie. Opätovné pripojenie by zlyhalo, aj keď sa v konfigurácii nič nezmenilo. Proces by vyzeral, že umiera bez dôvodu, a protokol by ukázal chybu oprávnení namiesto sieťovej chyby.

S nimi mäkký reštart znova použije to, čo privilegovaná fáza už získala. Žiadna mágia v tom nie je a proces nič neprežíva. Získavanie zdrojov je jednoducho odložené.

Čítajte prvú chybu, nie poslednú

Keď reštart zlyhá, čítajte prvú chybu namiesto poslednej. Chránený kľúč, súbor auth, ioctl rozhrania a externý hook sú štyri rôzne zdroje. Ponechanie jedného nič nehovorí o prístupe k ostatným. Hook, ktorý volá nástroj firewallu, stále potrebuje oprávnenia, ktoré tento nástroj vyžaduje.

Hooky majú vlastný prepínač. Príručka OpenVPN páruje voľby persist s up-restart, ktorý rozhoduje, či sa skripty up a down po reštarte spustia znova. Rozhranie, ktoré zostalo hore, vám teda nič nehovorí o tom, či sa vaša integrácia resolvera obnovila.

# 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

Táto dvojica príkazov oddelí dva režimy zlyhania v priebehu sekúnd. Rozhranie, ktoré existuje, ale chýbajú mu trasy, je problém hooku alebo trasy. Rozhranie, ktoré zmizlo, znamená, že proces skutočne skončil.

Zachované rozhranie nie je kill switch

Ak je požiadavkou, aby prevádzka nikdy neopustila tunel, zachované zariadenie to nedodá. Trasy pre druhú rodinu adries, druhá predvolená trasa aj prípad, keď proces úplne skončí, zostávajú mimo rozsahu voľby.

Riešte obe požiadavky oddelene. Zachovanie objektu tunela cez opätovné pripojenia je pre démona pohodlie. Blokovanie odchodu, keď tunel nebeží, je politika firewallu s vlastnými pravidlami a vlastným testom. Ich miešanie dáva konfiguráciu, ktorá vyzerá obranne a správa sa ako opätovné pripojenie s najlepšou snahou.

Pomenujte udalosť skôr, než ju začnete diagnostikovať. Mäkký reštart, neúspešný pokus o pripojenie a zastavenie služby sú tri udalosti s tromi správaniami a len prvá je to, čo tieto voľby opisujú.

Súvisiace články