تقریباً در تنظیمات هر روتر یا صفحه تنظیمات شبکه، دو کادر مشابه می‌بینید: Preferred DNS و Alternate DNS. نام‌گذاری این دو گزینه این تصور را ایجاد می‌کند که آدرس دوم نقش پشتیبان را دارد و در صورت انجام نشدن وظیفه DNS اول، وارد عمل می‌شود.

این توضیح تا حدی درست است؛ اما اتفاقی که هنگام استفاده از DNS جایگزین رخ می‌دهد، همیشه به این سادگی نیست و تا حد زیادی به این بستگی دارد که چه دستگاه یا نرم افزاری درخواست DNS را مدیریت می‌کند. در ادامه مفهوم Alternate DNS را دقیق‌تر بررسی می‌کنیم. با اینتوتک همراه باشید.

DNS جایگزین شما یک پشتیبان است

اما اگر بخواهیم دقیق باشیم، همیشه آن کاری را که تصور می‌کنید انجام نمی‌دهد

در یک دستگاه معمولی، DNS تا حد زیادی همان‌طور که از نام این گزینه‌ها برمی‌آید عمل می‌کند. دستگاه ابتدا از سرور DNS ترجیحی درخواست می‌کند و فقط زمانی سراغ سرور جایگزین می‌رود که سرور اول کاملاً از دسترس خارج شده باشد؛ یعنی هیچ پاسخی ندهد، حتی پاسخ ناقص هم ارسال نکند و در مجموع هیچ واکنشی نشان ندهد.

اما نکته‌ای که معمولاً درباره نحوه ارتباط این دو سرور توضیح داده نمی‌شود، این است که پاسخ مسدودشده همچنان یک پاسخ محسوب می‌شود.

برای مثال، یکی از سرویس‌های DNS مورد علاقه من، Quad9، هنگام مسدود کردن یک دامنه مخرب، پاسخ NXDOMAIN ارسال می‌کند؛ پاسخی که اساساً به این معناست: «چنین دامنه‌ای وجود ندارد.»

اما دستگاه شما راه مؤثری برای تشخیص تفاوت میان این پاسخ و دامنه‌ای که واقعاً وجود ندارد، ندارد. از دید دستگاه، درخواست DNS با موفقیت به پایان رسیده است و دیگر نیازی نمی‌بیند از سرور DNS جایگزین نظر دیگری بخواهد.

اگر DNS اصلی را به دلیل قابلیت‌های خاصی انتخاب کرده باشید، این موضوع خبر خوبی است. هر نوع فیلتر یا محافظتی که سرویس اصلی ارائه می‌دهد، تا زمانی که سرور اصلی همچنان پاسخ می‌دهد، حتی در صورت ارسال پاسخ‌های مسدودکننده، فعال باقی می‌ماند؛ در نتیجه آدرس جایگزین عملاً بلااستفاده می‌ماند.

وقتی روترها وارد ماجرا می‌شوند، همه چیز پیچیده‌تر می‌شود

روترها DNS را متفاوت از دستگاه شما مدیریت می‌کنند

بیشتر دستگاه‌های کاربر نهایی مانند لپ تاپ، کامپیوتر و گوشی‌های هوشمند، DNS را با همین روش «اولی و سپس دومی» مدیریت می‌کنند. اما وقتی روتر، سیستم مش یا هر دستگاه دیگری که نقش مستقیم‌تری در مدیریت DNS دارد وارد معادله می‌شود، شرایط کمی پیچیده‌تر خواهد شد.

مشکل از اینجا ناشی می‌شود که بعضی از DNS Forwarderها تمام آدرس‌های پیکربندی شده را به یک اندازه معتبر در نظر می‌گیرند و درخواست‌ها را میان آن‌ها توزیع می‌کنند. برخی دیگر نیز تا زمانی که سرور اول از کار نیفتاده یا در دسترس نباشد، آن را در اولویت نگه می‌دارند.

گزینه Alternate DNS یا DNS جایگزین چیست و چرا نباید دو سرویس DNS متفاوت را تنظیم کنیم؟

