Կոնտեյները չէր ուզում բացել իր թունելը, ուստի ավելացվեց արտոնյալ դրոշը, և այժմ այն աշխատում է։ Այդ հաջորդականությունը հաստատեց միայն, որ բացակայում էր գոնե մեկ թույլտվություն, և ոչինչ չի ասում, թե որը։ Արտոնյալ ռեժիմը տալիս է հնարավորությունների մի շարք և սարքերի հասանելիություն, որը շատ ավելի լայն է, քան անհրաժեշտ է թունելի միջերեսին։

Ինչ է իրականում փոխում դրոշը

Արտոնյալ կոնտեյները ստանում է լայն հնարավորություններ և հասանելիություն հոսթի սարքերին, ինչը շատ ավելի մեծ թույլտվություն է, քան պահանջում է ցանցային ուղին։ Ճշգրիտ շարքը փաստաթղթավորում է գործարկման միջավայրը, և ոչ թե սահմանում է ավանդազրույցը, իսկ Docker-ի՝ կոնտեյներների գործարկման փաստաթղթերը նկարագրում են առկա արտոնությունների ընտրանքները։ Մեկ ընթերցումը բավական է տեսնելու, որ թունելավորումը ամբողջի փոքր մասն է։

Երկու ավելի նեղ պահանջ ծածկում են VPN կոնտեյներների մեծ մասը։ Միջերեսի կարգավորումը պահանջում է ցանցի կառավարման հնարավորություն, իսկ թունելի սարքը բացելը պահանջում է հասանելիություն հենց այդ սարքի հանգույցին։ Դրանք առանձին թույլտվություններ են, և նույնիսկ երկուսը միասին ավելի նեղ են, քան ընդհանուր ընտրանքը։ Արտոնյալ շարքի մնացած մասը կապ չունի թունելի հետ։ Այն գոյություն ունի ծանրաբեռնվածությունների համար, որոնք իսկապես կարիք ունեն հոսթի մակարդակի հասանելիության, և VPN կոնտեյները սովորաբար նրանցից մեկը չէ։

Համապատասխանեցրեք յուրաքանչյուր սխալ մեկ նախապայմանի

Սխալի հաղորդագրությունը ասում է, թե որ նախապայմանն է բացակայում, եթե կարդաք այն նախքան այն ճնշելը։ Սարքի հանգույցի մասին հաղորդագրությունը նշում է սարքը, չթույլատրված գործողության մասին հաղորդագրությունը նշում է հնարավորություն, իսկ մոդուլի կամ sysctl-ի մասին հաղորդագրությունը նշում է միջուկի աջակցությունը։ Նրանցից յուրաքանչյուրն ունի տարբեր լուծում, և նրանցից միայն մեկն է հնարավորություն։

Բացակայող կարգավորումների ֆայլը մնում է բացակայող բոլոր հնարավորությունները տալուց հետո, ինչի պատճառով արտոնյալ ռեժիմը երբեմն ընդհանրապես ոչինչ չի փոխում։ Կոնտեյները մեկնարկում է, թունելը դեռ ձախողվում է, և իրական սխալը երբեք թույլտվությունների մասին չէր։ Միջուկի աջակցությունը երրորդ դեպքն է և ամենահեշտը սխալ կարդալու։ Հոսթի վրա չբեռնված մոդուլը չի կարող բեռնվել ոչ արտոնյալ կոնտեյների ներսից, և կոնտեյների ներսում ավելի շատ հնարավորություններ տալը չի փոխում հոսթի վիճակը։

Ստուգեք պահանջը, ոչ թե ախտանիշը

Սկսեք նվազագույն կանչից, որը փաստաթղթավորում է պատկերը, գործարկեք այն և պահպանեք ձախողման ճշգրիտ տեքստը։ Ապա ավելացրեք մեկ թույլտվություն ամեն անգամ և նշեք, թե որ ավելացումը փոխեց արդյունքը։

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

Կոնտեյները, որը տեսնում է սարքը և ունի հնարավորությունը, բայց դեռ ձախողվում է, ասում է, որ խնդիրը այլ տեղ է։ Դա օգտակար արդյունք է, և արտոնյալ ռեժիմը կթաքցներ այն։

Ստուգեք նաև սարքի թույլտվությունները հոսթի վրա, որովհետև ճիշտ տրված սարքի հանգույցը սխալ խմբի սեփականությամբ առաջացնում է նույն սխալը, ինչ բացակայող թույլտվությունը։

Գրանցեք ամենանեղ աշխատող թույլտվությունը

Գրեք յուրաքանչյուր սարք և հնարավորություն, որոնք անհրաժեշտ են տեղակայմանը, այն սխալի հետ, որը հիմնավորեց դրանք։ Այդ գրառումն է, որ թույլ է տալիս հաջորդ մարդուն ապահով հեռացնել ինչ-որ բան, և այն է, ինչ կպահանջի աուդիտորը, երբ կոնտեյները հաղորդվի որպես արտոնյալ։

Վերանայեք նաև շրջապատող համատեքստը, որովհետև հոսթի ցանցը, հոսթի կցումները և գործարկման միջավայրի ընտրանքները յուրաքանչյուրը կարող են ընդլայնել թույլտվության ազդեցությունը։ Մեկուսացված լաբորատոր կանչը, որը միավորում է բոլորին, արտադրական կոնֆիգուրացիա չէ, որքան էլ լավ աշխատեր։ Փորձարկեք հավելվածը, նրա DNS վարքը և թունելի ձախողումը նախքան տեղակայումը ավարտված հայտարարելը։ Միջերես ստեղծելու թույլտվությունը ելքի քաղաքականություն չէ, և կատարյալ թունելավորող կոնտեյները դեռ ուղղորդում է այն ամենը, ինչ ուղարկում է հավելվածը։

Առնչվող հոդվածներ