Il-browser tiegħek fuq il-host juri l-indirizz tal-ħruġ tal-VPN, il-kontenitur jirrapporta l-konnessjoni tad-dar tiegħek, u xi ħadd isejħilha tnixxija. Xejn ma nixxa. Il-mina tal-host hija sensiela ta' interfaces, rotot u regoli li jappartjenu lill-ispazju tal-ismijiet tan-netwerk tal-host, u kontenitur fuq pont huwa spazju tal-ismijiet ieħor bir-rotta default tiegħu stess. Qgħadt fuq stack Compose fejn il-klijent tal-VPN kien ilu konness għal ġimgħat u lanqas pakkett wieħed tal-kontenitur ma kien daħal fih.

Ivverifika l-ispazju tal-ismijiet qabel l-ikona tat-tray

L-ispazji tal-ismijiet huma l-argument kollu. Meta Docker jibda kontenitur fuq netwerk pont, joħloq spazju tal-ismijiet tan-netwerk, iqabbad tarf wieħed ta' par veth ġo fih, u jagħti lil dak l-ispazju indirizz u rotta default. L-interface tal-mina, kif inhi msejħa, tgħix fl-ispazju tal-ismijiet tal-host. It-traffiku ġewwa l-kontenitur ma jistax jaraha, u l-ebda setting tal-klijent ma jbiddel dan minn barra.

Żewġ passi appoġġjati joħorġuk mill-iżolament. --network host iqiegħed il-kontenitur fl-ispazju tal-ismijiet tal-host, għalhekk jiret ir-rotot tal-host u għaldaqstant il-mina. --network container:vpn jaqsam l-ispazju tal-ismijiet ta' kontenitur ieħor, u hekk il-biċċa l-kbira tad-disinji sidecar jibagħtu xogħol minn kontenitur VPN. It-tnejn huma għażliet espliċiti; normalment waħda biss minnhom hija dak li kien ifisser min qed juża s-sistema.

Il-modalità host mhix aġġornament b'xejn. Il-kontenitur jieqaf ikollu l-indirizz tiegħu stess, il-pubblikazzjoni tal-ports tieqaf tapplika, u proċess li jżomm NET_ADMIN hemmhekk jista' jerġa' jikteb ir-routing tal-host. Li taċċetta dan jista' jkun id-deċiżjoni t-tajba. Li tassumi li diġà mixgħul huwa kif in-nies iqattgħu filgħaxija jiddeboggjaw mina li qatt ma kienet fil-passaġġ.

Segwi l-pakkett barra mill-pont

Kontenitur fuq pont jibgħat il-pakkett tiegħu lill-gateway default tiegħu, li huwa l-interface tal-pont fuq il-host. Il-host imbagħad jgħaddi l-pakkett u, fil-konfigurazzjoni default, jittraduċi l-indirizz tas-sors għal tiegħu qabel ma l-pakkett joħroġ. Dak il-pass tat-traduzzjoni huwa dak li jħassar il-politika bil-kwiet.

Meta l-pakkett jasal fl-endpoint tal-mina, ikun qed iġorr l-indirizz tal-host. Kwalunkwe regola, rotta tal-politika jew deċiżjoni ta' mina maqsuma li tiddependi fuq l-indirizz oriġinali tal-kontenitur tieqaf taqbel, u żewġ kontenituri maħsuba biex joħorġu minn ħruġ differenti ma jistgħux jiġu distinti mis-sors biss. Jekk għandek bżonn routing għal kull kontenitur, id-deċiżjoni trid issir qabel it-traduzzjoni jew ġewwa spazju tal-ismijiet li tikkontrolla.

Docker iżomm dawn ir-regoli hu stess, permezz ta' liema backend tal-firewall ġie konfigurat id-daemon. Regoli miktuba bl-idejn barra mill-hook appoġġjat għat-traffiku mgħoddi, DOCKER-USER, jistgħu jiġu riordinati jew jitwarrbu meta d-daemon jerġa' jibda jew il-host jiġi aġġornat. Id-dokumentazzjoni ta' Docker dwar il-filtrazzjoni tal-pakketti turi l-ordni tal-ktajjen; il-punt prattiku huwa li kull regola teħtieġ sid u passaġġ ta' riload li tkun fil-fatt ittestjajt.

Ittestja ż-żewġ sistemi separatament

Evidenza minn spazju tal-ismijiet wieħed ma tgħid xejn dwar l-ieħor. Talba mwettqa ġewwa l-kontenitur VPN turi li l-mina taħdem għal dak il-kontenitur. Mhix evidenza dwar il-host, u l-istess kmand imwettaq minn kontenitur --network host mhuwiex evidenza dwar il-pont.

