Стартирането на nordvpn и получаването на съобщение за недостъпен демон е тясна оплакване, което обикновено идва, когато вече закъснявате. То не казва нищо за това дали тунелът работи, защото CLI е само предна част: той разговаря с фонов процес през Unix сокет и съобщението означава, че този разговор не се е състоял. Вървете от командата навън и спрете на първото нещо, което се окаже невярно.

Започнете от мястото, където се появява грешката

Участват два процеса и именно объркването им прави случая загадъчен. Демонът притежава тунела и слуша на сокет под /run/nordvpn/. Командата, която въведохте, се свързва с този сокет, вместо сама да пипа интерфейсите.

Когато сокетът липсва или отказва връзката, CLI няма кого да попита, затова съобщава варианта „потребителски демон“ или „системен демон“ на същото оплакване. Един от тези варианти посочва пътя директно и това е най-полезната фраза в целия разговор.

Проверете unit преди всичко останало

Попитайте мениджъра на услуги дали демонът работи, после го стартирайте и включете в една стъпка, ако не работи:

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

Ако unit съществува, но е неактивен, enable --now едновременно го стартира и урежда следващото зареждане. Ако unit не съществува, пакетът не е този, който предполагате, и инсталираното име е по-важно от името в бележките ви. Това звучи като педантично разграничение, докато не прекарате двадесет минути в включване на услуга, която никога не е била инсталирана под този етикет. Прочетете какво има и действайте според него.

Изброяването на unit файловете решава това с една команда и си струва да го направите, преди да заключите нещо за инсталацията:

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

Изданията са доставяли услугата под повече от едно име на unit, така че билд, който използва nordvpn вместо nordvpnd, ще даде точно копие на тази грешка, докато до него работи напълно здрава услуга.

Сокетът и неговата група решават достъпа

Дори с работещ демон връзката може да бъде отказана заради права. Инсталаторът създава група nordvpn и сокетът се притежава съответно, затова потребител извън тази група получава отказ, докато услугата е напълно здрава.

sudo usermod -aG nordvpn "$USER"
newgrp nordvpn

Членството в група се чете при стартиране на сесията и затова изглежда, че промяната не работи в терминала, в който сте я направили. Нужен е нов входен шел или newgrp, преди работещата сесия да види новата група. Тествайте в нов шел, а не в този, който току-що изпълни командата. Иначе ще заключите, че поправката се е провалила, когато тя просто още не е приложена.

Собствеността на самия сокет е втората половина на тази проверка. Сравнете групата на сокета с групите, отчетени в шела, който пуска CLI, и въпросът за правата се решава с една стъпка, а не с преинсталиране:

ls -l /run/nordvpn
id

Жив процес не е доказателство за правилния сокет. Демон, стартиран от друг мениджър, или стар пакет, който е обвързал сокет с друго име, съобщават по същия начин. Списъкът на директорията различава тези случаи в един ред и затова е по-добър от преинсталиране.

Процесът за отделен потребител при по-старите пакети

Някои пакети пускат втори процес в контекста на влезлия потребител, който интеграцията с работния плот очаква да намери. Ако системен init скрипт го стартира, без да премине към този акаунт, CLI търси демон, който никоя сесия не притежава.

При init без systemd документираната схема разделя ролите: системната услуга работи под едно име, а процесът от страна на потребителя — под целевия акаунт с chpst -u <user>. Проверете коя схема всъщност използва вашата инсталация, преди да добавите стартов скрипт, който предполага другата.

Как да разберете, че сте готови

Обичайният спусък е надграждане, защото новият бинарен файл очаква състояние на услугата, което старият никога не е оставял. Спиране, повторно включване и стартиране в този ред го изчиства:

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

Последната команда е тестът за приемане. Отпечатана версия означава, че сокетът отговаря, което премества всяка останала неизправност в областта на входа, плана или свързаността и я извежда от тази статия. Ако отговори, спрете да четете тук и погледнете вместо това акаунта.

Ако сокетът все още липсва, прочетете журнала на unit, за да видите защо е излязъл, после проверете дали /run/nordvpn съществува и дали сервизният акаунт може да пише там. Процес, който се вдига и веднага умира, записва причината си в този журнал и един ред се чете по-бързо, отколкото се извършва преинсталиране.

Подобни статии