NET_ADMIN hija l-kapaċità tal-Linux li tippermetti lill-proċess iwettaq amministrazzjoni tan-netwerk, u f'kontenitur tagħmel eżattament dan ġewwa l-ispazju tal-ismijiet tan-netwerk li fih jaħdem il-proċess. Mhix liċenzja biex tiftaħ socket, u mhix sostitut għal apparat jew rotta. Il-mistoqsija interessanti qatt mhi jekk il-kapaċità ngħatatx, imma liema spazju tal-ismijiet jirċievi l-bidla.

X'tkopri l-kapaċità

Ġewwa l-ispazju tal-ismijiet tiegħu, proċess li jżomm NET_ADMIN jista' jgħolli u jniżżel interfaces, jassenja indirizzi, iżid u jneħħi rotot u jikteb regoli tal-firewall, jiġifieri l-grupp ta' operazzjonijiet li capabilities(7) jiġbor taħt din il-kapaċità. Jista' wkoll jaġġusta settings fil-livell tal-interface li jikkontrollaw kif il-kernel iqiegħed it-traffiku fil-kju u jiffiltrah. Klijent VPN normalment ikun jeħtieġ ftit minnhom fil-bidu u xejn ieħor wara. Għalhekk il-biċċa l-kbira tal-immaġini jitolbu aktar firxa milli jużaw.

Operazzjonijiet barra minn dak l-ispazju tal-ismijiet mhumiex koperti, u l-privileġġi ġirien huma separati. Il-qari u l-kitba ta' pakketti mhux maħduma jappartjenu lil NET_RAW, u l-ħolqien ta' apparat tun jeħtieġ kemm il-kapaċità kif ukoll aċċess għan-nodu tal-apparat. Proċess mingħajr l-apparat jirċievi żball ta' permess li jidher bħal problema tan-netwerk u mhuwiex.

L-ispazju tal-ismijiet jiddetermina r-raġġ tal-ħsara

Kontenitur fuq in-netwerk tal-pont tiegħu stess jilħaq il-loopback tiegħu stess, l-interfaces tiegħu stess u t-tabella tar-rotot tiegħu stess. L-għoti ta' NET_ADMIN hemmhekk jippermetti lill-klijent VPN jibni mina mingħajr ma jmiss id-deċiżjonijiet tar-rotot tal-host, li hija l-arranġament li jassumu l-biċċa l-kbira tal-immaġini tal-kontenitur.

Aqleb dak il-kontenitur għan-netwerking tal-host u l-istess għoti issa jeditja r-rotot tal-host u l-firewall tal-host, għax ma fadal l-ebda spazju tal-ismijiet separat. Il-klijent li kellu jamministra mina waħda jista' mbagħad jiddevja t-traffiku tal-magna kollha, u żball fl-iskrittura tiegħu tat-tneħħija jħalli fuq il-host regoli li ħadd ma kiteb. Xejn fil-kapaċità nnifisha ma nbidel; inbidel il-kuntest. Huwa għalhekk li l-istess fajl compose jġib ruħu b'mod differenti fuq żewġ hosts.

Tliet prerekwiżiti li jingħaqdu f'wieħed

Il-fallimenti tal-bidu fil-kontenituri VPN normalment jinvolvu waħda minn tliet affarijiet separati: il-kapaċità, l-apparat tal-mina u l-appoġġ tal-kernel għall-protokoll. L-għoti tat-tlieta flimkien jaħdem, u wkoll jagħmel il-falliment li jmiss impossibbli li jiġi attribwit. Framment compose minimu jagħti l-kapaċità u jgħaddi n-nodu tal-apparat b'mod espliċitu:

services:
  vpn:
    image: example/vpn-client:latest
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1

Aqra d-dokumentazzjoni tal-immaġini stess dwar liema sysctls teħtieġ, għax sysctl f'kontenitur jista' jeħtieġ privileġġ addizzjonali jew sett tal-livell tal-host. Fejn l-immaġini tappoġġja biss il-modalità tal-ispazju tal-utent, l-apparat mhuwiex meħtieġ xejn u l-lista tal-kapaċitajiet tonqos skont dan.

Agħti l-operazzjoni dejqa, mhux il-modalità

Il-modalità privileġġjata tgħaddi kull kapaċità u fl-istess ħin twessa' l-aċċess għall-apparati, allura taħbi liema mit-tliet prerekwiżiti kienet nieqsa. Hija wkoll tagħmel il-modi ta' falliment tal-kontenitur indistinguwibbli mill-bidliet tal-host. Ippreferi lista espliċita anke meta tkun itwal biex tikteb.

L-iskjeramenti rootless u fl-ispazji tal-ismijiet tal-utent ibiddlu t-tifsira tal-kapaċità fil-prattika, għax il-proċess jista' jżommha biss ġewwa spazju tal-ismijiet immappjat. L-ikkupjar ta' lista tal-kapaċitajiet minn eżempju rootful għal runtime rootless u l-istennija tal-istess firxa hija mod komuni kif titlef wara nofsinhar.

Is-sigrieti jappartjenu għal deċiżjoni separata. Iż-żamma ta' NET_ADMIN ma tgħid xejn dwar liema identità tal-pari tippreżenta l-klijent, liema kredenzjali tgħabbi jew kif dawn iduru. L-amministrazzjoni tan-netwerk ma tipprovdix fiduċja.

Ivverifika l-bidla u rreġistra għaliex teżisti l-konċessjoni

Ikkonferma x'irċieva tabilħaqq il-kontenitur qabel ma tiddebġja l-mina. L-ispezzjoni hawn taħt tirrapporta l-kapaċitajiet miżjuda u l-modalità tan-netwerk, imbagħad turi kif tidher il-lista tal-interfaces minn ġewwa:

docker inspect --format '{{.HostConfig.CapAdd}} {{.HostConfig.NetworkMode}} {{.HostConfig.Privileged}}' vpn
docker exec vpn sh -c 'grep CapEff /proc/self/status'
docker exec vpn ip -br addr
docker exec vpn ip route

Jekk il-kapaċità teżisti u l-lista tal-interfaces għadha vojta, il-klijent falla qabel ma seta' joħloq xi ħaġa, u l-logs tal-kontenitur huma l-post li jmiss biex wieħed iħares. Jekk il-mina teżisti imma t-traffiku ma jgħaddix, it-tabella tar-rotot ġewwa l-kontenitur twieġeb il-mistoqsija li jmiss.

Ittestja wkoll it-triq tat-tneħħija, għax klijent li jikteb regoli tal-firewall jista' jħallihom warajh. Waqqaf il-kontenitur u erġa' ċċekkja s-sett ta' regoli tal-host jekk tintuża n-netwerking tal-host. Konċessjoni li hija meħtieġa biss għal żewġ sekondi fil-bidu m'għandhiex tiġi deskritta fil-fajl compose bħala rekwiżit permanenti mingħajr nota li tispjegaha.

Ikteb ir-raġuni ħdejn kull kapaċità: liema operazzjoni kellha bżonnha u x'jonqos mingħajrha. Dik in-nota tibqa' tgħaddi minn aġġornamenti tal-immaġini, u hija d-differenza bejn lista ta' privileġġi riveduta u waħda li kibret bil-kopja u l-paste.

Artikli relatati