Split tunneling ti o da lori app ati ti o da lori ibi-afẹde kii ṣe eto meji fun iṣẹ kanna. Ọkan béèrè ilana wo ni nfi packet rán; ekeji béèrè ibo ni packet yẹn ń lọ. Ofin ti a kọ fun ìbéèrè akọkọ yoo kùnà ní ìdákẹ́jẹ́ nígbà tí ìrìnàjò bá ti ilana oluranlọwọ wá, ofin ti a kọ fun ekeji yoo kùnà nígbà tí orúkọ agbalejo bá yí padà sí adirẹsi ti o kò tíì kọ rara. Yan ohun ti o bá ìbéèrè mu, lẹhinna fi ẹri rẹ pẹlu packet ìdánwò meji: ọkan gbọdọ lo tunnel, ekeji kò gbọdọ.

Àwọn ofin méjì náà ń ṣiṣẹ́ ní ìpele oríṣiríṣi

Ofin app ni a fi agbara mu loke ìpele nẹtiwọki, lodi si idanimọ ti ẹrọ ìṣiṣẹ́ fi fun olùránṣẹ́. Ní Android, ìyẹn ni UID tí ó wà lẹ́yìn package, VPN service sì ń pinnu fún UID kọọkan bóyá ìrìnàjò yóò wọ tunnel. Kò sí ohun tí a béèrè nípa ibi-afẹde, nítorí náà app tí a yàn lè dé ibikíbi, app mìíràn kò sì lè dé nẹtiwọki inú.

Ofin ibi-afẹde ni a fi agbara mu lórí packet fúnra rẹ̀. Interface tunnel ni ó ni àkójọ àwọn ìpilẹ̀ṣẹ̀, table ìtọ́nisọ́nà ń fi ìrìnàjò tí ó bá mu rán síbẹ̀, ilana tí ó ń rán kò sì ṣe pàtàkì. Ìdí ni pé ofin ibi-afẹde ń bo service, ẹrọ tẹ̀wé tàbí iṣẹ́ àkójọ tí ẹnikẹ́ni kò rántí láti kọ sílẹ̀, àti ìdí ni pé kò ṣe é gbé kalẹ̀ gẹ́gẹ́ bí program yìí nìkan lórí pẹpẹ tí alábàáṣiṣẹ́ rẹ̀ kò tíì wo ilana rara.

Àwọn ofin app yẹ fún àwọn alábàáṣiṣẹ́ alágbèéká àti àwọn aṣojú tí a ń ṣàkóso

Android ń fi yíyàn han tààràtà: VpnService.Builder.addAllowedApplication() àti addDisallowedApplication() ń gba orúkọ package, wọ́n sì ń fi ìpinnu náà agbara mu fún UID kọọkan, gẹ́gẹ́ bí a ti ṣàlàyé nínú ìtọ́sọ́nà olùdàgbàsókè VPN ti Android. iOS ní ohun tí ó dọ́gba nípasẹ̀ àwọn ofin VPN fún app kọọkan tí ó dá lórí àwọn ìdánimọ̀ bundle, tí a sábà máa ń pín nípasẹ̀ profaili MDM dípò kíkọ pẹ̀lú ọwọ́.

Àwọn alábàáṣiṣẹ́ desktop ni ibi aláìlera. Ọ̀pọ̀ jùlọ àwọn alábàáṣiṣẹ́ VPN Windows àti macOS ń tọ́nisọ́nà gẹ́gẹ́ bí ibi-afẹde, wọn kò sì fi olùyàn gẹ́gẹ́ bí ilana hàn rara, nítorí awakọ̀ tunnel ń rí packet, kì í ṣe ilana. Bí ètò rẹ bá gbára lé títú tunnel fún app kan lórí kọ̀mpútà ẹ̀rọ̀, yẹ àwọn agbára gidi alábàáṣiṣẹ́ wò kí o tó ṣètò yí i ká; ó lè jẹ́ pé ìwọ ń yan láàrin àkójọ ibi-afẹde àti ẹrọ keji.

