Pokrenite sačuvani Mac VPN iz terminala pomoću scutil --nc
Koristite scutil --nc da pokrenete, pregledate i zaustavite sačuvanu macOS VPN uslugu, držite akreditive izvan argv i dokažite da saobraćaj zaista ide kroz tunel.
Imate sačuvanu VPN uslugu u Sistemskim postavkama i želite da je terminal pokrene. Na macOS-u podržan put je scutil --nc, ali samo za usluge koje posjeduje vlastiti mrežni menadžer sistema. Traka menija nije API: klijenti trećih strana obično imaju vlastitu automatizaciju, a profil koji je poslao servis za upravljanje može odbiti lokalno pokretanje. Ovo je kontrolna lista koju slijedim: pronađite tačnu uslugu, pročitajte njeno stanje, pokrenite je, sačekajte da se stanje promijeni, a zatim dokažite da saobraćaj zaista ide kroz tunel. Zaustavite se na prvom koraku koji se ne slaže, jer svaka kasnija komanda pretpostavlja da je prethodna uspjela.
Pronađite uslugu prije nego što je pokušate pokrenuti
Počnite s inventarom, a ne s imenom profila kojeg se sjećate:
scutil --nc help
scutil --nc list
Svaki red spaja status s identifikatorom usluge, tipom i prikazanim imenom. Identifikator je vrijednost prema kojoj se pišu skripte, jer se prikazana imena ponavljaju i mogu se mijenjati. Appleov scutil priručnik dokumentira način mrežne veze, dok je instalirani --nc help autoritativna lista podkomandi na tom Macu; ne pretpostavljajte da zastavica iz starijeg vodiča još postoji u vašoj verziji macOS-a.
Prazna lista je rezultat, a ne greška. Usluga koju je stvorio klijent dobavljača ili profil za upravljanje može biti aktivna dok je ovdje nevidljiva, ili vidljiva s tipom kojim vlastiti kontroler ne može upravljati. U tom slučaju upotrijebite alat dobavljača ili dokumentaciju profila. Stvaranje paralelnog vlastitog profila samo da biste imali što pokrenuti loša je trgovina.
Pročitajte trenutno stanje i potvrdite selektor
Provjerite stanje usluge prije pokretanja, da biste znali šta uspješno pokretanje treba promijeniti:
scutil --nc status "Office VPN"
Ako dvije usluge dijele prikazano ime, ime je dvosmisleno. Proslijedite identifikator umjesto toga; komanda prihvata oba, ali samo identifikator garantovano bira jednu uslugu. Provjerite da je riječ stanja ona koju prepoznajete — obično Connected, Disconnected, Connecting ili Disconnecting — prije nego je parsirate u skripti. Također provjerite da li se profilom upravlja, jer zaključana konfiguracija može prihvatiti komandu i ipak je ignorisati ili zatražiti potvrdu.
Ovaj poziv stanja je jeftin, pa ga koristite kao čuvar u automatizaciji: pokrenite samo kada je status Disconnected i ne tretirajte Connecting kao neuspjeh. Ako je usluga već Connected, preskočite pokretanje umjesto da prekinete radni tunel.
Pokrenite vezu i sačekajte da se stanje stabilizuje
Zahtjev za pokretanje je asinhron. Komanda se vraća kada je zahtjev prihvaćen, a ne kada autentifikacija završi ili se rute instaliraju. Pokrenite je, zatim provjeravajte stanje s ograničenim čekanjem i izađite ako se usluga vrati na Disconnected:
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
Status Connecting koji se nikada ne riješi obično ukazuje na akreditive, MFA ili server, a ne na scutil. Komanda ne može pružiti interaktivnu prijavu, pa će profil koji očekuje token ili hardverski ključ stajati u Connecting i na kraju se povući. Pročitajte riječ stanja prije nego dodate ponovne pokušaje; petlja protiv upita za autentifikaciju ne može uspjeti.
Ne tretirajte izlazni status ljuske kao spremnost. Korisni signal je niz stanja, praćen dokazom da tunel nosi saobraćaj. Komanda za pokretanje koja se tiho vrati može vas ipak ostaviti s vezom koja se nikada ne autentifikuje.
Dokažite da tunel nosi saobraćaj, a ne samo da piše Connected
Connected opisuje vezu, a ne odluku o rutiranju. Vlastite PPP i IKEv2 usluge kreiraju interfejs ppp ili utun i instaliraju rute, dok podijeljeni tunel namjerno ostavlja zadanu rutu na miru. Pregledajte interfejse i obje porodice adresa:
ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns
Pronađite interfejs koji je usluga stvorila umjesto da pogađate broj, zatim pitajte tabelu rutiranja koji interfejs koristi određena destinacija: route -n get 10.0.0.10, uz zamjenu internim hostom. Ako prijavi fizički interfejs, tunel je aktivan ali ne nosi taj tok. Provjerite rute podijeljenog tunela, redoslijed rezolvera i svako lokalno pravilo firewall-a koje dozvoljava interfejs tunela ali ne proces.
Razrješavanje imena je uobičajeni lažni negativ. Interna imena mogu se razriješiti kroz pogrešan rezolver dok je tunel savršeno zdrav, što izgleda kao kvar VPN-a i nije. scutil --dns prikazuje redoslijed koji će macOS koristiti; nakon promjene rezolvera ispraznite keš s dscacheutil -flushcache i sudo killall -HUP mDNSResponder.
Držite akreditive i privilegije izvan komandne linije
Nikada ne stavljajte lozinku, unaprijed podijeljeni ključ ili token u argumente. Argumenti su vidljivi u listama procesa i završavaju u historiji ljuske, a kopiran transkript podrške može ih odati. Vlastito rukovanje akreditivima profila — bilo da je riječ o stavci Keychaina, sistemskom upitu ili toku autentifikacije klijenta — mjesto je za tajne.
Pokretanje komande s sudo ne čini interaktivnu prijavu nadziranom. Ono mijenja efektivnog korisnika, a ne dostupnost GUI upita, hardverskog tokena ili keychaina za prijavu. LaunchAgent može pokrenuti uslugu nakon što se korisnik prijavi i keychain otključa; LaunchDaemon obično ne može dosegnuti te dijelove korisničke sesije. Ako organizacija upravlja uslugom, njena pravila životnog ciklusa pobjeđuju svaku lokalnu skriptu.
Zaustavite uslugu i provjerite da je ostala zaustavljena
Zaustavite istim selektorom kojim ste je pokrenuli, zatim ponovo pročitajte stanje umjesto da pretpostavite da je tunel nestao:
scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"
Zaustavljanje koje se vrati na Disconnected ipak ostavlja jednu stvar za provjeru: da li je profil postavljen na povezivanje na zahtjev, što ga može vratiti bez vaše skripte. Ako drugi klijent posjeduje rute na istom Macu, te rute mogu preživjeti vlastito zaustavljanje. Ponovo provjerite rutu prije nego zaključite da je mašina van VPN-a.
Za omotač koji pokrećete ručno, držite redoslijed fiksnim: lista, status, pokretanje, provjera, test rute, zaustavljanje, potvrda. Ne parsirajte prijateljsko ime iz slobodnog izlaza kada je identifikator dostupan i ne tretirajte izlaz komande za pokretanje kao spremnost. Menadžer veza izvještava stanje; vaš dokaz je stanje plus ruta koja pokazuje na tunel.