بخشی از نرم افزار مورد استفاده در بسیاری از روترهای خانگی و سیستم‌های مش، dnsmasq نام دارد. این سرویس با گزینه‌های «Preferred» و «Alternate» بیشتر مانند یک فهرست کوتاه از سرورهای در دسترس برخورد می‌کند تا یک ساختار سلسله مراتبی.

مگر اینکه حالت strict-order فعال شده باشد؛ تنظیمی که بسیاری از کاربران حتی از وجود آن خبر ندارند. در حالت عادی، dnsmasq از تمام سرورهایی که می‌شناسد تقریباً همزمان درخواست می‌فرستد و سپس از سروری استفاده می‌کند که زودتر پاسخ دهد.

سروری که انتخاب شده، برای مدتی مسئول پاسخ‌گویی باقی می‌ماند. این وضعیت زمانی تغییر می‌کند که سرور با خطای SERVFAIL یا REFUSED پاسخ دهد، یک کلاینت با پایان یافتن زمان انتظار دوباره درخواست ارسال کند یا حدود ۵۰ درخواست یا ۱۰ ثانیه سپری شده باشد. هیچ‌کدام از این موارد ارتباطی با این ندارد که در پنل مدیریت روتر، کدام سرور را «Primary» نام‌گذاری کرده‌اید.

نحوه مدیریت DNS در یک روتر مشخص معمولاً موضوعی نیست که سازندگان جزئیات آن را مستند کنند. این مسئله منطقی هم به نظر می‌رسد؛ بیشتر کاربران سراغ تنظیمات DNS نمی‌روند و بنابراین ارائه چنین جزئیاتی برای سازنده ارزش چندانی ندارد.

البته این رفتار لزوماً یک باگ در سیستم نیست. در واقع سیستم از ابتدا به همین شکل طراحی شده است؛ هرچند عملکرد آن با چیزی که احتمالاً از نام «DNS اصلی» و «DNS جایگزین» برداشت می‌کنید، تفاوت دارد.

این روش به روتر یا دستگاه مشابه اجازه می‌دهد بار درخواست‌های DNS را میان مجموعه‌ای از منابع توزیع کند و تنها به یک Resolver وابسته نباشد. بنابراین، بسته به نحوه مدیریت چند سرور DNS توسط سخت افزار شما، ممکن است بعضی از درخواست‌ها حتی زمانی که سرور ترجیحی کاملاً سالم است، به سروری ارسال شوند که آن را به عنوان «DNS جایگزین» مشخص کرده‌اید.

چرا نحوه مدیریت DNS جایگزین اهمیت بیشتری از چیزی دارد که تصور می‌کنید؟

اینترنت شما خراب نیست، اما ممکن است بخشی از محافظت‌ها از بین برود

با توضیحاتی که داده شد، احتمالاً این سؤال برایتان ایجاد شده است که مشکل واقعی در استفاده از این دو روش چیست.

موضوع در نهایت به تفاوت میان DNS اصلی و DNS جایگزین و قابلیت‌هایی که هرکدام ارائه می‌دهند، برمی‌گردد. معمولاً یک سرویس DNS را به دلیل مشخصی انتخاب می‌کنید: مسدود کردن تبلیغات، محافظت در برابر بدافزار، سیاست عدم ثبت گزارش، سرعت بیشتر در Resolve کردن دامنه‌ها و موارد مشابه.

اما اگر سرویس DNS پشتیبان چنین قابلیت‌هایی را ارائه ندهد و بیشتر از چیزی که قرار بوده صرفاً در مواقع اضطراری استفاده شود، وارد عمل شود، هر بار که درخواست‌ها به آن منتقل می‌شوند، بخشی از قابلیت‌های سرویس اصلی را از دست می‌دهید. این مسئله می‌تواند باعث ایجاد ناهماهنگی در شبکه شود و مشکلات دیگری به وجود آورد.

