At køre nordvpn og få en besked om en daemon, der ikke kan nås, er en smal klage, som normalt dukker op, når du allerede er sent på den. Den siger intet om, hvorvidt tunnelen virker, fordi CLI’en kun er en front: den taler med en baggrundsproces over en Unix-socket, og beskeden betyder, at den samtale ikke fandt sted. Gå udad fra kommandoen og stop ved den første ting, der viser sig at være forkert.

Start hvor fejlen vises

Der er to processer involveret, og det er forvekslingen af dem, der gør det mystisk. Daemonen ejer tunnelen og lytter på en socket under /run/nordvpn/. Den kommando, du skrev, forbinder til den socket i stedet for selv at røre ved interface.

Når socketen mangler eller afviser forbindelsen, har CLI’en ingen at spørge, så den rapporterer bruger-daemon- eller system-daemon-varianten af den samme klage. En af de varianter nævner stien direkte, og det er den mest nyttige sætning i hele udvekslingen.

Tjek uniten før alt andet

Spørg servicemanageren, om daemonen kører, og start og aktivér den derefter i ét trin, hvis den ikke gør:

systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version

Hvis uniten findes, men er inaktiv, starter enable --now den både og arrangerer næste opstart. Hvis uniten ikke findes, er pakken ikke den, du antager, og det installerede navn betyder mere end navnet i dine noter. Det lyder som en pedantisk forskel, indtil du bruger tyve minutter på at aktivere en tjeneste, der aldrig blev installeret under den betegnelse. Læs, hvad der er der, og handl på det.

At liste unitfilerne afgør det med én kommando, og det er værd at gøre, før du konkluderer noget om installationen:

systemctl list-unit-files 'nordvpn*'
service --status-all

Udgivelser har sendt tjenesten ud under mere end ét unitnavn, så et build, der bruger nordvpn i stedet for nordvpnd, vil producere en perfekt kopi af denne fejl, mens en sund tjeneste kører lige ved siden af.

Socketen og dens gruppe afgør adgangen

Selv med daemonen kørende kan forbindelsen blive afvist på grund af rettigheder. Installationsprogrammet opretter en nordvpn-gruppe, og socketen ejes i overensstemmelse hermed, så en bruger uden for den gruppe afvises, mens tjenesten er helt sund.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Gruppemedlemskab læses, når en session starter, og derfor ser ændringen ikke ud til at virke i den terminal, hvor du lavede den. Der kræves et nyt login-shell eller newgrp, før den kørende session ser den nye gruppe. Test i et nyt shell, ikke i det, der netop kørte kommandoen. Ellers konkluderer du, at rettelsen fejlede, når den blot ikke er anvendt endnu.

Ejerskabet af selve socketen er den anden halvdel af det tjek. Sammenlign gruppen på socketen med de grupper, der rapporteres i det shell, der kører CLI’en, og spørgsmålet om rettigheder er besvaret i ét trin i stedet for ved at geninstallere:

ls -l /run/nordvpn
id

En levende proces er ikke bevis på den rigtige socket. En daemon startet af en anden manager, eller en gammel pakke, der bandt en anderledes navngivet socket, rapporterer identisk. Mappelisten skelner de tilfælde på én linje, og derfor slår den geninstallation.

Processen per bruger på ældre pakning

Nogle pakninger kører en anden proces i den indloggede brugers kontekst, som skrivebordsintegrationen forventer at finde. Hvis et system-init-script starter den uden at skifte til den konto, leder CLI’en efter en daemon, som ingen session ejer.

På et init uden systemd deler den dokumenterede ordning rollerne: systemtjenesten kører under ét navn, og processen på brugersiden under målkontoen med chpst -u <user>. Tjek, hvilken ordning din installation faktisk bruger, før du tilføjer et opstartsscript, der antager den anden.

Sådan ved du, at du er færdig

En opgradering er den sædvanlige udløser, fordi den nye binære fil forventer en tjenestetilstand, som den gamle aldrig efterlod. Stop, genaktivering og start i den rækkefølge rydder det:

sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version

Den sidste kommando er accepttesten. En udskrevet version betyder, at socketen svarer, hvilket flytter enhver resterende fejl til login-, plan- eller forbindelsesområdet og ud af denne artikel. Hvis den svarer, så stop med at læse her og gå i stedet hen og se på kontoen.

Hvis socketen stadig mangler, læs unit-journalen for at se, hvorfor den afsluttede, og tjek derefter, at /run/nordvpn findes, og at tjenestekontoen kan skrive der. En proces, der rejser sig og dør med det samme, registrerer sin årsag i den journal, og én linje er hurtigere at læse, end en geninstallation er at udføre.

Relaterede artikler