میزبان کے راستوں کو چھوئے بغیر نام جگہوں میں VPN روٹنگ کی جانچ کریں
تین نقلی کردار، تین الگ تھلگ سیاق و سباق اور ہر لنک کے لیے ایک veth۔ میزبان کو چھونے سے پہلے نام جگہ لیب کا میزبان راستہ لیب سے موازنہ کریں۔
دو لیبیں ایک ہی VPN ٹوپولوجی کی نقل بنا سکتی ہیں اور بالکل مختلف طریقوں سے ناکام ہو سکتی ہیں: ایک نیٹ ورک نام جگہوں میں رہتی ہے، دوسری میزبان کے اپنے راستوں پر۔ نام جگہ والا نسخہ ہر انٹرفیس، راستے اور ساکٹ کو ایسے سیاق میں رکھتا ہے جسے آپ حذف کر سکتے ہیں، جبکہ میزبان والا نسخہ زیادہ تیزی سے شروع ہوتا ہے اور پیچھے حالت چھوڑ دیتا ہے۔ یہی باقی ماندہ حالت ایک ماہ بعد دوسری لیب کو دہرانا مشکل بناتی ہے۔ پہلے صفائی کا موازنہ کریں، کیونکہ یہ طے کرتی ہے کہ آپ تجربہ دو بار کر سکتے ہیں یا نہیں۔
وہی لیب بنانے کے دو طریقے، اور کب کون جیتتا ہے
میزبان راستہ لیب میں آپ جس مشین پر کام کر رہے ہیں اس میں ٹنل انٹرفیس اور راستے شامل کرتے ہیں، اس لیے تجربہ آپ کے shell، پیکیج مینیجر اور ہر دوسرے کنکشن کے ساتھ قسمت بانٹتا ہے۔ نام جگہ لیب میں ہر کردار کو انٹرفیس، پتے، راستے اور ساکٹ کا اپنا اسٹیک ملتا ہے، اور نام جگہ حذف کرنے سے وہ سب ہٹ جاتا ہے۔ کوئی بھی ماڈل زیادہ درست نہیں، کیونکہ وہ مختلف سوالوں کے جواب دیتے ہیں۔ جب موضوع روٹنگ اور فارورڈنگ ہو تو نام جگہیں چنیں، اور جب موضوع یہ ہو کہ ایک ڈیسک ٹاپ کلائنٹ کیسے ضم ہوتا ہے تو میزبان لیب چنیں۔
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
دونوں کو ملانا عام غلطی ہے: صرف میزبان کلائنٹ کے سامنے جانچی گئی نام جگہ لیب دونوں میں سے کسی بندوبست کے بارے میں کچھ ثابت نہیں کرتی۔ پہلا لنک بنانے سے پہلے طے کریں کہ آپ کون سا سوال پوچھ رہے ہیں۔
ہر کردار کے لیے ایک سیاق، جان بوجھ کر جڑا ہوا
ہر کردار کے لیے ایک نام جگہ بنائیں اور ہر veth جوڑی کا ہر سرا اسی سیاق میں منتقل کریں جو اس کا مالک ہے۔ پہلے چار حکم شکل دیکھنے کے لیے کافی ہیں:
ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns clientلیب کو ایسی رینجیں دیں جو میزبان پر کسی سے بھی اوورلیپ نہ ہوں، اور شروع کرنے سے پہلے لکھیں کہ کون سی نام جگہ کس پتے کی مالک ہے۔ کام کرنے والی لیب کو دو الگ راستے چاہیے: ایک بیرونی راستہ تاکہ VPN اینڈ پوائنٹ اپنے ہم منصب تک پہنچے، اور محفوظ وسیلے کے لیے واپسی کا راستہ۔ انہیں دو فیصلوں کے طور پر ماڈل کریں، کیونکہ صرف باہر جانے والا آدھا حصہ بنانے والی لیب ہینڈ شیک ٹیسٹ پاس کرتی ہے اور ایپلیکیشن ٹیسٹ میں ناکام ہوتی ہے۔
فارورڈنگ کردار وہ جگہ ہے جہاں لیبیں دلچسپ ہوتی ہیں
ایک کردار کو فارورڈ کرنا ہوتا ہے، یعنی اس نام جگہ کے اندر فارورڈنگ فعال کرنا اور وہ قاعدہ شامل کرنا جو ڈیزائن کو درکار ہے۔ فارورڈنگ حالت ہر نام جگہ کے لیے الگ ہوتی ہے، اس لیے میزبان کی ترتیب لیب کے لیے بے معنی ہے اور لیب کی ترتیب باہر نہیں رستی، جیسا کہ نیٹ ورک نام جگہوں کی دستاویزات بیان کرتی ہیں۔ WireGuard درج کرتا ہے کہ ایک انٹرفیس اور اس کا بیرونی ساکٹ مختلف نام جگہوں میں رہ سکتے ہیں، جو ایک کارآمد ترکیب اور خود کو الجھانے کا بہترین طریقہ ہے۔ یہ مت سمجھیں کہ انٹرفیس ہٹانے سے کنکشن کا ہر حصہ ایک ہی طرح ہٹتا ہے۔
ٹیسٹ پیکٹ کے بعد فارورڈنگ کاؤنٹر دیکھیں، کیونکہ کبھی نہ ملنے والا قاعدہ اور پیکٹ گرا دینے والا قاعدہ روٹ ٹیبل میں یکساں دکھتے ہیں۔ صرف کاؤنٹر ہی انہیں الگ کرتے ہیں۔
بنیادی لکیر درج کریں، پھر ایک راستہ توڑیں
جو موجود ہے اسے درج کر کے شروع کریں، ہر سطر کے ساتھ سیاق لکھیں۔ نام جگہیں پڑھیں، پھر وہ راستہ جو ایک ٹیسٹ منزل ان میں سے کسی ایک کے اندر اختیار کرے گی، پھر اس لنک پر کاؤنٹر جو اسے اٹھاتا ہے:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gتیسرا حکم وہ ہے جسے لوگ چھوڑ دیتے ہیں، اور ثبوت وہیں رہتا ہے: گرا دیے گئے اور غلطیوں کے کاؤنٹر بتاتے ہیں کہ پیکٹ فارورڈنگ کردار تک پہنچا یا نہیں۔ تبدیلی کے بعد وہی تین مناظر درج کریں، اور ثبوت آپ کی یادداشت نہیں، diff ہو۔ پھر ٹھیک ایک چیز توڑیں، یا راستہ حذف کر کے یا فارورڈنگ راستے پر انکار کا قاعدہ شامل کر کے، اور اپنے اندازہ کردہ علامت کی تصدیق کریں: جواب کے بغیر مکمل ہوا ہینڈ شیک، یا ٹائم آؤٹ کی بجائے نام کے حل میں ناکامی۔ صرف کامیابی دکھانے والی لیب بہت کم سکھاتی ہے۔
صفائی ہی اگلی بار چلانے کو دہرانے کے قابل بناتی ہے
صفائی کو انہی وسائل تک محدود رکھیں جن کے نام آپ نے دیے، کیونکہ مکمل فائر وال ری سیٹ یا میزبان راستہ ہٹانا دہرانے کے قابل ہونا نہیں، دوسرا واقعہ ہے۔ ٹوپولوجی، درست احکام اور وہ مشاہدات محفوظ کریں جن کی آپ کو توقع تھی، تاکہ اگلی بار وہی ناکامی دوبارہ پیدا ہو نہ کہ یہ اندازہ لگانا پڑے کہ پچھلی حالت کس سیاق میں تھی۔ اس ریکارڈ کے بغیر لیب ایک کہانی ہے، طریقہ کار نہیں۔
لیب کے لیے مقامی طور پر بنائے گئے رسائی کی تفصیلات استعمال کریں، اور پیداواری اکاؤنٹس کو مشترکہ مثالوں سے دور رکھیں۔ پھر ہر نام جگہ حذف کریں اور تصدیق کریں کہ میزبان کا منظر تبدیل نہیں ہوا، یہی اس ماڈل کو چننے کی پوری وجہ ہے۔ جس لیب کو آپ صاف طور پر نہیں ہٹا سکتے وہ اضافی مراحل والی میزبان تبدیلی ہے۔