Àbájáde tí àwọn ènìyàn ń gbàgbé: lórí àwọn pẹpẹ wọ̀nyẹn o kò lè ṣe àfarawé ofin app pẹ̀lú àwọn ọ̀nà. Bí o bá fi ọ̀nà agbalejo kún fún server app, ìrìnàjò gbogbo ènìyàn yóò lọ sí server yẹn nípasẹ̀ tunnel, pẹ̀lú browser àti olùṣe ìmúdójúìwọ̀n.

Àwọn ofin ibi-afẹde yẹ fún àkójọ subnet àti ìdé ọ̀dọ̀ àwọn ojú-ìwé

WireGuard ń mú àwòrán náà hàn kedere. AllowedIPs ni ìtọ́nisọ́nà kọ́kọ́rọ́ ìpamọ́: packet inú tí ibi-afẹde rẹ̀ bá ṣubú sínú àkójọ ẹlẹgbẹ́ ni a ń fi pamọ́ sí ẹlẹgbẹ́ yẹn, gbogbo ohun mìíràn sì ń jáde láìsí ìpamọ́ nípasẹ̀ ọ̀nà deede. Kò sí ilana tí a lè dárúkọ àti kò sí àìdánilójú nípa ohun tí ó wà nínú.

OpenVPN ń dé ibi kanna nípasẹ̀ table ìtọ́nisọ́nà tí a ti tipa. route-nopull ń dá server dúró láti pa ọ̀nà láṣẹ, lẹhinna route 10.20.0.0 255.255.0.0 vpn_gateway ní ẹ̀gbẹ́ alábàáṣiṣẹ́ ń bo àkọ́kọ́ ìpilẹ̀ṣẹ̀ ọ́fíìsì gan-an. IPv6 jẹ́ gbólóhùn ọ̀tọ̀ nínú ọ̀kọ̀ọ̀kan àwọn alábàáṣiṣẹ́ wọ̀nyí, gbàgbé rẹ̀ sì ni ọ̀nà tí ó wọ́pọ̀ jùlọ láti ṣẹ̀ sí ẹ̀gbẹ́ ìpín IPv4 tí ó dàbí ẹni pé ó tọ́.

Orúkọ agbalejo kì í ṣe ọ̀nà. Bí profaili bá fún ní pápá domain, kà á gẹ́gẹ́ bí orúkọ tí alábàáṣiṣẹ́ ń yanjú lẹ́ẹ̀kan, kì í ṣe ìwọ̀n adirẹsi tí ó dúró títí; àwọn nẹtiwọki ìpínpín àkóónú àti àwọn olùdọ́gba ẹrù yóò fún ní àwọn adirẹsi mìíràn lọ́la.

Ibi tí àwọn àwòrán méjèèjì ti ń já: olùrànlọ́wọ́, service àjọpín, olùyanjú

Àwọn ilana oluranlọwọ ń ba àwọn ofin app jẹ́ ní ọ̀nà tí ó dàbí àṣìṣe server. Olùṣe ìmúdójúìwọ̀n browser, olùròyìn ìṣubú, service ìmúdọ́gba tí ń ṣiṣẹ́ gẹ́gẹ́ bí SYSTEM àti WebView tí a fi sínú package mìíràn jẹ́ ìdánimọ̀ ọ̀tọ̀ọ̀tọ̀, nítorí náà títú tunnel fún browser lè fi ìbéèrè gidi sílẹ̀ ní ita tunnel. Ìdàkejì náà ń dàrú bẹ́ẹ̀ kan náà: app tí a yọ kúrò tí ó ń pe library àjọpín nínú ilana tí a ti tú tunnel ṣì ń gba ìrìnàjò rẹ̀ nípasẹ̀ tunnel.

