O ní iṣẹ́ VPN tí a fi pamọ́ nínú Ètò Ẹ̀rọ, o sì fẹ́ kí terminal bẹ̀rẹ̀ rẹ̀. Lórí macOS, ọ̀nà tí a ṣe àtìlẹ́yìn fún ni scutil --nc, ṣùgbọ́n fún àwọn iṣẹ́ tí olùṣàkóso ìsopọ̀ nẹ́tíwọ́kì ẹ̀rọ fúnra rẹ̀ ní mọ́lẹ̀. Ọ̀pá àkójọ àwòrán kì í ṣe API: àwọn aláàbò ẹlẹ́ni-kẹta sábà máa ń ní ìṣàkóso ara wọn, pẹ̀lúpẹ̀lú pé profáìlì tí iṣẹ́ ìṣàkóso fi ránṣẹ́ lè kọ̀ láti bẹ̀rẹ̀ ní agbègbè. Èyí ni àkójọ àyẹ̀wò tí mò ń ṣe: wá iṣẹ́ gangan, ka ipò rẹ̀, bẹ̀rẹ̀ rẹ̀, dúró de ìyípadà ipò, kí o sì fi hàn pé ọ̀nà ìrìnàjò ń lo ọ̀nà abẹ́lẹ̀ gan-an. Dúró ní ìgbésẹ̀ àkọ́kọ́ tí kò báramu, nítorí gbogbo àṣẹ tó tẹ̀le ń ro pé èyí tó ṣáájú ṣàṣeyọrí.

Wá iṣẹ́ kí o tó gbìyànjú bẹ̀rẹ̀ rẹ̀

Bẹ̀rẹ̀ pẹ̀lú àkójọ, kì í ṣe orúkọ profáìlì tí o rántí:

scutil --nc help
scutil --nc list

Olúkúlùkù ìlà ń so ipò pọ̀ mọ́ ìdánimọ̀ iṣẹ́, irú àti orúkọ ìfihàn. Ìdánimọ̀ ni iye tí a ń kọ script sí, nítorí àwọn orúkọ ìfihàn ń tún ṣe àti pé a lè ṣàtúnṣe wọn. Ìwé ìtọ́nisọ́nà scutil Apple ń ṣàlàyé ipò ìsopọ̀ nẹ́tíwọ́kì, nígbà tí --nc help tí a fi sórí ẹ̀rọ jẹ́ àkójọ àṣẹ abẹ́ tí ó ní àṣẹ lórí Mac yẹn; má ṣe ro pé àmì kan láti ìtọ́nisọ́nà àtijọ́ ṣì wà nínú ẹ̀dà macOS rẹ.

Àkójọ òfo jẹ́ àbájáde, kì í ṣe àṣìṣe. Iṣẹ́ tí aláàbò olùpèsè tàbí profáìlì ìṣàkóso ṣẹ̀dá lè máa ṣiṣẹ́ nígbà tí a kò rí i níbí, tàbí kí a rí i pẹ̀lú irú tí olùṣàkóso ìbílẹ̀ kò lè darí. Nínú irú bẹ́ẹ̀, lo irinṣẹ́ olùpèsè tàbí àwọn ìwé profáìlì. Ṣíṣe profáìlì ìbílẹ̀ ẹlẹ́gbẹ́ kìkì kí nǹkan kan wà láti bẹ̀rẹ̀ jẹ́ òwò burú.

Ka ipò lọ́wọ́lọ́wọ́ kí o sì fọwọ́ sí olùyàn

Bèèrè ipò lọ́wọ́ iṣẹ́ kí o tó bẹ̀rẹ̀ rẹ̀, kí o lè mọ ohun tí ìbẹ̀rẹ̀ àṣeyọrí gbọ́dọ̀ yí padà:

scutil --nc status "Office VPN"

Bí iṣẹ́ méjì bá pín orúkọ ìfihàn kan, orúkọ náà kò ṣe kedere. Fi ìdánimọ̀ ránṣẹ́ dípò rẹ̀; àṣẹ náà ń gba méjèèjì, ṣùgbọ́n ìdánimọ̀ nìkan ló ń dá iṣẹ́ kan pátápátá. Kí o tó ṣàyẹ̀wò rẹ̀ nínú script, ṣàyẹ̀wò pé ọ̀rọ̀ ipò jẹ́ ọ̀kan tí o mọ̀ — sábà máa ń jẹ́ Connected, Disconnected, Connecting tàbí Disconnecting. Tún ṣàyẹ̀wò bóyá a ń ṣàkóso profáìlì náà, nítorí ìṣètò tí a ti ṣèédì lè gba àṣẹ náà kí ó sì ṣì kọ̀ ọ́ tàbí béèrè ìmúdájú.

