Vafrinn þinn á hýsingunni sýnir útgangsheimilisfang VPN, gámurinn tilkynnir heimatenginguna þína og einhver kallar það leka. Ekkert lek. Göng hýsingarinnar eru safn viðmóta, leiða og reglna sem tilheyra netnafnrými hýsingarinnar, og gámur á brú er annað nafnrými með sína eigin sjálfgefnu leið. Ég hef setið á Compose-stakk þar sem VPN-biðlarinn hafði verið tengdur í vikur og eitt gámapakka hafði aldrei komist inn í hann.

Athugaðu nafnrýmið áður en táknmyndin í bakkanum

Nafnrými eru öll röksemdin. Þegar Docker ræsir gám á brúarneti býr það til netnafnrými, tengir annan enda veth-pars inn í það og gefur því nafnrými heimilisfang og sjálfgefna leið. Viðmót ganganna, hvað sem það heitir, býr í nafnrými hýsingarinnar. Umferð inni í gámnum getur ekki séð það, og engin stilling biðlarans breytir því að utan.

Tvær studdar aðgerðir koma þér út úr einangruninni. --network host setur gámuna inn í nafnrými hýsingarinnar, svo hún erfir leiðir hýsingarinnar og þar með göngin. --network container:vpn deilir nafnrými annars gáms, og þannig senda flestar sidecar-hönnunir vinnuálag í gegnum VPN-gám. Bæði eru skýrar ákvarðanir; venjulega er aðeins önnur þeirra það sem sá sem setur upp átti við.

Hýsingarhamur er ekki ókeypis uppfærsla. Gámurinn hættir að hafa eigið heimilisfang, birting portanna gildir ekki lengur, og ferli sem heldur NET_ADMIN þar getur skrifað yfir leiðakerfi hýsingarinnar. Að samþykkja það getur verið rétta ákvörðunin. Að gera ráð fyrir að það sé þegar á er hvernig fólk eyðir kvöldi í að kemba göng sem voru aldrei á leiðinni.

Fylgdu pakkanum út af brúnni

Gámur á brú sendir pökkuna sína á sjálfgefna gátt sína, sem er brúarviðmótið á hýsingunni. Hýsingin sendir pökkuna síðan áfram og þýðir í sjálfgefnu uppsetningunni upprunheimilisfangið yfir í sitt eigið áður en pakkan fer út. Það er þetta þýðingarskref sem vinnur stefnuna hljóðlaust.

Þegar pakkan kemur að endapunkti ganganna ber hún heimilisfang hýsingarinnar. Sérhver regla, stefnuleið eða ákvörðun um skipt göng sem byggir á upprunalegu heimilisfangi gámsins hættir að passa, og tveir gámar sem eiga að fara út um mismunandi útgangi er ekki hægt að greina aðeins á uppruna. Ef þú þarft leiðakerfi fyrir hvern gám verður ákvörðunin að eiga sér stað fyrir þýðinguna eða inni í nafnrými sem þú stjórnar.

Docker heldur þessum reglum sjálft, í gegnum hvaða eldveggsbackenda sem daemoninn var stilltur með. Handskrifaðar reglur utan studda króksins fyrir áframsenda umferð, DOCKER-USER, geta verið endurraðaðar eða felldar þegar daemoninn endurræsir eða hýsingin uppfærist. Docker-skjöl um pakkasíun sýna röð keðjanna; hagnýta atriðið er að hver regla þarf eiganda og endurhleðsluleið sem þú hefur í raun prófað.

Prófaðu kerfin tvö sitt í hvoru lagi

Sönnunargögn úr einu nafnrými segja ekkert um hitt. Beiðni sem keyrð er inni í VPN-gámnum sannar að göngin virki fyrir þann gám. Það er ekki sönnun um hýsinguna, og sama skipunin keyrð úr --network host-gám er ekki sönnun um brúna.

# 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'

Endurtaktu síðan prófið inni í raunverulegum forritsgámnum frekar en svipaðri ímynd. Forritið gæti borið aukaleið, umhverfisbreytu fyrir milliþjón eða annan leysir, og hvert þessara atriða breytir svarinu. Athugaðu nafnupplausn og aðra heimilisfangafjölskylduna í hvert sinn: gámar á notendaskilgreindum brúm leysast í gegnum innbyggða leysi Docker á 127.0.0.11, og sjálfgefin IPv6-leið á brúnni getur borið umferð út á meðan þú ert upptekinn við að prófa göng sem eru aðeins IPv4.

Lestu mynstrið áður en þú snertir auðkenni

Þegar hýsingin virkar og gámurinn ekki er orsökin næstum alltaf byggingarleg, og að snúa lyklum eða endursetja biðlarann eyðir síðdegi. Raðaðu einkenninu fyrst og lagfæringin nefnir sig venjulega sjálf.

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

Skörunarreitin á skilið eigin setningu. VPN-snið sem ýtir leið fyrir 172.17.0.0/16, eða fyrir 10.0.0.0/8 sem inniheldur fyrir tilviljun forskeyti brúarinnar þinnar, fær göngin til að gera tilkall til undirnets gámanna, og svör á þýdd heimilisföng fara í ranga átt eða hverfa. Að endurnúmera Docker-netið er venjulega hreinna en að safna undantekningum.

Gerðu umfjöllunina skýra og brottu hana svo viljandi

Tvær hönnun standast yfirferð. Deildu nafnrými VPN-gámsins og hvert yfirfarið vinnuálag notar eitt göng með einni endurræsingarmörk, sem er einfalt þar til ein þjónusta þarf annan útgang eða sína eigin DNS-leið. Eða beindu neti gámanna að VPN-gátt á hýsingunni: áframsending virk, forskeyti brúarinnar beint að göngunum, bakstreymisumferð meðhöndluð skýrt. Það kaupir stjórn fyrir hvert net og kostar þig reglusett sem þú verður að viðhalda í gegnum uppfærslur daemons og biðlara.

Hvernig sem er, prófið sem skiptir máli er bilanatilfellið. Stöðvaðu göngin með beiðni gámsins á flugi og fylgstu með hvert pakkan fer. Ef hún fellur aftur á beinu leiðina var umfjölluninni aldrei framfylgt, því kill switch biðlara stjórnar eigin umferð biðlarans en ekki áframsendum pökkum frá brú. Endurræstu daemoninn og hýsinguna eftir það og staðfestu niðurstöðuna í annað sinn; það er augnablikið þegar handskrifaðar reglur hverfa.

Áður en þú kallar þetta lokið skaltu staðfesta fjögur atriði: viðmót ganganna er í sama nafnrými og umferðin, próf gámsins fór fram inni í raunverulega gámnum, nafnupplausn og báðar heimilisfangafjölskyldur voru athugaðar, og bilunarpróf ganganna mistekst enn lokuð. Skrifaðu síðan niður eldveggsbackendann, útgáfu biðlarans og eiganda hverrar reglu. Þessi skráning er það sem kemur í veg fyrir að næsta uppfærsla skilji eftir óskjalfesta blöndu af gömlum forsendum.

Tengdir greinar