شبی یک هاست جدید راه‌اندازی کرده بودم و دامنه مشتری را به آن منتقل کردم. سه ساعت بعد تماس گرفت که «سایت اصلاً باز نمی‌شود، حتی ایمیل هم نمی‌رسد». وقتی وارد پنل DNS دامنه شدم، متوجه شدم رکورد MX ایمیل را در جریان انتقال پاک کرده‌ام و زیر‌دامنه اصلی هم با یک CNAME اشتباه به جای دیگری اشاره می‌کند. رفع این دو خطا فقط چند دقیقه طول کشید، اما هزینه‌ی ناشی از عدم دسترسی مشتری به کسب‌وکارش در آن سه ساعت، چند برابر بود. تجربه‌ام از این دست پروژه‌ها یک درس ثابت داده: تنظیمات DNS ساده به نظر می‌رسد، اما اگر بدون نقشه انجام شود، گاهی همان منطقه‌ای است که بیشترین دردسر را می‌سازد.

DNS دقیقاً چیست و چرا نقطه اتصال همه‌چیز است؟

DNS (Domain Name System — سیستم نام دامنه) در ساده‌ترین تعریف، دفترچه تلفن اینترنت است. وقتی کاربری آدرس سایت شما را در مرورگر وارد می‌کند، کامپیوتر او در واقع نمی‌داند سایت شما روی کدام سرور میزبانی می‌شود. اینجاست که DNS وارد می‌شود و نام دامنه را به آدرس عددی سرور (یعنی IP — Internet Protocol) ترجمه می‌کند. اگر با مفهوم کلی DNS آشنا نیستید، پیشنهاد می‌کنم ابتدا DNS چیست و چگونه کار می‌کند را بخوانید تا تصویر پایه روشن شود.

نکته کلیدی این است که DNS فقط برای اتصال دامنه به هاست نیست. این لایه، وضعیت ایمیل، زیر‌دامنه‌ها، تایید مالکیت دامنه برای ابزارهایی مثل Google Search Console، و حتی مسیر CDN شما را تعیین می‌کند. اگر DNS به‌درستی تنظیم نشود، حتی اگر هاست و دامنه هر دو سالم باشند، سایت شما به کاربر نمی‌رسد.

در دنیای وب، دامنه و هاست دو جزیره جدا هستند و DNS پلی است که میان‌شان وصل می‌شود. اگر این پل را بدون نقشه بچینید، هر دو طرف ممکن است سالم باشند اما به هم نرسند.

رکوردهای اصلی DNS و نقش هرکدام

در پنل DNS، با انواع مختلف رکوردها روبه‌رو می‌شوید. توضیح دقیق‌تر هر یک را در رکوردهای DNS کدامند آورده‌ام، اما در اینجا خلاصه عملی هر یک را مرور می‌کنم:

رکورد A

پرکاربردترین رکورد DNS. آدرس IP سرور شما را به یک دامنه یا زیر‌دامنه متصل می‌کند. مثلاً example.com → 192.0.2.1. اگر دامنه‌ای در سایت شما با ping پاسخ می‌دهد، در واقع این رکورد است که کار می‌کند.

رکورد AAAA

معادل IPv6 رکورد A. اگر سرور شما آدرس IPv6 دارد و می‌خواهید سایت با آن هم در دسترس باشد، این رکورد را تنظیم می‌کنید.

رکورد CNAME

به‌جای اتصال به یک IP، نام دامنه دیگری را به‌عنوان مرجع معرفی می‌کند. مثلاً www.example.com → example.com. تفاوت دقیق این دو را در تفاوت CNAME و A Record در DNS توضیح داده‌ام.

رکورد MX

مسئول مسیریابی ایمیل‌های دامنه شما. اگر این رکورد نباشد، ایمیل‌های info@yourdomain.com به مقصد نمی‌رسند. راهنمای اختصاصی در MX Record و تنظیمات ایمیل دامنه.

رکورد TXT

برای تایید مالکیت دامنه، تنظیم SPF، DKIM و DMARC استفاده می‌شود. این رکوردها، بخش اساسی امنیت ایمیل شما هستند. توضیح کامل در SPF چیست و چگونه از جعل ایمیل جلوگیری می‌کند و DKIM و امضای دیجیتال ایمیل‌ها.

رکورد NS

