Miért szélesebb a kiemelt mód, mint amire egy VPN-nek szüksége van
A kiemelt konténer olyan eszközöket és képességeket ad, amelyeknek semmi közük az alagutazáshoz. Találja meg a hiba mögötti egyetlen követelményt, mielőtt kapcsolóként használná.
A konténer nem akarta megnyitni az alagútját, ezért bekerült a kiemelt jelző, és most működik. Ez a sorrend csak azt bizonyította, hogy legalább egy engedély hiányzott, és semmit sem mond arról, melyik. A kiemelt mód olyan képességcsoportot és eszközhozzáférést ad, amely jóval szélesebb, mint amire egy alagút-interfésznek szüksége van.
Mit változtat valójában a jelző
A kiemelt konténer széles képességeket és hozzáférést kap a gazdagép eszközeihez, ami sokkal nagyobb engedély annál, mint amit a hálózati útvonal igényel. A pontos halmazt a futtatókörnyezet dokumentálja, nem a hagyomány rögzíti, és a Docker konténerek futtatásáról szóló dokumentációja leírja az elérhető kiemelési lehetőségeket. Egyszeri elolvasása elég annak belátásához, hogy az alagutazás az egész kis része.
Két szűkebb követelmény lefedi a legtöbb VPN-konténert. Az interfész konfigurálásához hálózati adminisztrációs képesség kell, az alagúteszköz megnyitásához pedig hozzáférés az adott eszközcsomóponthoz. Ezek külön engedélyek, és együtt is szűkebbek az általános lehetőségnél. A kiemelt halmaz többi részének semmi köze az alagúthoz. Olyan munkaterhelésekhez létezik, amelyeknek valóban gazdagépszintű hozzáférés kell, és egy VPN-konténer általában nem tartozik közéjük.
Párosítson minden hibát egy előfeltétellel
A hibaüzenet megmondja, melyik előfeltétel hiányzik, ha elolvassa, mielőtt elnyomja. Az eszközcsomópontról szóló üzenet megnevezi az eszközt, a nem engedélyezett műveletről szóló üzenet megnevez egy képességet, a modulról vagy sysctl-ről szóló üzenet pedig a kernel támogatását nevezi meg. Mindegyiknek más a javítása, és csak az egyikük képesség.
A hiányzó konfigurációs fájl az összes képesség megadása után is hiányzó marad, ezért a kiemelt mód néha semmit sem változtat. A konténer elindul, az alagút továbbra is meghiúsul, és a valódi hiba soha nem az engedélyekről szólt. A kernel támogatása a harmadik eset, és a legkönnyebben félreolvasható. A gazdagépen be nem töltött modul nem tölthető be egy nem kiemelt konténer belsejéből, és a konténeren belüli több képesség megadása nem változtatja meg a gazdagép állapotát.
A követelményt ellenőrizze, ne a tünetet
Kezdje a minimális hívással, amelyet a lemezkép dokumentál, futtassa le, és őrizze meg a hiba pontos szövegét. Utána egyszerre egy engedélyt adjon hozzá, és jegyezze fel, melyik kiegészítés változtatta meg az eredményt.
ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tunA konténer, amely látja az eszközt és birtokolja a képességet, de mégis meghiúsul, azt mondja, hogy a probléma máshol van. Ez hasznos eredmény, és a kiemelt mód elrejtette volna.
Ellenőrizze a gazdagépen az eszköz jogosultságait is, mert a helyesen megadott eszközcsomópont rossz csoporttulajdonnal ugyanazt a hibát eredményezi, mint a hiányzó engedély.
Jegyezze fel a legszűkebb működő engedélyt
Írjon fel minden eszközt és képességet, amelyre az üzembe helyezésnek szüksége van, azzal a hibával együtt, amely indokolta. Ez a feljegyzés teszi lehetővé a következő embernek, hogy biztonságosan eltávolítson valamit, és ezt fogja kérni egy auditor is, amikor egy konténert kiemeltként jelentenek.
Tekintse át a környező kontextust is, mert a gazdagép hálózata, a gazdagép csatolásai és a futtatókörnyezet beállításai mindegyike kiterjesztheti egy engedély hatását. Egy izolált laborhívás, amely mindegyiket kombinálja, nem éles konfiguráció, bármilyen jól is működött. Tesztelje az alkalmazást, annak DNS-viselkedését és egy alagúthibát, mielőtt az üzembe helyezést befejezettnek nyilvánítja. Az interfész létrehozására vonatkozó engedély nem kimeneti szabályzat, és egy tökéletesen alagutazó konténer továbbra is mindent továbbít, amit az alkalmazás küld.