چرا عیب یابی DNS پیچیده به نظر میرسد؟
وقتی وبسایت شما بالا نیست، اولین چیزی که به ذهن میرسد این است که سرور مشکل دارد. اما در بسیاری از موارد، ریشه مشکل در جای دیگری است: در تنظیمات DNS. DNS مثل دفترچه تلفن اینترنت عمل میکند؛ اگر این دفترچه اطلاعات اشتباهی داشته باشد، کاربران هر چقدر هم که آدرس درست را وارد کنند، به مقصد نمیرسند.
مشکل اینجاست که خطاهای DNS همیشه یکسان به نظر نمیرسند. گاهی سایت کامل باز نمیشود، گاهی فقط ایمیلها کار نمیکنند، و گاهی سایت برای بعضی کاربران باز میشود و برای بعضی دیگر نه. در این مقاله، یک روش سیستماتیک برای عیب یابی DNS یاد میگیرید: اول نشانههای هر خطا را میشناسید، بعد با ترتیب درست، رکوردها را بررسی میکنید تا به علت اصلی برسید.
نشانههای رایج خطاهای DNS و معنای هر کدام
قبل از اینکه سراغ دستورات برویم، باید بدانید هر نشانه به چه نوع خطایی اشاره دارد. این جدول ذهنی را بسازید:
۱. خطای «DNS_PROBE_FINISHED_NXDOMAIN»
این خطا یعنی دامنه شما اصلاً وجود ندارد یا هیچ رکوردی برای آن ثبت نشده است. مرورگر میگوید: «من این آدرس را در هیچ DNS سروری پیدا نکردم.»
- علت احتمالی: دامنه منقضی شده، رکوردهای DNS بهطور کامل حذف شدهاند، یا دامنه هنوز فعال نشده است.
- نکته: اگر دامنه را تازه خریدهاید، ممکن است پروپاگیشن (انتشار) DNS هنوز کامل نشده باشد.
۲. خطای «DNS_PROBE_FINISHED_SERVFAIL»
این خطا یعنی سرور DNS دامنه شما پاسخ میدهد، اما نمیتواند اطلاعات درستی برگرداند. معمولاً مشکل از سمت سرورهای نام (Name Server) است.
- علت احتمالی: تنظیمات نادرست روی سرور DNS، رکورد SOA خراب، یا مشکل در سرورهای authoritative دامنه.
- نکته: این خطا اغلب موقتی است؛ اما اگر تکرار شود، باید تنظیمات سرور نام را بررسی کنید.
۳. سایت برای بعضی باز میشود و برای بعضی نه
این نشانه کلاسیک پروپاگیشن ناقص DNS است. وقتی رکوردی را تغییر میدهید، سرورهای DNS در سراسر جهان اطلاعات قدیمی را در حافظه کش نگه میدارند. بعضی کاربران به سرورهایی وصل میشوند که اطلاعات جدید را دریافت کردهاند و بقیه به سرورهای قدیمی.
- علت احتمالی: تغییر اخیر در رکوردها، TTL (Time To Live) خیلی بالا.
- نکته: اگر TTL را قبل از تغییر روی مقدار پایین (مثلاً ۳۰۰ ثانیه) تنظیم کرده باشید، پروپاگیشن سریعتر انجام میشود.
۴. وبسایت باز میشود اما ایمیل کار نمیکند
این مشکل معمولاً به رکوردهای MX و SPF مربوط میشود. سایت شما ممکن است روی هاست درست باشد، اما اگر رکورد MX به سرور ایمیل اشتباه اشاره کند، ایمیلها به مقصد نمیرسند.
- علت احتمالی: رکورد MX اشتباه، رکورد SPF ناقص، یا رکورد A برای mail.example.com تنظیم نشده.
- نکته: ایمیلها معمولاً خطای واضحی به کاربر نشان نمیدهند؛ فقط ایمیلها گم میشوند یا به اسپم میروند.
ترتیب صحیح بررسی رکوردها در عیب یابی DNS
حالا که نشانهها را میشناسید، وقت آن است که بهصورت سیستماتیک بررسی کنید. ترتیب زیر را دنبال کنید تا به علت اصلی برسید:
گام اول: بررسی رکوردهای A و AAAA
رکورد A (و AAAA برای IPv6) مهمترین رکوردها هستند. اگر اینها اشتباه باشند، هیچچیز دیگری درست کار نمیکند. از دستور dig استفاده کنید:
dig example.com A
dig example.com AAAA
خروجی باید شامل یک آدرس IP معتبر باشد. اگر بخش ANSWER SECTION خالی بود، یعنی رکوردی وجود ندارد. اگر آدرس IP را میبینید اما سایت باز نمیشود، مشکل از DNS نیست؛ مشکل از سرور وب است.
اشتباه رایج: خیلی از افراد وقتی سایت باز نمیشود، اول سراغ DNS میروند. اما اگر رکورد A درست است و آدرس IP را نشان میدهد، باید سرور وب، فایروال، یا تنظیمات پورت را بررسی کنید. DNS فقط آدرس را پیدا میکند؛ مسئولیت پاسخگویی با سرور است.
گام دوم: بررسی رکوردهای NS و SOA
رکوردهای NS (Name Server) مشخص میکنند که کدام سرورها پاسخگوی دامنه شما هستند. اگر اینها اشتباه باشند، کل دامنه از کار میافتد. بررسی کنید:
dig example.com NS
dig example.com SOA
در خروجی NS باید حداقل دو سرور نام ببینید. در خروجی SOA، به فیلد MNAME (سرور اصلی) و REFRESH و RETRY دقت کنید. مقادیر غیرعادی (مثل REFRESH کمتر از ۳۶۰۰) میتواند باعث ناپایداری شود.
همچنین مطمئن شوید که رکوردهای NS در دو جا هماهنگ هستند: در رجیسترار دامنه (جایی که دامنه را خریدهاید) و در ناحیه DNS خودتان. اگر این دو با هم فرق داشته باشند، مشکلات عجیبی پیش میآید.
گام سوم: بررسی رکوردهای MX و SPF
اگر سایت بالا است اما ایمیل کار نمیکند، این گام را انجام دهید:
dig example.com MX
dig example.com TXT
رکورد MX باید به یک نام میزبان معتبر اشاره کند (مثلاً mail.example.com) و اولویت (Priority) عددی بین ۰ تا ۶۵۵۳۵ داشته باشد. رکورد SPF باید در بخش TXT باشد و با v=spf1 شروع شود. مثال:
v=spf1 mx include:_spf.google.com ~all
اگر SPF وجود ندارد یا اشتباه است، ایمیلهای شما ممکن است به اسپم بروند یا کاملاً رد شوند.
گام چهارم: بررسی رکوردهای CNAME و رکوردهای خاص
رکوردهای CNAME برای زیردامنهها (مثل www یا blog) استفاده میشوند. بررسی کنید:
dig www.example.com CNAME
dig blog.example.com CNAME
یک اشتباه رایج این است که برای دامنه اصلی (مثل example.com) رکورد CNAME تنظیم میکنند. این کار طبق استاندارد RFC مجاز نیست؛ دامنه اصلی باید رکورد A داشته باشد. اگر این اشتباه را کردهاید، رکورد CNAME را حذف و به جای آن رکورد A تنظیم کنید.
گام پنجم: بررسی کش DNS محلی و عمومی
گاهی مشکل از سمت شماست، نه سرور. کش DNS سیستم خودتان را پاک کنید:
# در لینوکس (با systemd-resolved)
sudo systemd-resolve --flush-caches
# در macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# در ویندوز
ipconfig /flushdns
بعد از پاک کردن کش، دوباره بررسی کنید. اگر مشکل حل شد، یعنی کش محلی خراب بود. اگر نه، از یک DNS عمومی مثل 8.8.8.8 (Google) یا 1.1.1.1 (Cloudflare) استفاده کنید:
dig @8.8.8.8 example.com A
dig @1.1.1.1 example.com A
اگر با DNS عمومی جواب درست میگیرید اما با DNS پیشفرض ISP نه، مشکل از DNS سرور ISP شماست.
ابزارهای کمکی برای عیب یابی DNS
علاوه بر دستورات خط فرمان، ابزارهای آنلاین هم میتوانند کمک کنند:
- dnschecker.org: بررسی پروپاگیشن DNS در سراسر جهان.
- whatsmydns.net: مشاهده وضعیت رکوردها از نقاط مختلف.
- Google Admin Toolbox: ابزار جامع گوگل برای بررسی DNS.
این ابزارها به شما نشان میدهند که آیا مشکل فقط در منطقه شماست یا در کل جهان. اگر در همه جا خطا میبینید، مشکل از تنظیمات شماست؛ اگر فقط در یک منطقه، مشکل از زیرساخت آن منطقه است.
سناریوی عملی: یک مثال کامل عیب یابی
فرض کنید کاربری گزارش میدهد که سایت shop.example.com باز نمیشود. مراحل زیر را به ترتیب انجام میدهیم:
- بررسی رکورد A:
dig shop.example.com A— خروجی آدرس IP را نشان میدهد. پس DNS کار میکند. - بررسی اتصال به سرور:
curl -I http://shop.example.com— خطای timeout میگیریم. مشکل از سرور است، نه DNS. - بررسی پورت:
nc -zv shop.example.com 80— پورت بسته است. فایروال یا وبسرور مشکل دارد. - نتیجه: DNS درست است؛ مشکل از زیرساخت سرور است. این صرفهجویی در زمان، ارزش عیب یابی سیستماتیک را نشان میدهد.
جمعبندی: نقشه راه عیب یابی DNS
برای اینکه همیشه مسیر درست را بروید، این چکلیست را حفظ کنید:
- ابتدا رکورد A و AAAA را بررسی کنید؛ اگر درست بود، مشکل جای دیگری است.
- رکوردهای NS و SOA را چک کنید؛ اگر اشتباه بودند، کل دامنه از کار میافتد.
- برای مشکلات ایمیل، MX و SPF را بررسی کنید.
- کش محلی و DNS عمومی را امتحان کنید تا مطمئن شوید مشکل از سمت شما نیست.
- از ابزارهای آنلاین برای بررسی پروپاگیشن جهانی استفاده کنید.
با این روش، دیگر درگیر حدسزدن نمیشوید. هر نشانه به یک دسته خطا اشاره میکند و هر دسته، ترتیب بررسی مشخصی دارد. اگر در حین عیب یابی به این نتیجه رسیدید که زیرساخت DNS شما نیاز به بازبینی اساسی دارد، میتوانید از سرویسهای مدیریت DNS سرورنت کمک بگیرید تا تنظیمات بهصورت حرفهای بازبینی شود. اما در بیشتر موارد، همین راهنمای ساده برای پیدا کردن و رفع مشکل کافی است.