Kontenedore-irudiek behar dituzten OpenVPN binario eta konfigurazio fitxategi guztiak eraman ditzakete eta, hala ere, lehen sare-deian huts egitea. Erroreak /dev/net/tun aipatzen du aplikazioak nukleoari TUN interfaze bat eskatu ziolako eta kontenedoreak ez zuelako ez gailu-nodorik ez hura sortzeko gaitasunik. Bi baimen bereizi dira, eta bat konpontzeak bestea zehazki zegoen lekuan uzten du.

Haiek bereizteko bakoitzeko komando bat behar da. Ondorengo errore-mezuak esango dizu zein mughan zeunden benetan.

Gailu-nodoa eta gaitasuna bi ate dira

Gailu-nodoa fitxategi-sistemaren objektua da, beraz kontenedoreak bere muntatze-namespacean ikusi behar du. Gaitasuna baimen bat da, beraz prozesuak CAP_NET_ADMIN behar du interfazea sortuko den namespacean. Gailua gaitasunik gabe pasatzeak irekitzen den nodo bat eta huts egiten duen ioctl bat ematen dizkizu. Gaitasuna gailurik gabe emateak aplikazioa ezer irekitzeko gai ez dela uzten du, eta horregatik biak batera agertzen dira normalean adibideetan.

Dockerren devices ezarpenak hostaren gailua kontenedorearen barruan mapatzen du, eta cap_add-ek gaitasun-multzoa doitzen du. Bide beraren bind mount batek fitxategia ikusgai jartzen du gailu-sarbidearen semantika aplikatu gabe.

Erreproduzitu Compose fitxategitik kanpo

Zerbitzua editatu aurretik, egiaztatu hostak gailua duela eta kontenedore soil batek interfazea sor dezakeela. Beheko komandoa nahita minimoa da, eta bere helburu bakarra host-arazoa compose arazo batetik bereiztea da. Huts egiten badu, compose aldaketek ez dute lagunduko.

ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun:/dev/net/tun alpine sh -c 'apk add -q iproute2 && ip tuntap add dev tun9 mode tun && ip link show tun9'

Hostean nodorik ez egoteak tun modulua eskuragarri ez dagoela esan nahi du, eta hori host aldeko konponketa da, ez kontenedorekoa. Existitzen den baina kontenedorearen barruan ireki ezin den nodoak gailu-sarbidera seinalatzen du, eta mezuak permission denied esango du no such file esan beharrean. Bi hutsegite horien ordena da diagnostiko osoa. Idatzi zein ikusi zenuen bandera bat aldatu aurretik.

TUN ondorengo erroreak arazo desberdinak dira

Interfazea agertzen denean, hurrengo hutsak beste jabe bat du. Autentifikazio-erroreek tunela zerbitzarira iritsi zela eta kredentzialak baztertu zirela esan nahi dute, beraz gaitasun-aldaketek ez dute lagunduko. Aplikazioek huts egiten jarraitzen duten bitartean ezartzen den tunelak ibilbideei, birbidaltzeari, kontenedorearen barneko DNS ebazpenari edo kontenedorearen beraren sare-diseinuari seinalatzen die. Horietako bakoitza TUN baimenak erantzun ezin duen sare-galdera arrunta da. Jatorrizko proba aldaketa bakoitzaren ondoren errepikatzeak hutsegiteak inpresio bakarrean elkartzea eragozten du.

Adibide lanegile batetik ezarpen guztiak kopiatzea da konponbide minimoa zerbitzu-definizio irakurtezin bihurtzeko bidea. Ekarri inplementazio honek behar dituenak soilik eta idatzi zergatik dagoen bakoitza han.

Egiaztatu interfazea kontenedorearen barruan

Egiaztatu interfazea eta gaitasun-multzoa exekutatzen ari den kontenedorearen barrutik eta ez hostetik. Beheko komandoek gailu-nodoa, gaitasun-zerrenda eta interfazea sortu daitekeen erakusten dute. Exekutatu ezazu bezeroa exekutatzen duen kontenedore berean, eta instalatu tresnak irudia minimoa bada.

ls -l /dev/net/tun
capsh --print | grep -i net_admin
ip link add dev tun9 type tun && ip link show tun9

Bounding set-ean dagoen baina effective set-etik kanpo dagoen gaitasun batek inoiz eman ez zen baten desberdin jokatzen du, eta capsh-ek biak erakusten ditu. Nodoa existitzen bada eta gaitasuna han badago, sorkuntzak huts egiten jarraitzen duen bitartean, exekuzio-inguruneak beste zerbait ezartzen du, hala nola seccomp profila edo eragiketa murrizten duen AppArmor politika. Hirugarren muga bat da hori, exekuzio-inguruneak dokumentatua eta ez aplikazioak.

Idatzi kontenedorearen banderak, irudia eta saiakera bakoitzaren errore zehatza. Ohar hori irakurtzen duen hurrengo pertsonak jakin ahal izango du zein ate zegoen itxita ikerketa osoa errepikatu gabe.

Erlazionatutako artikuluak