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

Схожі статті