گیٹ وے کالم خالی دکھنے پر روٹنگ جدولوں کو ٹوٹا ہوا پڑھا جاتا ہے، حالانکہ لائن عموماً بذات خود مکمل ہوتی ہے۔ via فیلڈ صرف اُس وقت ظاہر ہوتا ہے جب کرنل پیکٹ کو اگلی ہاپ کے پتے کے حوالے کرتا ہے؛ انٹرفیس سے منسلک راستہ اپنے منزلوں تک اس کے بجائے لنک لیئر تحلیل یا پوائنٹ ٹو پوائنٹ ساتھی کے ذریعے پہنچتا ہے۔ کالموں کو بائیں سے دائیں پڑھنا بتاتا ہے کہ آپ کس صورت میں ہیں، اور یہ پڑھائی کسی کے ڈیفالٹ راستہ ترمیم کرنے سے پہلے ہونی چاہیے۔ گمشدہ گیٹ وے کے بارے میں زیادہ تر ٹکٹس اسی فرق پر ختم ہوتے ہیں۔

راستے کی لائن کو کالم بہ کالم پڑھیں

ہر اندراج منزل اور اس کے سابقے کی لمبائی سے شروع ہوتا ہے، پھر مقررہ الفاظ میں ترمیم کنندگان شامل کرتا ہے: via، dev، proto، scope، src اور metric۔ 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 جیسی لائن گھنی مگر مکمل طور پر متعین ہے۔ اس میں کچھ بھی غائب نہیں، اور کوئی راؤٹر پتہ مضمر نہیں۔

دلچسپ حصہ via کی عدم موجودگی ہے۔ اگلی ہاپ کے بغیر کرنل منزل کو براہ راست نامزد انٹرفیس پر حل کرتا ہے، جس کا ٹنل کے لیے مطلب ہے کہ فریم ٹنل ڈیوائس کو دیا جائے اور انکیپسولیشن کو وہیں سے سنبھالنے دیا جائے۔ proto kernel درج کرتا ہے کہ اندراج پتہ تفویض ہونے پر خودکار طور پر نصب ہوا تھا، کسی منتظم نے ٹائپ نہیں کیا۔ scope link کہتا ہے کہ منزل اُس لنک پر راؤٹر سے گزرے بغیر قابل رسائی ہے، اور src اُس پتے کا نام دیتا ہے جسے کرنل مماثل ٹریفک کے لیے ماخذ کے طور پر ترجیح دے گا۔

اب ڈیفالٹ راستہ اسی طرح پڑھیں: default via 192.0.2.254 dev eth0 proto static metric 100۔ یہاں via موجود ہے کیونکہ پیکٹ کو واقعی اگلی ہاپ درکار ہے، اور وہ ہاپ خود eth0 پر قابل رسائی ہونی چاہیے۔ یہ دونوں لائنیں ایک دوسرے کی اقسام نہیں؛ یہ اس بارے میں مختلف سوالات کے جواب دیتی ہیں کہ ٹریفک کہاں جاتی ہے۔

دو راستہ شکلیں جو آپس میں خلط ملط ہوتی ہیں

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

Piece of the lineWhat it settlesWhat it says nothing about
The destination and maskWhich packets are eligible to matchWhere those packets leave the host
via plus its addressWhich next hop receives them, and therefore that a router is involvedWhether that router is reachable or sane
devWhich interface carries the encapsulated or raw packetWhether the interface is up or has a carrier
proto and scopeWho installed the entry and how far the destination is considered to beWhether a firewall later drops the traffic

جدول جو نہیں بتا سکتا وہ نیت ہے۔ ٹنل کے ذریعے نجی رینج تک سیدھا راستہ جان بوجھ کر بنایا گیا اسپلٹ ٹنل ڈیزائن ہے؛ جس ہوسٹ کو سب کچھ VPN سے بھیجنا چاہیے وہاں وہی شکل دکھنا ایک علامت ہے۔ نیت اُس کنفیگریشن میں رہتی ہے جس نے اندراج بنایا، اس لیے یہ نتیجہ اخذ کرنے سے پہلے کہ کرنل نے کچھ غلط کیا، اُس آلے کو دیکھیں جس نے اسے نصب کیا۔

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

کرنل سے پوچھیں کہ واقعی کون سی لائن استعمال کرے گا

جدول پڑھنا تلاش کرنے کے مترادف نہیں، کیونکہ جواب دینے سے پہلے کرنل پالیسی قواعد، متعدد جدولوں اور کیش شدہ اندراجات سے مشورہ کرتا ہے۔ اصل تلاش کرنے والا فعل ip route get ہے، اور یہ وہ راستہ چھاپتا ہے جو اُن خصوصیات والا پیکٹ اختیار کرے گا۔

ip route get 203.0.113.37 from 198.51.100.2 iif tun0

وہ منزل رکھیں جس کی آپ کو واقعی پرواہ ہے، پھر جب ٹریفک ماخذ کے مطابق منتخب ہو یا آگے بھیجا جائے تو from یا iif شامل کریں، کیونکہ عام مقامی تلاش آگے بھیجے گئے کلائنٹ سے مختلف راستہ چن سکتی ہے۔ جواب انٹرفیس، منتخب ماخذ پتہ اور کوئی بھی اگلی ہاپ بتاتا ہے، جو اُس لمحے پیکٹ کی روٹنگ کے لیے استعمال ہونے والی وہی معلومات ہیں۔

اگر جواب آپ کو حیران کرے تو کچھ بھی بدلنے سے پہلے قواعد چھاپیں: ip -4 rule show انہیں ترجیحی ترتیب میں درج کرتا ہے، اور جو VPN کلائنٹ اپنا جدول یا نشان زدہ پیکٹوں کے لیے قاعدہ نصب کرتا ہے وہ مرکزی جدول میں بالکل نظر نہیں آئے گا۔ ہر جدول کی فہرست بنانا اُس خلا کو بھر دیتا ہے۔

ip -4 route show table all | grep -E 'tun|default'

ڈیفالٹ بدلنے سے پہلے نیچے کی تہہ جانچیں

ٹنل کے اپنے پیکٹوں کو دور دراز کے آخری سرے تک پہنچنا ہے، اور وہ یہ VPN کے ابھرنے سے پہلے موجود راستے کو استعمال کرتے ہوئے طبعی انٹرفیس کے ذریعے کرتے ہیں۔ اُس سرے کو پن کیے بغیر پورا ڈیفالٹ راستہ بدلنا انکیپسول شدہ پیکٹوں کو اُسی ٹنل میں بھیجتا ہے جسے انہیں بنانا تھا، اور کنکشن ڈھیر ہو جاتا ہے۔ پہلے صرف آخری سرے کے پتے کی تلاش سے اُس کا راستہ تصدیق کریں۔

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

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

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