آپ کی روٹ لائن مسترد ہو کر واپس آتی ہے، اور جو مشورہ آپ کو ملتا ہے وہ IP فارورڈنگ چالو کرنے کو کہتا ہے۔ یہ دونوں چیزیں مسئلے کے مختلف مراحل میں ہیں۔ فارورڈنگ طے کرتی ہے کہ ہوسٹ انٹرفیس کے درمیان پیکٹ منتقل کر سکتا ہے یا نہیں؛ اس کی اس بارے میں کوئی رائے نہیں کہ آپ نے جو منزل لکھی ہے وہ درست نیٹ ورک ہے یا نہیں۔ پہلے سابقہ درست کریں، کیونکہ فارورڈنگ ایسے پتے اور ماسک کو نہیں بچا سکتی جو آپس میں نہیں ملتے۔

پارسر اصل میں کس بات کی شکایت کر رہا ہے

پتہ اور ماسک کے طور پر لکھی گئی منزل کو نیٹ ورک بیان کرنا چاہیے، اور نیٹ ورک صفر کیے گئے ہوسٹ بٹس سے شروع ہوتا ہے۔ جب آپ کا دیا ہوا پتہ اب بھی ہوسٹ حصے میں قدر رکھتا ہے، تو جوڑا اندرونی طور پر متضاد ہے: 172.20.130.0 صاف دکھتا ہے کیونکہ یہ صفر پر ختم ہوتا ہے، لیکن چوتھے آکٹٹ میں صفر ہی واحد اہم چیز نہیں ہے۔ یہاں بھٹکے ہوئے بٹس تیسرے آکٹٹ میں ہیں۔

اوزار اس تضاد کو مختلف طریقوں سے سنبھالتے ہیں۔ سخت پارسر لائن مسترد کرتے ہیں اور ہوسٹ بٹس کا نام لیتے ہیں۔ نرم پارسر پتے کو ماسک کرتے ہیں اور وہ چیز نصب کرتے ہیں جو آپ نے نہیں مانگی، جو زیادہ برا ہے، کیونکہ ترتیب اب ایسی حد کو روٹ کرتی ہے جو آپ نے کبھی نہیں چاہی۔ Python کا ipaddress ماڈیول انتخاب براہ راست دکھاتا ہے: سخت نیٹ ورک پارسنگ غلطی دیتی ہے، اور strict=False ہوسٹ بٹس کو ماسک کر دیتا ہے۔ آپ کا کلائنٹ ورژنوں کے درمیان سخت، نرم یا متضاد ہو سکتا ہے، اس لیے عادت پر بھروسا کرنے کے بجائے پیغام پڑھیں۔

مثال ہاتھ سے کریں

ایسی سرنگ لیں جسے /20 ماسک کے ساتھ 172.20.130.0 تک پہنچنا ہے۔ /20 تیسرے آکٹٹ سے چار بٹس ادھار لیتا ہے، اس لیے وہ آکٹٹ صرف 16 کے قدموں میں گنا جاتا ہے: 0، 16، 32 اور پھر 240 تک۔ قدر 130، 128 اور 143 کے درمیان آتی ہے، یعنی گھیرنے والا نیٹ ورک 172.20.128.0 سے شروع ہوتا ہے، آخری آکٹٹ صفر کیے گئے 172.20.130.0 سے نہیں۔

لکھے جانے پر، بلاک 172.20.128.0 سے 172.20.143.255 تک چلتا ہے اور 4,096 پتے رکھتا ہے۔ وہی قدریں غیر سخت پارسر کو دینے سے وہ تبدیلی نظر آتی ہے جو وہ آپ کی طرف سے کرتا:

$ python3 -c "import ipaddress; n=ipaddress.ip_network('172.20.130.0/20', strict=False); print(n, n.num_addresses)"
172.20.128.0/20 4096

طے کریں کہ آپ نے اصل میں کون سی منزل مقصود کی تھی

