Lórí kọ̀mpútà gbé-ẹ̀yìn kan, pẹ̀lú kúlàìọ̀tì VPN kan tí ó so mọ́, àwọn kóńténíà Linux ń bá ara wọn sọ̀rọ̀, ṣùgbọ́n àwọn kóńténíà Windows dúró. Ohun tí ń yí padà kì í ṣe àwòrán, bíkòṣe ọ̀nà tí àwọn pákẹ́tì ń gbà wọ agbàlejò. Àwọn kóńténíà Windows lórí nẹ́tíwọ́kì àkọ́kọ́ ń gbà tábìlì ọ̀nà àti ìtumọ̀ agbàlejò, nítorí náà ìlànà tí ó yí ìtọ́sọ́nà agbàlejò padà yí àwọn náà padà. Jẹ́rìí sí èyí pẹ̀lú wíwá ọ̀nà kí o tó tún fi ohunkóhun sórí ẹ̀rọ.

Ibẹ tí àwọn pákẹ́tì kóńténíà Windows ń wọ agbàlejò

Kóńténíà kan lórí nẹ́tíwọ́kì àkọ́kọ́ nat ń gba àdírẹ́sì láti àfojúsùn Host Networking Service, ní ọ̀pọ̀ ìgbà níbìkan nínú 172.16.0.0/12, ó sì ń dé agbàlejò nípasẹ̀ àdáńtà fojú-ń-rí. Agbàlejò ni ó ní ọ̀nà fún àfojúsùn yẹn ó sì ń tumọ ìrìnàjò sí àdáńtà tí ó ń ṣiṣẹ́ báyìí. Kò sí ẹ̀rọ fojú-ń-rí ọ̀tọ̀ ní àárín ọ̀nà yẹn.

Ìtò yìí ni ó mú kí àbàwọ́n di ti ẹ̀rọ. Nígbà tí kóńténíà bá rán pákẹ́tì, agbàlejò ń wá ọ̀nà fún àfojúsùn kóńténíà. Ọ̀nà tí ó bá borí ni pákẹ́tì ń lọ, kóńténíà kò sì ní èrò kankan nípa rẹ̀.

Ohun tí kúlàìọ̀tì VPN ń yí padà lórí ọ̀nà yẹn

Kúlàìọ̀tì ilé-iṣẹ́ máa ń fi ọ̀pọ̀lọpọ̀ ọ̀nà àti àlẹmọ tí ó kọ̀ ìwọlé sí ẹ̀ka-nẹ́tíwọ́kì àdúgbò nígbà tí ọ̀nà-ìsàlẹ̀ wà. Èrò ni ààbò: nẹ́tíwọ́kì àdúgbò tí ó ti bàjẹ́ kò gbọdọ̀ dé ẹ̀rọ tí a dáàbò bò. Èsì ẹ̀gbẹ́ ni pé ọ̀nà agbàlejò dé àfojúsùn kóńténíà kì í ṣe nẹ́tíwọ́kì NAT àdúgbò mọ́.

Dípò bẹ́ẹ̀, wíwá ọ̀nà bá ọ̀nà-ìsàlẹ̀ mu, a sì fi pákẹ́tì lé ẹnubodè tí kò tíì gbọ́ nípa àdírẹ́sì kóńténíà yẹn. Ping kùnà, ohun-èlò náà ń pari àkókò, kóńténíà sì dàbí ẹni tí ó ti já nígbà tí àmì VPN ń tàn. Wo tábìlì agbàlejò nígbà tí o so mọ́, wà á rí ọ̀nà tí ó ń bára wọn jà.

Container modeOutbound pathTypical result behind the VPN
Windows, default natHost routes and translates container trafficContainer prefix follows the tunnel and fails
Windows, transparentContainer sits on the physical linkDepends on the local subnet being allowed
Linux engine on Docker DesktopVM egress proxied by a host processOften keeps working

Kí ni ó fi í ṣe pé àwọn kóńténíà Linux ń hu ìwà mìíràn