Nameserverها را مشخص می‌کند. این رکورد، تعیین‌کننده این است که تنظیمات DNS شما از کدام سرور خوانده می‌شود. تفاوت آن با DNS را در تفاوت DNS و Nameserver چیست باز کرده‌ام.

رکورد TTL

هر رکورد یک مقدار TTL (Time To Live) دارد که مدت کش شدن آن را در سرورهای DNS تعیین می‌کند. قبل از هر تغییری که قرار است سریع اعمال شود، TTL را کاهش دهید — این ترفند در پروژه‌های واقعی بارها به کارم آمده است.

کجا تنظیمات DNS را اعمال کنیم؟

محل تنظیمات DNS بستگی به این دارد که Nameserver دامنه شما به کجا اشاره می‌کند:

  • اگر از Nameserverهای هاست استفاده می‌کنید: تنظیمات را از پنل هاست (مثلاً Zone Editor در cPanel) اعمال می‌کنید.
  • اگر از Nameserverهای شرکت ثبت دامنه استفاده می‌کنید: تنظیمات را از پنل ثبت‌کننده اعمال می‌کنید.
  • اگر از سرویس DNS ابری (مثل Cloudflare) استفاده می‌کنید: تنظیمات را از پنل آن سرویس اعمال می‌کنید.

نکته‌ای که در پروژه‌ها زیاد به آن برخورده‌ام: خیلی از کاربران نمی‌دانند Nameserver دامنه‌شان به کجا اشاره می‌کند. اگر این موضوع برای شما هم مبهم است، از ابزار آنلاین whois استفاده کنید یا از ثبت‌کننده دامنه بپرسید. یکی از پرمصرف‌ترین اشتباهات، تغییر رکوردها در پنل هاست در حالی که Nameserverها به ثبت‌کننده اشاره دارند. در این حالت، تغییرات شما هیچ‌وقت اعمال نمی‌شود و باعث سردرگمی طولانی می‌شود.

اتصال دامنه به هاست؛ گام‌به‌گام

اتصال دامنه به هاست، رایج‌ترین استفاده تنظیمات DNS است. مسیر گام‌به‌گام:

  1. اطلاعات DNS هاست را از شرکت هاست بگیرید: معمولاً شامل یک یا دو رکورد A (برای دامنه اصلی و www) و مقدار IP سرور است. این اطلاعات معمولاً در ایمیل خوش‌آمدگویی هاست موجود است.
  2. وارد پنل DNS خود شوید: بسته به Nameserverها، این پنل می‌تواند پنل هاست، پنل ثبت‌کننده دامنه، یا یک سرویس DNS خارجی باشد.
  3. رکوردهای A را اضافه یا ویرایش کنید: رکورد @ یا دامنه اصلی را به IP هاست اشاره دهید، و همچنین www را.
  4. منتظر پروپاگیشن بمانید: تغییرات معمولاً بین چند دقیقه تا چند ساعت اعمال می‌شوند.
  5. تست کنید: با ابزارهایی مثل whatsmydns.net یا dnschecker.org می‌توانید مشاهده کنید که تغییرات در کدام نقاط جهان اعمال شده.

اگر با پنل cPanel کار می‌کنید، راهنمای کامل در چگونه دامنه را به هاست متصل کنیم و چگونه هاست را به دامنه متصل کنیم آمده است. اگر روی VPS کار می‌کنید، مسیر کمی متفاوت است که در چگونه VPS را به دامنه متصل کنیم باز کرده‌ام.

در اتصال دامنه به هاست، دو دقیقه صبر برای کاهش TTL، ساعت‌ها انتظار برای اعمال تغییر را حذف می‌کند. این ترفند کوچک، تفاوت بین یک انتقال بی‌درد و یک شب بی‌خوابی است.

تنظیم رکوردهای ایمیل سازمانی

پس از اتصال سایت، لایه دوم تنظیمات DNS مربوط به ایمیل است. اگر می‌خواهید ایمیلی مثل info@yourdomain.com داشته باشید، سه رکورد باید درست تنظیم شوند:

  1. MX: اشاره به سرور ایمیل شما. اگر سرور ایمیل را از هاست گرفته‌اید، مقدار این رکورد معمولاً mail.yourdomain.com است.
  2. SPF: یک رکورد TXT که به سرورهای مجاز به ارسال ایمیل از دامنه شما اشاره می‌کند.
  3. DKIM: یک رکورد TXT که امضای دیجیتال ایمیل‌های شما را تایید می‌کند.
  4. DMARC: رکورد TXT که به سرورهای دریافت‌کننده می‌گوید در صورت شکست SPF یا DKIM چه کاری انجام دهند.

