Клієнт VPN видалено, але тунель усе одно запускається під час завантаження
Видалений клієнт VPN може залишити юніт systemd, збережений профіль, помічник і репозиторій apt. Проінвентаризуйте всі чотири, перш ніж чистити будь-що інше.
Ваш дистрибутив видаляє пакет, меню втрачає пункт, а тунель усе одно піднімається після наступного перезавантаження. Комерційний клієнт VPN залишає частини, які менеджер пакетів ніколи не відстежував, тож чисте видалення — це не те саме, що чистий комп’ютер. Чотири такі частини пояснюють майже кожне примарне з’єднання: юніт, профіль з’єднання, привілейований помічник і репозиторій постачальника. Прочитайте всі чотири, перш ніж щось видаляти, потім видаліть кожну через компонент, якому вона належить.
Що деінсталятор так і не записав
Менеджер пакетів видаляє лише ті файли, які записав сам, і нічого більше. У нього немає запису про профіль з’єднання, створений клієнтом під час роботи, про юніт, увімкнений після встановлення, чи про помічник, який зареєструвався, працюючи з підвищеними правами. Кожна з цих частин належить до окремої підсистеми, і кожна може пережити пакет на одне або кілька перезавантажень. Саме ця прогалина пояснює, чому тунель може бути здоровим, коли програмне забезпечення, що його створило, вже зникло.
Залишок завжди має власника: systemd, NetworkManager, конфігурація репозиторію або запис автозапуску для користувача. Саме пошук власника першим не дає чищенню перетворитися на наполовину налаштований комп’ютер. Пряме видалення файлів зазвичай працює, доки власник не створить їх знову, тому команди нижче починаються із запитів.
Чотири власники, спершу лише читання
Почніть із запитів, а не з видалення, і запишіть точні імена, які повернуться. Постачальники часто постачають версіонований пакет поруч із метапакетом, тож один продукт може з’явитися під двома іменами. Ім’я, яке є в обох списках, — це один продукт із двома власниками, і видаляти треба обидва. Перша партія охоплює пакети та юніти, де більшість залишків стає видимою.
dpkg -l | grep -i acmevpn
systemctl list-unit-files | grep -i acmevpn
systemctl list-units --type=service --state=running | grep -i acmevpn
Друга партія охоплює два компоненти, які найчастіше переживають чищення, а саме профіль з’єднання та репозиторій постачальника. Читайте стовпець UUID, а не ім’я, бо дубліковані імена звичайні, а команда видалення очікує ідентифікатор. Рядок репозиторію варто прочитати, навіть якщо сьогодні ви його не видаляєте, оскільки мертвий хост постачальника може через місяці зламати не пов’язану установку. Жоден зі списків нічого не змінює, і саме тому вони виконуються першими.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
grep -ril acmevpn /etc/apt/sources.list.d/ /etc/apt/sources.list
Процес, який ще живий після чищення, — це або активний юніт, або нащадок іншої програми. Прочитайте таблицю процесів і ланцюжок його батьків, перш ніж звинувачувати службу, якої вже немає. Записам автозапуску для користувача потрібен той самий прохід, і вони з’являються лише в новій оболонці входу, а не в сеансі root.
Три дієслова, які не можна міняти місцями
Зупинка завершує поточний запуск, вимкнення прибирає посилання часу завантаження, а маскування спрямовує юніт на /dev/null. Лише третє також блокує активацію через сокет, таймер або залежність, що робить його найсильнішим із трьох. Порядок важливий, поки ви ще вирішуєте, що робити з комп’ютером. Маскування — правильний стан під час цього рішення, бо воно гучно падає, а не тихо стартує під час наступного завантаження.
Зніміть маскування перед перевстановленням, інакше новий пакет виглядатиме зламаним через причину, яку ніхто не записав. Та сама обережність стосується відмінностей пакування: одна збірка постачає юніт, який можна зупинити, а інша взагалі не залишає служби. Встановіть, яке у вас пакування, перш ніж вибирати дієслово, бо шлях очищення в них різний.
Шаблонами видаляють не той профіль
Видаліть профіль із записаним UUID і ніколи шаблоном. Каталог keyfile містить також кожен профіль Wi-Fi і Ethernet на комп’ютері, тож широкий збіг видаляє те, що ще потрібно. Видалений вручну keyfile може бути створений знову тією політикою, якій він належить, і видалення здається неефективним.
nmcli connection delete uuid <uuid>
Спершу експортуйте шлюз і ідентичність, якщо цей профіль — єдина копія, що у вас залишилася, адже локальне видалення нічого не відкликає на сервері. Репозиторій дотримується того самого правила: видаліть єдиний файл постачальника та його зв’язку ключів, потім оновіть списки пакетів і повторіть установку, яку ви справді хотіли. Залишений застарілий запис третьої сторони може закріпити стару залежність або взагалі не відповісти. Обидва видалення малі, і кожне можна повернути зі збереженої копії.
Що ще працює після перезавантаження
Перезавантажтеся, перш ніж оголосити перемогу, а потім шукайте артефакти, а не застосунок. Інтерфейс тунелю, застарілий розділений маршрут і DNS для кожного каналу, залишені старим клієнтом, потребують кожен своєї команди. Усі три можуть пережити чищення, яке успішно видалило кожен пакет.
ip link
ip route
resolvectl status
Відкрийте також нову оболонку входу, бо запис автозапуску спрацьовує лише там. Потім прочитайте /etc/NetworkManager/dispatcher.d/ у пошуках скрипта, який піднімає з’єднання щоразу, коли інтерфейс змінює стан, що пояснює повернення тунелю без служби за ним. Якщо щось усе ще дзвонить назовні, прослідкуйте процес до його батька, замість того щоб видаляти файли, доки симптом не припиниться. Очищення комп’ютера й відкликання акаунта залишаються різними завданнями, і лише одне з них завершено, коли перезавантаження виглядає тихо.