Ìpè ipò yìí kò wọ́n, nítorí náà lo ó gẹ́gẹ́ bí olùṣọ́ nínú ìṣàkóso aládàáṣe: bẹ̀rẹ̀ nìkan nígbà tí ipò jẹ́ Disconnected, kí o má sì ka Connecting sí ìkùnà. Bí iṣẹ́ náà bá ti jẹ́ Connected, fò ó kọjá dípò dídánu ọ̀nà abẹ́lẹ̀ tí ń ṣiṣẹ́.

Bẹ̀rẹ̀ ìsopọ̀ kí o sì dúró de ìdúró ipò

Ìbéèrè ìbẹ̀rẹ̀ kò ní ìsopọ̀ àkókò. Àṣẹ náà ń padà nígbà tí a gba ìbéèrè náà, kì í ṣe nígbà tí ìjẹ́rìí parí tàbí tí a fi àwọn ọ̀nà sórí ẹ̀rọ. Ṣe é, lẹ́yìn náà ṣàyẹ̀wò ipò pẹ̀lú ìdúró tí a fi ààlà, kí o sì jáde bí iṣẹ́ náà bá padà sí 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

Ipò Connecting tí kò yanjú rárá sábà máa ń tọ́ka sí ẹ̀rí ìdánimọ̀, MFA tàbí olùpèsè, kì í ṣe scutil. Àṣẹ náà kò lè pèsè ìwọlé aláṣepọ̀, nítorí náà profáìlì tí ń retí token tàbí kọ́kọ́rọ́ ohun-ẹ̀rọ yóò dúró ní Connecting, nígbẹ̀yìn yóò sì padà. Ka ọ̀rọ̀ ipò kí o tó fi àwọn ìgbìyànjú kún; ìyípo lórí ìbéèrè ìjẹ́rìí kò lè ṣàṣeyọrí.

Má ka ipò àbájáde shell sí ìmúrasílẹ̀. Àmì tí ó wúlò ni okùn ipò, tí ó tẹ̀le pẹ̀lú ẹ̀rí pé ọ̀nà abẹ́lẹ̀ ń gbé ọ̀nà ìrìnàjò. Àṣẹ ìbẹ̀rẹ̀ tí ń padà ní ìdákẹ́jẹ́ lè ṣì fi ọ́ sílẹ̀ pẹ̀lú ìsopọ̀ tí kò ní jẹ́rìí rárá.

Fi hàn pé ọ̀nà abẹ́lẹ̀ ń gbé ọ̀nà ìrìnàjò, kì í ṣe kìkì pé ó ń sọ Connected

Connected ń ṣàlàyé ìsopọ̀, kì í ṣe ìpinnu ìtọ́nà. Àwọn iṣẹ́ PPP àti IKEv2 ìbílẹ̀ ń ṣẹ̀dá ìsopọ̀ ppp tàbí utun, wọ́n sì ń fi àwọn ọ̀nà sórí ẹ̀rọ, nígbà tí ọ̀nà abẹ́lẹ̀ pínpín ń fi ìtọ́nà àkọ́kọ́ sílẹ̀ pẹ̀lú ìmọ̀. Ṣàyẹ̀wò àwọn ìsopọ̀ àti àwọn ìdílé àdírẹ́sì méjèèjì:

ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns

Wá ìsopọ̀ tí iṣẹ́ náà ṣẹ̀dá dípò kíkọ́ nọ́mbà, lẹ́yìn náà béèrè tábìlì ìtọ́nà ìsopọ̀ tí ibi-àfojúsùn pàtó ń lò: route -n get 10.0.0.10, pẹ̀lú gbàlejò inú gẹ́gẹ́ bí rẹ̀pì. Bí ó bá sọ ìsopọ̀ ti ara, ọ̀nà abẹ́lẹ̀ ń ṣiṣẹ́ ṣùgbọ́n kò gbé ìṣàn yẹn. Ṣàyẹ̀wò àwọn ọ̀nà abẹ́lẹ̀ pínpín, ìtòlẹ́sẹẹsẹ olùyànjú àti gbogbo òfin firewall agbègbè tí ó gba ìsopọ̀ ọ̀nà abẹ́lẹ̀ láàyè ṣùgbọ́n tí kò gba ìlànà láàyè.

