Paleidus nordvpn ir gavus pranešimą apie nepasiekiamą daemoną, tai siauras nusiskundimas, kuris paprastai ateina tada, kai jau vėluojate. Jis nieko nesako apie tai, ar tunelis veikia, nes CLI yra tik priekinė dalis: ji kalba su foniniu procesu per Unix socket, o pranešimas reiškia, kad tas pokalbis neįvyko. Eikite nuo komandos į išorę ir sustokite prie pirmo dalyko, kuris pasirodo esąs neteisingas.

Pradėkite ten, kur atsiranda klaida

Čia dalyvauja du procesai, ir būtent jų painiojimas daro tai paslaptinga. Daemonas valdo tunelį ir klausosi socket, esančio po /run/nordvpn/. Jūsų įvesta komanda jungiasi prie to socket, o ne pati liečia sąsajas.

Kai socket nėra arba atsisako ryšio, CLI neturi ko paklausti, todėl praneša apie tą patį nusiskundimą „vartotojo daemono“ arba „sistemos daemono“ variantu. Vienas iš tų variantų tiesiogiai įvardija kelią, ir tai yra naudingiausias viso pokalbio sakinys.

Pirmiausia patikrinkite unit

Paklauskite paslaugų tvarkyklės, ar daemonas veikia, o jei ne, vienu žingsniu paleiskite ir įjunkite jį:

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

Jei unit egzistuoja, bet neaktyvus, enable --now jį paleidžia ir sutvarko kitą įkrovimą vienu metu. Jei unit nėra, paketas nėra tas, kurį manote, ir įdiegtas pavadinimas svarbesnis už pavadinimą jūsų užrašuose. Tai skamba kaip pedantiškas skirtumas, kol neprapraleidžiate dvidešimt minučių įjungdami paslaugą, kuri niekada nebuvo įdiegta tuo žymekliu. Perskaitykite, kas yra, ir veikite pagal tai.

Unit failų sąrašas tai išsprendžia viena komanda, ir verta tai padaryti prieš darant bet kokias išvadas apie įdiegimą:

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

Leidimai tiekė paslaugą daugiau nei vienu unit pavadinimu, todėl build, kuris naudoja nordvpn, o ne nordvpnd, sukurs tobulą šios klaidos kopiją, nors greta veikia sveika paslauga.

Prieigą lemia socket ir jo grupė

Net ir veikiant daemonui ryšys gali būti atmestas dėl teisių. Diegėjas sukuria grupę nordvpn, ir socket priklauso atitinkamai, todėl už tos grupės esantis naudotojas atmetamas, nors paslauga visiškai sveika.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Grupės narystė nuskaitoma sesijos pradžioje, todėl atrodo, kad pakeitimas neveikia tame terminale, kuriame jį atlikote. Reikia naujo prisijungimo shell arba newgrp, kad veikianti sesija pamatytų naują grupę. Išbandykite naujame shell, o ne tame, kuris ką tik įvykdė komandą. Kitaip padarysite išvadą, kad pataisa nepavyko, nors ji tiesiog dar nepritaikyta.

Pats socket nuosavybė yra antroji to patikrinimo pusė. Palyginkite grupę ant socket su grupėmis, kurias praneša CLI paleidžianti shell, ir teisių klausimas atsakomas vienu žingsniu, o ne perdiegiant:

ls -l /run/nordvpn
id

Veikiantis procesas nėra teisingo socket įrodymas. Kito tvarkyklės paleistas daemonas arba senas paketas, susiejęs kitaip pavadintą socket, praneša taip pat. Katalogo sąrašas tuos atvejus atskiria viena eilute, todėl jis geresnis už perdiegimą.

Vartotojo procesas senesniame pakavime

Kai kurie pakavimai paleidžia antrą procesą prisijungusio naudotojo kontekste, kurį darbalaukio integracija tikisi rasti. Jei sistemos init scenarijus paleidžia jį neperėjęs į tą paskyrą, CLI ieško daemono, kurio nevaldo nė viena sesija.

Init be systemd atveju dokumentuotas išdėstymas dalija vaidmenis: sistemos paslauga veikia vienu pavadinimu, o naudotojo pusės procesas – tikslinėje paskyroje su chpst -u <user>. Patikrinkite, kokį išdėstymą jūsų įdiegimas iš tikrųjų naudoja, prieš pridėdami paleidimo scenarijų, kuris numato kitą.

Kaip suprasti, kad baigėte

Įprastas akstinas yra atnaujinimas, nes naujasis dvejetainis failas tikisi paslaugos būsenos, kurios senasis niekada nepaliko. Sustabdymas, pakartotinis įjungimas ir paleidimas ta tvarka tai sutvarko:

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

Paskutinė komanda yra priėmimo testas. Atspausdinta versija reiškia, kad socket atsako, o tai perkelia bet kurį likusį gedimą į prisijungimo, plano ar ryšio sritį ir išveda jį iš šio straipsnio. Jei atsako, nustokite čia skaityti ir eikite pasižiūrėti paskyros.

Jei socket vis dar nėra, perskaitykite unit žurnalą, kad pamatytumėte, kodėl jis nutrūko, tada patikrinkite, ar /run/nordvpn egzistuoja ir ar paslaugos paskyra gali ten rašyti. Procesas, kuris pakyla ir iškart miršta, įrašo savo priežastį tame žurnale, o vieną eilutę perskaityti greičiau, nei atlikti perdiegimą.

Susiję straipsniai