مسترد شدہ لائن عام طور پر تین ارادوں میں سے ایک چھپاتی ہے، اور انتخاب صرف آپ کر سکتے ہیں۔ اگر سرنگ کو پورا بلاک درکار ہے تو 172.20.128.0/20 لکھیں، جو معیاری نیٹ ورک پتہ ہے۔ اگر سرنگ کو صرف 130 حصہ درکار ہے تو ماسک غلط تھا اور 172.20.130.0/24 دیانت دار شکل ہے۔ اگر ہدف ایک ہی مشین ہے، IPv4 ہوسٹ روٹ /32 ہے اور اس میں کوئی ماسک حساب شامل نہیں۔

ان میں سے ہر ایک مختلف مقدار میں ٹریفک کی اجازت دیتا ہے، اور شکایت رکنے تک ماسک کو نہ چوڑا کرنے کی یہی اصل وجہ ہے۔ /16 تقریباً ہر جگہ لائن قبول کرتا ہے اور ٹریفک ان منزلوں کی طرف بھیجتا ہے جو آپ نے کبھی سرنگ سے روٹ کرنے کا ارادہ نہیں کیا۔ ارادے سے مطابقت رکھنے والا سب سے تنگ سابقہ لکھیں، پھر اسے اس اگلے ہاپ کے سامنے تصدیق کریں جس کی آپ توقع کرتے ہیں، پارسر کی خاموشی کے سامنے نہیں۔

فارورڈنگ کبھی حل کیوں نہیں تھی

مسترد شدہ روٹ کبھی فارورڈنگ راستے تک نہیں پہنچتا، اس لیے net.ipv4.ip_forward بدلنے سے نتیجہ نہیں بدل سکتا۔ وہ ترتیب بعد میں اہم ہے، جب ہوسٹ کو انٹرفیس کے درمیان پیکٹ گزارنے ہوں، اور جدول درست ہونے سے پہلے اسے چالو کرنا صرف یہ بدلتا ہے کہ آگے کون سا مرحلہ ناکام ہوگا۔

اسی مقام پر اکثر دو اور چیزوں کو قصوروار ٹھہرایا جاتا ہے۔ روٹ قبول ہو سکتا ہے اور پھر بھی زیادہ مخصوص روٹ سے ہار سکتا ہے، اور فائر وال قاعدہ درست تلاش کے بعد ٹریفک گرا سکتا ہے۔ مراحل الگ رکھیں: نحو، تنصیب، انتخاب، فلٹرنگ۔ غلط مرحلے پر کام کرنا نتیجہ خیز لگتا ہے کیونکہ ہر تبدیلی کچھ دوبارہ شروع کرتی ہے۔

نصب شدہ روٹ اور وہ جیتنے والا راستہ جانچیں

کلائنٹ کے لائن قبول کرنے کے بعد دیکھیں کہ اس نے کیا نصب کیا اور بلاک کے اندر نمائندہ پتے کے لیے کرنل کون سا روٹ چنتا ہے۔ اگر نصب شدہ سابقہ آپ کے لکھے سے مختلف ہے تو کسی نارملائزر نے آپ کی طرف سے کام کیا ہے۔

بلاک کے اندر کا ایک رکن پتہ اور باہر کا ایک پتہ پوچھیں، تاکہ موازنہ ایک تسلی بخش سطر کے بجائے بامعنی ہو:

ip -4 route show 172.20.128.0/20
ip -4 route get 172.20.140.10
ip -4 route get 172.20.200.10

اگر آپ کا سابقہ درست ہے تو تیسری استفسار سرنگ سے باہر پڑنی چاہیے، اور اگر نہیں پڑتی تو آپ نے جو روٹ بنایا وہ آپ کی سوچ سے چوڑا ہے۔ اگلی ترتیب چھونے سے پہلے لکھ لیں کہ سابقے کو کیا ڈھانپنا تھا، کیونکہ پارس ہونے والا روٹ اور کام کرنے والا راستہ الگ مشاہدات ہی رہتے ہیں۔

متعلقہ مضامین