Примірник OpenVPN з'являється під час завантаження під іменем, якого ви не впізнаєте, і його зупинка працює до наступного перезавантаження. Ця закономірність означає, що ви видалили процес, але не активацію. Це два різні об'єкти, і лише один із них видно на екрані стану. Щоб знайти активацію, потрібні чотири команди лише для читання й одне рішення.

Спершу назвіть точний модуль

Почніть з імені модуля в journal, а не з імені файлу профілю. Примірник може називатися openvpn@, openvpn-client@, openvpn-server@ або якось специфічно для дистрибутива, і здогад про ім'я веде вас до неправильного шаблону. Вивід стану називає модуль, який справді працював, і це єдине ім'я, що тут має значення. Скопіюйте його точно, включно з будь-яким суфіксом.

Наступні команди описують цей модуль, нічого не змінюючи. systemctl show повідомляє шлях фрагмента, шлях джерела, стан файлу модуля, будь-які drop-in і що його активувало. list-dependencies --reverse показує, які завантажені модулі посилаються на нього. Обидві лише для читання, тож виконайте їх, перш ніж будувати теорію.

Замініть спостережене ім'я всюди. Скопійоване приміркове ім'я — найпоширеніший спосіб дослідити неправильну службу, і воно дає впевнені відповіді про модуль, який ніколи не працював.

Прочитайте шаблон, щоб дізнатися ім'я файлу

Модуль примірника — це розширення шаблону, і шаблон вирішує, який файл конфігурації він читає. Рядок команди, що закінчується заповнювачем для примірника, розгортається в ім'я примірника плюс суфікс. Якщо суфікс .conf, а примірник зветься old, файл — old.conf. Якщо назвете примірник old.conf, той самий шаблон вимагатиме old.conf.conf.

Ця деталь пояснює клас дублікатів. Хтось додає другий примірник під неправильним іменем, перший продовжує працювати, і хост залишається з двома тунелями та одним заплутаним журналом.

Читайте чинний шаблон, а не файл, який ви пам'ятаєте, що редагували. Drop-in може замінити рядок команди, і під час завантаження працює саме заміна.

Простежте, як він потрапляє в транзакцію завантаження

Три шляхи звичайні: wants-зв'язок від цілі, вимога від іншого модуля або згенерований модуль від генератора пакета. Список зворотних залежностей охоплює перші два як завантажені записи графа. Він не охоплює таймер, hook або зовнішній запит, тому список — це доказ, а не повний аудит.

Згенерований вивід під /run/systemd/generator — це продукт, а не джерело. Його редагування переживає лише до наступної генерації, тому виправлення, застосоване там, виглядає успішним і потім повертається.

Перевірте документований вхід пакета, перш ніж припускати, звідки читає генератор. Недокументоване сканування каталогу — звичайна причина появи модуля без зв'язку активації.

Видаліть активацію, а не лише процес

Якщо примірник безпосередньо активований і справді застарілий, systemctl disable --now зупиняє його й усуває зв'язок завантаження за один крок. Спершу перевірте, чи цей тунель не є вашим єдиним адміністративним шляхом до хоста. Команда — це приклад життєвого циклу, а не пропозиція зупинити кожен VPN на машині. Виконайте перевірку перед командою, а не після.

Дві половини відокремлювані й часто плутаються. Вимкнення не зупиняє працюючу службу, а зупинка не усуває активацію, тож часткова команда пояснює проблему, яка повертається під час завантаження.

Вимкнений модуль усе ще можна запустити іншим модулем або явним запитом. Коли генератор володіє активацією, виправте його вхід, а не вимикайте його вивід. Маскування блокує більше шляхів, але може зламати залежності, тож воно не замінює розуміння.

Перевірте перезавантаженням, а не екраном стану

Перезавантажте systemd, якщо змінилися визначення модулів або входи генератора, потім огляньте отриманий стан. Перезавантаження демона не штовхає новий профіль у працюючий тунель, тож дві перевірки окремі. Заплануйте перезавантаження й підтвердьте, що примірник залишається відсутнім, поки потрібний тунель ще працює.

Тримайте старий профіль, доки його власність не буде зрозуміла, потім виведіть його з ужитку передбаченим процесом. Успіх — це відсутній модуль і робочий шлях доступу, а не провалений модуль, якого немає на одному екрані.

Схожі статті