کیا آپ کے VPN کا DNS واقعی استعمال ہوتا ہے؟ پورٹ 53 پکڑیں اور دیکھیں
دھکیلے گئے DNS آپشن کا مطلب کوئری کا راستہ نہیں ہے۔ دیکھیں انٹرفیس کیا رکھتا ہے، کوئری کو نکلتے دیکھیں، اور ثبوت کے طور پر لیک ٹیسٹ صفحے پر بھروسہ کرنا چھوڑ دیں۔
زیادہ تر لوگوں سے پوچھیں کہ VPN کلائنٹ DNS کے ساتھ کیا کرتا ہے تو وہ کہیں گے کہ یہ ریزالور مقرر کرتا ہے، چنانچہ کوئریاں سرنگ کے اندر سفر کرتی ہیں۔ دھکیلنا حقیقی ہے؛ یہ مفروضہ نہیں کہ یہ کوئری بن جاتا ہے۔ دھکیلے گئے آپشن اور تار پر موجود پیکٹ کے بیچ تین مراحل ہیں، اور ہر ایک خودمختار طور پر ایسے ناکام ہوتا ہے کہ سب کچھ خراب DNS سرور جیسا دکھائی دیتا ہے۔ اسی لیے ایک لیک ٹیسٹ صفحہ اور چلنے والا براؤزر ایک ہی لمحے میں ایک ہی مشین کے بارے میں مختلف ہو سکتے ہیں۔
دھکیلا گیا آپشن کوئری نہیں ہے
پہلا مرحلہ یہ ہے کہ سرور ترتیبات پیش کرتا ہے، مثلاً دھکیلا گیا DNS آپشن جو سرنگ کے اندر ریزالور کا نام دیتا ہے۔ دوسرا مرحلہ یہ ہے کہ کلائنٹ وہ ترتیبات انٹرفیس پر لاگو کرتا ہے۔ تیسرا مرحلہ یہ ہے کہ ایپلیکیشن واقعی اس پتے پر کوئری بھیجتی ہے۔ دوسرے مرحلے میں ناکامی آپشن کو کنکشن لاگ میں دکھائی دیتا رکھتی ہے جبکہ ریزالور فہرست بدلی نہیں جاتی، اور تیسرے مرحلے میں ناکامی بالکل درست ریزالور فہرست کو غیر استعمال شدہ چھوڑ دیتی ہے۔
زیادہ تر مسئلہ حل کرنا ان تینوں کو ایک میں ملا کر VPN سرور کو قصوروار ٹھہراتا ہے، جو عام طور پر واحد فریق ہے جو ثابت کر سکتا ہے کہ اس نے اپنا حصہ کیا۔ اس کے بجائے کلائنٹ کی حقیقی ریزالور حالت پڑھیں، پھر ایک کوئری کو نکلتے دیکھیں۔ وہ دو مشاہدے ترتیبات کو روٹنگ سے اور پالیسی سے الگ کرتے ہیں، اور ان میں تقریباً پانچ منٹ لگتے ہیں۔ کیپچر رکھیں، کیونکہ اگلا انجینئر ان کی تفصیل نہیں بلکہ پہلے اور بعد چاہتا ہے۔
دیکھیں انٹرفیس واقعی کیا رکھتا ہے
Linux میں سسٹم ریزالور سادہ فائل، NetworkManager یا systemd-resolved ہو سکتا ہے، اور ان میں سے کون اس کا مالک ہے یہ طے کرتا ہے کہ دھکیلا گیا سرور کہاں اترتا ہے۔ کمانڈ لائن OpenVPN عمل خود سسٹم ریزالور اپ ڈیٹ نہیں کرتا، اس لیے دستاویزی انضمام ایک up/down اسکرپٹ یا ایسا کنکشن مینیجر ہے جو پہلے سے جانتا ہے ترتیبات کیسے لاگو کرنی ہیں۔ دونوں چلانا دوڑ پیدا کرنے کا مؤثر طریقہ ہے۔
resolvectl status
cat /etc/resolv.conf
Windows میں فہرست ہر اڈاپٹر کے لیے الگ ہے, چنانچہ سرنگ کا اڈاپٹر اندرونی سرور رکھ سکتا ہے جبکہ فزیکل اڈاپٹر مقامی رکھتا ہے اور بعض ناموں کے لیے جیت جاتا ہے۔ آپ جو فعال سمجھتے ہیں اس کے بجائے دونوں اڈاپٹروں کا موازنہ کریں۔
ایک کوئری کو مشین سے باہر تک لے جائیں
دونوں انٹرفیس ایک ساتھ کیپچر کریں، پھر ایک ایسا نام حل کریں جسے اندرونی ریزالور استعمال کرنا چاہیے۔ وہ جوڑی کیپچر اس کا جواب دیتی ہے جو کوئی ترتیباتی پیداوار نہیں دے سکتی۔
sudo tcpdump -ni tun0 port 53
sudo tcpdump -ni any port 53
جو کوئری فزیکل انٹرفیس پر ظاہر ہو اور سرنگ میں کبھی نہ ہو اس کا مطلب ہے کہ کلائنٹ نے غلط ریزالور چنا۔ جو کوئری دونوں میں سے کسی پر ظاہر نہ ہو اس کا مطلب ہے کہ ایپلیکیشن نے کیش سے جواب دیا، loopback پر سننے والے stub سے پوچھا، یا خفیہ کردہ ریزالور استعمال کیا جس کی ٹریفک کبھی پورٹ 53 کے طور پر ظاہر نہیں ہوتی۔ صرف کوئریاں نہیں جوابات بھی کیپچر کریں، کیونکہ سرنگ سے نکلنے والی کوئری کو عوامی پتے سے جواب ملنا اس سے مختلف خرابی ہے کہ کوئی جواب ہی نہ آئے۔
وہ فائر وال جو صرف اپنا DNS قبول کرتا ہے
تجارتی کلائنٹ کبھی کبھی اپنی فلٹر زنجیریں نصب کرتے ہیں۔ ایک دستاویزی نمونہ کلائنٹ کے اپنے ریزالور تک DNS کی اجازت دیتا ہے اور غیر loopback انٹرفیس چھوڑنے کی کوشش کرنے والی باقی تمام UDP پورٹ 53 ٹریفک پھینک دیتا ہے، بشمول وہ ٹریفک جو صارف نے جان بوجھ کر کہیں اور بھیجی۔ ڈیمون کی کوئریاں بغیر نشان غائب ہو جاتی ہیں، جسے فلٹر نہیں بلکہ ریزالور کی خرابی کے طور پر پڑھا جاتا ہے۔
sudo iptables -S OUTPUT
sudo iptables -S | grep -i -E 'dns|53'
اگر آپ کی استثنا سے پہلے پھینکنے کا کوئی قاعدہ جانچا جائے تو بعد میں شامل قاعدہ کبھی نہیں پہنچتا، اس لیے اسے پہلی جگہ پر رکھیں اور منزل اسی ریزالور تک محدود کریں جو آپ واقعی چاہتے ہیں۔
sudo iptables -I OUTPUT 1 -p udp --dport 53 -d 172.20.8.1 -j ACCEPT
وہ استثنا پالیسی نہیں بلکہ تشخیص ہے۔ اگر فروش کا قاعدہ جان بوجھ کر ہے تو معاون مرمت یہ ہے کہ کلائنٹ کو اس ریزالور کی اجازت دینے کے لیے ترتیب دیں اور فیصلہ درج کریں، کیونکہ داخل کیا گیا قاعدہ اگلی کلائنٹ اپ گریڈ تک نہیں ٹکے گا۔
لیک صفحہ دکھنے سے کم کیوں ثابت کرتا ہے
لیک ٹیسٹ صفحہ جو دکھاتا ہے وہ وہ ریزالور ہے جس نے ٹیسٹ آپریٹر سے بات کی، نہ کہ وہ جس سے آپ کی مشین نے مشورہ کیا۔ باہر کی طرف تکرار کرنے والا مقامی فارورڈر اپنا اخراجی پتہ اسی صفحے پر رکھتا ہے، اور خفیہ کوئریاں صفحہ بالکل خالی چھوڑ سکتی ہیں۔ دونوں نتائج غلط پڑھے جاتے ہیں، ایک لیک کے طور پر اور دوسرا ضمانت کے طور پر، اور کوئی پڑھائی مشاہدے سے نہیں آتی۔
قابل دفاع ثبوت کیپچر ہے: انٹرفیس، منزل کا پتہ، جواب اور وقت کی مہر۔ سرنگ چڑھنے سے پہلے ایک اور بعد میں ایک لیں، اور اگلی بار کوئی نام ناکام ہونے پر ان کا موازنہ کریں۔ وہ جوڑی اگلے شخص کو یہ بھی بتاتی ہے کہ خرابی حل میں تھی، روٹنگ میں یا خود ریزالور کی رسائی پالیسی میں۔