Ipá ọ̀nà tí a kọ lẹ́yìn gbogbo ìsopọ̀ ń yanjú àkókò náà, kìí ṣe ọ̀sẹ̀ náà. Ní macOS, yíyàn tí ó dúró ṣinṣin sábà jẹ́ àfọ̀mọ́ tí a fi pamọ́ pẹ̀lú iṣẹ́ VPN, nítorí iṣẹ́ náà ń tún un fi sórí ní gbogbo ìsopọ̀, ó sì ń yọ ọ́ kúrò nígbà tí iṣẹ́ náà kò ṣiṣẹ́. Àwọn ààyò mìíràn ni route add ìgbà díẹ̀ fún ìdánwò àti hook ìsopọ̀ fún àwọn àdírẹ́sì tí a kò mọ̀ àfi lẹ́yìn ìfọ̀rọ̀wérọ̀.

Pinnu bóyá ipa ọ̀nà jẹ́ ti iṣẹ́ tàbí ti ìpàdé

Bèèrè ohun tí àfọ̀mọ́ náà gbarale. Bí ó bá jẹ́ nẹ́tíwọ́kì àdáni tí ó dúró ṣinṣin lẹ́yìn iṣẹ́ VPN ìbílẹ̀, ipa ọ̀nà náà jẹ́ ti iṣẹ́ yẹn. Bí ó bá gbarale àdírẹ́sì ẹlẹgbẹ́ tí ń yí padà ní gbogbo ìsopọ̀, hook tàbí iṣẹ́ tí ìpínlẹ̀ ń darí lè jẹ́ alágbàtà tó dára jù. Bí o bá ń ṣàyẹ̀wò ipa ọ̀nà fún ìṣẹ́jú márùn-ún tó ń bọ̀ nìkan, ipa ọ̀nà ìgbà díẹ̀ ti tó.

Ipa ọ̀nà tí ó so mọ́ iṣẹ́ ní ìyípadà ìgbésí ayé tí ó mó jù. Ó ń farahàn pẹ̀lú iṣẹ́ náà, ó sì ń pòórá nígbà tí iṣẹ́ náà kò bá so pọ̀, nítorí náà kò lè wà pẹ́ ju ọ̀nà abẹ́lẹ̀ tí ó ń tọ́ka sí lọ. Ohun-ìní yẹn ní iye tó ju ìrọ̀rùn àṣẹ ìlà kan lọ.

Ipa ọ̀nà tí ó so mọ́ ìpàdé jẹ́ ti ìfòpinpin, àmọ́ nọ́mbà yẹn ń yí padà láìsí ìkìlọ̀. Ìsopọ̀ tuntun lè fún ọ̀nà abẹ́lẹ̀ ní orúkọ utun tí ó yàtọ̀ sí ti ìpàdé tí ó kọjá, èyí tí ó sọ àṣẹ tí a kọ lẹ́sẹ̀ mọ́ ipa ọ̀nà tí kò tọ́ka sí ibi kankan tàbí, tí ó burú jù, sí ọ̀nà abẹ́lẹ̀ mìíràn.

Ka ipò ipa ọ̀nà àti iṣẹ́ lọ́wọ́lọ́wọ́

Bẹ̀rẹ̀ pẹ̀lú àwọn orúkọ tí ẹ̀rọ náà ń lò ní ti gidi. Orúkọ iṣẹ́ nínú Ètò Nẹ́tíwọ́kì ni ìdánimọ̀ fún àwọn àṣẹ tí ó wà nísàlẹ̀, tábìlì ipa ọ̀nà lọ́wọ́lọ́wọ́ sì ń fi ohun tí alábàákẹ́kọ̀ọ́ tí ó so pọ̀ ti fi sórí hàn. Ka àwọn méjèèjì nígbà tí ọ̀nà abẹ́lẹ̀ wà lójú.

scutil --nc list
networksetup -listnetworkserviceorder
netstat -rn | head -30
route get 10.20.5.5

