Client VPN pentru Mac: Network Extension versus System Extension
Network Extension este o capacitate, iar System Extensions un mecanism de livrare: separă-le pentru a alege pasul de aprobare din macOS și jurnalul de citit.
Doi termeni Apple sunt folosiți ca și cum ar numi același lucru, iar această confuzie trimite oamenii în panoul de setări greșit. Network Extension descrie o capacitate: o modalitate acceptată de a implementa tuneluri VPN, proxy-uri și filtre. System Extensions descrie un mecanism de livrare și aprobare pentru extensiile din spațiul utilizatorului. Un client VPN modern pentru Mac are de obicei nevoie de ambele, de aceea niciuna dintre etichete nu explică singură un simptom. Separarea celor două răspunde la ce componentă să verifici și la ce pas de aprobare să te aștepți.
Două întrebări, nu o etichetă
Întreabă ce face componenta înainte de a întreba cum este instalată. Capacitatea decide ce clasă de furnizor există și, prin urmare, ce cod gestionează pachetele tale. Mecanismul de livrare decide cum ajunge binarul, cum este aprobat și unde este înregistrată starea sa. Un produs poate implementa un tunel de pachete fără a livra o extensie de sistem pe versiunile mai vechi și poate livra o extensie de sistem care implementează altceva decât un tunel.
Extensiile de kernel sunt al treilea termen pe care oamenii îl amestecă. Erau modalitatea mai veche de a rula cod de rețea privilegiat, cereau aprobări diferite, iar Apple îndepărtează dezvoltatorii de ele de ani de zile. Aplicarea unei rețete de aprobare a extensiei de kernel la un client modern pierde timp pe un dialog care nu va apărea niciodată.
Citește notele de implementare ale furnizorului pentru versiunea de macOS pe care o rulezi în loc de o postare de forum dintr-o versiune anterioară. Arhitectura s-a schimbat de mai multe ori, iar instrucțiunile se învechesc repede. O notă care menționează aprobarea extensiei de kernel descrie o altă eră a produsului.
Ce oferă Network Extension
Framework-ul oferă tipuri de furnizor pentru sarcinile obișnuite de rețea: un tunel de pachete pentru traficul VPN, un proxy de aplicații pentru fluxurile pe aplicație, un filtru de conținut pentru inspectarea traficului și gestionarea proxy-ului DNS pentru comportamentul resolverului. Tipul de furnizor determină ce poate face extensia, iar un client care livrează doi furnizori poate face două lucrări diferite.
Acest lucru contează în timpul diagnosticării, pentru că același simptom de conectivitate poate veni de la un tunel, un filtru sau un proxy DNS. Blocarea unui site este o decizie a filtrului, imposibilitatea de a ajunge la o subrețea privată este de obicei o decizie a tunelului, iar rezolvarea adresei greșite este de obicei o decizie a resolverului. Numirea tipului de furnizor restrânge căutarea înainte de a citi vreun jurnal.
Nimic din framework nu implică o poziție privind confidențialitatea. O extensie în spațiul utilizatorului are în continuare permisiuni, configurație și un operator în spate, așa că tratează arhitectura ca pe un detaliu de implementare, nu ca pe un semnal de încredere. Întreabă cine operează punctul final și ce este configurat să colecteze.
Ce schimbă System Extensions
Mecanismul mută codul privilegiat din kernel în spațiul utilizatorului și schimbă modul în care sistemul de operare cere consimțământul. Activarea este un pas separat de instalare, iar utilizatorul sau un profil MDM trebuie să o permită. Un client care se instalează, dar nu se activează niciodată pare prezent în folderul Applications și nu face nimic pentru conectivitate.
Starea este înregistrată de sistem, nu de aplicație, ceea ce este util pentru că poate fi interogată. Comanda de mai jos listează extensiile pe care sistemul le cunoaște și starea lor de activare.
systemextensionsctl list
scutil --nc list
Prima comandă răspunde dacă componenta este instalată și activată. A doua listează configurațiile VPN pe care sistemul le deține, ceea ce este o altă întrebare și adesea cea care contează atunci când lipsește un profil de conexiune, nu când este stricat.
Pe care să o verifici pentru un anumit simptom
Potrivește simptomul cu stratul înainte de a deschide un panou de setări. O configurație lipsă este o întrebare de profil, o componentă instalată dar inactivă este o întrebare de livrare, iar o componentă activă care nu lasă traficul să treacă este o întrebare de capacitate.
| 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 |
Fluxul de jurnal este dovada comună pentru ultimele două rânduri. Citirea subsistemului de extensie de rețea spune ce furnizor a gestionat fluxul, iar o decizie a filtrului arată diferit de o defecțiune a tunelului chiar și atunci când utilizatorul le descrie pe amândouă ca VPN stricat.
log show --last 10m --predicate 'process == "nesessionmanager"'
Nu concluziona că o extensie este activă pentru că există o pictogramă în bara de meniu. Pictogramele supraviețuiesc activărilor eșuate, iar o pictogramă învechită este unul dintre cele mai frecvente motive pentru care un apel la suport începe în locul greșit. Citește în schimb starea de activare, pentru că aceasta este cea pe care o înregistrează sistemul.
Aprobare, MDM și mitul extensiei de kernel
Pe Mac-urile gestionate, pasul de aprobare aparține profilului MDM, iar un utilizator care face clic pe Allow în System Settings poate fi în continuare blocat de o politică ce nu a fost actualizată. Întreabă echipa de desktop ce mecanism aprobă extensia pentru acea flotă înainte de a cere utilizatorului să facă clic pe ceva.
Pe un Mac negestionat, solicitarea de aprobare apare o singură dată, iar o respingere poate fi permanentă până când extensia este reinstalată. Acest comportament explică mașina pe care clientul funcționa înainte de o actualizare a sistemului și care acum raportează o conexiune ce nu se stabilește niciodată.
Notează tipul de furnizor, starea de activare și mecanismul de aprobare pentru clientul pe care îl implementezi. Aceste trei fapte răspund la majoritatea întrebărilor viitoare despre un VPN pentru Mac fără a redeschide dezbaterea capacitate versus livrare.