Uruchomienie nordvpn i komunikat o nieosiągalnym demonie to wąska skarga, która zwykle przychodzi, gdy jest już za późno. Nie mówi nic o tym, czy tunel działa, bo CLI to tylko front: rozmawia z procesem w tle przez socket Uniksa, a komunikat oznacza, że ta rozmowa nie odbyła się. Idź od polecenia na zewnątrz i zatrzymaj się na pierwszej rzeczy, która okaże się nieprawdziwa.

Zacznij tam, gdzie pojawia się błąd

W grę wchodzą dwa procesy, i właśnie ich mylenie sprawia, że sprawa wydaje się tajemnicza. Demon posiada tunel i nasłuchuje na sockecie pod /run/nordvpn/. Polecenie, które wpisałeś, łączy się z tym socketem, zamiast samemu dotykać interfejsów.

Gdy socketu brakuje albo odmawia połączenia, CLI nie ma kogo zapytać, więc zgłasza wariant „demon użytkownika” lub „demon systemowy” tej samej skargi. Jeden z tych wariantów wprost nazywa ścieżkę, i to jest najbardziej użyteczne zdanie w całej wymianie.

Sprawdź unit przed wszystkim innym

Zapytaj menedżera usług, czy demon działa, a jeśli nie, uruchom i włącz go jednym krokiem:

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

Jeśli unit istnieje, ale jest nieaktywny, enable --now uruchamia go i przygotowuje następne bootowanie jednocześnie. Jeśli unit nie istnieje, pakiet nie jest tym, który zakładasz, a zainstalowana nazwa liczy się bardziej niż nazwa w twoich notatkach. Brzmi to jak pedantyczne rozróżnienie, dopóki nie spędzisz dwudziestu minut na włączaniu usługi, która nigdy nie została zainstalowana pod tą etykietą. Przeczytaj, co jest, i działaj zgodnie z tym.

Wylistowanie plików unit rozstrzyga to jednym poleceniem, i warto to zrobić, zanim wyciągniesz jakikolwiek wniosek o instalacji:

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

Wydania dostarczały usługę pod więcej niż jedną nazwą unit, więc build, który używa nordvpn zamiast nordvpnd, wyprodukuje doskonałą kopię tego błędu, podczas gdy tuż obok działa zdrowa usługa.

Dostęp rozstrzygają socket i jego grupa

Nawet przy działającym demonie połączenie może zostać odrzucone z powodu uprawnień. Instalator tworzy grupę nordvpn, a socket jest odpowiednio posiadany, więc użytkownik spoza tej grupy jest odrzucany, choć usługa jest całkowicie zdrowa.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Członkostwo w grupie jest czytane przy starcie sesji, dlatego zmiana wydaje się nie działać w terminalu, w którym ją wprowadziłeś. Potrzebna jest nowa powłoka logowania albo newgrp, zanim działająca sesja zobaczy nową grupę. Testuj w nowej powłoce, nie w tej, która właśnie wykonała polecenie. W przeciwnym razie uznasz, że poprawka zawiodła, gdy po prostu nie została jeszcze zastosowana.

Właściciel samego socketa to druga połowa tego sprawdzenia. Porównaj grupę na sockecie z grupami zgłaszanymi przez powłokę uruchamiającą CLI, a kwestia uprawnień zostaje rozstrzygnięta jednym krokiem zamiast reinstalacji:

ls -l /run/nordvpn
id

Działający proces nie jest dowodem właściwego socketa. Demon uruchomiony przez innego menedżera albo stary pakiet, który związał inaczej nazwany socket, zgłaszają to samo. Lista katalogu rozróżnia te przypadki w jednej linii, dlatego bije reinstalację.

Proces na użytkownika w starszym pakowaniu

Niektoré pakowania uruchamiają drugi proces w kontekście zalogowanego użytkownika, którego integracja z pulpitem oczekuje. Jeśli skrypt init systemu uruchomi go bez przejścia na to konto, CLI szuka demona, którego nie posiada żadna sesja.

Na init bez systemd udokumentowany układ dzieli role: usługa systemowa działa pod jedną nazwą, a proces po stronie użytkownika pod kontem docelowym z chpst -u <user>. Sprawdź, którego układu twoja instalacja naprawdę używa, zanim dodasz skrypt startowy zakładający ten drugi.

Jak poznać, że skończyłeś

Zwykłym wyzwalaczem jest aktualizacja, bo nowy plik binarny oczekuje stanu usługi, którego stary nigdy nie zostawił. Zatrzymanie, ponowne włączenie i uruchomienie w tej kolejności to czyści:

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

To ostatnie polecenie jest testem akceptacyjnym. Wyświetlona wersja oznacza, że socket odpowiada, co przenosi każdą pozostałą usterkę na teren logowania, planu lub łączności i usuwa ją z tego artykułu. Jeśli odpowie, przestań czytać tutaj i idź zamiast tego zajrzeć na konto.

Jeśli socketa nadal brak, przeczytaj journal unitu, aby zobaczyć, dlaczego się zakończył, a potem sprawdź, czy /run/nordvpn istnieje i czy konto usługi może tam pisać. Proces, który wstaje i od razu umiera, zapisuje swoją przyczynę w tym journalu, a jedną linię czyta się szybciej, niż wykonuje reinstalację.

Powiązane artykuły