ممکن است یک دامنه مخرب در یک لحظه مسدود شود و لحظه‌ای دیگر بدون مشکل Resolve شود. حتی عملکرد DNS نیز ممکن است متفاوت باشد؛ به‌خصوص اگر دو سرویس‌دهنده از زیرساخت یا سیستم‌های Cache متفاوتی استفاده کنند.

هیچ‌کدام از این موارد آن‌قدر شدید نیست که لزوماً شبیه یک خرابی به نظر برسد، اما باعث می‌شود اینترنت شما رفتاری غیرقابل پیش‌بینی‌تر از چیزی داشته باشد که انتظارش را دارید.

این مسئله عیب‌یابی را نیز دشوارتر می‌کند. اگر دو سرویس‌دهنده DNS همزمان در حال پاسخ‌گویی باشند، ممکن است یک وب سایت در هر بار مراجعه رفتار متفاوتی داشته باشد و در نتیجه به دنبال مشکلی بگردید که فقط بعضی اوقات ظاهر می‌شود.

مرورگرها نیز شرایط را پیچیده‌تر می‌کنند؛ زیرا بیشتر آن‌ها اکنون امکان فعال کردن DNS رمزگذاری‌شده را دارند و این تنظیم می‌تواند کاملاً تنظیمات DNS انجام شده در سطح دستگاه یا روتر را کنار بزند.

در واقع همان مشکل قبلی در قالبی متفاوت ظاهر شده است: DNS دیگر یک تنظیم واحد نیست؛ بلکه چندین لایه تنظیم DNS وجود دارد که روی یکدیگر قرار گرفته‌اند و هر لایه می‌تواند تنظیمات لایه زیرین را تحت تأثیر قرار دهد یا حتی کنار بزند.

پس واقعاً باید با سرویس‌های DNS جایگزین چه کار کرد؟

یک خانواده DNS را انتخاب کنید

باید اعتراف کنم که خودم هم در گذشته مرتکب این اشتباه شده‌ام: چند سرویس‌دهنده متفاوت DNS را به عنوان سرور اصلی و پشتیبان تنظیم کرده‌ام. هیچ‌وقت متوجه مشکل بزرگی در نتیجه این کار نشدم، اما شاید به اندازه کافی به جزئیات توجه نکرده بودم.

ساده‌ترین راهکار این است که به جای استفاده از دو آدرس DNS اصلی متعلق به دو سرویس‌دهنده متفاوت، DNS جایگزین را از همان سرویس‌دهنده DNS اصلی انتخاب کنید.

این دو آدرس IP معمولاً به یک سرویس DNS یکسان متصل هستند که روی زیرساخت‌های جداگانه اجرا می‌شود. به این ترتیب، بدون تغییر در قابلیت‌های فیلترینگ، سیاست حفظ حریم خصوصی یا ویژگی‌های عملکردی سرویس، افزونگی لازم را در اختیار خواهید داشت.

برای مثال، Cloudflare از آدرس‌های 1.1.1.1 و 1.0.0.1 استفاده می‌کند. سرویس Quad9 نیز آدرس‌های 9.9.9.9 و 149.112.112.112 را ارائه می‌دهد. بیشتر سرویس‌های DNS دارای قابلیت فیلترینگ نیز دقیقاً به همین دلیل یک جفت آدرس هماهنگ منتشر می‌کنند.

گزینه Alternate DNS یا DNS جایگزین چیست و چرا نباید دو سرویس DNS متفاوت را تنظیم کنیم؟

در هر صورت، چه دستگاه شما و چه روتر یا سیستم مش این دو آدرس را به شکل سلسله مراتبی یا همزمان مدیریت کند، دیگر روی این موضوع ریسک نمی‌کنید که با انتقال درخواست‌ها به یک سرویس‌دهنده متفاوت، دقیقاً همان قابلیتی را از دست بدهید که در وهله اول به خاطر آن سرویس DNS اصلی را انتخاب کرده بودید.

در نتیجه، یک Resolver مطمئن و هماهنگ در اختیار خواهید داشت و دیگر لازم نیست نگران مشکلات شبکه ناشی از استفاده همزمان از دو سرویس DNS متفاوت باشید.