Klient VPN odinstalowany, ale tunel nadal startuje przy rozruchu
Usunięty klient VPN może pozostawić jednostkę systemd, zapisany profil, pomocnika i repozytorium apt. Zinwentaryzuj wszystkie cztery, zanim cokolwiek innego wyczyścisz.
Twoja dystrybucja usuwa pakiet, menu traci wpis, a tunel i tak wstaje po kolejnym restarcie. Komercyjny klient VPN zostawia części, których menedżer pakietów nigdy nie śledził, więc czyste odinstalowanie to nie to samo co czysty komputer. Cztery z tych części wyjaśniają niemal każde widmowe połączenie: jednostka, profil połączenia, uprzywilejowany pomocnik i repozytorium dostawcy. Przeczytaj wszystkie cztery, zanim cokolwiek usuniesz, a potem usuń każdą przez komponent, który nią zarządza.
Czego deinstalator nigdy nie zapisał
Menedżer pakietów usuwa pliki, które sam zapisał, i nic więcej. Nie ma rekordu profilu połączenia, który klient utworzył w czasie działania, jednostki włączonej po instalacji, ani pomocnika, który zarejestrował się, działając z podniesionymi uprawnieniami. Każda z tych części należy do innego podsystemu i każda może przeżyć pakiet o jeden lub kilka restartów. Właśnie ta luka wyjaśnia, dlaczego tunel może być zdrowy, gdy oprogramowanie, które go stworzyło, już zniknęło.
Pozostałość zawsze ma właściciela, czy jest nim systemd, NetworkManager, konfiguracja repozytorium, czy wpis autostartu dla użytkownika. To właśnie znalezienie właściciela najpierw chroni czyszczenie przed zamianą komputera w na wpół skonfigurowany. Bezpośrednie usuwanie plików zwykle działa, dopóki właściciel nie odtworzy ich ponownie, dlatego poniższe polecenia zaczynają się od zapytań.
Czterej właściciele, najpierw tylko odczyt
Zacznij od zapytań, a nie od usuwania, i zapisz dokładne nazwy, które wrócą. Dostawcy często dostarczają wersjonowany pakiet obok metapakietu, więc jeden produkt może pojawić się pod dwiema nazwami. Nazwa, która występuje na obu listach, to jeden produkt z dwoma właścicielami i oba trzeba usunąć. Pierwsza partia obejmuje pakiety i jednostki, gdzie większość pozostałości staje się widoczna.
dpkg -l | grep -i acmevpn
systemctl list-unit-files | grep -i acmevpn
systemctl list-units --type=service --state=running | grep -i acmevpn
Druga partia obejmuje dwa komponenty, które najczęściej przeżywają czyszczenie, mianowicie profil połączenia i repozytorium dostawcy. Czytaj kolumnę UUID, a nie nazwę, bo zduplikowane nazwy są częste, a polecenie usunięcia oczekuje identyfikatora. Wiersz repozytorium warto przeczytać nawet wtedy, gdy dziś go nie usuniesz, ponieważ martwy host dostawcy może miesiące później zepsuć niezwiązaną instalację. Żadna z list niczego nie zmienia i właśnie dlatego uruchamia się je najpierw.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
grep -ril acmevpn /etc/apt/sources.list.d/ /etc/apt/sources.list
Proces wciąż żywy po czyszczeniu to albo aktywna jednostka, albo dziecko innego programu. Przeczytaj tablicę procesów i jego łańcuch rodziców, zanim obwinisz usługę, która już nie istnieje. Wpisy autostartu dla użytkownika wymagają tego samego przeglądu i pojawiają się tylko w nowej powłoce logowania, nie w sesji root.
Trzy czasowniki, których nie można zamieniać
Zatrzymanie kończy bieżące uruchomienie, wyłączenie usuwa dowiązania startowe, a maskowanie kieruje jednostkę na /dev/null. Tylko trzecie blokuje też aktywację przez gniazdo, timer lub zależność, co czyni je najsilniejszym z trzech. Kolejność ma znaczenie, dopóki jeszcze decydujesz, co zrobić z komputerem. Maskowanie jest właściwym stanem podczas tej decyzji, bo zawodzi głośno, zamiast po cichu startować przy następnym rozruchu.
Zdejmij maskowanie przed ponowną instalacją, inaczej nowy pakiet będzie wyglądał na zepsuty z powodu, którego nikt nie zapisał. Ta sama ostrożność dotyczy różnic w pakowaniu: jedno wydanie dostarcza jednostkę, którą można zatrzymać, a inne nie zostawia żadnej usługi. Ustal, jakie masz pakowanie, zanim wybierzesz czasownik, bo ścieżka czyszczenia się różni.
Dzikimi znakami usuwa się niewłaściwy profil
Usuń profil z zapisanym UUID i nigdy dzikim znakiem. Katalog keyfile zawiera też wszystkie profile Wi-Fi i Ethernet na komputerze, więc szerokie dopasowanie usuwa rzeczy, których nadal potrzebujesz. Ręcznie usunięty keyfile może zostać odtworzony przez politykę, która nim zarządza, przez co usunięcie wygląda na nieskuteczne.
nmcli connection delete uuid <uuid>
Najpierw wyeksportuj bramę i tożsamość, jeśli ten profil jest jedyną kopią, jaką jeszcze masz, bo lokalne usunięcie niczego nie unieważnia na serwerze. Repozytorium podlega tej samej zasadzie: usuń pojedynczy plik dostawcy i jego brelok kluczy, następnie odśwież listy pakietów i ponów instalację, której naprawdę chciałeś. Zostawienie nieaktualnego wpisu strony trzeciej może przypiąć starą zależność albo w ogóle nie odpowiedzieć. Oba usunięcia są małe i każde można cofnąć z kopii, którą zachowujesz.
Co jeszcze działa po restarcie
Zrestartuj, zanim ogłosisz zwycięstwo, a potem szukaj artefaktów, a nie aplikacji. Interfejs tunelu, nieaktualna trasa dzielona i DNS dla każdego łącza pozostawione przez starego klienta wymagają własnego polecenia. Wszystkie trzy mogą przeżyć czyszczenie, które skutecznie usunęło każdy pakiet.
ip link
ip route
resolvectl status
Otwórz też nową powłokę logowania, bo wpis autostartu uruchamia się tylko tam. Następnie przeczytaj /etc/NetworkManager/dispatcher.d/ w poszukiwaniu skryptu, który podnosi połączenie za każdym razem, gdy interfejs zmienia stan, co wyjaśnia powrót tunelu bez usługi za nim. Jeśli coś nadal dzwoni na zewnątrz, prześledź proces do jego rodzica, zamiast usuwać pliki, aż objaw ustąpi. Czyszczenie komputera i unieważnianie konta pozostają osobnymi zadaniami i tylko jedno z nich jest skończone, gdy restart wygląda spokojnie.