Skriptet ditt startar VPN-en; det klargjer han ikkje
Ein startkommando treng ei tilkobling som allereie finst og er godkjend. Skil klargjering frå sesjonsstyring, elles verkar skriptet berre på din Mac.
Du skriv eit skript som køyrer scutil --nc start med namnet på tilkoblinga, det verkar på din Mac, og det feilar på kvar nyinstallert maskin på kontoret. Skriptet er ikkje øydelagt. Det blir bedt om noko det aldri kunne: å starte ei eksisterande tilkobling er ikkje same handlinga som å opprette ei ny.
Klargjering og sesjonsstyring er to arbeid med to eigarar, og ein arbeidsflyt som legg noko anna til grunn, vil klare kvar test på maskina der han vart skriven.
Kva startkommandoen eigentleg snakkar med
Ein sesjonsstyringskommando vender seg til ein konfigurasjon som allereie finst og allereie er godkjend. Han ber systemet om å reise den namngjevne tilkoblinga, med serverinnstillingane, identitetsreferansane og regelen som vart lagra tidlegare. Vart dei aldri installerte, er det ingenting å starte.
Difor dukkar feilen opp på ny maskinvare og ikkje på den berbare datamaskina til administratoren. Ho vart klargjort for månader sidan av ein person som har gløymt det sidan. Tenk på startkommandoen som ein dørklokke nokon la leidningar til i førre kvartal. Å trykkje på han er ikkje det same som å leggje leidningane.
Tre eigarar av ein VPN-konfigurasjon
Ein profil som organisasjonen styrer, kjem frå einingstyring. Profilen ber serveradressene, ordninga for autentisering og regelen organisasjonen krev, og VPN-administratoren er personen som leverer dei. Eit skript bør ikkje byggje desse innstillingane på nytt frå eit visingsnamn det fann i ei liste.
Ein nativ personleg VPN-konfigurasjon blir laga via Network Extension API frå Apple, som dekkjer dei innebygde IPsec- og IKEv2-protokollane. Det er eit programgrensesnitt med eit lagringstrinn og godkjenning frå brukaren, ikkje ein shell-kommando som stille lagar kva slags tunneltype ein leverandør måtte levere.
Ein klient frå tredjepart er eit tredje tilfelle med sitt eige importformat, sitt eige styringsverktøy og ofte sin eigen privilegerte hjelpar. Sesjonen hans er eigd av prosessen til den leverandøren. Å finne ein systemteneste med liknande namn er ikkje prov på at ein systemkommando styrer tunnelen, og å leggje det til grunn gir skript som ser ut til å verke til leverandøren oppdaterer klienten.
Nativ klargjering har lagring og godkjenning
Modellen til Apple er last inn, endre, lagre. Eit program lastar dei eksisterande innstillingane før den første lagringa etter oppstart, endrar konfigurasjonen og lagrar han deretter. Lagringa rapporterer ein feil når ho ikkje kan halde fram, og å oversjå det resultatet gjer ein klargjeringsfeil om til ein tilkoblingsfeil tre steg seinare.
Den første lagringa krev òg at brukaren godkjenner programmet. Det er ei medvite sikkerheitsgrense, og det tyder at den første køyringa på ein ny Mac er interaktiv sjølv når kvar seinare tilkobling og fråkopling kan automatiserast. Planlegg den første køyringa som ei menneskeleg oppgåve med eit menneske til stades. Automatiser den andre køyringa og vidare, og skriv det i runbooken så ingen lovar det umoglege. Ein utrullingsplan som lovar ei fullstendig overvakinglaus første køyring, lovar noko plattforma ikkje tilbyr.
Apple tilrår òg å validere serverkompatibilitet med ein konfigurasjonsprofil før ein stolar på API-et. Å gjere den kontrollen først skil «serveren godtek ikkje denne klienten» frå «klienten lagra aldri innstillingane», som er ulike saker for ulike team.
Kva eit gjentakande startkommando kan leggje til grunn
Etter klargjeringa kan eit skript trygt rette seg mot den eksisterande tilkoblinga via grensesnittet til eigaren. Gi det den stabile identiteten til tilkoblinga pluss handlinga du vil ha, og ikkje noko anna. Det bør ikkje lese ein gjetta innstillingssti, og ikkje leggje til grunn at namnet i menyen er unikt i heile systemet.
For native tilkoblingar er ein namngjeven sesjonsførespurnad som scutil --nc start ei styringshandling. Han installerer ikkje serverinnstillingar, importerer ikkje innloggingsdetaljar og utfører ikkje autorisasjon av første lagring. Behandle han som det siste steget i ei kjede, aldri som heile kjeda.
Hald løyndomar utanfor kommandolinjeargument og utanfor vanleg diagnostisk utdata. Kva identitetsmekanisme utrullinga enn valde, er det han startkommandoen skal stole på, og eit passord som er limt inn i shell-historia er eit funn i kvar gjennomgang.
To godkjenningstestar
Den første kontrollen er klargjering: ta ein nyinstallert Mac og prov at konfigurasjonen finst, er eigd av rett administrator og er fullt godkjend. Gjer det før du testar tilkoblinga, for ein tilkoblingstest på ei maskin som ikkje er klargjort, provar ingenting om skriptet.
Den andre kontrollen er sesjonen: kople til, nå den autoriserte ressursen og kople frå reint. Kvar feil har no ein eigar, og det er den praktiske fordelen med å dele dei to arbeida. Ein manglande profil er eit leveringsproblem, ein lagringsfeil er eit godkjenningsproblem, ein avvist innlogging er eit autentiseringsproblem, og ein timeout etter ein vellukka start er sesjonslaget. Ingen av dei er «skriptet er øydelagt».