nordvpn сообщает, что демон недоступен: socket, группа или unit?
Туннель может быть совершенно исправен; CLI просто потерял свой сокет к nordvpnd. Пройдите от команды к unit, затем к правам на сокет, и остановитесь на первой ошибке.
Запуск 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 существует и что служебная учётная запись может писать туда. Процесс, который поднимается и сразу умирает, записывает свою причину в этот журнал, и одну строку прочитать быстрее, чем выполнить переустановку.