Kontaynarka aan gaarin waxna ka dambeeya VPN-ka shirkadda wuxuu inta badan ku nool yahay meel magac oo shabakadeed ka duwan tunnel-ka. Waddooyinka, server-yada DNS iyo calaamadaha dab-damiska ee macmiilka martigeliyaha waxay ka tirsan yihiin stack-ka martigeliyaha; kontaynarka shabakada buundada wuxuu leeyahay kan u gaar ah. Xaqiiqadan keliyuhu waxay sharraxdaa inta badan warbixinada gaara tim ka tirsan platform-ka, waxayna sidoo kale tahay sababta «VPN-ku jaban yahay» iyo «Docker wuxuu dhaafaa VPN-ka» labaduba ay khalad noqon karaan isla waqti qudha. Laba hab oo aad u kala duwan ayaa ku qarsoon hal calaamad, marka go'aanso midka aad haysato ka hor intaadan beddelin wax dejinta ah.

Ogow cidda ay leedahay meesha magaca tunnel-ka

Docker Desktop ee macOS ama Windows, kontaynarradu waxay ku shaqeeyaan gudaha mishiin macmal ah oo Linux. Macmiil VPN oo lagu rakibay desktop-ka wuxuu sameeyaa tunnel ku jira nidaamka hawlgalka desktop-ka, mishiinka macmalkuna waligiis ma arko. Ma jiro habayn kontaynar oo taas hagaajisa, sababtoo ah interface-ka uu kontaynarku u baahan lahaa gebi ahaanba kama jiro meesha magaca shabakadiisa.

Martigeliyaha Linux tunnel-ku wuxuu ku nool yahay meesha magaca martigeliyaha, kontaynarrada buundaduna inta badan waxay ku gaaraan iyada oo loo marayo shaxda waddooyinka martigeliyaha iyada oo NAT-ka isha lagu dabaqay bixitaanka. Marka waddadaasi guuldareyso, sababtu inta badan ma aha waddo maqan, laakiin waa siyaasadda gudbinta, shaandhaynta waddada gadaal ama subnet is dulsaaran. Xaqiiji adduunyada labada kee baad ku jirtaa ka hor intaadan sii akhrin:

docker info --format '{{.OperatingSystem}}'
docker run --rm --net=host alpine ip route | head -5
docker run --rm alpine ip route | head -5

Farqiga u dhexeeya labada shax waddooyin ah waa dhammaan dhibaatada hal shaashad. Haddii muuqaalka martigeliyaha uu ka kooban yahay interface-ka tunnel-ka oo muuqaalka buundada uusan ka koobnayn, waxaad eegaysaa go'doominta meelaha magaca, wax kasta oo kale waa doorasho ku saabsan sida loo gudbo.

Shabakada martigeliyaha waa tijaabo, ma aha naqshad

Ku shaqaynta kontaynarka shabakada martigeliyaha, taas oo Docker u diiwaangeliyay wadaagga meesha magaca shabakada martigeliyaha, waxay ka dhigtaa inuu si toos ah u dhaxlo interface-ka tunnel-ka iyo waddooyinkiisa. Haddii isla codsigaas uu markaas guulaysto, aragtida waddooyinka waa la xaqiijiyay oo guuldarradu waa go'doominta meelaha magaca, ma aha aqoonsiga, DNS ama qaanuun gelitaan.

docker run --rm --net=host curl -sS -o /dev/null -w '%{http_code}\n' https://api.internal/health

U hayso sida ogaal. Shabakada martigeliyaha waxay ka tanaasushaa daabacaadda dekedaha iyo inta badan go'doominta aad ka rabtay kontaynarka, Docker Desktop-na «host» waxay ka dhigan tahay mishiinka macmalka ah, ma aha desktop-ka, sidaas darteed guul ama guuldarro halkaas ku timid way ku marin habaabin kartaa haddii aad ilowdo martigeliyaha aad la hadashay.

Qalabka tun iyo mudnaanta la socota

Macmiil VPN gudaha kontaynarka wuxuu u baahan yahay qalab tunnel iyo ogolaansho si loo habeeyo. Waddada gaaban ee caadiga ah waa --privileged, taas oo siisa qalab kasta oo dabacsanaysa siyaasadda amniga kontaynarka oo dhan. Taasi waxay ka badan tahay wixii shaqadan u baahnayd, wayna adag tahay in lagu caddeeyo dib-u-eegis.

sudo modprobe tun
docker run --rm -it --device /dev/net/tun --cap-add NET_ADMIN myvpn-client

