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 رویے اور سرنگ کی ناکامی کی جانچ کریں۔ انٹرفیس بنانے کی اجازت خارجی پالیسی نہیں ہے، اور بہترین طور پر سرنگ کر سکنے والا کنٹینر بھی وہ سب روٹ کرتا ہے جو ایپلیکیشن بھیجتی ہے۔