OpenVPN 3 Linux: lees 'n D-Bus-fout voordat jy terugrol
Vyf dienste, een frontend. Pas 'n D-Bus-fout toe op die komponent wat geweier het, kyk of 'n sessie bestaan, en maak dan op daardie grens reg.
Foute in OpenVPN 3 Linux kom as 'n D-Bus-metodefout met 'n onbekende naam daaraan, en die versoeking is om 'n pakket af te gradeer en te hoop. Die kliënt is nie een program nie: 'n opdragreël-frontend praat oor die bus met dienste wat profiele, sessies, die VPN-enjin en die bevoorregte netwerkveranderinge besit. Om te besluit watter van dié vyf die mislukte oproep besit, is die grootste deel van die diagnose, en dit kos een opdrag eerder as 'n terugrol. Wat volg, is daardie beslissing, in die volgorde waarin die foute gewoonlik voorkom.
Vyf eienaars agter een opdrag
Vyf prosesse maak saak, en elkeen het 'n eie busnaam: die frontend wat jou opdrag aanvaar, die konfigurasiebestuurder wat profiele en hul toegangsbeleid stoor, die sessiebestuurder wat die leeftyd van sessies besit, die backend wat die verbinding deur die OpenVPN 3 Core-enjin laat loop, en die netwerkkonfigurasiediens wat die koppelvlak, roetes en DNS-instellings installeer. 'n Fout wat 'n konfigurasieobjek noem, is dus nie 'n backend-fout nie, en 'n backend wat nie wil begin nie, is nie 'n verifikasiefout nie. Om die boodskap in een van daardie rye te sorteer, moet gebeur voordat enigiets verander word, want elke latere stap hang daarvan af watter ry waar is. Om aan die ry te raai, is hoe 'n kort regstelling 'n middag se pakketwerk word.
Vra die stelselbus watter dienste teenwoordig is voordat jy enigiets anders vra, en bevestig dan dat die geïnstalleerde stukke dit oor een weergawe eens is. OpenVPN 3 Linux registreer daardie dienste as stelseleenhede, dus die bus om te vra is die stelselbus, die weergawe-navraag het administratiewe mag nodig, en 'n lys met --user lees jou aanmeldingsessie, waar die eenhede nooit verskyn nie. Dienste aktiveer op aanvraag en sommige stop wanneer hulle ledig is, dus 'n diens wat voor jou eerste versoek ontbreek, is bloot nog nooit vir iets gevra nie. Die drie opdragte hieronder beantwoord teenwoordigheid, weergawe en eenheidstatus sonder om 'n VPN-sessie oop te maak.
sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'Wat elke lys werklik bewys
Die kliënt se eie aanblikke is die goedkoopste beskikbare bewyse, en elkeen van hulle bewys minder as wat dit lyk. 'n Profiel in die konfigurasielys toon dat 'n profiel ingevoer is en niks daaroor of iemand daarmee mag koppel nie. 'n Sessie in die sessielys toon dat 'n sessieobjek bestaan en niks daaroor of die afgeleë verifikasie klaar is nie.
openvpn3 configs-list
openvpn3 sessions-listVoorwerp-paaie in daardie uitsette identifiseer bestuurde voorwerpe op die bus eerder as lêers, dus hulle kan nie geredigeer word nie, en 'n pad wat vroeër aangeteken is, word verouderd sodra daardie sessie ontkoppel. Om een uit jou notas te hergebruik, lewer "no such object"-foute wat niks met die VPN te doen het nie. Die stadiumtabel hieronder skei wat elke stap van 'n verbinding vestig van wat dit ooplaat, en dit is die onderskeid waarop 'n terugrolbesluit draai. Lees die ry wat by jou bewys pas, en lees dan die foutteks weer.
| Stage | What exists | What proves it | What it does not prove |
|---|---|---|---|
| Profile imported | A configuration object held by the configuration manager | The profile is listed by the client | That the profile owner permits a connection |
| Session requested | A session object held by the session manager | The session appears in the session list | That the remote side accepted the credentials |
| Connect dispatched | An asynchronous attempt on the VPN backend | Status changes arrive for that session | That an interface was configured |
| Tunnel configured | An interface, routes and DNS settings | The network service reports success and routes appear | That traffic reaches the peer |
Die koppel-oproep keer terug voordat die tonnel bestaan
Die koppel-oproep gee jou 'n sessie om dop te hou en keer terug, daarom is 'n oënskynlik suksesvolle oproep gevolg deur stilte 'n normale tussenstand en nie 'n teenspraak nie. Die frontend moet steeds statusveranderinge volg en enige versoek om interaksie beantwoord. 'n Profiel wat 'n geloofsbrief nodig het en geen antwoord kry nie, wag in 'n toestand wat presies soos 'n vasgehaakte backend lyk. Daardie wagtoestand verdien erkenning, want dit stuur mense na die verkeerde komponent.
Terwyl 'n poging loop, hou die sessielys en die frontend se eie log vir daardie profiel dop. 'n Sessie wat nooit sy begintoestand verlaat nie, noem die komponent wat gestop het, en die log noem dit gewoonlik binne die eerste paar reëls. Hou die profielnaam byderhand, want die log-opdrag neem 'n profiel en nie 'n sessiepad nie, wat nog 'n rede is om die lys weer te lees eerder as om 'n pad te hergebruik.
openvpn3 sessions-list
openvpn3 log --config <profile> --level 6Een komponent se log lees sonder om 'n sessie oop te maak
Wanneer die frontend niks nuttigs rapporteer nie, gaan na die komponent wat die fout gelog het eerder as om nog 'n verbinding te begin. Met 'n gekonfigureerde systemd-journald-logger lees die administrateur se afgebakende joernaal-aansig een komponent se gebeure sonder om busbeleid aan te raak of 'n sessie oop te maak, wat saak maak omdat 'n diagnose wat die stelsel verander wat dit meet, baie min bewys. Filter op eenheid eerder as op syslog-etiket: die afsonderlike dienseenhede waarborg nie 'n gedeelde identifiseerder nie, dus 'n etiket-navraag kan 'n leë bladsy teruggee terwyl die eenheid self die fout aangeteken het.
Teken vier velde aan voordat jy iemand om hulp vra: die volledige foutnaam, die betrokke diens en voorwerp, die tydstempel, en die geïnstalleerde pakketweergawes. Dit is wat 'n instandhouer nodig het, en niks daarvan vereis om 'n profiel of 'n geloofsbrief in 'n kaartjie te plak nie. Om bus-toegangsbeleid te verbreed om die fout stil te maak, is nie 'n diagnose nie, dit vee die grens uit wat die komponent vir jou genoem het. Privaat profielinhoud bly uit gedeelde verslae, om dieselfde rede as geloofsbriewe.
journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>Die grens regmaak wat geweier het
Elke ry van die kaart het sy eie regstelling, en die rye vervang nie mekaar nie. 'n Geweierde bewerking op 'n profiel is 'n vraag oor beleid en eienaarskap, terwyl 'n backend wat nie aktiveer nie 'n vraag oor dienste en verpakking is. 'n Bediener wat verifikasie verwerp, is nie een van die twee nie, dus herhaalde wagwoordveranderings kan nie 'n plaaslike aktiveringsprobleem herstel nie. Om die verkeerde regstelling te kies, is hoe 'n beleidsprobleem 'n herinstallasie word.
Verifieer ná 'n pakketverandering 'n samehangende, ondersteunde installasie eerder as om een ou binariese lêer in plek te kopieer. 'n Beheerde terugrol is 'n geldige antwoord op 'n bevestigde regressie, mits die pakkette versoenbaar bly en daar 'n roete terug na ondersteunde instandhouding bestaan. Vestig daardie roete voordat die diens ophou begin, nie daarna nie.
'n Ander platform kan dieselfde kern-VPN-biblioteek deel sonder om Linux se busdienste te deel, dus 'n soortgelyk-lykende fout op Windows sê niks oor hierdie een nie. Die D-Bus-oorsig dokumenteer die voorwerp-paaie wat vir konfigurasies en sessies blootgestel word, en dit is die deel van die argitektuur waarop hierdie diagnose staatmaak. Lees dit een keer, en die volgende fout kom met 'n komponent reeds daaraan geheg.