Qaabka cidhiidhiga ah wuxuu khariidad u sameeyaa hal nood qalab ah wuxuuna ku daraa kaliya awoodda maamulka shabakada. Marka hore ku rar module-ka martigeliyaha si noodku u jiro. Haddii kontaynarku bilaabmo oo macmiilku soo sheego inuusan furi karin qalabka tunnel-ka, hubi khariidadda ka hor intaadan ka shakiyin profile-ka, sababtoo ah khaladkaas inta badan waa mid xaraf ahaan ah.

Naqshaddan waxay sidoo kale ka dhigan tahay in macmiilku u shaqeeyo kontaynar kasta. Taasi waa jawaabta saxda ah marka culeyska shaqo kastaa u baahan yahay tunnel u gaar ah, iyo jawaabta khaldan marka aad kaliya rabtay in tunnel-ka martigeliyaha la arko, taas oo ay platform-ka u badan tahay inay u qaadatay inaad samaynaysid.

NAT-ka buundada wuxuu beddelaa isha VPN-ku arko

Buundada caadiga ah, taraafikada baxaysa ee kontaynarka waxaa loo tarjumaa cinwaanka martigeliyaha. Sidaas darteed VPN-ka gadaashiisa dhinaca shirkaddu wuxuu arkaa cinwaanka tunnel-ka martigeliyaha ee ma aha kan kontaynarka, xeerarka gelitaanka ee ku saleysan isha waxay u dhaqmaan sidii martigeliyaha codsiga diray, laba kontaynar-na way noqdaan kuwo aan la kala gudbin karin server-ka VPN.

macvlan ama ipvlan taa beddelkeeda waxay kontaynarka siisaa cinwaan LAN, taas oo ka caawinaysa helitaanka LAN waxayna kontaynarka ka dhigtaa mid la mid ah qaybta. Waxay sidoo kale gabi ahaanba dhaafaa tunnel-ka martigeliyaha, sidaas darteed kontaynarka noocaas ma gaaro horgalayaasha VPN-kaliya haddii VPN-ku aanu sidoo kale laga heli karin LAN-kaas.

Labada qaab waa sharci; waxay ka jawaabaan shuruudo kala duwan. Haddii shuruuddu tahay «kontaynarkan waa inuu gaaro adeeg VPN-kaliya», waxaad dooranaysaa u dhexeeya marista martigeliyaha iyo dhamaystirka tunnel-ka gudaha kontaynarka. Qor doorashadaas ka hor geynta, ma aha ka dib codsiga ugu horreeya ee guuldareystay. Wax kasta oo aad dooratid, diiwaangeli cinwaanka isha ee dhinaca fog arki doono, sababtoo ah xeerarkiisa gelitaan iyo diiwaannadiisa ayaa muujin doona taas. Naqshad aan sheegi karin cinwaankaas ma dhammaystirna.

DNS waxay raacdaa daemon-ka, ma aha tunnel-ka

Kontaynarku wuxuu helaa habaynta resolver-ka marka uu bilaabmo, oo laga koobiyeeyay daemon-ka ama sawirka. Cinwaannada VPN-ku riixo ka dib isku xirka waxay yimaadaan aad u daahsan koobkaas, waxaana loo riixaa resolver-ka martigeliyaha ee ma aha gudaha kontaynarka.

U deji resolver-ka si cad adeegga, ama u jeedi resolver gudaha ah oo laga heli karo tunnel-ka. Kontaynarka magac gaar ah u xalliya cinwaan guud inta badan wuxuu isticmaalaa resolver guud, kama dhibbanayo waddo jaban, sixidna waxay ka tirsan tahay faylka compose ama habaynta daemon-ka.

Isla sababtaas waxay khuseysaa su'aasha cinwaanka bixitaanka. Haddii kontaynar kastaa waa inuu ka soo muuqdo cinwaan VPN ka duwan, hal tunnel martigeliye ma bixin karo taas sababtoo ah NAT waxay isugu ururiyaa hal isha. Qaababka shaqeynaya waa macmiil ku jira meesha magaca kontaynar kasta ama sidecar leh tunnel-ka oo la wadaaga stack-kiisa, labaduna waxay beddelaan sida loo cinwaan geliyo barnaamijka.

Liiska hubinta ka hor xidhidda tikitka: aqoonso meesha magaca leh tunnel-ka, caddee waddada shabakada martigeliyaha, khariidad kaliya qalabka tun ee loo baahan yahay, xasuuso cinwaanka isha ka dib NAT, u deji resolver-ka si cad oo u qaado cinwaannada bixitaanka kontaynar kasta go'aan dhismeed ma aha calan.

Maqaallo la xiriira