nordvpnin ajaminen ja viesti tavoittamattomasta daemonista on kapea valitus, joka saapuu yleensä silloin, kun olet jo myöhässä. Se ei kerro mitään siitä, toimiiko tunneli, koska CLI on vain etuosa: se puhuu taustaprosessin kanssa Unix-socketin kautta, ja viesti tarkoittaa, ettei sitä keskustelua käyty. Kulje komennosta ulospäin ja pysähdy ensimmäiseen asiaan, joka osoittautuu vääräksi.

Aloita siitä, missä virhe näkyy

Mukana on kaksi prosessia, ja juuri niiden sekoittaminen tekee tästä arvoituksellista. Daemon omistaa tunnelin ja kuuntelee socketia polun /run/nordvpn/ alla. Kirjoittamasi komento yhdistää tuohon socketiin sen sijaan, että koskisi itse liittymiin.

Kun socket puuttuu tai kieltäytyy yhteydestä, CLI:llä ei ole ketään kysyttävää, joten se ilmoittaa saman valituksen käyttäjä-daemon- tai järjestelmä-daemon-muodon. Yksi noista muodoista nimeää polun suoraan, ja se on koko vaihdon hyödyllisin lause.

Tarkista unit ennen kaikkea muuta

Kysy palvelunhallinnalta, onko daemon käynnissä, ja jos ei ole, käynnistä ja ota se käyttöön yhdellä askeleella:

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

Jos unit on olemassa mutta ei ole aktiivinen, enable --now sekä käynnistää sen että järjestää seuraavan käynnistyksen. Jos unitia ei ole, paketti ei ole se, jota oletat, ja asennettu nimi merkitsee enemmän kuin muistiinpanojesi nimi. Se kuulostaa pedanttiselta erolta, kunnes käytät kaksikymmentä minuuttia palvelun ottamiseen käyttöön, jota ei koskaan asennettu tuolla nimikkeellä. Lue, mitä on olemassa, ja toimi sen mukaan.

Unit-tiedostojen luettelointi ratkaisee asian yhdellä komennolla, ja se kannattaa tehdä ennen kuin päättelet asennuksesta mitään:

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

Julkaisut ovat toimittaneet palvelun useammalla kuin yhdellä unit-nimellä, joten build, joka käyttää nordvpn eikä nordvpnd, tuottaa täydellisen kopion tästä virheestä, kun taas terve palvelu pyörii aivan sen vieressä.

Socket ja sen ryhmä ratkaisevat pääsyn

Vaikka daemon olisi käynnissä, yhteys voidaan evätä oikeuksien vuoksi. Asentaja luo ryhmän nordvpn, ja socket omistetaan sen mukaisesti, joten tuon ryhmän ulkopuolinen käyttäjä hylätään, vaikka palvelu on täysin terve.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Ryhmän jäsenyys luetaan istunnon alkaessa, minkä vuoksi muutos näyttää olevan toimimatta siinä päätteessä, jossa teit sen. Tarvitaan uusi kirjautumisshell tai newgrp, ennen kuin käynnissä oleva istunto näkee uuden ryhmän. Testaa uudessa shellissä, älä siinä, joka juuri suoritti komennon. Muuten päättelet korjauksen epäonnistuneen, vaikka sitä ei vain ole vielä sovellettu.

Socketin omistus itsessään on tuon tarkistuksen toinen puoli. Vertaa socketin ryhmää ryhmiin, jotka CLI:tä ajava shell ilmoittaa, ja oikeuskysymys on vastattu yhdellä askeleella uudelleenasennuksen sijaan:

ls -l /run/nordvpn
id

Elävä prosessi ei ole todiste oikeasta socketista. Toisen hallinnan käynnistämä daemon tai vanha paketti, joka sitoi eri nimisen socketin, ilmoittavat samalla tavalla. Hakemistolistaus erottaa nuo tapaukset yhdellä rivillä, siksi se voittaa uudelleenasennuksen.

Käyttäjäkohtainen prosessi vanhemmassa paketoinnissa

Jotkin paketoinnit ajavat toista prosessia kirjautuneen käyttäjän kontekstissa, jonka työpöytäintegraatio odottaa löytävänsä. Jos järjestelmän init-skripti käynnistää sen siirtymättä tuohon tiliin, CLI etsii daemonia, jota mikään istunto ei omista.

Init-järjestelmässä ilman systemd:tä dokumentoitu järjestely jakaa roolit: järjestelmäpalvelu pyörii yhdellä nimellä ja käyttäjän puolen prosessi kohdetilillä komennolla chpst -u <user>. Tarkista, mitä järjestelyä asennuksesi todella käyttää, ennen kuin lisäät käynnistysskriptin, joka olettaa toisen.

Mistä tiedät, että olet valmis

Päivitys on tavallinen laukaisin, koska uusi binääri odottaa palvelun tilaa, jota vanha ei koskaan jättänyt. Pysäytys, uudelleenkäyttöönotto ja käynnistys tässä järjestyksessä siivoaa sen:

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

Viimeinen komento on hyväksyntätesti. Tulostettu versio tarkoittaa, että socket vastaa, mikä siirtää jokaisen jäljellä olevan vian kirjautumisen, suunnitelman tai yhteyden alueelle ja pois tästä artikkelista. Jos se vastaa, lopeta lukeminen tähän ja mene katsomaan tiliä.

Jos socket yhä puuttuu, lue unitin loki nähdäksesi, miksi se lopetti, ja tarkista sitten, että /run/nordvpn on olemassa ja että palvelutili voi kirjoittaa sinne. Prosessi, joka nousee ja kuolee heti, kirjaa syynsä tuohon lokiin, ja yksi rivi on nopeampi lukea kuin uudelleenasennus on suorittaa.

Aiheeseen liittyvät artikkelit