Պահված Mac VPN-ի մեկնարկը տերմինալից scutil --nc-ով
Օգտագործեք scutil --nc-ը՝ պահված macOS VPN ծառայությունը մեկնարկելու, ստուգելու և կանգնեցնելու համար, հավատարմագրերը պահեք argv-ից դուրս և ապացուցեք, որ երթևեկությունն իսկապես օգտագործում է թունելը։
Դուք ունեք պահված VPN ծառայություն Համակարգի կարգավորումներում, և ուզում եք, որ տերմինալը միացնի այն։ macOS-ում աջակցվող ուղին scutil --nc-ն է, բայց միայն այն ծառայությունների համար, որոնք պատկանում են համակարգի սեփական ցանցային միացումների կառավարչին։ Ընտրացանկի գոտին API չէ՝ երրորդ կողմի հաճախորդները սովորաբար ունեն իրենց սեփական ավտոմատացումը, և կառավարման ծառայության կողմից ուղարկված պրոֆիլը կարող է մերժել տեղական մեկնարկը։ Սա այն ստուգաթերթն է, որը ես անցնում եմ՝ գտեք ճշգրիտ ծառայությունը, կարդացեք դրա վիճակը, մեկնարկեք այն, սպասեք վիճակի փոփոխությանը, ապա ապացուցեք, որ երթևեկությունն իսկապես օգտագործում է թունելը։ Կանգ առեք առաջին այն քայլի վրա, որը չի համապատասխանում, որովհետև յուրաքանչյուր հաջորդ հրաման ենթադրում է, որ նախորդը հաջողվել է։
Գտեք ծառայությունը նախքան այն մեկնարկելը
Սկսեք գույքագրումից, ոչ թե հիշվող պրոֆիլի անունից՝
scutil --nc help
scutil --nc list
Յուրաքանչյուր տող վիճակը զուգակցում է ծառայության նույնացուցիչի, տեսակի և ցուցադրվող անվան հետ։ Նույնացուցիչն այն արժեքն է, որի դեմ գրվում են սկրիպտներ, որովհետև ցուցադրվող անունները կրկնվում են և կարող են խմբագրվել։ Apple-ի scutil ձեռնարկը փաստագրում է ցանցային միացման եղանակը, մինչդեռ տեղադրված --nc help-ը այդ Mac-ում ենթահրամանների հեղինակավոր ցանկն է՝ մի ենթադրեք, որ հին ուղեցույցի դրոշակը դեռ գոյություն ունի ձեր macOS տարբերակում։
Դատարկ ցանկը արդյունք է, ոչ սխալ։ Մատակարարի հաճախորդի կամ կառավարման պրոֆիլի ստեղծած ծառայությունը կարող է ակտիվ լինել, մինչ այստեղ անտեսանելի է, կամ տեսանելի լինել այնպիսի տեսակով, որը բնիկ կարգավորիչը չի կարող վարել։ Այդ դեպքում օգտագործեք մատակարարի գործիքը կամ պրոֆիլի փաստաթղթերը։ Զուգահեռ բնիկ պրոֆիլ ստեղծելը միայն մեկնարկելու բան ունենալու համար վատ գործարք է։
Կարդացեք ընթացիկ վիճակը և հաստատեք ընտրիչը
Հարցրեք ծառայության վիճակը մինչև մեկնարկելը, որպեսզի իմանաք, թե հաջող մեկնարկն ինչ պետք է փոխի՝
scutil --nc status "Office VPN"
Եթե երկու ծառայություններ կիսում են նույն ցուցադրվող անունը, անունը երկիմաստ է։ Փոխանցեք նույնացուցիչը դրա փոխարեն՝ հրամանն ընդունում է երկուսն էլ, բայց միայն նույնացուցիչն է երաշխավորում մեկ ծառայության ընտրությունը։ Ստուգեք, որ վիճակի բառը ձեզ ծանոթներից մեկն է՝ սովորաբար Connected, Disconnected, Connecting կամ Disconnecting, նախքան այն սկրիպտում վերլուծելը։ Նաև ստուգեք՝ պրոֆիլը կառավարվա՞ծ է, որովհետև կողպված կարգավորումը կարող է ընդունել հրամանը և միևնույն ժամանակ անտեսել այն կամ հաստատում պահանջել։
Վիճակի այս կանչը էժան է, ուստի օգտագործեք այն որպես պահապան ավտոմատացման մեջ՝ մեկնարկեք միայն երբ վիճակը Disconnected է, և Connecting-ը մի համարեք ձախողում։ Եթե ծառայությունն արդեն Connected է, բաց թողեք մեկնարկը՝ աշխատող թունելն ընդհատելու փոխարեն։
Մեկնարկեք միացումը և սպասեք վիճակի կայունացմանը
Մեկնարկի հարցումը ասինխրոն է։ Հրամանը վերադառնում է, երբ հարցումն ընդունված է, ոչ թե երբ նույնականացումն ավարտվում է կամ երթուղիները տեղադրվում են։ Գործարկեք այն, ապա հարցրեք վիճակը սահմանափակ սպասմամբ և դուրս եկեք, եթե ծառայությունը վերադառնում է 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
Երբեք չլուծվող Connecting վիճակը սովորաբար մատնանշում է հավատարմագրեր, MFA կամ սերվեր, ոչ թե scutil։ Հրամանը չի կարող ինտերակտիվ մուտք ապահովել, ուստի թոքեն կամ ապարատային բանալի սպասող պրոֆիլը կմնա Connecting-ում և ի վերջո հետ կընկնի։ Կարդացեք վիճակի բառը նախքան կրկնափորձեր ավելացնելը՝ նույնականացման հուշման դեմ ցիկլը չի կարող հաջողվել։
Շերտի ելքի կարգավիճակը մի համարեք պատրաստվածություն։ Օգտակար ազդանշանը վիճակի տողն է, որին հաջորդում է ապացույց, որ թունելը երթևեկություն է տեղափոխում։ Լուռ վերադարձող մեկնարկի հրամանը դեռ կարող է ձեզ թողնել միացումով, որը երբեք չի նույնականացվում։
Ապացուցեք, որ թունելը երթևեկություն է տեղափոխում, ոչ միայն ասում է Connected
Connected-ը նկարագրում է միացումը, ոչ թե երթուղավորման որոշումը։ Բնիկ PPP և IKEv2 ծառայությունները ստեղծում են ppp կամ utun ինտերֆեյս և տեղադրում երթուղիներ, մինչդեռ բաժանված թունելը դիտավորյալ անձեռնմխելի է թողնում լռելյայն երթուղին։ Ստուգեք ինտերֆեյսները և հասցեների երկու ընտանիքները՝
ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns
Գտեք ծառայության ստեղծած ինտերֆեյսը՝ համարը գուշակելու փոխարեն, ապա հարցրեք երթուղավորման աղյուսակին, թե որ ինտերֆեյսն է օգտագործում կոնկրետ նպատակակետը՝ route -n get 10.0.0.10՝ դրա փոխարեն ներքին հոսթ տեղադրելով։ Եթե այն հայտնում է ֆիզիկական ինտերֆեյսը, թունելը միացած է, բայց այդ հոսքը չի տեղափոխում։ Ստուգեք բաժանված թունելի երթուղիները, լուծիչի հերթականությունը և ցանկացած տեղական firewall կանոն, որը թույլ է տալիս թունելի ինտերֆեյսը, բայց ոչ գործընթացը։
Անունների լուծումը սովորական կեղծ բացասականն է։ Ներքին անունները կարող են լուծվել սխալ լուծիչի միջոցով, մինչ թունելը լիովին առողջ է, ինչը VPN խափանում է թվում և այդպիսին չէ։ scutil --dns-ը ցույց է տալիս այն հերթականությունը, որը macOS-ը կօգտագործի՝ լուծիչի փոփոխությունից հետո դատարկեք քեշը dscacheutil -flushcache-ով և sudo killall -HUP mDNSResponder-ով։
Հավատարմագրերն ու արտոնությունները պահեք հրամանի տողից դուրս
Երբեք գաղտնաբառ, նախապես համօգտագործված բանալի կամ թոքեն մի դրեք արգումենտների մեջ։ Արգումենտները տեսանելի են գործընթացների ցանկերում և ընկնում են շերտի պատմության մեջ, և պատճենված աջակցության սղագրությունը կարող է արտահոսել դրանք։ Պրոֆիլի սեփական հավատարմագրերի մշակումը՝ լինի դա Keychain տարր, համակարգի հուշում, թե հաճախորդի նույնականացման հոսք, գաղտնիքների տեղն է։
Հրամանը sudo-ով գործարկելը ինտերակտիվ մուտքը դիտարկվող չի դարձնում։ Այն փոխում է արդյունավետ օգտատիրոջը, ոչ թե GUI հուշման, ապարատային թոքենի կամ մուտքի բանալեպահարանի հասանելիությունը։ LaunchAgent-ը կարող է ծառայություն մեկնարկել այն բանից հետո, երբ օգտատերը մուտք է գործել և բանալեպահարանը բացվել է՝ LaunchDaemon-ը սովորաբար չի հասնում օգտատիրոջ սեսիայի այդ մասերին։ Եթե կազմակերպությունը կառավարում է ծառայությունը, նրա կյանքի ցիկլի կանոնները գերակայում են ցանկացած տեղական սկրիպտի նկատմամբ։
Կանգնեցրեք ծառայությունը և ստուգեք, որ այն մնաց կանգնեցված
Կանգնեցրեք նույն ընտրիչով, որն օգտագործել եք մեկնարկի համար, ապա նորից կարդացեք վիճակը՝ թունելի անհետացումը ենթադրելու փոխարեն՝
scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"
Disconnected վերադարձող կանգը դեռ թողնում է մեկ բան ստուգելու՝ արդյոք պրոֆիլը դրված է պահանջով միացման, ինչը կարող է այն հետ բերել առանց ձեր սկրիպտի։ Եթե մեկ այլ հաճախորդ նույն Mac-ում երթուղիներ ունի, այդ երթուղիները կարող են վերապրել բնիկ կանգը։ Նորից ստուգեք երթուղին նախքան եզրակացնելը, որ մեքենան VPN-ից դուրս է։
Ձեռքով գործարկվող փաթաթանի համար պահեք հերթականությունը հաստատուն՝ ցանկ, վիճակ, մեկնարկ, հարցում, երթուղու փորձարկում, կանգ, ստուգում։ Մի՛ վերլուծեք բարեկամական անունը ազատ ձևաչափի ելքից, երբ նույնացուցիչը հասանելի է, և մեկնարկի հրամանի ելքը մի համարեք պատրաստվածություն։ Միացումների կառավարիչը հաղորդում է վիճակը՝ ձեր ապացույցը վիճակն է գումարած մի երթուղի, որը մատնանշում է թունելին։