Jy skryf 'n skrip wat scutil --nc start met die verbindingsnaam uitvoer, dit werk op jou Mac, en dit misluk op elke nuut geïmplementeerde masjien in die kantoor. Die skrip is nie stukkend nie. Daar word van hom gevra om iets te doen wat hy nooit kon doen nie: om 'n bestaande verbinding te begin is nie dieselfde bewerking as om een te skep nie.

Inrigting en sessiebeheer is twee take met twee eienaars, en 'n werkvloei wat anders aanneem, sal elke toets op die masjien waar dit geskryf is, slaag.

Waarmee die beginopdrag werklik praat

'n Sessiebeheeropdrag rig hom tot 'n konfigurasie wat reeds bestaan en reeds goedgekeur is. Dit vra die stelsel om daardie genoemde verbinding op te bring, met die bedienerinstellings, identiteitsverwysings en beleid wat vroeër gestoor is. As dié nooit geïnstalleer is nie, is daar niks om te begin nie.

Dit is hoekom die fout op nuwe hardeware verskyn en nie op die administrateur se skootrekenaar nie. Die skootrekenaar is maande gelede deur iemand ingerig wat dit intussen vergeet het. Dink aan die beginopdrag as 'n deurklokkie wat iemand die vorige kwartaal bedraad het. Om dit te druk is nie dieselfde as om die bedrading te installeer nie.

Drie eienaars van 'n VPN-konfigurasie

'n Profiel wat deur die organisasie bestuur word, kom van toestelbestuur. Die profiel dra die bedieneradresse, die verifikasie-reëling en die beleid wat die organisasie vereis, en die VPN-administrateur is die persoon wat dit verskaf. 'n Skrip moet nie daardie instellings herbou uit 'n vertoonnaam wat hy in 'n lys gevind het nie.

'n Inheemse persoonlike VPN-konfigurasie word deur Apple se Network Extension API geskep, wat die ingeboude IPsec- en IKEv2-protokolle dek. Dit is 'n toepassingkoppelvlak met 'n stoorstap en 'n gebruiker-goedkeuring, nie 'n skulpbevel wat stilweg enige tonneltipe skep wat 'n verskaffer lewer nie.

'n Derde-party-kliënt is 'n derde geval met sy eie invoerformaat, sy eie bestuursinstrument en dikwels sy eie bevoorregte helper. Sy sessie word deur daardie verskaffer se proses besit. Om 'n stelseldiens met 'n soortgelyke naam te vind, is nie bewys dat 'n stelselbevel die tonnel beheer nie, en om dit aan te neem lewer skripte wat blyk te werk totdat die verskaffer die kliënt opdateer.

Inheemse inrigting het 'n stoor en 'n goedkeuring

Apple se model is laai, wysig, stoor. 'n Toepassing laai die bestaande voorkeure voor sy eerste stoor ná bekendstelling, verander die konfigurasie en stoor dit dan. Die stoor rapporteer 'n fout wanneer dit nie kan wegskryf nie, en om daardie resultaat te ignoreer, verander 'n inrigfout in 'n verbindingsfout drie stappe later.

Die eerste stoor vereis ook dat die gebruiker die toepassing goedkeur. Dit is 'n doelbewuste sekuriteitsgrens, en dit beteken die eerste lopie op 'n nuwe Mac is interaktief, selfs wanneer elke latere verbinding en ontkoppeling geoutomatiseer kan word. Beplan die eerste lopie as 'n menslike taak met 'n mens teenwoordig. Outomatiseer die tweede lopie en verder, en sê so in die runbook sodat niemand die onmoontlike belowe nie. 'n Ontplooiingsplan wat 'n heeltemal onbewaakte eerste lopie belowe, belowe iets wat die platform nie bied nie.

Apple beveel ook aan om bedienerversoenbaarheid met 'n konfigurasieprofiel te valideer voordat daar op die API staatgemaak word. Om daardie kontrole eerste te doen, skei «die bediener sal nie hierdie kliënt aanvaar nie» van «die kliënt het nooit die instellings gestoor nie», wat verskillende kaartjies vir verskillende spanne is.

Wat 'n herhaalbare beginopdrag mag aanneem

Ná inrigting kan 'n skrip veilig die bestaande verbinding teiken deur sy eienaar se koppelvlak. Gee dit die verbinding se stabiele identiteit plus die aksie wat jy wil hê, en niks anders nie. Dit moet nie 'n geraaide voorkeurpad lees nie, en dit moet nie aanneem die naam wat in die kieslys gewys word, is uniek regoor die stelsel nie.

Vir inheemse verbindings is 'n genoemde sessieversoek soos scutil --nc start 'n beheerbewerking. Dit installeer nie bedienerinstellings nie, voer nie geloofsbriewe in nie en doen nie eerste-stoor-magtiging nie. Behandel dit as die laaste stap van 'n ketting, nooit as die hele ketting nie.

Hou geheime uit opdragreël-argumente en uit gewone diagnostiese uitvoer. Watter identiteitsmeganisme die ontplooiing ook al gekies het, is die een waarop die beginopdrag moet staatmaak, en 'n wagwoord wat in 'n skulpgeskiedenis geplak is, is 'n bevinding in enige hersiening.

Twee aanvaardingstoetse

Die eerste toets is inrigting: neem 'n vars geïmplementeerde Mac en bewys die konfigurasie is teenwoordig, word deur die regte bestuurder besit en is ten volle goedgekeur. Doen dit voordat konnektiwiteit getoets word, want 'n verbindingstoets op 'n oningerigte masjien bewys niks oor die skrip nie.

Die tweede toets is die sessie: koppel, bereik die gemagtigde hulpbron en ontkoppel skoon. Elke fout het nou 'n eienaar, wat die praktiese voordeel van die splitsing van die twee take is. 'n Ontbrekende profiel is 'n afleweringsprobleem, 'n stoorfout is 'n goedkeuringsprobleem, 'n verwerpte aanmelding is 'n verifikasieprobleem, en 'n time-out ná 'n suksesvolle begin is die sessielaag. Nie een van hulle is «die skrip is stukkend» nie.

Verwante artikels