Windows-gámar og VPN: hvers vegna staðbundið net brotnar
Windows-gámur notar leiðatöflu hýsilsins, svo VPN sem lokar á staðbundið undirnet tekur forskeyti gámsins með sér. Linux-hamur fer aðra leið.
Á einni fartölvu, með einum tengdum VPN-biðlara, halda Linux-gámar áfram að tala sín á milli og Windows-gámar stöðvast. Breytan er ekki myndin heldur leiðin sem pakkarnir fara inn í hýsilinn. Windows-gámar á sjálfgefna netinu fá lánaða leiðatöflu og þýðingu hýsilsins, svo stefna sem breytir leiðvísun hýsilsins breytir þeim líka. Staðfestu það með leiðarleit áður en þú setur eitthvað upp að nýju.
Hvar pakkar Windows-gáms koma inn í hýsilinn
Gámur á sjálfgefna netinu nat fær vistfang úr forskeyti Host Networking Service, venjulega einhvers staðar innan 172.16.0.0/12, og nær hýsilnum í gegnum sýndaraðlaga. Hýsillinn á leiðina fyrir það forskeyti og þýðir umferð að þeim aðlaga sem er virkur hverju sinni. Engin sérstök sýndarvél er í miðri þeirri leið.
Þessi hönnun er það sem gerir bilunina vélræna. Þegar gámurinn sendir pakka framkvæmir hýsillinn leiðarleit fyrir forskeyti gámsins. Hvaða leið sem vinnur, þangað fer pakkinn, og gámurinn hefur enga skoðun á því.
Hvað VPN-biðlarinn breytir á þeirri leið
Fyrirtækjabiðlari setur oft upp breitt safn leiða og síu sem neitar aðgangi að staðbundna undirnetinu meðan gangtunnillinn er virkur. Tilgangurinn er varnarlegur: grípað staðbundið net ætti ekki að ná til varins vélar. Aukaverkunin er að leið hýsilsins að forskeyti gámsins er ekki lengur staðbundið NAT-net.
Í staðinn passar leitin við gangtunnilinn og pakkanum er skilað til gáttarinnar, sem hefur aldrei heyrt um það gámvistfang. Ping mistekst, forritið rennur út á tíma og gámurinn virðist brotinn á meðan VPN-táknið glóir. Skoðaðu töflu hýsilsins meðan þú ert tengdur og samkeppnisleiðin er sýnileg.
| Container mode | Outbound path | Typical result behind the VPN |
|---|---|---|
| Windows, default nat | Host routes and translates container traffic | Container prefix follows the tunnel and fails |
| Windows, transparent | Container sits on the physical link | Depends on the local subnet being allowed |
| Linux engine on Docker Desktop | VM egress proxied by a host process | Often keeps working |
Hvers vegna Linux-gámar haga sér öðruvísi
Linux-vélin keyrir gáma inni í léttri sýndarvél, og útleiðandi tengingar frá þeirri vél eru opnaðar af proxy á hlið hýsilsins fyrir hönd gámsins. Hýsillinn hefur frumkvæði að sokknum, svo regla VPN um forskeyti gámsins gildir ekki um hann á sama hátt og vinnsluálagið nær áfram netinu.
Sá munur útskýrir líka hvers vegna Linux-uppskriftir flytjast ekki yfir. Linux-gámur sem þarf eigin gangtunnel fær TUN-tæki auk NET_ADMIN getunnar. Windows-gámar sýna enga tengi sem tæki, svo það mynstur á sér enga hliðstæðu á þeirri hlið.
Sannaðu leiðina og veldu síðan hönnun
Safnaðu sönnunargögnum frá hýsilnum, ekki frá gámnum, því hýsillinn framkvæmir leitina:
docker network inspect nat --format "{{range .IPAM.Config}}{{.Subnet}}{{end}}"
route print -4
Get-NetRoute -AddressFamily IPv4 | Where-Object DestinationPrefix -like "172.16.*"
Keyrðu leiðarúttakið einu sinni áður en VPN tengist og einu sinni eftir. Ef forskeyti gámsins í seinna úttakinu bendir á aðlaga gangtunnilsins er greiningunni lokið og endurræsing gáma mun ekki hjálpa.
Fyrsti valkosturinn er stefnuákvörðun: spurðu neteigandann hvort leyfa megi staðbundinn LAN-aðgang fyrir þetta tæki. Nokkrir fyrirtækjabiðlarar bjóða það sem stillingu, en það veikir vísvitandi mörk. Biddu um það sem skjalfesta undantekningu með eiganda og endurskoðunardagsetningu. Rofi fyrir hvert tæki sem enginn fer aftur í er leiðin sem varnarstefna hverfur hljóðlaust.
Þar sem stefnan verður að standa skaltu flytja vinnsluálagið í stað þess að berjast við leiðina. Gagnsætt net með skýru undirneti og gátt setur gáma á staðbundnu tenginguna, Linux-vinnsluálag keyrir bak við proxy sýndarvélarinnar, og sérstök sýndarvél með eigin biðlara heldur eigin stefnu. Veldu eina af ásettu ráði og prófaðu hana innan frá gámnum, því þar á uppruna beiðni notandans.