Ваш дистрибутив удаляет пакет, меню теряет пункт, а туннель всё равно поднимается после следующей перезагрузки. Коммерческий VPN-клиент оставляет части, которые менеджер пакетов никогда не отслеживал, поэтому чистое удаление не то же самое, что чистый компьютер. Четыре такие части объясняют почти каждое призрачное соединение: unit, профиль соединения, привилегированный помощник и репозиторий поставщика. Прочитайте все четыре, прежде чем что-либо удалять, затем удалите каждую через компонент, которому она принадлежит.

Что деинсталлятор так и не записал

Менеджер пакетов удаляет только те файлы, которые записал сам, и ничего больше. У него нет записи о профиле соединения, созданном клиентом во время работы, о unit, включённом после установки, или о помощнике, который зарегистрировался, работая с повышенными правами. Каждая из этих частей относится к отдельной подсистеме, и каждая может пережить пакет на одну или несколько перезагрузок. Именно этот пробел объясняет, почему туннель может быть здоров, когда создавшее его программное обеспечение уже исчезло.

У остатка всегда есть владелец: systemd, NetworkManager, конфигурация репозитория или запись автозапуска для пользователя. Именно поиск владельца первым не даёт чистке превратиться в наполовину настроенную машину. Прямое удаление файлов обычно работает, пока владелец не создаст их заново, поэтому команды ниже начинаются с запросов.

Четыре владельца, сначала только чтение

Начните с запросов, а не с удаления, и запишите точные имена, которые вернутся. Поставщики часто поставляют версионированный пакет рядом с метапакетом, поэтому один продукт может появиться под двумя именами. Имя, которое есть в обоих списках, — это один продукт с двумя владельцами, и удалять нужно оба. Первая партия охватывает пакеты и unit, где большинство остатков становятся видны.

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

Процесс, который всё ещё жив после чистки, — это либо активный unit, либо потомок другой программы. Прочитайте таблицу процессов и цепочку его родителей, прежде чем обвинять службу, которой больше нет. Записям автозапуска для пользователя нужен тот же проход, и они появляются только в новой оболочке входа, а не в сеансе root.

Три глагола, которые нельзя менять местами

Остановка завершает текущий запуск, отключение убирает ссылки времени загрузки, а маскирование направляет unit на /dev/null. Только третье также блокирует активацию через сокет, таймер или зависимость, что делает его сильнейшим из трёх. Порядок важен, пока вы ещё решаете, что делать с машиной. Маскирование — правильное состояние во время этого решения, потому что оно громко падает, а не тихо стартует при следующей загрузке.

Снимите маскирование перед переустановкой, иначе новый пакет будет выглядеть сломанным по причине, которую никто не записал. Та же осторожность относится к различиям упаковки: одна сборка поставляет unit, который можно остановить, а другая вообще не оставляет службы. Установите, какая у вас упаковка, прежде чем выбирать глагол, потому что путь очистки у них разный.

Шаблонами удаляют не тот профиль

Удалите профиль с записанным UUID и никогда шаблоном. Каталог keyfile содержит и каждый профиль Wi-Fi и Ethernet на машине, поэтому широкое совпадение удаляет то, что ещё нужно. Удалённый вручную keyfile может быть создан заново той политикой, которой он принадлежит, и удаление кажется неэффективным.

nmcli connection delete uuid <uuid>

Сначала экспортируйте шлюз и идентичность, если этот профиль — единственная оставшаяся копия, ведь локальное удаление ничего не отзывает на сервере. Репозиторий следует тому же правилу: удалите единственный файл поставщика и его связку ключей, затем обновите списки пакетов и повторите установку, которую действительно хотели. Оставленная устаревшая запись третьей стороны может закрепить старую зависимость или вовсе не ответить. Оба удаления малы, и любое можно вернуть из сохранённой копии.

Что ещё работает после перезагрузки

Перезагрузитесь, прежде чем объявлять победу, а затем ищите артефакты, а не приложение. Интерфейс туннеля, устаревший разделённый маршрут и DNS для каждого канала, оставленные старым клиентом, требуют каждый своей команды. Все три могут пережить чистку, успешно удалившую каждый пакет.

ip link
ip route
resolvectl status

Откройте также новую оболочку входа, потому что запись автозапуска срабатывает только там. Затем прочитайте /etc/NetworkManager/dispatcher.d/ в поисках скрипта, который поднимает соединение каждый раз, когда интерфейс меняет состояние, что объясняет возвращение туннеля без службы за ним. Если что-то всё ещё звонит наружу, проследите процесс до его родителя, вместо того чтобы удалять файлы, пока симптом не прекратится. Очистка машины и отзыв аккаунта остаются разными задачами, и только одна из них завершена, когда перезагрузка выглядит тихо.

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