scutil --nc વડે ટર્મિનલથી સાચવેલું Mac VPN શરૂ કરો
સાચવેલી macOS VPN સેવાને શરૂ કરવા, તપાસવા અને બંધ કરવા scutil --nc વાપરો, ઓળખપત્રોને argvની બહાર રાખો અને સાબિત કરો કે ટ્રાફિક ખરેખર ટનલ વાપરે છે.
તમારી પાસે સિસ્ટમ સેટિંગ્સમાં સાચવેલી VPN સેવા છે, અને તમે ઈચ્છો છો કે ટર્મિનલ તેને શરૂ કરે. macOS પર સમર્થિત માર્ગ scutil --nc છે, પરંતુ ફક્ત એ સેવાઓ માટે જે સિસ્ટમના પોતાના નેટવર્ક કનેક્શન મેનેજરની માલિકીની હોય. મેનુ બાર API નથી: તૃતીય-પક્ષ ક્લાયંટ પાસે સામાન્ય રીતે પોતાનું ઓટોમેશન હોય છે, અને મેનેજમેન્ટ સેવા દ્વારા મોકલાયેલી પ્રોફાઇલ સ્થાનિક શરૂઆત નકારી શકે છે. આ મારી અનુસરવાની ચેકલિસ્ટ છે: ચોક્કસ સેવા શોધો, તેની સ્થિતિ વાંચો, તેને શરૂ કરો, સ્થિતિ બદલાય ત્યાં સુધી રાહ જુઓ, અને પછી સાબિત કરો કે ટ્રાફિક ખરેખર ટનલ વાપરે છે. પ્રથમ પગલા પર અટકો જે મેળ ખાતું નથી, કારણ કે દરેક પછીનો આદેશ ધારે છે કે અગાઉનો સફળ થયો હતો.
શરૂ કરવાનો પ્રયાસ કરતા પહેલા સેવા શોધો
તમને યાદ હોય તે પ્રોફાઇલ નામને બદલે ઇન્વેન્ટરીથી શરૂ કરો:
scutil --nc help
scutil --nc list
દરેક લાઇન સ્થિતિને સેવા ઓળખકર્તા, પ્રકાર અને દર્શાવેલ નામ સાથે જોડે છે. ઓળખકર્તા એ મૂલ્ય છે જેની સામે સ્ક્રિપ્ટ લખાય છે, કારણ કે દર્શાવેલ નામ પુનરાવર્તિત થાય છે અને સંપાદિત કરી શકાય છે. એપલનું 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, તેની જગ્યાએ આંતરિક હોસ્ટ મૂકીને. જો તે ભૌતિક ઇન્ટરફેસ જણાવે, તો ટનલ ચાલુ છે પણ તે પ્રવાહ વહન કરતી નથી. વિભાજિત ટનલના રૂટ, રિઝોલ્વર ક્રમ અને કોઈપણ સ્થાનિક ફાયરવૉલ નિયમની તપાસ કરો જે ટનલ ઇન્ટરફેસને મંજૂરી આપે પણ પ્રક્રિયાને નહીં.
નામ રિઝોલ્યુશન એ સામાન્ય ખોટો નકારાત્મક છે. આંતરિક નામો ખોટા રિઝોલ્વર દ્વારા ઉકેલાઈ શકે છે જ્યારે ટનલ સંપૂર્ણ સ્વસ્થ હોય, જે 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ની બહાર છે એવો નિષ્કર્ષ કાઢતા પહેલા રૂટ તપાસ ફરી ચલાવો.
હાથે ચલાવાતા રેપર માટે ક્રમ સ્થિર રાખો: યાદી, સ્થિતિ, શરૂઆત, પૂછપરછ, રૂટ કસોટી, બંધ, ચકાસણી. ઓળખકર્તા ઉપલબ્ધ હોય ત્યારે મુક્ત-ફોર્મેટ આઉટપુટમાંથી મૈત્રીપૂર્ણ નામનું વિશ્લેષણ કરશો નહીં, અને શરૂઆતના આદેશના એક્ઝિટને તૈયારી ગણશો નહીં. કનેક્શન મેનેજર સ્થિતિ જણાવે છે; તમારો પુરાવો સ્થિતિ અને ટનલ તરફ નિર્દેશ કરતો રૂટ છે.