Неліктен артықшылықты режим VPN-ге қажеттіден кеңірек
Артықшылықты контейнер туннельге қатысы жоқ құрылғылар мен мүмкіндіктер береді. Оны ажыратқыш ретінде пайдаланбас бұрын қатенің артындағы жалғыз талапты табыңыз.
Контейнер өз туннелін ашпады, сондықтан артықшылықты жалауша қосылды, енді ол жұмыс істейді. Бұл реттілік кемінде бір рұқсаттың жетіспегенін ғана дәлелдеді, қайсысы екені туралы ештеңе айтпайды. Артықшылықты режим туннель интерфейсіне қажеттіден әлдеқайда кең мүмкіндіктер жиынтығын және құрылғыларға қатынауды береді.
Жалауша шын мәнінде нені өзгертеді
Артықшылықты контейнер кең мүмкіндіктер мен хост құрылғыларына қатынау алады, бұл желі жолы талап ететіннен әлдеқайда үлкен рұқсат. Нақты жиынтықты аңыз емес, орындау ортасы құжаттайды, ал 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 тәртібін және туннель сәтсіздігін сынап көріңіз. Интерфейс жасауға рұқсат шығу саясаты емес, және мінсіз туннельдеуге қабілетті контейнер қолданба жібергеннің бәрін әлі де маршруттайды.