Instance OpenVPN se při startu objeví pod názvem, který neznáte, a její zastavení funguje do dalšího restartu. Tento vzorec znamená, že jste odstranili proces, ale ne aktivaci. Jsou to dva různé objekty a na obrazovce stavu je vidět jen jeden z nich. Nalezení aktivace vyžaduje čtyři příkazy jen pro čtení a jedno rozhodnutí.

Nejprve pojmenujte přesnou jednotku

Vycházejte z názvu jednotky v journalu, ne z názvu souboru profilu. Instance se může jmenovat openvpn@, openvpn-client@, openvpn-server@ nebo nějak specificky pro distribuci, a hádání názvu vás zavede ke špatné šabloně. Výstup stavu uvádí jednotku, která skutečně běžela, a to je jediný název, na kterém zde záleží. Zkopírujte ho přesně, včetně případné přípony.

Následující příkazy popisují tuto jednotku, aniž by cokoli měnily. systemctl show hlásí cestu fragmentu, cestu zdroje, stav souboru jednotky, případné drop-iny a co ji spustilo. list-dependencies --reverse ukazuje, které načtené jednotky na ni ukazují. Oba jsou jen pro čtení, proto je spusťte, než vytvoříte teorii.

Nahraďte pozorovaný název všude. Zkopírovaný příkladový název je nejčastější způsob, jak zkoumat špatnou službu, a dává sebejisté odpovědi o jednotce, která nikdy neběžela.

Přečtěte šablonu, abyste zjistili název souboru

Instance jednotky je rozšířením šablony a šablona rozhoduje, který konfigurační soubor čte. Příkazový řádek končící zástupným symbolem pro instanci se přeloží na název instance plus příponu. Pokud je přípona .conf a instance se jmenuje old, soubor je old.conf. Pokud instanci pojmenujete old.conf, stejná šablona si vyžádá old.conf.conf.

Tento detail vysvětluje jednu třídu duplikátů. Někdo přidá druhou instanci pod špatným názvem, první běží dál a hostitel skončí se dvěma tunely a jedním matoucím logem.

Čtěte efektivní šablonu, ne soubor, o kterém si pamatujete, že jste ho upravovali. Drop-in může nahradit příkazový řádek a při startu běží právě náhrada.

Vysledujte, jak se dostane do startovací transakce

Časté jsou tři cesty: wants odkaz z cíle, požadavek jiné jednotky nebo jednotka vygenerovaná generátorem balíčku. Seznam reverzních závislostí pokrývá první dvě jako načtené položky grafu. Nepokrývá časovač, hook ani externí požadavek, a proto je seznam důkazem, nikoli úplným auditem.

Generovaný výstup v /run/systemd/generator je produkt, ne zdroj. Jeho úprava přežije jen do dalšího generování, a proto oprava tam provedená vypadá úspěšně a pak se vrátí.

Zkontrolujte dokumentovaný vstup balíčku, než předpokládáte, odkud generátor čte. Nedokumentované skenování adresáře je obvyklý důvod, proč se jednotka objeví bez odkazu na aktivaci.

Odstraňte aktivaci, ne jen proces

Pokud je instance přímo aktivovaná a skutečně zastaralá, systemctl disable --now ji zastaví a v jednom kroku odstraní startovací odkaz. Nejprve zkontrolujte, že tento tunel není vaše jediná administrační cesta k hostiteli. Příkaz je příkladem životního cyklu, ne návrhem zastavit každou VPN na stroji. Spusťte kontrolu před příkazem, ne po něm.

Obě poloviny jsou oddělitelné a často se zaměňují. Vypnutí nezastaví běžící službu a zastavení neodstraní aktivaci, takže částečný příkaz vysvětluje problém, který se při startu vrací.

Vypnutá jednotka může být stále spuštěna jinou jednotkou nebo výslovným požadavkem. Když aktivaci vlastní generátor, opravte jeho vstup místo vypnutí jeho výstupu. Maskování blokuje více cest, ale může rozbít závislosti, takže nenahrazuje pochopení.

Ověřte restartem, ne obrazovkou stavu

Znovu načtěte systemd, pokud se změnily definice jednotek nebo vstupy generátoru, a poté zkontrolujte výsledný stav. Znovunačtení démona nevtlačí nový profil do běžícího tunelu, takže obě kontroly jsou oddělené. Naplánujte restart a potvrďte, že instance zůstane nepřítomná, zatímco zamýšlený tunel stále funguje.

Ponechte starý profil, dokud nebude jeho vlastnictví pochopeno, a poté ho vyřaďte zamýšleným postupem. Úspěch je nepřítomná jednotka a funkční přístupová cesta, ne neúspěšná jednotka chybějící na jedné obrazovce.

Související články