Scrii un script care rulează scutil --nc start cu numele conexiunii, funcționează pe Mac-ul tău și eșuează pe fiecare mașină proaspăt instalată din birou. Scriptul nu este stricat. I se cere ceva ce nu a putut niciodată: pornirea unei conexiuni existente nu este aceeași operație cu crearea uneia noi.

Pregătirea și controlul sesiunii sunt două lucrări cu doi proprietari, iar un flux de lucru care presupune contrariul va trece fiecare test pe mașina pe care a fost scris.

Cu ce vorbește de fapt comanda de pornire

O comandă de control al sesiunii se adresează unei configurații care există deja și este deja aprobată. Cere sistemului să ridice acea conexiune numită, folosind setările serverului, referințele de identitate și politica salvate anterior. Dacă acestea nu au fost niciodată instalate, nu există nimic de pornit.

De aceea defecțiunea apare pe hardware nou și nu pe laptopul administratorului. Laptopul a fost pregătit acum câteva luni de o persoană care a uitat între timp. Gândește-te la comanda de pornire ca la un sonerie la care cineva a tras fire trimestrul trecut. A apăsa pe ea nu este același lucru cu a pune cablajul.

Trei proprietari ai unei configurații VPN

Un profil administrat de organizație vine din administrarea dispozitivelor. Profilul poartă adresele serverului, aranjamentul de autentificare și politica cerută de organizație, iar administratorul VPN este persoana care le furnizează. Un script nu ar trebui să reconstruiască acele setări dintr-un nume afișat pe care l-a găsit într-o listă.

O configurație VPN personală nativă este creată prin Network Extension API de la Apple, care acoperă protocoalele IPsec și IKEv2 integrate. Este o interfață de aplicație cu un pas de salvare și o aprobare a utilizatorului, nu o comandă shell care creează în tăcere orice tip de tunel livrat de un furnizor.

Un client terț este un al treilea caz, cu propriul format de import, propriul instrument de administrare și adesea propriul ajutor privilegiat. Sesiunea lui aparține procesului acelui furnizor. Găsirea unui serviciu de sistem cu nume similar nu este dovada că o comandă de sistem controlează tunelul, iar presupunerea aceasta produce scripturi care par să funcționeze până când furnizorul actualizează clientul.

Pregătirea nativă are o salvare și o aprobare

Modelul Apple este încarcă, modifică, salvează. O aplicație încarcă preferințele existente înainte de prima salvare după lansare, modifică configurația și apoi o salvează. Salvarea raportează o eroare când nu poate persista, iar ignorarea acelui rezultat transformă o eroare de pregătire într-o eroare de conexiune trei pași mai târziu.

Prima salvare cere, de asemenea, ca utilizatorul să aprobe aplicația. Aceasta este o graniță de securitate deliberată și înseamnă că prima rulare pe un Mac nou este interactivă chiar dacă fiecare conectare și deconectare ulterioară poate fi automatizată. Planifică prima rulare ca sarcină umană cu o persoană prezentă. Automatizează a doua rulare și cele următoare, și scrie asta în runbook ca nimeni să nu promită imposibilul. Un plan de implementare care promite o primă rulare complet nesupravegheată promite ceva ce platforma nu oferă.

Apple recomandă de asemenea validarea compatibilității serverului cu un profil de configurare înainte de a te baza pe API. A face acea verificare mai întâi separă «serverul nu va accepta acest client» de «clientul nu a salvat niciodată setările», care sunt tichete diferite pentru echipe diferite.

Ce poate presupune o comandă de pornire repetabilă

După pregătire, un script poate în siguranță viza conexiunea existentă prin interfața proprietarului ei. Dă-i identitatea stabilă a conexiunii plus acțiunea dorită, și nimic altceva. Nu ar trebui să citească o cale de preferințe ghicită și nu ar trebui să presupună că numele afișat în meniu este unic în întregul sistem.

Pentru conexiunile native, o cerere de sesiune cu nume precum scutil --nc start este o operație de control. Nu instalează setările serverului, nu importă acreditări și nu efectuează autorizarea primei salvări. Trateaz-o ca ultimul pas al unui lanț, niciodată ca întreg lanțul.

Ține secretele în afara argumentelor liniei de comandă și în afara ieșirii de diagnostic obișnuite. Indiferent ce mecanism de identitate a ales implementarea, pe acela trebuie să se bazeze comanda de pornire, iar o parolă lipită în istoricul shell-ului este o constatare în orice revizuire.

Două verificări de acceptare

Prima verificare este pregătirea: ia un Mac proaspăt instalat și demonstrează că configurația există, aparține administratorului corect și este pe deplin aprobată. Fă asta înainte de a testa conectivitatea, pentru că un test de conexiune pe o mașină nepregătită nu demonstrează nimic despre script.

A doua verificare este sesiunea: conectează-te, ajunge la resursa autorizată și deconectează-te curat. Acum fiecare eșec are un proprietar, iar acesta este beneficiul practic al separării celor două lucrări. Un profil lipsă este o problemă de livrare, o eroare de salvare este o problemă de aprobare, o autentificare respinsă este o problemă de autentificare, iar un timeout după o pornire reușită este stratul de sesiune. Niciunul dintre ele nu este «scriptul este stricat».

Articole similare