Yíyanjú orúkọ ni èrè èké tí ó wọ́pọ̀. Àwọn orúkọ inú lè yanjú nípasẹ̀ olùyànjú tí kò tọ́ nígbà tí ọ̀nà abẹ́lẹ̀ wà ní àlàáfíà pátápátá, èyí tí ó dàbí àṣìṣe VPN tí kì í sì ṣe bẹ́ẹ̀. scutil --dns ń fi ìtòlẹ́sẹẹsẹ tí macOS yóò lò hàn; lẹ́yìn ìyípadà olùyànjú, pa káàkì rẹ́ pẹ̀lú dscacheutil -flushcache àti sudo killall -HUP mDNSResponder.

Pa àwọn ẹ̀rí àti àṣẹ mọ́ ní ìta ìlà àṣẹ

Má fi ọ̀rọ̀ ìpamọ́, kọ́kọ́rọ́ tí a pín tẹ́lẹ̀ tàbí token sínú àwọn àríyànjiyàn rárá. A ń rí àwọn àríyànjiyàn nínú àkójọ ìlànà, wọ́n sì ń lọ sínú ìtàn shell, àkọsílẹ̀ àtìlẹ́yìn tí a dà lè sì fi wọ́n hàn. Ìtọ́jú ẹ̀rí ti profáìlì fúnra rẹ̀ — ìyẹn ohun Keychain, ìbéèrè ẹ̀rọ tàbí ìṣàn ìjẹ́rìí aláàbò — ni ibi fún àwọn àṣírí.

Ṣíṣe àṣẹ pẹ̀lú sudo kò mú ìwọlé aláṣepọ̀ di aláìṣọ́nà. Ó ń yí olùlò tí ó ní ipa padà, kì í ṣe wíwà ìbéèrè GUI, token ohun-ẹ̀rọ tàbí keychain ìwọlé. LaunchAgent lè bẹ̀rẹ̀ iṣẹ́ lẹ́yìn tí olùlò bá wọlé tí a sì ṣí keychain; LaunchDaemon sábà kò lè dé àwọn ẹ̀yà ìpàdé olùlò yẹn. Bí àjọ kan bá ń ṣàkóso iṣẹ́ náà, àwọn òfin ìgbésí ayé rẹ̀ borí gbogbo script agbègbè.

Dúró iṣẹ́ náà kí o sì ṣàyẹ̀wò pé ó dúró

Dúró pẹ̀lú olùyàn kan náà tí o lò láti bẹ̀rẹ̀, lẹ́yìn náà ka ipò padà dípò ríronú pé ọ̀nà abẹ́lẹ̀ ti lọ:

scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"

Ìdúró tí ó padà sí Disconnected ṣì fi nǹkan kan sílẹ̀ láti ṣàyẹ̀wò: bóyá a ti ṣètò profáìlì láti sopọ̀ nígbà ìbéèrè, èyí tí ó lè mú un padà láìsí script rẹ. Bí aláàbò mìíràn bá ní àwọn ọ̀nà lórí Mac kan náà, àwọn ọ̀nà yẹn lè ye ìdúró ìbílẹ̀. Tún ṣàyẹ̀wò ọ̀nà kí o tó parí pé ẹ̀rọ náà wà ní ìta VPN.

Fún apamọ́ tí o ń fi ọwọ́ ṣe, pa ìtòlẹ́sẹẹsẹ mọ́: àkójọ, ipò, ìbẹ̀rẹ̀, ìbéèrè, ìdánwò ọ̀nà, ìdúró, ìmúdájú. Má ṣe àyẹ̀wò orúkọ ọ̀rẹ́ láti inú àbájáde ìmú-ọ̀fẹ́ nígbà tí ìdánimọ̀ wà, kí o má sì ka àbájáde àṣẹ ìbẹ̀rẹ̀ sí ìmúrasílẹ̀. Olùṣàkóso ìsopọ̀ ń sọ ipò; ẹ̀rí rẹ ni ipò àti ọ̀nà tí ń tọ́ka sí ọ̀nà abẹ́lẹ̀.

Àwọn àpilẹ̀kọ tó jọra