Selhání OpenVPN 3 Linux přicházejí jako chyba metody D-Bus s neznámým názvem, a pokušení je snížit verzi balíčku a doufat. Klient není jeden program: frontend v příkazovém řádku mluví přes sběrnici se službami, které vlastní profily, relace, engine VPN a privilegované změny sítě. Rozhodnutí, která z těch pěti vlastní selhávající volání, je většina diagnostiky, a stojí jeden příkaz místo vrácení verze. Následuje toto rozhodnutí, v pořadí, v jakém se selhání obvykle objevují.

Pět vlastníků za jedním příkazem

Na pěti procesech záleží a každý má vlastní název na sběrnici: frontend, který přijímá váš příkaz, správce konfigurace, který ukládá profily a jejich zásady přístupu, správce relací, který vlastní životnost relace, backend, který vede spojení přes OpenVPN 3 Core Engine, a služba konfigurace sítě, která instaluje rozhraní, trasy a nastavení DNS. Chyba, která jmenuje konfigurační objekt, tedy není chybou backendu, a backend, který se nespustí, není selháním ověřování. Zařazení zprávy do jednoho z těch řádků musí proběhnout dřív, než se cokoli změní, protože každý další krok závisí na tom, který řádek platí. Hádání řádku je cesta, jak se z krátké opravy stane odpoledne s balíčky.

Zeptejte se systémové sběrnice, které služby jsou přítomné, dřív než se zeptáte na cokoli jiného, a potom potvrďte, že nainstalované části se shodnou na verzi. OpenVPN 3 Linux registruje tyto služby jako systémové jednotky, takže sběrnice k dotazu je systémová, dotaz na verzi vyžaduje správcovskou pravomoc a výpis vytvořený s --user čte vaši přihlašovací relaci, kde se jednotky nikdy neobjeví. Služby se aktivují na vyžádání a některé při nečinnosti končí, takže služba chybějící před vaším prvním požadavkem prostě ještě nebyla na nic dotázána. Tři příkazy níže odpovídají na přítomnost, verzi a stav jednotky, aniž by otevřely relaci VPN.

sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'

Co každý seznam skutečně dokazuje

Pohledy samotného klienta jsou nejlevnější dostupný důkaz a každý z nich dokazuje méně, než se zdá. Profil v seznamu konfigurace ukazuje, že profil je importován, a nic o tom, zda se s ním někdo smí připojit. Relace v seznamu relací ukazuje, že objekt relace existuje, a nic o tom, zda vzdálené ověření skončilo.

openvpn3 configs-list
openvpn3 sessions-list

Cesty objektů v těchto výstupech označují spravované objekty na sběrnici, nikoli soubory, takže je nelze upravovat, a cesta zaznamenaná dříve zastará v okamžiku, kdy se ta relace odpojí. Opětovné použití jedné z vašich poznámek vytváří chyby "no such object", které s VPN nemají nic společného. Tabulka fází níže odděluje, co každý krok spojení ustaví, od toho, co nechává otevřené, a právě na tomto rozdílu stojí rozhodnutí o vrácení verze. Přečtěte si řádek, který odpovídá vašemu důkazu, a pak si přečtěte text chyby znovu.

StageWhat existsWhat proves itWhat it does not prove
Profile importedA configuration object held by the configuration managerThe profile is listed by the clientThat the profile owner permits a connection
Session requestedA session object held by the session managerThe session appears in the session listThat the remote side accepted the credentials
Connect dispatchedAn asynchronous attempt on the VPN backendStatus changes arrive for that sessionThat an interface was configured
Tunnel configuredAn interface, routes and DNS settingsThe network service reports success and routes appearThat traffic reaches the peer

Volání připojení se vrací dřív, než tunel existuje

Volání připojení vám předá relaci ke sledování a vrátí se, a proto zdánlivě úspěšné volání následované tichem je normální přechodný stav, nikoli rozpor. Frontend stále musí sledovat změny stavu a odpovídat na každý požadavek na interakci. Profil, který potřebuje přihlašovací údaj a nedostane odpověď, čeká ve stavu, který vypadá přesně jako zaseknutý backend. Tento čekací stav si zaslouží rozpoznání, protože posílá lidi ke špatné komponentě.

Zatímco pokus běží, sledujte seznam relací a vlastní log frontendu pro tento profil. Relace, která nikdy neopustí svůj počáteční stav, pojmenuje komponentu, která se zastavila, a log ji obvykle pojmenuje už v prvních řádcích. Mějte po ruce název profilu, protože příkaz logu bere profil, nikoli cestu relace, což je další důvod přečíst seznam znovu místo opětovného použití cesty.

openvpn3 sessions-list
openvpn3 log --config <profile> --level 6

Čtení logu jedné komponenty bez otevření relace

Když frontend nehlásí nic užitečného, jděte k komponentě, která selhání zalogovala, místo abyste spouštěli další spojení. S nastaveným loggerem systemd-journald čte omezený pohled správce do žurnálu události jedné komponenty, aniž by se dotkl zásad sběrnice nebo otevřel relaci, což má význam, protože diagnostika, která mění měřený systém, dokazuje velmi málo. Filtrujte podle jednotky, ne podle značky syslog: jednotlivé servisní jednotky nezaručují společný identifikátor, takže dotaz podle značky může vrátit prázdnou stránku, zatímco jednotka sama selhání zaznamenala.

Zapište čtyři pole, než někoho požádáte o pomoc: celý název chyby, dotčenou službu a objekt, časové razítko a verze nainstalovaných balíčků. To je to, co správce potřebuje, a nic z toho nevyžaduje vložit profil nebo přihlašovací údaj do tiketu. Rozšiřování zásad přístupu ke sběrnici, aby chyba ztichla, není diagnostika, maže hranici, která za vás komponentu pojmenovávala. Soukromý obsah profilů zůstává mimo sdílené zprávy ze stejného důvodu jako přihlašovací údaje.

journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>

Oprava hranice, která odmítla

Každý řádek mapy má vlastní opravu a řádky se navzájem nenahrazují. Odmítnutá operace na profilu je otázka zásad a vlastnictví, zatímco backend, který se neaktivuje, je otázka služeb a balení. Server odmítající ověření není ani jedno, takže opakované změny hesla nemohou opravit místní problém s aktivací. Volba špatné opravy je cesta, jak se z problému se zásadami stane přeinstalace.

Po změně balíčků ověřte souvislou a podporovanou instalaci, místo abyste kopírovali starý binární soubor na jeho místo. Řízené vrácení verze je legitimní odpověď na potvrzenou regresi, pokud balíčky zůstanou kompatibilní a existuje cesta zpět k podporované údržbě. Zřiďte tu cestu dřív, než služba přestane startovat, ne potom.

Jiná platforma může sdílet stejnou základní knihovnu VPN, aniž by sdílela služby sběrnice Linuxu, takže podobně vypadající selhání ve Windows o tomto nic neříká. Přehled D-Bus dokumentuje cesty objektů vystavené pro konfigurace a relace, a to je ta část architektury, na které tato diagnostika stojí. Přečtěte si ho jednou a další chyba přijde s komponentou už k němu připojenou.

Související články