Zlyhania OpenVPN 3 Linux prichádzajú ako chyba metódy D-Bus s neznámym názvom, a pokušenie je znížiť verziu balíka a dúfať. Klient nie je jeden program: frontend v príkazovom riadku hovorí cez zbernicu so službami, ktoré vlastnia profily, relácie, engine VPN a privilegované zmeny siete. Rozhodnutie, ktorá z tých piatich vlastní zlyhávajúce volanie, je väčšina diagnostiky, a stojí jeden príkaz namiesto vrátenia verzie. Nasleduje toto rozhodnutie, v poradí, v akom sa zlyhania zvyčajne objavujú.

Päť vlastníkov za jedným príkazom

Na piatich procesoch záleží a každý má vlastný názov na zbernici: frontend, ktorý prijíma váš príkaz, správca konfigurácie, ktorý ukladá profily a ich zásady prístupu, správca relácií, ktorý vlastní životnosť relácie, backend, ktorý vedie spojenie cez OpenVPN 3 Core Engine, a služba konfigurácie siete, ktorá inštaluje rozhranie, trasy a nastavenia DNS. Chyba, ktorá menuje konfiguračný objekt, teda nie je chybou backendu, a backend, ktorý sa nespustí, nie je zlyhaním overenia. Zaradenie správy do jedného z tých riadkov musí prebehnúť skôr, než sa čokoľvek zmení, pretože každý ďalší krok závisí od toho, ktorý riadok platí. Hádanie riadku je cesta, ako sa z krátkej opravy stane popoludnie s balíkmi.

Spýtajte sa systémovej zbernice, ktoré služby sú prítomné, skôr než sa spýtate na čokoľvek iné, a potom potvrďte, že nainštalované časti sa zhodujú na verzii. OpenVPN 3 Linux registruje tieto služby ako systémové jednotky, takže zbernica na dotaz je systémová, dotaz na verziu vyžaduje správcovskú právomoc a výpis vytvorený s --user číta vašu prihlasovaciu reláciu, kde sa jednotky nikdy neobjavia. Služby sa aktivujú na požiadanie a niektoré pri nečinnosti končia, takže služba chýbajúca pred vašou prvou požiadavkou jednoducho ešte nebola na nič opýtaná. Tri príkazy nižšie odpovedajú na prítomnosť, verziu a stav jednotky bez toho, aby otvorili reláciu VPN.

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

Čo každý zoznam skutočne dokazuje

Pohľady samotného klienta sú najlacnejší dostupný dôkaz a každý z nich dokazuje menej, než sa zdá. Profil v zozname konfigurácie ukazuje, že profil je importovaný, a nič o tom, či sa s ním niekto smie pripojiť. Relácia v zozname relácií ukazuje, že objekt relácie existuje, a nič o tom, či sa vzdialené overenie skončilo.

openvpn3 configs-list
openvpn3 sessions-list

Cesty objektov v týchto výstupoch označujú spravované objekty na zbernici, nie súbory, takže ich nemožno upravovať, a cesta zaznamenaná skôr zastará v okamihu, keď sa tá relácia odpojí. Opätovné použitie jednej z vašich poznámok vytvára chyby "no such object", ktoré s VPN nemajú nič spoločné. Tabuľka fáz nižšie oddeľuje, čo každý krok spojenia ustaví, od toho, čo necháva otvorené, a práve na tomto rozdiele stojí rozhodnutie o vrátení verzie. Prečítajte si riadok, ktorý zodpovedá vášmu dôkazu, a potom si prečítajte text chyby znova.

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

Volanie pripojenia sa vracia skôr, než tunel existuje

Volanie pripojenia vám odovzdá reláciu na sledovanie a vráti sa, a preto zdanlivo úspešné volanie nasledované tichom je normálny prechodný stav, nie rozpor. Frontend stále musí sledovať zmeny stavu a odpovedať na každú požiadavku na interakciu. Profil, ktorý potrebuje prihlasovací údaj a nedostane odpoveď, čaká v stave, ktorý vyzerá presne ako zaseknutý backend. Tento čakací stav si zaslúži rozpoznanie, pretože posiela ľudí k nesprávnemu komponentu.

Kým pokus beží, sledujte zoznam relácií a vlastný log frontendu pre tento profil. Relácia, ktorá nikdy neopustí svoj počiatočný stav, pomenuje komponent, ktorý sa zastavil, a log ju zvyčajne pomenuje už v prvých riadkoch. Majte po ruke názov profilu, pretože príkaz logu berie profil, nie cestu relácie, čo je ďalší dôvod prečítať zoznam znova namiesto opätovného použitia cesty.

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

Čítanie logu jedného komponentu bez otvorenia relácie

Keď frontend nehlási nič užitočné, choďte k komponentu, ktorý zlyhanie zalogoval, namiesto spúšťania ďalšieho spojenia. S nastaveným loggerom systemd-journald číta obmedzený pohľad správcu do žurnálu udalosti jedného komponentu bez toho, aby sa dotkol zásad zbernice alebo otvoril reláciu, čo má význam, pretože diagnostika, ktorá mení meraný systém, dokazuje veľmi málo. Filtrujte podľa jednotky, nie podľa značky syslog: jednotlivé servisné jednotky nezaručujú spoločný identifikátor, takže dotaz podľa značky môže vrátiť prázdnu stránku, zatiaľ čo jednotka sama zlyhanie zaznamenala.

Zapíšte štyri polia, kým niekoho požiadate o pomoc: celý názov chyby, dotknutú službu a objekt, časovú značku a verzie nainštalovaných balíkov. To je to, čo správca potrebuje, a nič z toho nevyžaduje vložiť profil alebo prihlasovací údaj do tiketu. Rozširovanie zásad prístupu k zbernici, aby chyba stíchla, nie je diagnostika, maže hranicu, ktorá za vás komponent pomenúvala. Súkromný obsah profilov zostáva mimo zdieľaných správ z rovnakého dôvodu ako prihlasovacie údaje.

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

Oprava hranice, ktorá odmietla

Každý riadok mapy má vlastnú opravu a riadky sa navzájom nenahrádzajú. Odmietnutá operácia na profile je otázka zásad a vlastníctva, zatiaľ čo backend, ktorý sa neaktivuje, je otázka služieb a balenia. Server odmietajúci overenie nie je ani jedno, takže opakované zmeny hesla nemôžu opraviť miestny problém s aktiváciou. Voľba nesprávnej opravy je cesta, ako sa z problému so zásadami stane preinštalovanie.

Po zmene balíkov overte súvislú a podporovanú inštaláciu, namiesto kopírovania starého binárneho súboru na jeho miesto. Riadené vrátenie verzie je legitímna odpoveď na potvrdenú regresiu, pokiaľ balíky zostanú kompatibilné a existuje cesta späť k podporovanej údržbe. Zriaďte tú cestu skôr, než služba prestane štartovať, nie potom.

Iná platforma môže zdieľať rovnakú základnú knižnicu VPN bez toho, aby zdieľala služby zbernice Linuxu, takže podobne vyzerajúce zlyhanie vo Windows o tomto nič nehovorí. Prehľad D-Bus dokumentuje cesty objektov vystavené pre konfigurácie a relácie, a to je tá časť architektúry, na ktorej táto diagnostika stojí. Prečítajte si ho raz a ďalšia chyba príde s komponentom už k nemu pripojeným.

Súvisiace články