# host namespace
ip route get 1.1.1.1
ip -brief addr show

# a fresh container on the same bridge network
docker run --rm --network appnet alpine sh -c 'ip route; cat /etc/resolv.conf; ip -6 route'

Imbagħad irrepeti t-test ġewwa l-kontenitur reali tal-applikazzjoni u mhux f'image simili. L-app tista' ġġorr rotta żejda, varjabbli tal-ambjent tal-proxy jew resolver differenti, u kull waħda minn dawn tbiddel it-tweġiba. Ivverifika r-riżoluzzjoni tal-ismijiet u t-tieni familja tal-indirizzi kull darba: il-kontenituri fuq pontijiet definiti mill-utent jiġu riżolti permezz tar-resolver inkorporat ta' Docker f'127.0.0.11, u rotta default IPv6 fuq il-pont tista' ġġorr traffiku barra waqt li tkun okkupat tittestja mina IPv4 biss.

Aqra l-mudell qabel ma tmiss il-kredenzjali

Meta l-host jaħdem u l-kontenitur le, il-kawża kważi dejjem strutturali, u li ddawwar iċ-ċwievet jew terġa' tinstalla l-klijent taħli nofs ta' nhar. Ikkategorizza s-sintomu l-ewwel u t-tiswija normalment issemmi lilha nfisha.

What you seeUsual causeFirst check
Host exits through the VPN, container shows the ISP addressThe container never entered the tunnelDefault route inside the container
Container works until the daemon restarts, then stopsRules outside the supported hook, or a changed backendDaemon's reported firewall backend and DOCKER-USER
Container loses internal hosts after the tunnel comes upVPN prefix overlaps the Docker bridge subnetip route on the host, then docker network inspect
Small replies arrive, large ones hangTunnel MTU or missing MSS clampingLink MTU on both ends of the tunnel
Container falls back to the ISP address when the tunnel dropsNothing enforces the kill switch for forwarded trafficStop the tunnel with a request in flight

Il-linja tal-overlap jixirqilha sentenza tagħha. Profil VPN li jimbotta rotta għal 172.17.0.0/16, jew għal 10.0.0.0/8 li jkun fih il-prefiss tal-pont tiegħek, iġiegħel il-mina tallega s-subnet tal-kontenituri, u t-tweġibiet lejn indirizzi tradotti sejrin fid-direzzjoni ħażina jew jisparixxu. Li terġa' tinnumera n-netwerk ta' Docker normalment hija aktar nadifa milli takkumula eċċezzjonijiet.

Agħmel il-kopertura espliċita, imbagħad kiserha apposta

Żewġ disinji jifilħu reviżjoni. Aqsam l-ispazju tal-ismijiet tal-kontenitur VPN u kull xogħol kopert juża mina waħda b'limitu wieħed ta' restart, li huwa sempliċi sakemm servizz wieħed ikun jeħtieġ ħruġ differenti jew passaġġ DNS tiegħu. Jew irrotta n-netwerk tal-kontenituri lejn gateway VPN fuq il-host: il-forwarding mixgħul, il-prefiss tal-pont indirett lejn il-mina, it-traffiku tar-ritorn immaniġġjat b'mod espliċitu. Dan jixtri kontroll għal kull netwerk u jiswiek sett ta' regoli x'żżomm matul l-aġġornamenti tad-daemon u tal-klijent.

Kif inhu, it-test li jgħodd huwa l-każ tal-falliment. Waqqaf il-mina b'talba tal-kontenitur għaddejja u ara fejn tmur il-pakkett. Jekk taqa' lura għall-passaġġ dirett, il-kopertura qatt ma ġiet infurzata, għax kill switch tal-klijent jirregola t-traffiku tal-klijent stess u mhux pakketti mgħoddija minn pont. Imbagħad erġa' ibda d-daemon u l-host u kkonferma r-riżultat it-tieni darba; dak huwa l-mument meta regoli miktuba bl-idejn jisparixxu.

Qabel ma ssejjaħha lest, ikkonferma erba' affarijiet: l-interface tal-mina tinsab fl-istess spazju tal-ismijiet tat-traffiku, it-test tal-kontenitur sar ġewwa l-kontenitur reali, ir-riżoluzzjoni tal-ismijiet u ż-żewġ familji tal-indirizzi ġew ivverifikati, u t-test tal-falliment tal-mina għadu jonqos magħluq. Imbagħad ikteb il-backend tal-firewall, il-verżjoni tal-klijent u s-sid ta' kull regola. Dak ir-rekord huwa dak li jżomm l-aġġornament li jmiss milli jħalli taħlita mhux dokumentata ta' assunzjonijiet qodma.

Artikli relatati