DNS سے بھرا nftables سیٹ WireGuard تک: حوالگی کیسے کام کرتی ہے
DNS جواب nftables سیٹ کو بھر سکتا ہے، مگر سیٹ خود کچھ روٹ نہیں کرتا۔ وہ چار حوالگیاں اور تین عمریں دیکھیں جو طے کرتی ہیں کہ رہنمائی کام کرے گی یا نہیں۔
نام پتوں میں حل ہوتے ہیں، اور وہ پتے فائر وال سیٹ میں جا سکتے ہیں جو بعد میں روٹنگ پر اثر ڈالتا ہے، جس سے پراکسی کے بغیر نام کی بنیاد پر رہنمائی ممکن ہو جاتی ہے۔ پچ یہ ہے کہ چار اجزا کو درست طریقے سے حوالہ کرنا ہوتا ہے: حل کنندہ، سیٹ، نیا بہاؤ نشان زد کرنے والا درجہ بند کنندہ، اور اسے اٹھانے والا ساتھی۔ ہر حوالگی الگ طرح ناکام ہوتی ہے اور ہر ایک اپنا وقت رکھتی ہے۔
ڈیزائن کو ترتیب نہیں بلکہ زنجیر سمجھیں۔ ہر قدم پر سوال یہ ہے کہ کون سا جزو فیصلے کا مالک ہے اور جب اس کا اِن پٹ نہ ہو تو کیا ہوتا ہے۔
DNS جواب کیا کر سکتا ہے اور کیا نہیں
dnsmasq جوابوں سے پتے nftables سیٹ میں نقل کر سکتا ہے، یہ بھرنا ہے، روٹنگ کا فیصلہ نہیں۔ وہ اختیار، جو dnsmasq دستی میں درج ہے، خاندان، جدول اور سیٹ بتاتا ہے، اور اس کا ابتدائی 4# صرف A ریکارڈ چنتا ہے، اس لیے v6 منزلوں کو اپنا انتظام چاہیے۔ سیٹ پہلے سے موجود ہونا چاہیے، کیونکہ حل کنندہ فائر وال کے مالک کی بنائی ہوئی چیز میں عناصر شامل کرتا ہے۔ اس قدم میں کوئی چیز انٹرفیس، جدول یا ساتھی نہیں چنتی۔
کلائنٹ کو بھی نام کے لیے وہی حل کنندہ استعمال کرنا ہوگا۔ اپنا خفیہ کردہ DNS رکھنے والی ایپ، یا پالیسی سے پہلے کا کیش شدہ جواب، سیٹ میں کوئی اندراج بنائے بغیر جڑ جاتا ہے۔
سیٹ اِن پٹ ہے، روٹ نہیں
سیٹ میں عنصر مطابقت کی شرط ہے۔ کسی کو اسے دیکھنا، طے کرنا کہ یہ پیکٹ نیا بہاؤ شروع کرتا ہے، اور وہ پالیسی لاگو کرنی ہے جو بہاؤ کو سرنگ سے بھیجتی ہے۔ Linux پر اس کا عام مطلب ہے نشان لگا سکنے والا روٹنگ کے قابل اخراج راستہ، ایک قاعدہ جو نشان زد پیکٹوں کو مخصوص جدول میں بھیجے، اور اسی جدول میں WireGuard آلے کی طرف اشارہ کرنے والا راستہ۔ صرف رکنیت ان میں سے کچھ بھی نصب نہیں کرتی۔
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
ساتھی دوسری احاطہ بندی جانچ لگاتا ہے جسے لوگ بھول جاتے ہیں۔ WireGuard پیکٹ صرف اس ساتھی کے لیے خفیہ کرتا ہے جس کے اجازت شدہ پتوں میں منزل شامل ہو، اس لیے ساتھی کی فہرست اس سابقے کو خارج کر دے تو انٹرفیس میں پالیسی راستہ کافی نہیں۔ فہرست کو مینیجر کے بنائے راستوں پر بھروسا کرنے کے بجائے روٹنگ مالک کے کنٹرول میں رکھیں۔
نشانات، جدول اور ساتھی کا احاطہ
نشانات مشترکہ نام کی جگہ ہیں، اس لیے قدر اور ماسک دونوں کو ان کے استعمال کرنے والی ہر دوسری چیز سے طے کرنا ہوتا ہے۔ نشان زد ٹریفک کو مخصوص جدول میں بھیجنے والے قاعدے کو طے شدہ نتیجہ درکار ہے جب اس جدول میں مطابقت رکھنے والا راستہ نہ ہو، کیونکہ بلا جواب تلاش اگلے قاعدے تک جا سکتی ہے اور پیکٹ کو طبعی انٹرفیس سے باہر بھیج سکتی ہے۔ مخصوص جدول کے اندر blackhole طے شدہ راستہ اس خاموش فرار کو نظر آنے والے اخراج میں بدل دیتا ہے۔ ڈیزائن اب بھی جو نہیں کر سکتا وہ یہ ہے کہ ایسی منزل کے لیے ناکامی پر بند ہو جائے جو کبھی سیٹ میں نہ آئی۔
سرنگ کے اپنے بیرونی پیکٹوں کو درجہ بند کنندہ سے بچنا ہوگا۔ WireGuard اوزار ٹھیک اسی مقصد کے لیے ساکٹ نشان دیتے ہیں، اور اس کا استعمال encapsulation کو اس انٹرفیس میں واپس روٹ ہونے سے روکتا ہے جو وہ بنا رہا ہے۔
ہر عمر کو الگ جانچیں
تین ذخیرے تین نظام الاوقات پر پرانے ہوتے ہیں: حل کنندہ کا کیش، سیٹ کے عناصر اور زیر نظر کنکشن۔ انہیں اسی ترتیب میں جانچیں اور دیکھیں کہ ہر ایک جب چاہیے تب حرکت کرتا ہے۔ نیچے دیے گئے احکام کچھ بدلے بغیر حل کنندہ، سیٹ، کنکشن جدول اور پالیسی قواعد پڑھتے ہیں۔
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
عنصر شامل کرنے والی تازہ تلاش ثابت کرتی ہے کہ بھرنا کام کرتا ہے، جبکہ اپنے جواب سے زیادہ زندہ رہنے والا پرانا عنصر عمر کا عدم توازن ہے جسے لکھ لینا چاہیے۔ کنکشن جدول میں متوقع نشان کے ساتھ نیا کنکشن دکھائی دینا ظاہر کرتا ہے کہ درجہ بند کنندہ چلا، اور پرانا کنکشن اپنا اصل نشان رکھے یہ خرابی نہیں بلکہ درست رویہ ہے۔ قواعد کی فہرست بتاتی ہے کہ پالیسی تلاش ہے بھی یا نہیں، جو اس سے الگ سوال ہے کہ وہ مطابقت رکھتی تھی۔ چاروں آؤٹ پٹ اسی ترتیب میں پڑھیں اور ناکام حوالگی خود پکڑی جائے گی۔
جہاں ضرورت یہ ہے کہ کوئی مخصوص نام ہمیشہ ایک ہی راستہ استعمال کرے، وہاں DNS سے بھرا سیٹ اسے ثابت نہیں کر سکتا، کیونکہ مشترکہ پتے دوسرے نام بھی اٹھاتے ہیں۔ پراکسی یا ایپلیکیشن سطح کا طریقہ کار اس ضمانت کا اوزار ہے۔