Ìwádìí yẹn ń fi hàn ibi àgàbá tí ẹ̀rọ inú yóò yàn àti ìfòpinpin fún àdírẹ́sì yí ní àkókò yí. Bí ó bá ti ń yan ọ̀nà abẹ́lẹ̀, àfọ̀mọ́ náà ti bo, ipa ọ̀nà tuntun yóò sì jẹ́ àṣebi. Bí ó bá ń yan olùdarí àdúgbò, ọ̀nà abẹ́lẹ̀ kò ní àfọ̀mọ́ yẹn.

Ṣàkíyèsí àdírẹ́sì ẹlẹgbẹ́ nígbà tí o bá so pọ̀. Ó di iye ibi àgàbá nínú ipa ọ̀nà tí ó so mọ́ iṣẹ́, ó sì sábà jẹ́ ibi tí a ń fi hàn fún ipa ọ̀nà àkọ́kọ́ ti ọ̀nà abẹ́lẹ̀ nínú netstat -rn.

Fi àfọ̀mọ́ pamọ́ pẹ̀lú networksetup

Irínṣẹ́ networksetup ń so àwọn ipa ọ̀nà àfikún mọ́ iṣẹ́ nẹ́tíwọ́kì kan. Fún iṣẹ́ tí a ń pè ní OfficeVPN àti àfọ̀mọ́ àdáni tí a ń dé ọ̀dọ̀ rẹ̀ nípasẹ̀ ẹlẹgbẹ́ ọ̀nà abẹ́lẹ̀, ìrísí náà ni:

sudo networksetup -setadditionalroutes OfficeVPN 10.20.0.0 255.255.0.0 10.8.0.6
networksetup -getadditionalroutes OfficeVPN

Ẹ̀kọ́ọ̀kàn nínú àwọn mẹ́ta tí ó tẹ̀le orúkọ iṣẹ́ ń fún ibi ìlọ, bojú-ìdárayá rẹ̀ àti ẹlẹgbẹ́ ọ̀nà abẹ́lẹ̀ gẹ́gẹ́ bí ibi àgàbá. Ìpè kan lè gbé àwọn àfọ̀mọ́ púpọ̀, ìpè òfìfo sì ń nu àkọsílẹ̀ tí a fi pamọ́. Olùkà náà ni ìgbésẹ̀ ìmúdájú; bí àkọsílẹ̀ bá ṣófo, ètò náà kò tíì kan iṣẹ́ tí o ń rò.

Ibi àgàbá gbọ́dọ̀ jẹ́ ẹlẹgbẹ́ ọ̀nà abẹ́lẹ̀, kìí ṣe olùdarí ti ara. Ipa ọ̀nà tí ó dárúkọ ibi àgàbá àdúgbò ń fi àfọ̀mọ́ àdáni jáde nípasẹ̀ ìfòpinpin ti ara, èyí tí ó jẹ́ ìkùnà àkọ́kọ́ pẹ̀lú àwọn ìgbésẹ̀ àfikún. Ẹlẹgbẹ́ tí ó ti gbó jẹ́ ìdí tí ó wọ́pọ̀ jù fún ìdí tí ipa ọ̀nà tí ó dàbí ẹni pé ó tọ̀nà kò fi ń gbé ìrìnàjò rárá. Ka ẹlẹgbẹ́ náà lẹ́ẹ̀kan sí i láti ipò tí ó so pọ̀ dípò kíkó àdírẹ́sì látinú àkọsílẹ̀ àtijọ́.

Lo route add fún ìdánwò nìkan

Ipa ọ̀nà tààrà wúlò láti fi hàn pé àfọ̀mọ́ ń ṣiṣẹ́ kí o tó sọ ọ́ di ti àìlópin. Ìrísí ìfòpinpin ń yẹra fún wíwá ibi àgàbá:

sudo route -n add -net 10.20.0.0/16 -interface utun4

