Għaliex kontenitur Docker ma jasalx għall-hosts wara l-VPN
Il-kontenituri tal-pont għandhom spazju tal-ismijiet tagħhom, għalhekk it-tunnel tal-host huwa inviżibbli għalihom. Qabbel in-netwerk tal-host, apparat tun u macvlan qabel ma tibdel id-DNS.
Kontenitur li ma jasalx għall-xejn wara l-VPN korporattiv normalment jgħix fi spazju tal-ismijiet tan-netwerk differenti mit-tunnel. Ir-rotot, is-servers DNS u l-marki tal-firewall tal-klijent tal-host jappartjenu għall-munzell tal-host; kontenitur tan-netwerk tal-pont għandu tiegħu. Dan il-fatt wieħed jispjega ħafna mir-rapporti li jwasslu għand tim tal-pjattaforma, u huwa wkoll ir-raġuni għalfejn «il-VPN hija miksura» u «Docker jevita l-VPN» jistgħu jkunu żbaljati fl-istess ħin. Żewġ konfigurazzjonijiet differenti ħafna jinħbew wara sintomu wieħed, għalhekk identifika liema għandek qabel ma tbiddel xi setting.
Skopri ta' min huwa l-ispazju tal-ismijiet tat-tunnel
Fuq Docker Desktop għal macOS jew Windows, il-kontenituri jaħdmu ġewwa magna virtwali Linux. Klijent VPN installat fuq id-desktop joħloq tunnel fis-sistema operattiva tad-desktop, u l-magna virtwali qatt ma tarah. L-ebda konfigurazzjoni tal-kontenitur ma ssewwih, għax l-interface li l-kontenitur ikun jeħtieġ ma teżistix xejn fl-ispazju tal-ismijiet tan-netwerk tiegħu.
Fuq host Linux it-tunnel jgħix fl-ispazju tal-ismijiet tal-host, u l-kontenituri tal-pont normalment jilħquh permezz tat-tabella tar-rotot tal-host bin-NAT tas-sors applikat mal-ħruġ. Meta dak il-passaġġ ifalli, il-kawża normalment tkun politika tal-forwarding, filtrazzjoni tal-passaġġ invers jew subnet li tikkoinċidi minflok rotta nieqsa. Ikkonferma f'liema mid-dinja t-tnejn int qabel ma taqra aktar:
docker info --format '{{.OperatingSystem}}'
docker run --rm --net=host alpine ip route | head -5
docker run --rm alpine ip route | head -5
Id-differenza bejn dawn iż-żewġ tabelli tar-rotot hija l-problema kollha fuq skrin wieħed. Jekk il-veduta tal-host fiha l-interface tat-tunnel u l-veduta tal-pont le, int qed tara iżolament tal-ispazji tal-ismijiet, u kull ħaġa oħra hija għażla ta' kif taqsamha.
In-netwerk tal-host huwa test, mhux disinn
Li tħaddem kontenitur bin-netwerk tal-host, li Docker jiddokumenta bħala qsim tal-ispazju tal-ismijiet tan-netwerk tal-host, iġiegħlu jiret direttament l-interface tat-tunnel u r-rotot tiegħu. Jekk l-istess talba mbagħad tirnexxi, it-teorija tar-rotot hija kkonfermata u l-falliment huwa iżolament tal-ispazji tal-ismijiet, mhux kredenzjali, DNS jew regola ta' aċċess.
docker run --rm --net=host curl -sS -o /dev/null -w '%{http_code}\n' https://api.internal/health
Żommu bħala dijanjostiku. In-netwerk tal-host jirrinunzja għall-pubblikazzjoni tal-portijiet u għall-biċċa l-kbira tal-iżolament li ridt minn kontenitur, u fuq Docker Desktop «host» tfisser il-magna virtwali, mhux id-desktop, għalhekk suċċess jew falliment hemmhekk jista' jħawwdek jekk tinsa liema host kont qed tindirizza.
Apparat tun u l-privileġġi li jiġu miegħu
Klijent VPN ġewwa l-kontenitur jeħtieġ apparat tat-tunnel u permess biex jikkonfigurah. Il-qasira komuni hija --privileged, li tagħti kull apparat u ttaffi l-politika tas-sigurtà fil-kontenitur kollu. Dan huwa ħafna aktar milli teħtieġ dan ix-xogħol, u huwa diffiċli li tiġġustifikah f'reviżjoni.
sudo modprobe tun
docker run --rm -it --device /dev/net/tun --cap-add NET_ADMIN myvpn-client
Il-forma iżjed dejqa timmappa n-nodu tal-apparat wieħed u żżid biss il-kapaċità tal-amministrazzjoni tan-netwerk. L-ewwel tagħbija l-modulu fuq il-host sabiex in-nodu jeżisti. Jekk il-kontenitur jibda u l-klijent jirrapporta li ma jistax jiftaħ l-apparat tat-tunnel, iċċekkja l-immappjar qabel ma tissuspetta l-profil, għax dak l-iżball normalment huwa litterali.
Dan id-disinn ifisser ukoll li l-klijent jaħdem għal kull kontenitur. Din hija t-tweġiba t-tajba meta kull tagħbija tax-xogħol teħtieġ it-tunnel tagħha, u t-tweġiba ħażina meta ridt biss li t-tunnel tal-host ikun viżibbli, li probabbilment it-tim tal-pjattaforma assuma li kont qed tagħmel.
In-NAT tal-pont ibiddel is-sors li jara l-VPN
Bil-pont default, it-traffiku ħiereġ tal-kontenitur jiġi tradott fl-indirizz tal-host. Għalhekk wara VPN in-naħa korporattiva tara l-indirizz tat-tunnel tal-host u mhux dak tal-kontenitur, ir-regoli tal-aċċess skont is-sors iġibu ruħhom bħallikieku l-host bagħat it-talba, u żewġ kontenituri jsiru indistinguwibbli għas-server VPN.
macvlan jew ipvlan minflok jagħti lill-kontenitur indirizz LAN, li jgħin fl-iskoperta tal-LAN u jagħmel il-kontenitur jidher bħala pari fis-segment. Huwa wkoll jevita t-tunnel tal-host għal kollox, għalhekk kontenitur bħal dan mhux se jasal għall-prefissi biss-VPN sakemm il-VPN ma jkunx aċċessibbli minn dik il-LAN ukoll.
Iż-żewġ forom huma leġittimi; jwieġbu għal rekwiżiti differenti. Jekk ir-rekwiżit huwa «dan il-kontenitur irid jasal għal servizz biss-VPN», int qed tagħżel bejn rotot mill-host u t-tmiem tat-tunnel ġewwa l-kontenitur. Ikteb dik l-għażla qabel l-iskjerament, mhux wara l-ewwel talba falluta. X'ikun li tagħżel, irreġistra l-indirizz tas-sors li jara t-tarf imbiegħed, għax dak huwa dak li juru r-regoli tal-aċċess u l-logs tiegħu. Disinn li ma jistax jiddikjara dak l-indirizz mhuwiex lest.
Id-DNS isegwi d-daemon, mhux it-tunnel
Kontenitur jieħu l-konfigurazzjoni tar-resolver tiegħu meta jibda, ikkupjata mid-daemon jew mill-immaġni. L-indirizzi li l-VPN timbotta wara li tikkonnettja jaslu tard wisq għal dik il-kopja, u jiġu mbuttati fir-resolver tal-host u mhux fil-kontenitur.
Issettja r-resolver b'mod espliċitu għas-servizz, jew indikah lejn resolver intern aċċessibbli permezz tat-tunnel. Kontenitur li jsolvi isem privat f'indirizz pubbliku normalment juża resolver pubbliku, mhux ibati minn rotta miksura, u l-korrezzjoni tappartjeni għall-fajl compose jew għall-konfigurazzjoni tad-daemon.
L-istess raġunament japplika għall-kwistjoni tal-indirizz tal-ħruġ. Jekk kull kontenitur irid jidher minn indirizz VPN differenti, tunnel wieħed tal-host ma jistax jipprovdih għax in-NAT iġġarrafhom f'sors wieħed. Il-forom li jaħdmu huma klijent fl-ispazju tal-ismijiet ta' kull kontenitur jew sidecar li jippossjedi t-tunnel u jaqsam il-munzell tiegħu, u t-tnejn ibiddlu kif l-applikazzjoni tiġi indirizzata.
Lista ta' kontroll qabel ma tagħlaq it-ticket: identifika l-ispazju tal-ismijiet li jippossjedi t-tunnel, ipprova l-passaġġ bin-netwerk tal-host, immappa biss l-apparat tun meħtieġ, ftakar l-indirizz tas-sors wara n-NAT, issettja r-resolver b'mod espliċitu u ttratta l-indirizzi tal-ħruġ għal kull kontenitur bħala deċiżjoni arkitettonika u mhux bandiera.