Enpresako VPNaren atzean ezer iristen ez duen edukiontzia tunelaren izen-espazio desberdinean bizi ohi da. Ostalariaren bezeroaren bideak, DNS zerbitzariak eta suebakiko markak ostalariaren pilarenak dira; zubi-sareko edukiontziak berea du. Gertakari bakar horrek azaltzen ditu plataforma taldera iristen diren txosten gehienak, eta horregatik «VPNa hondatuta dago» eta «Dockerrek VPNa saihesten du» aldi berean okerrak izan daitezke. Sintoma baten atzean bi konfigurazio oso desberdin ezkutatzen dira, beraz, identifikatu zein duzun edozein ezarpen aldatu aurretik.

Argitu noren izen-espazioak duen tunela

macOS edo Windows-erako Docker Desktop-en edukiontziak Linux makina birtual baten barruan exekutatzen dira. Mahaigainean instalatutako VPN bezeroak tunel bat sortzen du mahaigaineko sistema eragilean, eta makina birtualak ez du inoiz ikusten. Edukiontziaren konfigurazioak ez du hori konpontzen, edukiontziak beharko lukeen interfazea ez baita existitzen bere sareko izen-espazioan.

Linux ostalari batean tunela ostalariaren izen-espazioan bizi da, eta zubi-edukiontziek ostalariaren bideratze-taularen bidez iristen dira normalean, irteeran iturburu-NAT aplikatuta. Bide horrek huts egiten duenean, arrazoia normalean birbidaltze-politika, alderantzizko bidearen iragazketa edo gainjarritako azpisarea izaten da, ez falta den bide bat. Egiaztatu bi munduetako zeinetan zauden, aurrera irakurri aurretik:

docker info --format '{{.OperatingSystem}}'
docker run --rm --net=host alpine ip route | head -5
docker run --rm alpine ip route | head -5

Bi bideratze-taula horien arteko aldea arazo osoa da pantaila batean. Ostalariaren ikuspegiak tunelaren interfazea badu eta zubiaren ikuspegiak ez, izen-espazioen isolamendua ikusten ari zara, eta gainerako guztia hura nola zeharkatu aukeratzea da.

Ostalariaren sarea proba da, ez diseinua

Edukiontzi bat ostalariaren sarearekin exekutatzeak, Dockerrek ostalariaren sare-izen-espazioa partekatze gisa dokumentatzen duena, tunelaren interfazea eta haren bideak zuzenean heredatzea eragiten du. Eskaera berak orduan arrakasta badu, bideen teoria baieztatuta dago eta hutsegitea izen-espazioen isolamendua da, ez kredentzialak, DNS edo sarbide-arau bat.

docker run --rm --net=host curl -sS -o /dev/null -w '%{http_code}\n' https://api.internal/health

Mantendu diagnostiko gisa. Ostalariaren sareak ataka-argitalpenari eta edukiontzi bati nahi zenizkion isolamenduaren zati handiari uzten die, eta Docker Desktop-en «host» makina birtuala esan nahi du, ez mahaigaia, beraz, hango arrakastak edo hutsegiteak engainatu zaitzake zein ostalariri zuzentzen zinen ahaztu ezkero.

tun gailua eta berarekin datozen pribilegioak

Edukiontzi barruko VPN bezeroak tunel gailu bat eta hura konfiguratzeko baimena behar ditu. Ohiko lasterbidea --privileged da, gailu guztiak ematen dituena eta edukiontzi osoan segurtasun-politika arintzen duena. Hori lan honek eskatzen duena baino askoz gehiago da, eta zaila da berrikuspen batean justifikatzea.

sudo modprobe tun
docker run --rm -it --device /dev/net/tun --cap-add NET_ADMIN myvpn-client