در پروژه‌های واقعی، حتی نبود یک SPF درست، می‌تواند باعث شود تمام ایمیل‌های تراکنشی سایت شما در پوشه اسپم گیر کنند. راهنمای کامل در تنظیم SPF برای دامنه‌های ایرانی و راه‌اندازی DMARC گام‌به‌گام.

تنظیم زیر‌دامنه‌ها و ریدایرکت‌ها

زیر‌دامنه‌ها (مثل blog.yourdomain.com یا shop.yourdomain.com) معمولاً با دو روش تنظیم می‌شوند:

  • رکورد A: اگر زیر‌دامنه روی همان سرور هاست اصلی است، یک رکورد A با مقدار IP همان سرور اضافه می‌کنید.
  • رکورد CNAME: اگر زیر‌دامنه به یک سرویس خارجی (مثل Shopify یا یک CDN) اشاره دارد، از CNAME استفاده می‌کنید.

ریدایرکت‌ها اما معمولاً در سطح هاست تنظیم می‌شوند نه DNS. مثلاً ریدایرکت از www به دامنه اصلی، در فایل .htaccess یا در پنل هاست تعریف می‌شود. تفاوت این دو در مدیریت DNS در cPanel توضیح داده شده است.

پروپاگیشن DNS؛ چرا تغییرات فوری اعمال نمی‌شود؟

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

مدت پروپاگیشن بستگی به مقدار TTL قبلی رکورد دارد. اگر TTL روی 86400 ثانیه (یعنی ۲۴ ساعت) تنظیم شده باشد، تغییرات ممکن است تا ۲۴ ساعت طول بکشد. ترفند کاربردی: پیش از هر تغییر بزرگ، TTL را به 300 ثانیه کاهش دهید و یک روز بعد، تغییر اصلی را اعمال کنید. توضیح جامع‌تر در پروپاگیشن DNS چیست و چقدر طول می‌کشد و تنظیم TTL مناسب برای دامنه.

چطور از اعمال درست تنظیمات مطمئن شویم؟

پس از هر تغییر، این پنج آزمون را انجام می‌دهم:

  1. تست با dnschecker.org: این ابزار نشان می‌دهد تغییرات شما در کدام مناطق جهان اعمال شده است.
  2. پینگ دامنه: با دستور ping yourdomain.com می‌توانید ببینید دامنه به IP درست اشاره می‌کند یا نه.
  3. تست ایمیل: یک ایمیل تست به آدرس info@yourdomain.com بفرستید و بازگشت پاسخ را بررسی کنید.
  4. تست مرورگر در حالت Incognito: کش DNS سیستم شما ممکن است باعث شود تغییرات جدید را نبینید.
  5. تست از شبکه دیگر: با اینترنت موبایل یا شبکه‌ای خارج از سازمان، یک بار دیگر بررسی کنید.

اگر با ابزارهای عیب‌یابی DNS آشنا نیستید، چگونه DNS را عیب‌یابی کنیم راهنمای گام‌به‌گام کاملی است.

جدول رکوردها و کاربرد هرکدام

رکوردکاربرد اصلیمقدار پیشنهادی
Aاتصال دامنه به IP سرورIP سرور هاست
AAAAاتصال IPv6IPv6 سرور
CNAMEاشاره به دامنه دیگرمثل www → دامنه اصلی
MXمسیریابی ایمیلmail.yourdomain.com
TXT (SPF)تایید ارسال ایمیلv=spf1 include:_spf... -all
TXT (DKIM)امضای دیجیتالکلید عمومی سازنده
TXT (DMARC)سیاست ایمیلv=DMARC1; p=quarantine;
NSNameserverns1.host.com
TTLزمان کش3600 یا کمتر قبل از تغییر