Ipa ọ̀nà náà ń pòórá ní ìsopọ̀ tuntun tí ó kàn, ó sì gbarale nọ́mbà ìfòpinpin tí ó wà lónìí. Èyí ń sọ ọ́ di ìṣàyẹ̀wò, kìí ṣe ìgbékalẹ̀. Bí ìdánwò bá ṣiṣẹ́ tí ipa ọ̀nà tí ó so mọ́ iṣẹ́ kò ṣiṣẹ́, fi iye ibi àgàbá wé, ìyẹn ni pápá tí ó máa ń ṣe àṣìṣe jù.

Ṣọ́ra pẹ̀lú àwọn ìmọ̀ràn tí ń rọ́pò ipa ọ̀nà àkọ́kọ́ VPN láti fi ìpín fipá mú. Alábàákẹ́kọ̀ọ́ tí ó ń fi ọ̀nà abẹ́lẹ̀ kíkún fipá mú lè tún àwọn ipa ọ̀nà rẹ̀ fi sórí lẹ́yìn ìsopọ̀ tuntun tàbí ìmúdájú ìlànà, nítorí náà ìyípadà ọwọ́ di àìwà. Àwọn àfọ̀mọ́ àdáni mélòó kan jẹ́ ìṣòro ìtọ́nà; kí gbogbo ìrìnàjò íńtánẹ́ẹ̀tì dúró ní àdúgbò lòdì sí ìlànà ọ̀nà abẹ́lẹ̀ kíkún jẹ́ ìpinnu ní ẹ̀gbẹ́ olupin.

Yan hook nìkan nígbà tí a bá ń fọ̀rọ̀wérọ̀ àdírẹ́sì

Fún àwọn ìsopọ̀ tí ó dá lórí PPP bíi L2TP, macOS ń ṣiṣẹ́ /etc/ppp/ip-up nígbà tí ìsopọ̀ náà bá dá. Skript náà ń gba orúkọ ìfòpinpin àti àwọn àdírẹ́sì àdúgbò àti òkèèrè tí a fọ̀rọ̀wérọ̀, nítorí náà ó lè fi ipa ọ̀nà tí ó gbarale ẹlẹgbẹ́ tí olupin náà yàn kún. Ìyẹn gan-an ni ipò tí ipa ọ̀nà iṣẹ́ tí ó dúró kò lè ṣàlàyé.

IKEv2 àti àwọn alábàákẹ́kọ̀ọ́ olùpèsè lè má lo ọ̀nà PPP yẹn rárá, èyí tí ó túmọ̀ sí pé skript náà lè dákẹ́ jẹ́ẹ́ fún gbogbo ìpàdé. Nígbà tí èyí bá ṣẹlẹ̀, iṣẹ́ launchd tí ó ń béèrè scutil --nc status tí ó sì ń dáhùn sí ìyípadà ipò ni ọ̀nà tí ó dọ́gba, pẹ̀lú ìdádúró kékeré.

Hook yówù tí o bá lò, sọ ọ́ di idempotent kí ó sì máa yọ kúrò ní àwọn ipa ọ̀nà tí ó dá fúnra rẹ̀ nìkan. Skript tí ń nu gbogbo ipa ọ̀nà tí ó dárúkọ ọ̀nà abẹ́lẹ̀ yóò ní ìparí nu ipa ọ̀nà tí ń jẹ́ kí olupin VPN lè dé, ìsopọ̀ yóò sì já bó ti ṣàṣeyọrí.

Parí pẹ̀lú ṣíṣàyẹ̀wò ibi àdáni, ìwòyí ojoojúmọ́ àti ìyípo ìsopọ̀ tuntun tàbí oorun. Lẹ́yìn náà ṣàyẹ̀wò scutil --dns, nítorí ìyánjú orúkọ jẹ́ ìlànà ọ̀tọ̀, ipa ọ̀nà tí ó ń ṣiṣẹ́ kò sì fi hàn pé a ń yanjú àwọn orúkọ àdáni.

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