Àwọn ofin ibi-afẹde ń já lórí service àjọpín àti lórí orúkọ. Àwọn ìpín fáìlì, ẹrọ tẹ̀wé, DNS inú àti server ìwé àṣẹ gbogbo wọn ń gbé lórí adirẹsi, nítorí náà tunnel app kan ń fún browser ní ààyè nígbà tí drive tí a ya àwòrán ṣì kú. Ìyàtọ̀ àbò yẹn kì í ṣe àṣìṣe nínú àwòrán kankan, ṣùgbọ́n òun ni ìdí tí tunnel app kan fi sábà ń mú VPN wà ní ṣíṣí tí ìpín sì ti lọ.

Àwọn olùyanjú ń gé méjèèjì. Bí alábàáṣiṣẹ́ bá ṣètò àwọn server DNS inú ṣùgbọ́n ẹrọ ìṣiṣẹ́ ń lo DNS lórí HTTPS sí olùyanjú gbogbo ènìyàn, ìdáhùn náà wá láti ita tunnel, ofin ibi-afẹde sì lè máà bá mu rara. Yẹ olùyanjú wo ni ó dáhùn ní gidi kí o tó parí pé ofin náà kò tọ́, kí o sì fìdí rẹ̀ múlẹ̀ ní ẹ̀gbẹ́ alábàáṣiṣẹ́ bóyá ó ti fi olùyanjú tunnel sínú rara. Ìpín tí ó fi DNS sílẹ̀ ní ita tunnel dàbí ẹni pé ó péye nínú table ìtọ́nisọ́nà, ó sì ṣì ń kùnà lórí gbogbo orúkọ inú.

Ìlànà: yan, lo, fìdí múlẹ̀

Bẹ̀rẹ̀ láti ìbéèrè, kì í ṣe láti menu. Bí èròǹgbà bá jẹ́ pé app yìí nìkan ló lè lo tunnel, ìwọ yóò nílò àwọn ofin app àti pẹpẹ tí ó ń gbà wọ́n. Bí èròǹgbà bá jẹ́ pé àwọn nẹtiwọki wọ̀nyí dé nípasẹ̀ tunnel, ìwọ yóò nílò àwọn ìpilẹ̀ṣẹ̀. Bí ìdáhùn bá jẹ́ méjèèjì, ṣe wọ́n gẹ́gẹ́ bí ìṣàkóso méjì ọ̀tọ̀ kí o sì kọ ẹni tí ó ni ìkùnà wo.

Lo irisi tí ó dín jùlọ tí o lè sọ, lẹhinna fìdí rẹ̀ múlẹ̀ nípasẹ̀ bíbéèrè lọ́wọ́ table ìtọ́nisọ́nà dípò àmì ipò alábàáṣiṣẹ́:

ip route get 10.20.30.40
ip -6 route get 2001:db8:10::40
wg show wg0 allowed-ips
Get-NetRoute -DestinationPrefix 10.20.0.0/16
Find-NetRoute -RemoteIPAddress 10.20.30.40

Ìlà méjì àkọ́kọ́ ń dárúkọ interface tí ibi-afẹde gidi yóò lò; wg show ń tẹ̀ àkójọ ìpilẹ̀ṣẹ̀ tí a ti ṣètò jáde; ní Windows, Find-NetRoute ń dáhùn ìbéèrè kanna tí àkójọ yóò dáhùn nígbà tí a bá rán packet. Bí interface bá jẹ́ tunnel, ofin náà bá mu.

Lẹhinna dan packet keji tí ó yẹ kí a yọ kúrò, láti app mìíràn, sí ibi-afẹde kanna. Kọ sínú tikẹti ìtẹ̀jáde alábàáṣiṣẹ́, irú ofin, àkójọ ìpilẹ̀ṣẹ̀ tàbí package àti àwọn àbájáde méjì tí a ṣàkíyèsí. Àpapọ̀ àbájáde yẹn gan-an ni ó ń sọ fún ẹlẹ́rọ̀ ìmọ̀-ẹ̀rọ tí ó tẹ̀le bóyá ìlànà náà kò tọ́ tàbí ìrìnàjò náà kò tíì jẹ́ tirẹ̀ rara.

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