Een VPN verwijderen op macOS lijkt één handeling en is in werkelijkheid minstens vier. De knop in Systeeminstellingen wist één netwerkdienst uit het configuratiearchief van het systeem. Hij wist niet de client-app, de netwerkextensie die die app heeft geïnstalleerd, de inloggegevens in je sleutelhanger of een profiel dat door apparaatbeheer is gepusht. Weten welk object welk symptoom bezit, is wat voorkomt dat een verwijderde VPN stilletjes terugkomt.

Wat de knop Configuratie verwijderen echt wist

Elke VPN die je toevoegt wordt een netwerkdienst, hetzelfde soort object als Wi-Fi of Thunderbolt-brug. macOS bewaart ze allemaal hier: /Library/Preferences/SystemConfiguration/preferences.plist, elk met een service-ID, een weergavenaam en een configuratiedictionary die het tunneltype, het serveradres en de manier waarop de tunnel start beschrijft.

Wanneer je Systeeminstellingen en VPN opent, op de infoknop naast een dienst klikt, Configuratie verwijderen kiest en bevestigt, stopt macOS de tunnel, wist dat service-object en herschrijft het archief. Het afbreken is compleet voor wat het systeem bezit: de dienst is weg uit de lijst en niets start hem bij het inloggen.

Wat de knop niet kan bereiken, is alles wat een ander subsysteem bezit. De app-bundel staat hier: /Applications. Een NetworkExtension-client draait als systeemextensie die apart van zijn configuratie is geregistreerd. Inloggegevens zijn sleutelhangeritems met de toegangscontroles van de sleutelhanger die ze bewaart. Een configuratieprofiel is eigendom van het profielsysteem. Verwijder de dienst en alle vier blijven precies waar ze waren.

Inventariseer wat de Mac nog denkt dat geïnstalleerd is

Maak een inventaris voordat je iets verwijdert. Drie opdrachten dekken de drie lagen die dezelfde zichtbare fout veroorzaken:

scutil --nc list
networksetup -listallnetworkservices
profiles -P

scutil --nc list is de gezaghebbende weergave van VPN-configuraties, met verbindingsstatus, dienstnaam en service-ID. Het toont vaak vermeldingen die nooit in de instellingenlijst verschijnen: restdiensten van een client die je maanden geleden hebt verwijderd, en on-demand-configuraties die stilletjes starten. networksetup -listallnetworkservices toont de netwerkdiensten met de namen die de opdrachtregelprogramma's verwachten, en dat heb je nodig om op naam te verwijderen. profiles -P somt geïnstalleerde configuratieprofielen op; op een beheerde Mac is de VPN misschien geen dienst die je zelf hebt toegevoegd, maar een payload in een van die profielen.

Lees de lijsten samen in plaats van de eerste te vertrouwen. scutil maar niet in de instellingen betekent meestal dat een client van derden de tunnel bezit en hem in zijn eigen venster toont. Een dienst in beide weergaven die in de instellingen grijs is, betekent beleid. Een naam die na verwijdering terugkomt, betekent dat iets hem opnieuw maakt, en dat iets is het echte doelwit.

Verwijder de dienst via zijn eigenaar

Voor een dienst die je zelf hebt toegevoegd, blijf op het gedocumenteerde pad: Systeeminstellingen, VPN, de infoknop, Configuratie verwijderen. Apple documenteert dat pad, en het houdt het configuratiearchief consistent. Handmatig bewerken van preferences.plist terwijl de netwerkstack draait, is hoe je dubbele of zombie-diensten krijgt die geen enkele interface verwijdert.

Verwijder de dienst vanuit een terminal op naam met networksetup -removenetworkservice "Service Name", bevestig daarna met scutil --nc list. De opdracht werkt op dezelfde dienstenlijst als de interface, dus een naam die niet in networksetup -listallnetworkservices voorkomt, wordt via geen van beide paden verwijderd. Als een client de tunnel bezit, gebruik dan eerst het verwijder- of verwijderingspad van die client, want de client bouwt de dienst bij de volgende start opnieuw.

Als de VPN van apparaatbeheer komt, ben jij niet de eigenaar. Profielen die door MDM zijn geïnstalleerd kunnen als niet-verwijderbaar zijn gemarkeerd, en zelfs een verwijderbaar profiel kan bij de volgende controle opnieuw worden gepusht. Bevestig met profiles -P, gebruik daarna het uitstapproces van je organisatie. De payload lokaal verwijderen mislukt of veroorzaakt een herinstallatie.

De resten die opnieuw verbinden zonder dienst

Het gebruikelijke «hij is terug»-rapport is niet de dienst die terugkomt, maar de extensie die hem bezit. Som de geregistreerde systeemextensies en app-extensies van het type netwerkextensie op:

systemextensionsctl list
pluginkit -m -p com.apple.networkextension.packet-tunnel

Een NetworkExtension-client houdt zijn tunnelprovider geïnstalleerd onder zijn eigen identificatie, los van elke configuratie. De extensie kan actief blijven nadat de configuratie weg is, en de menubalkagent van de client kan bij de volgende start een nieuwe configuratie maken, soms met hergebruik van de naam die je net hebt verwijderd. Controleer inlogitems en het hulpprogramma van de leverancier hier: /Library/LaunchDaemons voordat je concludeert dat het verwijderen is mislukt.

Inloggegevens zijn de tweede rest. Een opgeslagen wachtwoord of clientcertificaat in de inlogsleutelhanger wordt niet met de dienst verwijderd, en een gedeeld IPSec-geheim leeft historisch in de Systeemsleutelhanger, waardoor verwijderen en opnieuw toevoegen soms de wachtwoordprompt overslaat. Als de Mac je controle verlaat, zoek het item dan op dienstnaam in Keychain Access en trek de account, het certificaat of de peersleutel in die de opgeslagen inloggegevens vertegenwoordigen. A copied configuration file is a live credential even after local removal.

Verifieer het verwijderen en lees een terugkerend profiel correct

Het verwijderen is klaar wanneer de dienst uit beide weergaven weg is en na een herstart weg blijft. Controleer scutil --nc list op de service-ID, bevestig dat naamresolutie de resolver gebruikt die je verwacht met scutil --dns, start daarna één keer opnieuw, want on-demand-regels en inlogagents zijn de twee dingen die zich alleen bij een schone boot laten zien.

Als hij er nog is, verwijder dan geen objecten meer. Zoek uit welke laag hem opnieuw heeft gemaakt: een MDM-profiel pusht de dienst opnieuw, een clientagent bouwt hem opnieuw, of de dienst is nooit verwijderd omdat de naam niet overeenkwam. Dat antwoord bepaalt of je de verwijderaar van de leverancier nodig hebt, je IT-team, of nog een ronde door dezelfde verwijderdialoog. De verwijdergids van Apple behandelt het ondersteunde pad voor diensten die je zelf hebt toegevoegd; de resten zijn het deel dat je zelf moet controleren: remove a VPN configuration.

Gerelateerde artikelen