سرنگ فعال ہے، فائر وال پورٹ 53 کی اجازت دیتا ہے، AdGuard Home چل رہا ہے، اور پھر بھی WireGuard کلائنٹ کے لیے نام حل نہیں ہوتے۔ کوئری عام طور پر پہنچ جاتی ہے اور جواب عام طور پر نکلتا ہے، اس لیے ریزولور پر پیکٹ کاؤنٹرز صحت مند لگتے ہیں اور سروس خود بے قصور نظر آتی ہے۔ جو غلط ہوتا ہے وہ اس جواب پر ماخذ ایڈریس ہے: یہ ایک مقامی ایڈریس سے نکلتا ہے جو کلائنٹ نے کبھی نہیں مانگا، اور کلائنٹ کا اسٹب ریزولور اسے رد کر دیتا ہے۔ AdGuard Home کی ترتیب میں ایک فہرست اس کا فیصلہ کرتی ہے، اور اس کا معمول کا ڈیفالٹ یہ فیصلہ کرنل پر چھوڑ دیتا ہے۔

کوئری پہنچتی ہے، جواب کسی اور جگہ سے نکلتا ہے

ایک کلائنٹ جو 10.6.0.1 کو اپنے ریزولور کے طور پر کنفیگر کرتا ہے، ایک UDP کوئری 10.6.0.1 پورٹ 53 پر بھیجتا ہے۔ وہ پیکٹ ٹنل کو عبور کرتا ہے اور میزبان پر پہنچتا ہے، اور AdGuard Home اس کا جواب دیتا ہے۔ تاہم، وائر پر، جواب ایک نیا پیکٹ ہوتا ہے جس کا سورس ایڈریس میزبان کے اسٹیک کی طرف سے منتخب کیا جاتا ہے، نہ کہ کلائنٹ کی توقع کے مطابق۔

جب کلائنٹ کا ریزولور ایک کنیکٹڈ ساکٹ ہو، جیسا کہ systemd-resolved، dnsmasq اور زیادہ تر سٹب ریزولور استعمال کرتے ہیں، یہ صرف انہی جوابات کو قبول کرتا ہے جو اس نے بالکل اسی ایڈریس پر بھیجے تھے۔ 192.168.1.10 سے بھیجا گیا جواب جو 10.6.0.1 پر بھیجی گئی کوئری کے لیے ہے، کسی بھی تجزیہ سے پہلے ہی ڈراپ ہو جاتا ہے۔ ریزولور ایک کامیاب جواب لاگ کرتا ہے، کلائنٹ ٹائم آؤٹ لاگ کرتا ہے، اور دونوں سچ بول رہے ہیں۔

تو کاؤنٹرز جھوٹ نہیں بول رہے اور نہ ہی کلائنٹ۔ جس ثبوت کی آپ کو ضرورت ہے وہ تین جگہوں پر ہے، اس ترتیب میں: وہ پتہ جس سے سننے والا منسلک ہے، وہ راستہ جو کرنل کلائنٹ تک واپس جانے کے لیے استعمال کرے گا، اور اصل جواب والے پیکٹ پر ماخذ پتہ۔

کرنل جواب کے ماخذ کا انتخاب کیسے کرتا ہے

ایک UDP ساکٹ جو سے منسلک ہے0.0.0.0اپنا کوئی ماخذ پتہ نہیں رکھتا، اس لیے ہر روانہ ہونے والا جواب منزل کے لیے ایک راستہ تلاش کرتا ہے۔ پھر کرنل اس راستے سے ماخذ اختیار کرتا ہے: راستے کے ذریعے مقرر کردہ پتہ، یا روانہ ہونے والے انٹرفیس کا بنیادی پتہ۔ استفسار کے منزل پتے کے بارے میں کچھ بھی یاد نہیں رکھا جاتا۔

ایک single-homed میزبان پر یہ غیر مرئی ہے، کیونکہ صرف ایک قابل یقین جواب موجود ہے۔ ایک مشین پر جو LAN ایڈریس، WireGuard ایڈریس اور ایک مینجمنٹ ایڈریس رکھتی ہو، متعدد جوابات ممکن ہیں، اور فاتح اس وقت کے روٹنگ ٹیبل پر منحصر ہوتا ہے۔ ایک اضافی روٹ شامل کریں، اسی انٹرفیس پر دوسرا ایڈریس شامل کریں، ریزولور کے سامنے NAT ری ڈائریکٹ کریں، یا AdGuard کو اپنے namespace کے ساتھ کسی container میں چلائیں، اور منتخب شدہ ماخذ اس سے مختلف ہو سکتا ہے جسے کلائنٹ نے سوال کیا تھا۔

ss -lunp | grep :53یہ دکھاتا ہے کہ آپ کس گیم میں ہیں۔0.0.0.0:53پر ایک listener وائلڈ کارڈ کیس ہے؛10.6.0.1:53پر ایک listener نے پہلے ہی جواب کو pinned کر لیا ہے۔ ساکٹ کو پڑھنا YAML کو پڑھنے سے تیز ہے، اور یہ اس چیز کی عکاسی کرتا ہے جو واقعی چل رہی ہے نہ کہ جو آخری بار محفوظ کی گئی تھی۔

bind_hosts اصل میں کیا کنٹرول کرتا ہے

