Mac VPN-klient: Network Extension kontra System Extension
Network Extension är en förmåga och System Extensions en leveransmekanism: skilj dem åt för att välja macOS-godkännandesteget och loggen du läser.
Två Apple-termer används som om de namngav samma sak, och den förvirringen skickar människor till fel inställningspanel. Network Extension beskriver en förmåga: ett stödt sätt att implementera VPN-tunnlar, proxyservrar och filter. System Extensions beskriver en leverans- och godkännandemekanism för utökningar i användarutrymmet. En modern Mac VPN-klient behöver oftast båda, och därför förklarar ingen av etiketterna ensam ett symptom. Att skilja de två åt svarar på vilken komponent som ska undersökas och vilket godkännandesteg som kan förväntas.
Två frågor, inte en etikett
Fråga vad komponenten gör innan du frågar hur den installeras. Förmågan avgör vilken leverantörsklass som finns och därmed vilken kod som hanterar dina paket. Leveransmekanismen avgör hur binären kommer, hur den godkänns och var dess tillstånd registreras. En produkt kan implementera en pakettunnel utan att leverera en systemutökning på äldre versioner, och den kan leverera en systemutökning som implementerar något annat än en tunnel.
Kärnutökningar är den tredje termen som folk blandar in. De var det äldre sättet att köra privilegierad nätkod, de krävde andra godkännanden, och Apple har i åratal styrt utvecklare bort från dem. Att tillämpa ett recept för godkännande av kärnutökningar på en modern klient slösar tid på en dialog som aldrig visas.
Läs leverantörens distributionsanteckningar för den macOS-version du kör i stället för ett foruminlägg från en tidigare version. Arkitekturen ändrades mer än en gång, och instruktionerna blir snabbt föråldrade. En anteckning som nämner godkännande av kärnutökningar beskriver en annan era av produkten.
Vad Network Extension erbjuder
Ramverket erbjuder leverantörstyper för de vanliga nätverksuppgifterna: en pakettunnel för VPN-trafik, en app-proxy för strömmar per applikation, ett innehållsfilter för att inspektera trafik och DNS-proxyhantering för resolverens beteende. Leverantörstypen avgör vad utökningen kan göra, och en klient som levererar två leverantörer kan utföra två olika arbeten.
Det spelar roll vid diagnostik eftersom samma anslutningssymptom kan komma från en tunnel, ett filter eller en DNS-proxy. Att blockera en webbplats är ett filterbeslut, att inte nå ett privat subnät är oftast ett tunnelbeslut, och att lösa fel adress är oftast ett resolverbeslut. Att namnge leverantörstypen snävar in sökningen innan någon logg läses.
Ingenting i ramverket antyder en integritetshållning. En utökning i användarutrymmet har fortfarande behörigheter, konfiguration och en operatör bakom sig, så behandla arkitekturen som en implementeringsdetalj och inte som en tillförlitlighetssignal. Fråga vem som driver slutpunkten och vad den är konfigurerad att samla in.
Vad System Extensions ändrar
Mekanismen flyttar privilegierad kod ut ur kärnan och in i användarutrymmet, och den ändrar hur operativsystemet ber om samtycke. Aktivering är ett separat steg från installation, och användaren eller en MDM-profil måste tillåta det. En klient som installeras men aldrig aktiveras ser ut att finnas i mappen Applications och gör ingenting för anslutningen.
Tillståndet registreras av systemet och inte av appen, vilket är användbart eftersom det kan frågas efter. Kommandot nedan listar de utökningar systemet känner till och deras aktiveringstillstånd.
systemextensionsctl list
scutil --nc list
Det första kommandot svarar på om komponenten är installerad och aktiverad. Det andra listar de VPN-konfigurationer systemet har, vilket är en annan fråga och ofta den som spelar roll när en anslutningsprofil saknas i stället för att vara trasig.
Vilken som ska undersökas för ett givet symptom
Koppla symptomet till lagret innan du öppnar en inställningspanel. En saknad konfiguration är en profilfråga, en installerad men inaktiv komponent är en leveransfråga, och en aktiv komponent som inte släpper igenom trafik är en förmågefråga.
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
Loggströmmen är det gemensamma beviset för de två sista raderna. Att läsa nätverksutökningens delsystem berättar vilken leverantör som hanterade strömmen, och ett filterbeslut ser annorlunda ut än ett tunnelfel även när användaren beskriver båda som trasig VPN.
log show --last 10m --predicate 'process == "nesessionmanager"'
Dra inte slutsatsen att en utökning är aktiv bara för att det finns en ikon i menyraden. Ikoner överlever misslyckade aktiveringar, och en inaktuell ikon är en av de vanligaste orsakerna till att ett supportärende börjar på fel ställe. Läs i stället aktiveringstillståndet, eftersom det är vad systemet registrerar.
Godkännande, MDM och myten om kärnutökningen
På hanterade Macar tillhör godkännandesteget MDM-profilen, och en användare som klickar på Allow i System Settings kan fortfarande blockeras av en policy som inte har uppdaterats. Fråga skrivbordsteamet vilken mekanism som godkänner utökningen för den flottan innan du ber användaren klicka på något.
På en icke-hanterad Mac visas godkännandefrågan en gång, och ett avslag kan vara permanent tills utökningen installeras om. Det beteendet förklarar maskinen där klienten fungerade före en OS-uppgradering och nu rapporterar en anslutning som aldrig upprättas.
Skriv ned leverantörstypen, aktiveringstillståndet och godkännandemekanismen för den klient du distribuerar. Dessa tre fakta besvarar de flesta framtida frågor om en Mac VPN utan att öppna debatten förmåga kontra leverans igen.