Ẹ̀rọ Linux ń ṣiṣẹ́ àwọn kóńténíà nínú ẹ̀rọ fojú-ń-rí fúyẹ́, àwọn ìsopọ̀ tí ó jáde láti ẹ̀rọ yẹn ni aṣojú ẹ̀gbẹ́ agbàlejò ń ṣí fún kóńténíà. Agbàlejò ni ó ń bẹ̀rẹ̀ sọ́kẹ́tì, nítorí náà ìlànà VPN nípa àfojúsùn kóńténíà kò kan òun ní ọ̀nà kan náà, ẹrù iṣẹ́ sì ń dé nẹ́tíwọ́kì.

Ìyàtọ̀ yìí tún ṣàlàyé kí ni ó fi í ṣe pé àwọn ìtọ́ni Linux kò gbé kọjá. Kóńténíà Linux tí ó nílò ọ̀nà-ìsàlẹ̀ tirẹ̀ ni a ń fún ní ẹ̀rọ TUN pẹ̀lú agbára NET_ADMIN. Àwọn kóńténíà Windows kò fi èyíkéyìí ojú-ìwọlé hàn gẹ́gẹ́ bí ẹ̀rọ, nítorí náà àpẹẹrẹ yẹn kò ní ìbámu ní ẹ̀gbẹ́ yẹn.

Fi ọ̀nà hàn, lẹ́yìn náà yan àpẹẹrẹ kan

Kó ẹ̀rí láti agbàlejò, kì í ṣe láti kóńténíà, nítorí agbàlejò ni ó ń wá ọ̀nà:

docker network inspect nat --format "{{range .IPAM.Config}}{{.Subnet}}{{end}}"
route print -4
Get-NetRoute -AddressFamily IPv4 | Where-Object DestinationPrefix -like "172.16.*"

Ṣe ìjáde ọ̀nà lẹ́ẹ̀kan kí VPN tó so mọ́ àti lẹ́ẹ̀kan lẹ́yìn náà. Bí àfojúsùn kóńténíà bá tọ́ka sí àdáńtà ọ̀nà-ìsàlẹ̀ nínú ìjáde kejì, ìwádìí ti parí, àti pé bíbẹ̀rẹ̀ àwọn kóńténíà padà kò ní rànwọ́.

Àkọ́kọ́ àṣàyàn jẹ́ ìpinnu ìlànà: béèrè lọ́wọ́ ẹni tí ó ní nẹ́tíwọ́kì bóyá a lè gbà ìwọlé LAN àdúgbò fún ẹ̀rọ yìí. Ọ̀pọ̀ kúlàìọ̀tì ilé-iṣẹ́ ń fi í hàn gẹ́gẹ́ bí ètò, ṣùgbọ́n ó ń sọ ààlà tí a mọ̀ọ́mọ̀ dá di aláìlera. Béèrè fún un gẹ́gẹ́ bí ìyọ̀nudá tí a kọ sílẹ̀ pẹ̀lú ẹni tí ó ní í àti ọjọ́ àyẹ̀wò. Yíyí pátákó fún ẹ̀rọ kọ̀ọ̀kan tí kò sẹ́ni tó padà wò ni ọ̀nà tí ìlànà ààbò fi ń pòórá ní ìdákẹ́jẹ́.

Níbi tí ìlànà gbọdọ̀ dúró, gbé ẹrù iṣẹ́ lọ dípò kí o bá ọ̀nà jà. Nẹ́tíwọ́kì tí ó ṣẹ́ sílẹ̀ pẹ̀lú ẹ̀ka-nẹ́tíwọ́kì àti ẹnubodè tí ó ṣe kedere ń gbé àwọn kóńténíà sórí ìsopọ̀ àdúgbò, ẹrù iṣẹ́ Linux ń ṣiṣẹ́ lẹ́yìn aṣojú ẹ̀rọ fojú-ń-rí, àti ẹ̀rọ fojú-ń-rí ọ̀tọ̀ pẹ̀lú kúlàìọ̀tì tirẹ̀ ń pa ìlànà tirẹ̀ mọ́. Yan ọ̀kan mọ̀ọ́mọ̀ kí o sì dán an wò láti inú kóńténíà, nítorí níbẹ̀ ni ìbéèrè olùṣe ń bẹ̀rẹ̀.

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