AdGuard Home کاdns.bind_hostsیہ مقامی پتوں کی فہرست ہے جسے DNS سننے والا استعمال کرتا ہے۔ دی گئی ڈیفالٹ وائلڈ کارڈ ہے، جس کا مطلب ہے ہر مقامی پتے پر قبول کرنا اور ہر جواب کے لیے کرنل کو ماخذ منتخب کرنے دینا۔ وائلڈ کارڈ کو اس پتے سے بدلنا جس پر کلائنٹس سوال کرتے ہیں، ساکٹ کو بدل دیتا ہے، اور ہر جواب پر ماخذ پتہ بھی بدل جاتا ہے۔

فہرست میں ایک سے زیادہ اندراج ہو سکتا ہے، جو ان لوگوں کے لیے اہم ہے جو دو نیٹ ورکس کو حل کرنے والا فراہم کر رہے ہیں۔ فہرست میں10.6.0.1اور192.168.1.10دینے سے دو باؤنڈ ساکٹس ملتے ہیں، اور جو بھی سوال کسی ایک پر آتا ہے، اسے اس پتے سے جواب دیا جاتا ہے جس پر وہ آیا۔ یہ وہ رویہ ہے جس کا زیادہ تر لوگ فرض کرتے ہیں کہ وائلڈ کارڈ پہلے ہی فراہم کرتا ہے۔

YAML سادہ ہے، اور اس میں دیا گیا پتہ وہ ہے جسے آپ کے ٹنل کلائنٹس استعمال کرنے کے لیے بتایا گیا تھا، نہ کہ میزبان کا بنیادی پتہ:

dns:
  bind_hosts:
    - 10.6.0.1
  port: 53

کیوں ایک حل کرنے والے کی دو تنصیبات متفق نہیں ہوتیں

اس سیاق و سباق میں، پلگ ان کے ذریعہ منظم ہونے کا مطلب ہے کہ ریزولور کو انسٹال کیا گیا تھا اور اسے کسی اور پیکیج کے ذریعہ نگرانی میں رکھا گیا ہے: ایک راؤٹر فرم ویئر پیکیج، ایک NAS پیکیج، یا ایک ہوم آٹومیشن ایڈ آن۔ وہ پیکیج عام طور پر AdGuard Home کے YAML کی اپنی کاپی فراہم کرتا ہے اور اپنے شیڈول کے مطابق خود ہی پراسیس کو دوبارہ شروع کرتا ہے، جبکہ ایک اسٹینڈ الون انسٹنس وہ وینڈر بائنری یا کنٹینر ہے جسے آپ خود ترتیب دیتے ہیں۔ کسی بھی صورت میں، آپ دو آزاد عمل دیکھ رہے ہیں جن کی علیحدہ کنفیگریشن فائلیں اور علیحدہ بائنڈ اختیارات ہیں، یہاں تک کہ جب دونوں ایک ہی اپ اسٹریم لسٹ اور ایک ہی فلٹر لسٹ پڑھیں۔ ایک مخصوص ٹنل ایڈریس سے بائنڈ کر سکتا ہے جبکہ دوسرا وائلڈ کارڈ کو وراثت میں لیتا ہے، اور ویب انٹرفیس دونوں طرف سے بالکل ایک جیسا لگتا ہے۔

اسی وجہ سے 'وہی ریزولوَر مائیگریشن سے پہلے کام کر رہا تھا' موجودہ بائنڈنگ کے بارے میں کچھ ثابت نہیں کرتا۔ ساکٹ چیک کریں، پھر اُس کنفیگریشن فائل کو چیک کریں جو اصل میں چلنے والے پراسیس نے لوڈ کی ہے۔ کسی اور ڈائریکٹری میں پرانی کاپی عموماً اس وجہ سے ہوتی ہے کہ ایڈیٹ کا اثر نظر نہیں آتا۔

اسے پن کریں، پھر سرنگ کی طرف سے جانچ کریں

تبدیل کریںbind_hostsٹو نل ایڈریس پر، سروس دوبارہ شروع کریں، اور تصدیق کریں کہ ساکٹ منتقل ہو گیا:ss -lunp | grep :53اب ظاہر ہونا چاہئے10.6.0.1:53اور کوئی وائلڈ کارڈ اندراج نہیں۔ اگر یہ پھر بھی دکھاتا ہے0.0.0.0,چل رہا عمل اُس فائل کو نہیں پڑھ رہا جسے آپ نے ترمیم کی ہے.

پھر کلائنٹ سے ٹیسٹ کریں، کیونکہ یہی وہ واحد پہلو ہے جو اہمیت رکھتا ہے۔ ایک سوال کے ساتھdig @10.6.0.1 example.comورزشیں وہ راستہ جو صارف ورزش کرتا ہے، اور میزبان پر ایک گرفت کے ساتھtcpdump -ni wg0 udp port 53وائر پر جواب کا ماخذ پتہ دکھاتا ہے۔ اسے کلائنٹ کے ریزولور سیٹنگ میں موجود پتے سے موازنہ کریں؛ جب یہ برابر ہوں، تو ٹائم آؤٹ کا راز ختم ہو جاتا ہے۔

ip route get 10.6.0.2باقی کوئی بھی غیر معمولی صورتحال کی وضاحت کرتا ہے، کیونکہ یہ وہ انٹرفیس اور ماخذ پرنٹ کرتا ہے جو ہوسٹ کلائنٹ کو واپس استعمال کرے گا۔ اگر وہ آؤٹ پٹ LAN انٹرفیس کا نام دیتی ہے، تو بائنڈ تبدیلی مکمل حل نہیں ہے اور راؤٹنگ ٹیبل اگلی چیز ہے جو پڑھنی ہے۔

وہ چیزیں جو بائنڈ سیٹنگ حل نہیں کر سکتی

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

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

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