Windows կոնտեյներներ և VPN: ինչու է տեղական ցանցը խափանվում
Windows կոնտեյները օգտվում է հոսթի երթուղիների աղյուսակից, ուստի տեղական ենթացանցը արգելափակող VPN-ը իր հետ տանում է նաև կոնտեյների նախածանցը։ Linux ռեժիմը գնում է այլ ճանապարհով։
Մեկ նոթբուքի վրա, մեկ միացված VPN հաճախորդով, Linux կոնտեյներները շարունակում են խոսել միմյանց հետ, իսկ Windows կոնտեյներները կանգ են առնում։ Փոփոխականը պատկերը չէ, այլ այն ուղին, որով փաթեթները մտնում են հոսթ։ Լռելյայն ցանցում Windows կոնտեյներները փոխառում են հոսթի երթուղիների աղյուսակը և թարգմանությունը, ուստի հոսթի երթուղավորումը փոխող քաղաքականությունը փոխում է նաև նրանց։ Հաստատեք դա երթուղու որոնմամբ, նախքան որևէ բան վերատեղադրելը։
Որտեղ են Windows կոնտեյների փաթեթները մտնում հոսթ
Լռելյայն nat ցանցի կոնտեյները հասցե է ստանում Host Networking Service-ի նախածանցից, սովորաբար ինչ-որ տեղ 172.16.0.0/12-ի ներսում, և հոսթին հասնում է վիրտուալ ադապտերի միջոցով։ Հոսթը տիրապետում է այդ նախածանցի երթուղուն և երթևեկությունը թարգմանում է դեպի այն ադապտերը, որն այժմ ակտիվ է։ Այդ ուղու մեջտեղում առանձին վիրտուալ մեքենա չկա։
Հենց այս ձևավորումն է խափանումը դարձնում մեխանիկական։ Երբ կոնտեյները փաթեթ է ուղարկում, հոսթը երթուղու որոնում է կատարում կոնտեյների նախածանցի համար։ Որ երթուղին հաղթի, այնտեղ է գնում փաթեթը, և կոնտեյները կարծիք չունի այդ մասին։
Ինչ է փոխում VPN հաճախորդը այդ ուղու վրա
Կորպորատիվ հաճախորդը հաճախ տեղադրում է երթուղիների լայն հավաքածու և զտիչ, որը մերժում է մուտքը տեղական ենթացանց թունելի ակտիվ ժամանակ։ Մտադրությունը պաշտպանական է. վնասված տեղական ցանցը չպետք է հասնի պաշտպանված մեքենայի։ Կողմնակի ազդեցությունն այն է, որ հոսթի երթուղին դեպի կոնտեյների նախածանց այլևս տեղական NAT ցանցը չէ։
Փոխարենը որոնումը համընկնում է թունելի հետ, և փաթեթը հանձնվում է դարպասին, որը երբեք չի լսել այդ կոնտեյների հասցեի մասին։ Ping-ը ձախողվում է, հավելվածը սպառում է ժամանակը, և կոնտեյները կոտրված է թվում, մինչ VPN պատկերակը փայլում է։ Նայեք հոսթի աղյուսակին, երբ միացված եք, և մրցակից երթուղին տեսանելի է։
| 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 |
Ինչու են Linux կոնտեյներներն այլ կերպ վարվում
Linux շարժիչը կոնտեյներներն աշխատեցնում է թեթև վիրտուալ մեքենայի ներսում, և այդ մեքենայից ելքային կապերը բացում է հոսթի կողմի վստահված սերվերը կոնտեյների անունից։ Հոսթն է սկսում սոքեթը, ուստի VPN-ի կանոնը կոնտեյների նախածանցի մասին նրա վրա նույն կերպ չի տարածվում, և աշխատանքային բեռը շարունակում է հասնել ցանցին։
Այս տարբերությունը նաև բացատրում է, թե ինչու Linux բաղադրատոմսերը չեն տեղափոխվում։ Սեփական թունելի կարիք ունեցող Linux կոնտեյները ստանում է TUN սարք և NET_ADMIN հնարավորություն։ Windows կոնտեյներները ոչ մի ինտերֆեյս սարք չեն ներկայացնում, ուստի այդ ձևանմուշն այդ կողմում համարժեք չունի։
Ապացուցեք երթուղին, ապա ընտրեք ձևավորում
Ապացույցները հավաքեք հոսթից, ոչ թե կոնտեյներից, որովհետև որոնումը կատարում է հոսթը:
docker network inspect nat --format "{{range .IPAM.Config}}{{.Subnet}}{{end}}"
route print -4
Get-NetRoute -AddressFamily IPv4 | Where-Object DestinationPrefix -like "172.16.*"
Գործարկեք երթուղիների ելքը մեկ անգամ VPN-ի միանալուց առաջ և մեկ անգամ դրանից հետո։ Եթե երկրորդ ելքում կոնտեյների նախածանցը ցույց է տալիս թունելի ադապտերը, ախտորոշումն ավարտված է, և կոնտեյներների վերագործարկումը չի օգնի։
Առաջին տարբերակը քաղաքականության որոշում է. հարցրեք ցանցի սեփականատիրոջը, թե արդյոք կարող է թույլատրվել տեղական LAN մուտքը այս սարքի համար։ Մի քանի կորպորատիվ հաճախորդ դա առաջարկում են որպես կարգավորում, բայց դա թուլացնում է դիտավորյալ սահմանը։ Պահանջեք այն որպես փաստաթղթավորված բացառություն՝ սեփականատիրոջ և վերանայման ամսաթվի հետ։ Յուրաքանչյուր սարքի համար նախատեսված անջատիչը, որին ոչ ոք չի վերադառնում, հենց այն ձևն է, որով պաշտպանական քաղաքականությունը լուռ անհետանում է։
Այնտեղ, որտեղ քաղաքականությունը պետք է մնա, տեղափոխեք աշխատանքային բեռը՝ երթուղու հետ կռվելու փոխարեն։ Հստակ ենթացանցով և դարպասով թափանցիկ ցանցը կոնտեյներները դնում է տեղական կապի վրա, Linux աշխատանքային բեռը աշխատում է վիրտուալ մեքենայի վստահված սերվերի հետևում, և առանձին վիրտուալ մեքենա՝ իր սեփական հաճախորդով պահպանում է իր սեփական քաղաքականությունը։ Ընտրեք մեկը դիտավորյալ և փորձարկեք այն կոնտեյների ներսից, որովհետև օգտվողի հարցումը հենց այնտեղ է ծագում։