Ayrıcalıqlı rejim VPN-in ehtiyacından nə üçün daha genişdir
Ayrıcalıqlı konteyner tunellə əlaqəsi olmayan cihaz və imkanlar verir. Xətanın arxasındakı tək tələbi onu açar kimi işlətməzdən əvvəl tapın.
Konteyner tunelini açmırdı, ona görə ayrıcalıq bayrağı əlavə edildi və indi işləyir. Bu ardıcıllığın təsdiqlədiyi şey ən azı bir icazənin çatışmadığıdır və hansı olduğu barədə heç nə demir. Ayrıcalıqlı rejim tunel interfeysinin ehtiyacından qat-qat geniş imkanlar və cihaz girişi verir.
Bayraq əslində nəyi dəyişir
Ayrıcalıqlı konteyner geniş imkanlar və host cihazlarına giriş alır ki, bu, şəbəkə yolunun tələb etdiyindən qat-qat böyük bir icazədir. Dəqiq dəsti folklor deyil, icra mühiti sənədləşdirir və Docker-in konteyner işə salma sənədləri mövcud ayrıcalıq seçimlərini təsvir edir. Bir dəfə oxumaq tunelin bütünün kiçik bir hissəsi olduğunu görməyə kifayət edir.
İki daha dar tələb VPN konteynerlərinin çoxunu əhatə edir. İnterfeysin konfiqurasiyası şəbəkə idarəetmə imkanını tələb edir, tunel cihazının açılması isə həmin xüsusi cihaz qovşağına giriş tələb edir. Bunlar ayrı-ayrı icazələrdir və hər ikisinin verilməsi hələ də ümumi seçimdən dardır. Ayrıcalıqlı dəstin qalan hissəsinin tunellə heç bir əlaqəsi yoxdur. O, həqiqətən host səviyyəsində girişə ehtiyac duyan yüklər üçün mövcuddur və VPN konteyneri adətən onlardan biri deyil.
Hər xətanı bir ilkin şərtlə uyğunlaşdırın
Xəta mesajı onu susdurmazdan əvvəl oxusanız, hansı ilkin şərtin çatışmadığını sizə deyir. Cihaz qovşağı ilə bağlı mesaj cihazı adlandırır, icazə verilməyən əməliyyatla bağlı mesaj imkanı adlandırır, modul və ya sysctl ilə bağlı mesaj isə nüvə dəstəyini adlandırır. Bunların hər birinin fərqli düzəlişi var və yalnız biri imkandır.
Çatışmayan konfiqurasiya faylı hər imkan verildikdən sonra da çatışmır qalır, buna görə ayrıcalıqlı rejim bəzən heç nəyi dəyişmir. Konteyner başlayır, tunel yenə də uğursuz olur və əsl xəta heç vaxt icazələrlə bağlı olmayıb. Nüvə dəstəyi üçüncü haldır və ən asan yanlış oxunandır. Hostda yüklənməmiş modul ayrıcalıqsız konteynerin içindən yüklənə bilməz və konteyner daxilində daha çox imkan vermək hostun vəziyyətini dəyişmir.
Simptomu deyil, tələbi yoxlayın
Obrazın sənədləşdirdiyi minimal çağırışdan başlayın, onu işə salın və dəqiq uğursuzluq mətnini saxlayın. Sonra hər dəfə bir icazə əlavə edin və hansı əlavənin nəticəni dəyişdiyini qeyd edin.
ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun image:tag
ip -br link show type tunCihazı görən və imkanı saxlayan, amma yenə də uğursuz olan konteyner problemin başqa yerdə olduğunu sizə deyir. Bu faydalı nəticədir və ayrıcalıqlı rejim onu gizlədərdi.
Hostdakı cihaz icazələrini də yoxlayın, çünki düzgün verilmiş cihaz qovşağı yanlış qrup sahibliyi ilə çatışmayan icazə ilə eyni xətanı yaradır.
İşləyən ən dar icazəni qeyd edin
Yerləşdirmənin ehtiyac duyduğu hər cihazı və imkanı, onu əsaslandıran xəta ilə birlikdə yazın. Bu qeyd növbəti şəxsin nəyisə təhlükəsiz şəkildə çıxarmasına imkan verir və konteyner ayrıcalıqlı kimi bildirildikdə auditordan tələb ediləcək olan da məhz budur.
Ətraf konteksti də nəzərdən keçirin, çünki host şəbəkəsi, host montajları və icra mühiti seçimləri icazə vermənin təsirini hər biri genişləndirə bilər. Hamısını birləşdirən təcrid olunmuş laboratoriya çağırışı, nə qədər yaxşı işləsə də, istehsalat konfiqurasiyası deyil. Yerləşdirməni bitmiş hesab etməzdən əvvəl tətbiqi, onun DNS davranışını və tunel uğursuzluğunu sınaqdan keçirin. İnterfeys yaratmaq icazəsi çıxış siyasəti deyil və mükəmməl tunel qura bilən konteyner yenə də tətbiqin göndərdiyi hər şeyi yönləndirir.