DNS چیست؟
DNS مخفف Domain Name System است؛ یک سامانه نامگذاری توزیعشده و سلسلهمراتبی که نام دامنههای قابلفهم برای انسان (مانند example.com) را به نشانی عددی IP ترجمه میکند تا مرورگر، کلاینت ایمیل یا هر برنامه دیگری بتواند به سرور مقصد متصل شود. به بیان ساده، DNS دفترچه تلفن اینترنت است: شما نام را میدانید و DNS نشانی را برمیگرداند.
ارتباط در شبکه در نهایت بر پایه نشانی IP انجام میشود، نه نام؛ و چون به خاطر سپردن IP هر سرویس عملاً غیرممکن است، DNS این نگاشت را بر عهده میگیرد. همین ترجمه ساده اجازه میدهد سرور یک وبسایت جابهجا شود بدون آنکه کاربر چیزی متوجه شود.
DNS دقیقاً چه کاری انجام میدهد
تصور رایج این است که کار DNS فقط تبدیل نام به IP است، اما دامنه مسئولیت آن گستردهتر است. DNS مشخص میکند ایمیل یک دامنه به کدام سرور تحویل داده شود، چه سرورهایی مجاز به صدور گواهی SSL برای آن دامنه هستند، سیاست ضداسپم دامنه چیست و کدام نیمسرورها مرجع رسمی اطلاعات آن دامنه محسوب میشوند.
پرسوجوهای DNS روی پورت ۵۳ و معمولاً با UDP انجام میشوند و در صورت بزرگ بودن پاسخ یا نیاز به انتقال زون به TCP سوییچ میکنند. نسخههای رمزنگاریشده مانند DoT و DoH هم رایج شدهاند تا محتوای پرسوجو در مسیر قابل شنود نباشد.
مسیر یک پرسوجو: ریزالور، ریشه، TLD و سرور معتبر
وقتی نامی را در مرورگر وارد میکنید، این مراحل طی میشود:
هر بار که آدرسی را باز میکنید همین زنجیره طی میشود؛ پاسخ نهایی به اندازه TTL در کش ریزالور میماند و تا انقضای آن، تغییر شما را همه نمیبینند.
- کش محلی: ابتدا کش مرورگر و کش سیستمعامل بررسی میشود. اگر پاسخ آنجا باشد، کار همانجا تمام است.
- ریزالور بازگشتی (Recursive Resolver): درخواست به ریزالوری میرود که معمولاً توسط ISP یا یک سرویس عمومی ارائه میشود. این ریزالور مسئول پیدا کردن پاسخ نهایی است.
- سرورهای ریشه (Root): اگر ریزالور چیزی در کش نداشته باشد، از سرورهای ریشه میپرسد. ریشه پاسخ نهایی نمیدهد، بلکه ارجاع میدهد که مثلاً برای پسوند com. سراغ کدام سرورها بروید. فضای ریشه با ۱۳ نشانی نامگذاریشده شناخته میشود که با فناوری Anycast روی نمونههای متعدد در سراسر جهان توزیع شدهاند.
- سرورهای TLD: سرورهای دامنه سطح بالا (مانند com. یا ir.) نیز پاسخ نهایی ندارند؛ آنها میگویند نیمسرورهای معتبر آن دامنه کداماند.
- سرور معتبر (Authoritative): این سرور نسخه رسمی زون دامنه را نگه میدارد و رکورد نهایی را برمیگرداند.
ریزالور پاسخ را به کلاینت میدهد و همزمان آن را به اندازه TTL در کش نگه میدارد تا دفعه بعد این زنجیره تکرار نشود. به همین دلیل اولین پرسوجوی یک دامنه کندتر از دفعات بعدی است. با دستور dig +trace example.com میتوانید همین زنجیره را قدمبهقدم ببینید.
رکوردهای اصلی DNS
| رکورد | کاربرد |
|---|---|
A |
نگاشت نام به نشانی IPv4 |
AAAA |
نگاشت نام به نشانی IPv6 |
CNAME |
نام مستعار؛ یک نام را به نام دیگری ارجاع میدهد |
MX |
سرور یا سرورهای دریافت ایمیل دامنه، همراه با اولویت |
TXT |
متن آزاد؛ کاربرد اصلی آن SPF، DKIM، DMARC و تأیید مالکیت دامنه است |
NS |
نیمسرورهای معتبر دامنه یا زیردامنه (تفویض یا Delegation) |
در کنار اینها رکوردهای SOA (اطلاعات مدیریتی زون و پارامترهای کش منفی)، CAA (مراجع مجاز صدور گواهی)، SRV (معرفی سرویس و پورت) و PTR (نگاشت وارونه IP به نام) هم اهمیت دارند. یک نکته عملی: طبق استاندارد، CNAME نمیتواند در ریشه دامنه (apex) کنار رکوردهای NS و SOA قرار بگیرد و باید از رکورد A یا قابلیت اختصاصی ارائهدهنده DNS استفاده کنید.
TTL و اینکه چرا تغییرات دیر اعمال میشوند
هر رکورد DNS یک TTL بر حسب ثانیه دارد که میگوید ریزالورها اجازه دارند آن پاسخ را چه مدت در کش نگه دارند. وقتی رکوردی را تغییر میدهید، سرور معتبر بلافاصله مقدار جدید را میدهد، اما هر ریزالوری که پیشتر مقدار قدیمی را کش کرده، تا پایان TTL همان مقدار قدیمی را به کاربرانش تحویل میدهد.
به همین دلیل اصطلاح «انتشار» یا Propagation از نظر فنی دقیق نیست؛ چیزی در شبکه پخش نمیشود، بلکه کشها بهتدریج منقضی میشوند. روش استاندارد برای مهاجرت سرور این است که چند ساعت پیش از جابهجایی TTL رکوردهای مربوطه را کاهش دهید، مهاجرت را انجام دهید و پس از پایدار شدن اوضاع دوباره TTL را بالا ببرید. تغییر نیمسرورها در سطح ثبت دامنه هم فرآیندی جدا از رکوردهای داخل زون است و زمانبندی آن به رویه رجیستری هر پسوند بستگی دارد.
سرویس DNS هاستینگ چه چیزی ارائه میدهد
DNS هاستینگ یعنی نگهداری زون دامنه شما روی نیمسرورهای معتبر و مدیریتشده، بهجای اینکه خودتان یک سرویس مانند BIND را روی سرور راهاندازی و نگهداری کنید. چیزی که یک سرویس DNS هاستینگ معمولاً فراهم میکند شامل پنل مدیریت رکوردها، چند نیمسرور در مسیرها و موقعیتهای شبکهای متفاوت برای افزایش دسترسپذیری و امکان تعریف TTL دلخواه است. برخی ارائهدهندگان قابلیتهای تکمیلی مانند DNSSEC یا رابط برنامهنویسی برای خودکارسازی را هم عرضه میکنند؛ بنابراین پیش از انتخاب، فهرست دقیق امکانات هر سرویس را بررسی کنید.
اهمیت این موضوع وقتی روشن میشود که بدانید DNS یک نقطه شکست بحرانی است: اگر نیمسرورهای دامنه پاسخ ندهند، سایت شما حتی با سرور کاملاً سالم هم برای کاربران در دسترس نخواهد بود. جدا نگه داشتن لایه DNS از سروری که سایت روی آن اجرا میشود، یکی از سادهترین کارها برای کاهش این ریسک است.
Geo DNS؛ پاسخ متفاوت بر اساس موقعیت کاربر
در حالت عادی، سرور معتبر برای همه پرسوجوها یک پاسخ یکسان میدهد. در Geo DNS پاسخ بر اساس موقعیت جغرافیایی یا شبکه ریزالور درخواستکننده تغییر میکند؛ مثلاً کاربران داخل کشور به نشانی IP سرور داخلی و کاربران خارج به IP سرور خارجی هدایت میشوند. این روش برای کاهش تأخیر، توزیع بار و سناریوهای Failover کاربرد دارد. توجه کنید تصمیمگیری بر اساس نشانی ریزالور انجام میشود، نه لزوماً خودِ کاربر، مگر آنکه ریزالور از ECS پشتیبانی کند.
خطاهای رایج در پیکربندی DNS
- ناهماهنگی بین رکوردهای NS ثبتشده نزد رجیستری و رکوردهای NS داخل زون.
- باقی ماندن رکورد
AAAAبرای سروری که دیگر IPv6 فعال ندارد. - تعریف بیش از یک رکورد SPF برای یک دامنه؛ استاندارد فقط یک رکورد SPF را مجاز میداند و بیش از آن نتیجه را نامعتبر میکند.
- نبود رکورد PTR معتبر برای IP سرور ایمیل، که از دلایل شایع رفتن ایمیلها به اسپم است.
برای بررسی وضعیت، ابزارهای خط فرمان dig، host و nslookup دقیقترین تصویر را میدهند؛ همیشه پیش از نتیجهگیری، مستقیماً از سرور معتبر دامنه پرسوجو کنید تا اثر کش حذف شود. برای یک نگاه کلیتر به سلامت دامنه و سرویسهای وابسته هم میتوانید از بررسی سلامت سایت استفاده کنید.
جمعبندی
DNS لایهای است که نام دامنه را به مقصد واقعی سرویس ترجمه میکند. شناخت زنجیره ریزالور تا سرور معتبر، تفاوت رکوردها و نقش TTL، مهاجرت سرور و راهاندازی ایمیل و عیبیابی قطعیها را بسیار سادهتر میکند. اگر خودتان ریزالور روی سرور بالا میآورید، خطر باز گذاشتن Recursive DNS روی اینترنت را هم پیش از آن بخوانید. اگر قصد ثبت دامنه دارید، از همان ابتدا تصمیم بگیرید زون آن روی چه نیمسرورهایی نگهداری شود؛ این انتخاب مستقیماً بر پایداری دسترسی کاربران اثر میگذارد.
