Запуск 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 существует и что служебная учётная запись может писать туда. Процесс, который поднимается и сразу умирает, записывает свою причину в этот журнал, и одну строку прочитать быстрее, чем выполнить переустановку.

Похожие статьи