Kontena halikutaka kufungua handaki lake, kwa hiyo bendera ya upendeleo iliwekwa, na sasa inafanya kazi. Mfululizo huo ulithibitisha tu kwamba ruhusa moja ilikosekana, na hausemi chochote kuhusu ipi. Hali ya upendeleo hutoa seti ya uwezo na ufikiaji wa vifaa pana zaidi kuliko kiolesura cha handaki kinavyohitaji.

Bendera hubadilisha nini hasa

Kontena yenye upendeleo hupokea uwezo mpana na ufikiaji wa vifaa vya mwenyeji, jambo ambalo ni ruhusa kubwa zaidi kuliko njia ya mtandao inavyohitaji. Seti kamili haijawekwa na hadithi, bali huiandika mazingira ya utekelezaji, na nyaraka za Docker kuhusu kuendesha kontena zinaeleza chaguo za upendeleo zinazopatikana. Kusoma mara moja kunatosha kuona kwamba handaki ni sehemu ndogo ya jumla.

Mahitaji mawili nyembamba zaidi yanashughulikia kontena nyingi za VPN. Kusanidi kiolesura kunahitaji uwezo wa usimamizi wa mtandao, na kufungua kifaa cha handaki kunahitaji ufikiaji wa nodi hiyo maalum ya kifaa. Hizi ni ruhusa tofauti, na hata zote mbili pamoja ni nyembamba zaidi kuliko chaguo la jumla. Sehemu iliyobaki ya seti ya upendeleo haihusiani na handaki. Ipo kwa mizigo ya kazi ambayo kwa kweli inahitaji ufikiaji wa kiwango cha mwenyeji, na kontena la VPN kwa kawaida si moja yao.

Oanisha kila hitilafu na sharti moja

Ujumbe wa hitilafu unakuambia sharti gani linakosekana ikiwa utaisoma kabla ya kuifuta. Ujumbe kuhusu nodi ya kifaa hutaja kifaa, ujumbe kuhusu operesheni isiyoruhusiwa hutaja uwezo, na ujumbe kuhusu moduli au sysctl hutaja msaada wa kernel. Kila moja ina suluhisho tofauti, na moja tu kati yao ni uwezo.

Faili ya usanidi inayokosekana inabaki haipo baada ya uwezo wote kutolewa, ndiyo sababu hali ya upendeleo wakati mwingine haibadilishi chochote kabisa. Kontena huanza, handaki bado inashindikana, na hitilafu halisi haikuwa kuhusu ruhusa kamwe. Msaada wa kernel ni kisa cha tatu na rahisi zaidi kusoma vibaya. Moduli ambayo haijapakiwa kwenye mwenyeji haiwezi kupakiwa kutoka ndani ya kontena lisilo na upendeleo, na kutoa uwezo zaidi ndani ya kontena hakubadilishi hali ya mwenyeji.

Kagua hitaji, si dalili

Anza na wito mdogo zaidi ambao picha inauandika, uendeshe, na uhifadhi maandishi kamili ya kushindwa. Kisha ongeza ruhusa moja kwa wakati na uandike nyongeza ipi ilibadilisha matokeo.

ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tun

Kontena linaloweza kuona kifaa na kuwa na uwezo lakini bado linashindikana linakuambia tatizo liko mahali pengine. Hilo ni tokeo lenye manufaa, na hali ya upendeleo ingelificha.

Kagua pia ruhusa za kifaa kwenye mwenyeji, kwa sababu nodi ya kifaa iliyotolewa kwa usahihi lakini ikiwa na umiliki wa kundi usio sahihi hutoa hitilafu sawa na ruhusa inayokosekana.

Andika ruhusa nyembamba zaidi inayofanya kazi

Andika kila kifaa na uwezo unaohitajika na usambazaji, pamoja na hitilafu iliyovihalalisha. Rekodi hiyo ndiyo inayomruhusu mtu anayefuata kuondoa kitu kwa usalama, na ndiyo atakayoiomba mkaguzi kontena linaporipotiwa kuwa na upendeleo.

Pitia pia muktadha unaozunguka, kwa sababu mtandao wa mwenyeji, upachikaji wa mwenyeji na chaguo za mazingira ya utekelezaji kila kimoja kinaweza kupanua athari ya ruhusa. Wito wa maabara uliotengwa unaochanganya yote si usanidi wa uzalishaji, jinsi gani ulivyofanya kazi vizuri. Jaribu programu, tabia yake katika DNS na kushindwa kwa handaki kabla ya kutangaza usambazaji umekamilika. Ruhusa ya kuunda kiolesura si sera ya kutoka, na kontena linaloweza kutandaza kikamilifu bado linaelekeza kila kitu program inachotuma.

Makala zinazohusiana