اشتباهاتی که سایت یا ایمیل را از دسترس خارج می‌کند

  • تنظیم رکوردها در پنل اشتباه: اگر Nameserverها به یک سرویس اشاره دارند اما تنظیمات را در پنل دیگری اعمال می‌کنید، هیچ تغییر اعمال نمی‌شود.
  • حذف ناخواسته رکورد MX: در جریان انتقال هاست، بعضی کاربران این رکورد را پاک می‌کنند و به این ترتیب ایمیل‌های سازمانی از دسترس خارج می‌شوند.
  • استفاده از CNAME برای دامنه اصلی: برخلاف آنچه تصور می‌شود، CNAME برای دامنه اصلی توصیه نمی‌شود. برای دامنه اصلی از رکورد A استفاده کنید.
  • نادیده گرفتن TTL قبل از تغییر: تغییر رکوردها با TTL بالا، باعث تأخیر چند ساعته می‌شود.
  • نبود SPF و DKIM: ایمیل‌های سایت به پوشه اسپم کاربران می‌رسد بدون آنکه کسی متوجه شود.
  • حذف رکورد TXT تایید مالکیت: بعضی کاربران بعد از تایید Search Console این رکورد را پاک می‌کنند. توصیه من: نگه‌داشتن این رکورد برای امنیت کوتاه‌مدت و بلندمدت.

نگاه فنی: DNS به‌عنوان لایه مسیریابی

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

  1. جداسازی مالکیت دامنه از میزبانی: دامنه همیشه باید در حساب کاربری مستقل ثبت شده باشد، حتی اگر هاست از جای دیگری گرفته شود. این جداسازی، در مواقع بحرانی نجات‌بخش است. توضیح کامل در چگونه اعتبار دامنه را افزایش دهیم.
  2. استفاده از DNS ابری برای پروژه‌های پرترافیک: سرویس‌هایی مثل Cloudflare یا DNSهای مدیریت‌شده، در کنار کاهش پروپاگیشن، امکانات مسیریابی جغرافیایی (GeoDNS)، تعادل بار و پشتیبانی از DNSSEC را ارائه می‌دهند. مفهوم CDN و نقش آن در سرعت سایت را در CDN چگونه سرعت سایت را بهبود می‌دهد باز کرده‌ام.
  3. پایش مداوم DNS: تغییرات ناخواسته در رکوردها، یکی از رایج‌ترین دلایل قطع سرویس در پروژه‌های سازمانی است. ابزارهای پایش DNS می‌توانند در کمتر از چند دقیقه هشدار بدهند و از بحران جلوگیری کنند.

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

پرسش‌های پرتکرار

چه مدت طول می‌کشد تا تغییرات DNS اعمال شود؟ بین چند دقیقه تا ۴۸ ساعت، بسته به مقدار TTL. اگر TTL را قبل از تغییر کاهش دهید، زمان اعمال کوتاه‌تر می‌شود.

چرا تغییرات DNS من در بعضی مناطق اعمال می‌شود و در بعضی دیگر نه؟ به‌خاطر کش سرورهای DNS مختلف. صبر کنید یا از ابزار dnschecker.org برای مشاهده وضعیت استفاده کنید.

آیا می‌توانم رکورد NS را ویرایش کنم؟ نه مستقیم. رکوردهای NS در سطح ثبت‌کننده دامنه تنظیم می‌شوند، نه در پنل مدیریت DNS.

آیا استفاده از Cloudflare برای DNS رایگان است؟ پلن رایگان Cloudflare برای DNS کافی است. اما اگر نیاز به GeoDNS یا امکانات پیشرفته‌تر دارید، پلن‌های پولی وجود دارد.

چه تفاوتی بین رکورد CNAME و A وجود دارد؟ رکورد A به یک IP اشاره می‌کند، رکورد CNAME به یک نام دامنه دیگر. تفاوت کامل در تفاوت CNAME و A Record.

آیا باید پس از تغییر هاست، رکوردهای MX را تغییر دهم؟ در بیشتر موارد بله، اگر ایمیل روی همان هاست است. اما اگر سرویس ایمیل مستقل از هاست است (مثل Gmail Workspace یا Zoho Mail)، رکوردهای MX را دست نزنید.

آیا رکورد TXT تایید مالکیت را باید حفظ کنم؟ توصیه من حفظ آن است. چون هم برای امنیت کوتاه‌مدت و هم برای بررسی مجدد مالکیت در آینده لازم است.

یادداشت نهایی

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

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