Salvestatud Maci VPN-i käivitamine terminalist scutil --nc abil
Kasutage scutil --nc, et salvestatud macOSi VPN-teenust käivitada, kontrollida ja peatada, hoidke mandaadid argv-st väljas ja tõestage, et liiklus kasutab tõesti tunnelit.
Teil on süsteemi seadetes salvestatud VPN-teenus ja soovite, et terminal selle käivitaks. macOSis on toetatud tee scutil --nc, kuid ainult teenuste jaoks, mis kuuluvad süsteemi enda võrguühenduste haldurile. Menüüriba ei ole API: kolmandate osapoolte klientidel on tavaliselt oma automatiseerimine ja haldusteenuse saadetud profiil võib kohaliku käivitamise tagasi lükata. See on minu kontrollnimekiri: leidke täpne teenus, lugege selle olekut, käivitage see, oodake oleku muutumist ja tõestage seejärel, et liiklus kasutab tõesti tunnelit. Peatuge esimesel sammul, mis ei klapi, sest iga järgnev käsk eeldab, et eelmine õnnestus.
Leidke teenus enne, kui proovite seda käivitada
Alustage inventarist, mitte profiili nimest, mida mäletate:
scutil --nc help
scutil --nc list
Iga rida seob oleku teenuse identifikaatori, tüübi ja kuvatava nimega. Identifikaator on väärtus, mille vastu skripte kirjutatakse, sest kuvatavad nimed korduvad ja neid saab muuta. Apple’i scutil-i käsiraamat dokumenteerib võrguühenduse režiimi, samas kui paigaldatud --nc help on selle Maci alamsõnade autoriteetne loend; ärge eeldage, et vanemast juhendist pärit lipp teie macOSi versioonis enam olemas on.
Tühi loend on tulemus, mitte viga. Hankija kliendi või haldusprofiili loodud teenus võib olla aktiivne, olles siin nähtamatu, või nähtav tüübiga, mida natiivne kontroller juhtida ei saa. Sel juhul kasutage hankija tööriista või profiili dokumentatsiooni. Paralleelse natiivse profiili loomine ainult selleks, et midagi käivitada, on halb tehing.
Lugege praegust olekut ja kinnitage valija
Pärige teenuse olekut enne käivitamist, et teada, mida edukas käivitus peaks muutma:
scutil --nc status "Office VPN"
Kui kaks teenust jagavad kuvatavat nime, on nimi mitmetähenduslik. Edastage selle asemel identifikaator; käsk aktsepteerib mõlemat, kuid ainult identifikaator valib tagatult ühe teenuse. Kontrollige, et olekusõna oleks teile tuttav — tavaliselt Connected, Disconnected, Connecting või Disconnecting — enne selle skriptis sõelumist. Kontrollige ka, kas profiil on hallatav, sest lukustatud konfiguratsioon võib käsu vastu võtta ning selle siiski eirata või kinnitust küsida.
See olekupäring on odav, kasutage seda automatiseerimises valvurina: käivitage ainult siis, kui olek on Disconnected, ja ärge käsitlege Connectingut ebaõnnestumisena. Kui teenus on juba Connected, jätke käivitamine vahele, selle asemel et töötav tunnel katkestada.
Käivitage ühendus ja oodake oleku stabiliseerumist
Käivituspäring on asünkroonne. Käsk naaseb siis, kui päring on vastu võetud, mitte siis, kui autentimine lõpeb või marsruudid paigaldatakse. Käivitage see, seejärel küsige olekut piiratud ootega ja väljuge, kui teenus langeb tagasi Disconnected olekusse:
scutil --nc start "Office VPN"
n=0
while [ "$n" -lt 30 ]; do
state=$(scutil --nc status "Office VPN" | head -n 1)
[ "$state" = "Connected" ] && break
[ "$state" = "Disconnected" ] && { echo "start failed"; exit 1; }
sleep 2
n=$((n + 1))
done
Connecting olek, mis ei lahene kunagi, viitab tavaliselt mandaatidele, MFA-le või serverile, mitte scutil-ile. Käsk ei saa pakkuda interaktiivset sisselogimist, seega jääb märgist või riistvaravõtmest sõltuv profiil Connectingusse ja langeb lõpuks tagasi. Lugege olekusõna enne korduskatsete lisamist; autentimisküsimuse vastu tsükkel ei saa õnnestuda.
Ärge käsitlege kesta väljumisolekut valmisolekuna. Kasulik signaal on olekustring, millele järgneb tõestus, et tunnel kannab liiklust. Vaikselt naasev käivituskäsk võib teid siiski jätta ühendusega, mis ei autenti kunagi.
Tõestage, et tunnel kannab liiklust, mitte ainult ei ütle Connected
Connected kirjeldab ühendust, mitte marsruutimisotsust. Natiivsed PPP ja IKEv2 teenused loovad ppp või utun liidese ning paigaldavad marsruudid, samas kui jagatud tunnel jätab vaikimisi marsruudi meelega puutumata. Kontrollige liideseid ja mõlemat aadressiperekonda:
ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns
Leidke liides, mille teenus lõi, selle asemel et numbrit oletada, seejärel küsige marsruutimistabelilt, millist liidest konkreetne sihtkoht kasutab: route -n get 10.0.0.10, asendades selle sisemise hostiga. Kui see teatab füüsilisest liidesest, on tunnel üleval, kuid ei kanna seda voogu. Kontrollige jagatud tunneli marsruute, resolveri järjekorda ja kõiki kohalikke tulemüürireegleid, mis lubavad tunneli liidest, kuid mitte protsessi.
Nimede lahendamine on tavaline vale-negatiivne. Sisemised nimed võivad lahenduda vale resolveri kaudu, samal ajal kui tunnel on täiesti terve, mis näib VPN-i rikkena ega ole seda. scutil --dns näitab järjekorda, mida macOS kasutab; pärast resolveri muutust tühjendage vahemälu käskudega dscacheutil -flushcache ja sudo killall -HUP mDNSResponder.
Hoidke mandaadid ja õigused käsurealt väljas
Ärge kunagi pange parooli, eeljagatud võtit ega märgist argumentidesse. Argumendid on protsessiloendites nähtavad ja jõuavad kesta ajalukku ning kopeeritud tugiüleskirjutus võib need paljastada. Profiili enda mandaatide käsitlemine — olgu selleks Keychaini üksus, süsteemi küsimus või kliendi autentimisvoog — on saladuste koht.
Käsu käivitamine sudo-ga ei muuda interaktiivset sisselogimist järelevalveta. See muudab tegelikku kasutajat, mitte GUI-küsimuse, riistvaramärgi või sisselogimise võtmehoidla kättesaadavust. LaunchAgent saab teenuse käivitada pärast seda, kui kasutaja on sisse loginud ja võtmehoidla avatud; LaunchDaemon ei jõua tavaliselt nende kasutajaseansi osadeni. Kui organisatsioon haldab teenust, on selle elutsükli reeglid igast kohalikust skriptist üle.
Peatage teenus ja kontrollige, et see jäi peatatuks
Peatage sama valijaga, mida käivitamiseks kasutasite, seejärel lugege olek uuesti, selle asemel et oletada, et tunnel on kadunud:
scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"
Peatamine, mis naaseb Disconnected olekusse, jätab siiski ühe asja kontrollida: kas profiil on seatud nõudmisel ühenduma, mis võib selle teie skriptita tagasi tuua. Kui teine klient omab marsruute samas Macis, võivad need marsruudid natiivse peatamise üle elada. Kontrollige marsruuti uuesti enne, kui järeldate, et masin on VPN-ist väljas.
Käsitsi käivitatava ümbrise puhul hoidke järjekord fikseerituna: loend, olek, käivitus, päring, marsruuditest, peatamine, kontroll. Ärge sõeluge sõbralikku nime vabavormilisest väljundist, kui identifikaator on saadaval, ja ärge käsitlege käivituskäsu väljumist valmisolekuna. Ühenduse haldur teatab olekust; teie tõestus on olek pluss marsruut, mis osutab tunnelile.