nordvpn ziņo, ka dēmonu nevar sasniegt: socket, grupa vai unit?
Tunelis var būt pilnīgi kārtībā; CLI vienkārši zaudēja savu socket uz nordvpnd. Ejiet no komandas uz unit, pēc tam uz socket atļaujām un apstājieties pie pirmās kļūmes.
Palaist nordvpn un saņemt ziņojumu par nepieejamu dēmonu ir šaura sūdzība, kas parasti nāk tad, kad jau esat nokavējis. Tā neko nepasaka par to, vai tunelis darbojas, jo CLI ir tikai priekšpuse: tā runā ar fona procesu pa Unix socket, un ziņojums nozīmē, ka šī saruna nenotika. Ejiet no komandas uz āru un apstājieties pie pirmās lietas, kas izrādās nepatiesa.
Sāciet tur, kur parādās kļūda
Šeit iesaistīti divi procesi, un tieši to sajaukšana padara šo lietu noslēpumainu. Dēmons pārvalda tuneli un klausās socket, kas atrodas zem /run/nordvpn/. Jūsu ievadītā komanda savienojas ar šo socket, nevis pati aizskar saskarnes.
Kad socket trūkst vai atsakās savienoties, CLI nav kam jautāt, tāpēc tā ziņo par tās pašas sūdzības „lietotāja dēmona“ vai „sistēmas dēmona“ variantu. Viens no šiem variantiem tieši nosauc ceļu, un tas ir visnoderīgākais teikums visā sarunā.
Vispirms pārbaudiet unit
Pajautājiet servisa pārvaldniekam, vai dēmons darbojas, un, ja nedarbojas, vienā solī palaidiet un iespējojiet to:
systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version
Ja unit eksistē, bet ir neaktīvs, enable --now to palaiž un vienlaikus sagatavo nākamo ielādi. Ja unit neeksistē, pakotne nav tā, ko jūs pieņemat, un instalētais nosaukums ir svarīgāks par nosaukumu jūsu piezīmēs. Tas izklausās pēc pedantiskas atšķirības, līdz jūs pavadāt divdesmit minūtes, iespējojot servisu, kas nekad nav ticis instalēts ar šo apzīmējumu. Izlasiet, kas ir, un rīkojieties saskaņā ar to.
Unit failu uzskaitīšana to atrisina ar vienu komandu, un to ir vērts izdarīt pirms jebkādu secinājumu izdarīšanas par instalāciju:
systemctl list-unit-files 'nordvpn*'
service --status-all
Izlaidumi ir piegādājuši servisu ar vairāk nekā vienu unit nosaukumu, tāpēc build, kas izmanto nordvpn, nevis nordvpnd, radīs perfektu šīs kļūdas kopiju, kamēr tieši blakus darbojas vesels serviss.
Piekļuvi nosaka socket un tā grupa
Pat darbojoties dēmonam, savienojums var tikt noraidīts atļauju dēļ. Instalētājs izveido grupu nordvpn, un socket tiek piederēts attiecīgi, tāpēc lietotājs ārpus šīs grupas tiek noraidīts, kamēr serviss ir pilnīgi vesels.
sudo usermod -aG nordvpn "$USER"
newgrp nordvpn
Grupas dalība tiek nolasīta sesijas sākumā, tāpēc šķiet, ka izmaiņas terminālī, kurā tās veicāt, nestrādā. Pirms darbojošā sesija ierauga jauno grupu, nepieciešams jauns pieteikšanās shell vai newgrp. Pārbaudiet jaunā shell, nevis tajā, kas tikko izpildīja komandu. Citādi jūs secināsiet, ka labojums neizdevās, lai gan tas vienkārši vēl nav piemērots.
Paša socket īpašumtiesības ir šīs pārbaudes otrā puse. Salīdziniet grupu uz socket ar grupām, ko ziņo CLI palaidošā shell, un atļauju jautājums tiek atbildēts vienā solī, nevis pārinstalējot:
ls -l /run/nordvpn
id
Darbojošs process nav pierādījums pareizajam socket. Dēmons, ko palaidis cits pārvaldnieks, vai veca pakotne, kas piesaistījusi citādi nosauktu socket, ziņo tāpat. Kataloga saraksts šos gadījumus atšķir vienā rindā, tāpēc tas ir labāks par pārinstalēšanu.
Procesa lietotājam vecākā pakojumā
Dažas pakojumi palaiž otru procesu pieteikušā lietotāja kontekstā, ko darbvirsmas integrācija sagaida atrast. Ja sistēmas init skripts to palaiž, nepārslēdzoties uz šo kontu, CLI meklē dēmonu, kuram nepieder neviena sesija.
Init bez systemd dokumentētais izkārtojums sadala lomas: sistēmas serviss darbojas ar vienu nosaukumu, bet lietotāja puses process darbojas mērķa kontā ar chpst -u <user>. Pārbaudiet, kuru izkārtojumu jūsu instalācija patiešām izmanto, pirms pievienojat palaišanas skriptu, kas pieņem otru.
Kā zināt, ka esat pabeidzis
Parastais iemesls ir atjauninājums, jo jaunais binārais fails gaida servisa stāvokli, ko vecais nekad nav atstājis. Apturēšana, atkārtota iespējošana un palaišana šādā secībā to sakārto:
sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version
Šī pēdējā komanda ir pieņemšanas tests. Izdrukāta versija nozīmē, ka socket atbild, kas katru atlikušo kļūmi pārvieto uz pieteikšanās, plāna vai savienojamības jomu un izved no šī raksta. Ja tas atbild, pārtrauciet lasīt šeit un aizejiet apskatīt kontu.
Ja socket joprojām trūkst, izlasiet unit žurnālu, lai redzētu, kāpēc tas apstājās, pēc tam pārbaudiet, vai /run/nordvpn eksistē un vai servisa konts tur var rakstīt. Process, kas paceļas un tūlīt mirst, ieraksta savu iemeslu šajā žurnālā, un vienu rindu izlasīt ir ātrāk nekā veikt pārinstalēšanu.