Uw distributie verwijdert het pakket, uw menu verliest zijn item, en de tunnel komt na de volgende herstart toch weer op. Een commerciële VPN-cliënt laat stukken achter die de pakketbeheerder nooit heeft gevolgd, dus een schone verwijdering is niet hetzelfde als een schone machine. Vier van die stukken verklaren bijna elke spookverbinding: een unit, een verbindingsprofiel, een bevoorrechte helper en een repository van de leverancier. Lees alle vier voordat u iets verwijdert, en verwijder daarna elk via de component die het bezit.

Wat de verwijderaar nooit heeft vastgelegd

Een pakketbeheerder verwijdert de bestanden die hij zelf heeft vastgelegd en niets anders. Hij heeft geen administratie van een verbindingsprofiel dat de cliënt tijdens runtime aanmaakte, van een unit die na de installatie is geactiveerd, of van een helper die zich registreerde terwijl hij met verhoogde rechten draaide. Elk daarvan hoort bij een ander subsysteem, en elk kan het pakket een of meer herstarts overleven. Die kloof verklaart waarom een tunnel gezond kan zijn terwijl de software die hem maakte verdwenen is.

Het restant heeft altijd een eigenaar, of dat nu systemd, NetworkManager, de repository-configuratie of een autostart-item per gebruiker is. Juist eerst de eigenaar vinden voorkomt dat een opruiming een half geconfigureerde machine wordt. Bestanden rechtstreeks verwijderen werkt meestal totdat de eigenaar ze opnieuw aanmaakt, en daarom beginnen de opdrachten hieronder met query’s.

Vier eigenaren, eerst alleen lezen

Begin met query’s in plaats van verwijderen, en noteer de exacte namen die terugkomen. Leveranciers leveren vaak een geversioneerde lading naast een metapakket, waardoor één product onder twee namen kan verschijnen. Een naam die in beide lijsten staat, is één product met twee eigenaren, en beide moeten worden verwijderd. De eerste reeks behandelt pakketten en units, waar de meeste restanten zichtbaar worden.

dpkg -l | grep -i acmevpn
systemctl list-unit-files | grep -i acmevpn
systemctl list-units --type=service --state=running | grep -i acmevpn

De tweede reeks behandelt de twee componenten die een opruiming het vaakst overleven, namelijk het verbindingsprofiel en de repository van de leverancier. Lees de UUID-kolom en niet de naam, want dubbele namen komen veel voor en de verwijderopdracht verwacht de identifier. De repository-regel is ook het lezen waard als u hem vandaag niet verwijdert, want een dode leveranciershost kan maanden later een niet-gerelateerde installatie breken. Geen van beide lijsten verandert iets, en dat is precies de reden om ze eerst uit te voeren.

nmcli -f NAME,UUID,TYPE connection show
nmcli connection show --active
grep -ril acmevpn /etc/apt/sources.list.d/ /etc/apt/sources.list

Een proces dat na de opruiming nog leeft, is ofwel een actieve unit ofwel een kind van een ander programma. Lees de procestabel en de ouderketen voordat u een dienst de schuld geeft die niet meer bestaat. Autostart-items per gebruiker hebben dezelfde controle nodig, en ze verschijnen alleen in een nieuwe inlogshell, niet in een root-sessie.

Drie werkwoorden die niet uitwisselbaar zijn

Stoppen beëindigt de huidige run, uitschakelen verwijdert de opstartkoppelingen, en maskeren wijst de unit naar /dev/null. Alleen het derde blokkeert ook activering via een socket, een timer of een afhankelijkheid, wat het de sterkste van de drie maakt. De volgorde is belangrijk zolang u nog beslist wat u met de machine doet. Maskeren is tijdens die beslissing de juiste toestand, omdat het luid faalt in plaats van stil te starten bij de volgende opstart.

Haal de maskering weg voordat u opnieuw installeert, anders lijkt het nieuwe pakket kapot om een reden die niemand heeft opgeschreven. Dezelfde voorzichtigheid geldt voor verpakkingsverschillen: de ene build levert een unit die gestopt kan worden, terwijl de andere helemaal geen dienst achterlaat. Stel vast welke verpakking u hebt voordat u een werkwoord kiest, omdat het opruimpad verschilt.

Met jokertekens verwijdert u het verkeerde profiel

Verwijder het profiel met de UUID die u hebt genoteerd, en nooit met een jokerteken. De keyfile-map bevat ook elk Wi-Fi- en Ethernet-profiel op de machine, dus een brede match verwijdert dingen die u nog nodig hebt. Een handmatig verwijderde keyfile kan opnieuw worden aangemaakt door het beleid dat er eigenaar van is, waardoor de verwijdering zinloos lijkt.

nmcli connection delete uuid <uuid>

Exporteer eerst de gateway en identiteit als dat profiel de enige kopie is die u nog hebt, omdat een lokale verwijdering niets intrekt op de server. De repository volgt dezelfde regel: verwijder het ene leveranciersbestand en zijn sleutelring, ververs daarna de pakketlijsten en probeer de installatie die u echt wilde opnieuw. Een verouderde externe vermelding laten staan kan een oude afhankelijkheid vastzetten of helemaal niet antwoorden. Beide verwijderingen zijn klein, en elk ervan kan ongedaan worden gemaakt vanuit de kopie die u bewaart.

Wat na de herstart nog draait

Herstart voordat u de overwinning uitroept, en zoek daarna naar artefacten in plaats van naar de toepassing. Een tunnelinterface, een verouderde gesplitste route en DNS per link die de oude cliënt achterliet, hebben elk hun eigen opdracht nodig. Alle drie kunnen een opruiming overleven die elk pakket met succes verwijderde.

ip link
ip route
resolvectl status

Open ook een nieuwe inlogshell, want een autostart-item wordt alleen daar geactiveerd. Lees daarna /etc/NetworkManager/dispatcher.d/ voor een script dat een verbinding opzet telkens wanneer een interface van toestand verandert, wat een tunnel verklaart die terugkomt zonder dienst erachter. Als er nog iets naar buiten belt, volg het proces tot zijn ouder in plaats van bestanden te verwijderen tot het symptoom stopt. De machine opruimen en het account intrekken blijven aparte taken, en slechts één ervan is klaar wanneer de herstart rustig lijkt.

Gerelateerde artikelen