nordvpn hlásí, že nedosáhne na daemona: socket, skupina, nebo unit?
Tunel může být úplně v pořádku; CLI jen ztratilo socket k nordvpnd. Jděte od příkazu k unitu, pak k oprávněním socketu, a zastavte se u prvního selhání.
Spuštění nordvpn a zpráva o nedostupném daemonovi je úzká stížnost, která obvykle přijde ve chvíli, kdy už jste pozadu. Neříká nic o tom, zda tunel funguje, protože CLI je jen přední část: mluví s procesem na pozadí přes unixový socket a zpráva znamená, že k tomuto rozhovoru nedošlo. Jděte od příkazu směrem ven a zastavte se u první věci, která se ukáže jako nepravdivá.
Začněte tam, kde se chyba objevuje
Zúčastněné jsou dva procesy a právě jejich záměna dělá situaci záhadnou. Daemon vlastní tunel a naslouchá na socketu pod /run/nordvpn/. Příkaz, který jste napsali, se připojuje k tomuto socketu, místo aby sám sahal na rozhraní.
Když socket chybí nebo odmítá spojení, CLI nemá koho se zeptat, a tak hlásí variantu „uživatelský daemon“ nebo „systémový daemon“ stejné stížnosti. Jedna z těchto variant přímo uvádí cestu, a to je nejužitečnější věta celé výměny.
Nejdřív zkontrolujte unit
Zeptejte se správce služeb, zda daemon běží, a pokud ne, spusťte a povolte ho jedním krokem:
systemctl status nordvpnd
sudo systemctl enable --now nordvpnd
nordvpn version
Pokud unit existuje, ale je neaktivní, enable --now ho zároveň spustí a zařídí další start. Pokud unit neexistuje, balíček není ten, který předpokládáte, a nainstalované jméno je důležitější než jméno ve vašich poznámkách. Zní to jako pedantské rozlišení, dokud nestrávíte dvacet minut povolováním služby, která pod tímto názvem nikdy nebyla nainstalována. Přečtěte si, co existuje, a jednejte podle toho.
Výpis souborů unit to vyřeší jediným příkazem a stojí za to ho udělat, než o instalaci cokoli uzavřete:
systemctl list-unit-files 'nordvpn*'
service --status-all
Vydání dodávala službu pod více než jedním jménem unitu, takže sestavení, které používá nordvpn místo nordvpnd, vytvoří dokonalou kopii této chyby, zatímco hned vedle běží zdravá služba.
O přístupu rozhoduje socket a jeho skupina
I s běžícím daemonem může být spojení odmítnuto kvůli oprávněním. Instalátor vytváří skupinu nordvpn a socket je podle toho vlastněn, takže uživatel mimo tuto skupinu dostane odepření, i když je služba naprosto zdravá.
sudo usermod -aG nordvpn "$USER"
newgrp nordvpn
Členství ve skupině se načítá při startu relace, a proto se zdá, že změna v terminálu, kde jste ji provedli, nefunguje. Je potřeba nový přihlašovací shell nebo newgrp, než běžící relace novou skupinu uvidí. Testujte v novém shellu, ne v tom, který právě spustil příkaz. Jinak dojdete k závěru, že oprava selhala, když jen ještě nebyla použita.
Vlastnictví samotného socketu je druhá polovina této kontroly. Porovnejte skupinu na socketu se skupinami, které hlásí shell spouštějící CLI, a otázka oprávnění je zodpovězena jedním krokem místo přeinstalování:
ls -l /run/nordvpn
id
Živý proces není důkazem správného socketu. Daemon spuštěný jiným správcem nebo starý balíček, který navázal jinak pojmenovaný socket, hlásí totéž. Výpis adresáře tyto případy rozliší na jednom řádku, a proto je lepší než přeinstalace.
Proces pro jednotlivého uživatele ve starším balení
Některá balení spouštějí druhý proces v kontextu přihlášeného uživatele, který desktopová integrace očekává. Pokud ho systémový init skript spustí, aniž by přešel na tento účet, CLI hledá daemona, kterého nevlastní žádná relace.
Při initu bez systemd dokumentované uspořádání dělí role: systémová služba běží pod jedním jménem a proces na straně uživatele pod cílovým účtem s chpst -u <user>. Ověřte, které uspořádání vaše instalace skutečně používá, než přidáte startovací skript, který předpokládá to druhé.
Jak poznáte, že jste hotovi
Obvyklým spouštěčem je upgrade, protože nový binární soubor očekává stav služby, který ten starý nikdy nezanechal. Zastavení, nové povolení a spuštění v tomto pořadí to vyčistí:
sudo systemctl stop nordvpnd
sudo systemctl enable --now nordvpnd
sudo systemctl start nordvpnd
nordvpn version
Poslední příkaz je akceptační test. Vytištěná verze znamená, že socket odpovídá, což každou zbývající závadu přesouvá do oblasti přihlášení, plánu nebo konektivity a mimo tento článek. Pokud odpoví, přestaňte číst tady a jděte se místo toho podívat na účet.
Pokud socket stále chybí, přečtěte si journal unitu, abyste viděli, proč skončil, a pak ověřte, že /run/nordvpn existuje a že do něj servisní účet může zapisovat. Proces, který naskočí a hned zemře, zapisuje svůj důvod do toho journalu, a jeden řádek se čte rychleji, než se provádí přeinstalace.