Forma estuagoak gailu-nodo bakarra mapatzen du eta sare-administrazio gaitasuna soilik eransten du. Kargatu modulua ostalarian lehenik, nodoa existi dadin. Edukiontzia abiatu eta bezeroak tunel gailua ireki ezin duela jakinarazten badu, egiaztatu mapaketa profila susmatu aurretik, errore hori normalean hitzez hitzkoa baita.

Diseinu honek bezeroa edukiontzi bakoitzeko exekutatzen dela ere esan nahi du. Erantzun zuzena da karga-lan bakoitzak bere tunela behar duenean, eta okerra ostalariaren tunela ikusgai egon zedin soilik nahi zenuenean, ziurrenik plataforma taldeak hori egiten ari zinela suposatu baitzuen.

Zubiaren NATak VPNak ikusten duen iturburua aldatzen du

Zubi lehenetsiarekin edukiontziaren irteerako trafikoa ostalariaren helbidera itzultzen da. Beraz, VPNaren atzean enpresako aldeak ostalariaren tunel-helbidea ikusten du, ez edukiontziarena, iturburuaren araberako sarbide-arauak ostalariak eskaera egin balu bezala jokatzen du, eta bi edukiontzi bereizezinak bihurtzen dira VPN zerbitzariarentzat.

macvlan edo ipvlanek LAN helbide bat ematen dio edukiontziari, eta horrek LANeko aurkikuntza laguntzen du eta edukiontzia segmentuko parekide ematen du. Ostalariaren tunela erabat saihesten du ere, beraz, horrelako edukiontziak ez du VPN-soilik aurrizkietara iritsiko VPNa LAN horretatik ere irisgarria ez bada.

Bi formak zilegiak dira; baldintza desberdinei erantzuten diete. Baldintza «edukiontzi honek VPN-soilik zerbitzu batera iritsi behar du» bada, ostalariaren bidez bideratzearen eta tunela edukiontzi barruan amaitzearen artean aukeratzen ari zara. Idatzi aukera hori hedapenaren aurretik, ez lehen eskaera hutsaren ondoren. Edozein aukeratu ere, erregistratu urruneko aldeak ikusiko duen iturburu-helbidea, haren sarbide-arauek eta erregistroek hura erakutsiko baitute. Helbide hori adieraz ezin duen diseinua ez dago amaituta.

DNSak daemona jarraitzen du, ez tunela

Edukiontziak bere ebazpen-konfigurazioa abiaraztean lortzen du, daemonetik edo iruditik kopiatuta. VPNak konektatu ondoren bultzatzen dituen helbideak beranduegi iristen dira kopia horretarako, eta ostalariaren ebazlera bultzatzen dira, ez edukiontzira.

Ezarri ebazlea espresuki zerbitzuarentzat, edo zuzendu tunelaren bidez irisgarria den barne-ebazle batera. Izen pribatu bat helbide publiko bihurtzen duen edukiontziak ebazle publikoa erabiltzen du normalean, ez du bide hondaturik pairatzen, eta zuzenketa compose fitxategian edo daemonaren konfigurazioan dagokio.

Arrazoi bera aplikatzen da irteera-helbidearen galderari. Edukiontzi bakoitzak VPN helbide desberdin batetik agertu behar badu, ostalariaren tunel bakar batek ezin du hori eman, NATak iturburu bakarrera tolesten baititu. Forma bideragarriak edukiontzi bakoitzaren izen-espazioan bezero bat edo tunela daukan eta bere pila partekatzen duen sidecar bat dira, eta biek aplikazioa nola helbideratzen den aldatzen dute.

Txartela itxi aurretik kontrol-zerrenda: identifikatu tunela daukan izen-espazioa, frogatu bidea ostalariaren sarearekin, mapatu behar duzun tun gailua soilik, gogoratu NAT ondorengo iturburu-helbidea, ezarri ebazlea espresuki eta tratatu edukiontzi bakoitzeko irteera-helbideak arkitektura-erabaki gisa, ez bandera gisa.

Erlazionatutako artikuluak