رکوردهای DNS کدامند و هر کدام چه کاربردی دارند؟
کدام رکوردهای DNS برای سایت، ایمیل و امنیت حیاتیاند؟ بررسی کامل رکوردهای A، AAAA، CNAME، MX، TXT، NS، SOA، SRV و CAA با مثال عملی و کاربرد واقعی.
اولین باری که Zone File یک دامنه را باز کردم، با فهرستی از خطوط کوتاه روبهرو شدم که هر کدام چیزی متفاوت میگفتند: یکی IP میداد، یکی نام میداد، یکی برای ایمیل بود و یکی اصلاً شبیه هیچکدام نبود. آن روز فهمیدم که فایل DNS، در واقع فهرست دفترچهای است که سراسر اینترنت بر اساس آن تصمیم میگیرد درخواستها را کجا بفرستد. هر رکورد، یک دستور مشخص است که هم وظیفهی روشنی دارد و هم قواعد دقیقی. این مقاله را برای پاسخ به همان پرسش نوشتهام: رکوردهای DNS کدامند، هرکدام چه کاری میکنند، و در تنظیم هر یک چه چیزی را باید در نظر گرفت.
اگر تازه با مفهوم پایهی DNS آشنا میشوید، پیش از ادامه، DNS چیست و چگونه کار میکند را بخوانید. در ادامه فرض میکنم مفاهیم پایه را میدانید و میخواهید بهطور دقیق، تفاوتها و کاربردهای هر رکورد را بشناسید.
رکورد DNS دقیقاً چیست؟
DNS (Domain Name System)، سیستم نامگذاری و مسیریابی اینترنت است که نامهای دامنهی خوانا برای انسان را به اطلاعات ماشینخوان تبدیل میکند. هر رکورد DNS، یک خط از اطلاعات در Zone File است که نوع، نام، مقدار، و مدت اعتبار (TTL) دارد. ساختار کلی هر رکورد، از الگوی استاندارد RFC پیروی میکند:
NAME TTL CLASS TYPE VALUE
که در آن NAME نام میزبان است، TTL مقدار زمان اعتبار (به ثانیه)، CLASS معمولاً IN (Internet)، TYPE نوع رکورد، و VALUE مقدار است. درک این ساختار، به شما امکان میدهد هر Zone File را بخوانید و خطاها را سریع تشخیص دهید. اگر با ابزار خط فرمان dig کار میکنید، میتوانید هر رکورد را مستقیماً از سرور Authoritative بپرسید.
قبل از ورود به انواع، یک نکته: تفاوت بین Zone و رکورد را در نظر بگیرید. Zone، مجموعهی کاملی از رکوردهاست که برای یک دامنه تعریف میشود. اگر Zoneهای بیشتری دارید — مثلاً برای سابدامینها — هر کدام Zone جداگانهای هستند. برای درک پیکربندی کامل، چگونه DNS دامنه را تنظیم کنیم را ببینید.
هر رکورد DNS، یک دستور است؛ و هر دستور، یک تصمیم که سالها روی رفتار سایت شما اثر میگذارد.
رکورد A: آدرس IPv4
رایجترین و بنیادیترین رکورد DNS، رکورد A است که یک نام میزبان را به یک آدرس IPv4 نگاشت میکند. رکورد A معمولاً برای دامنهی ریشه و زیردامینهای استاندارد استفاده میشود. مثال یک رکورد A ساده:
example.com. 3600 IN A 203.0.113.10
در این مثال، درخواست برای example.com به IP 203.0.113.10 هدایت میشود. نکات کلیدی رکورد A:
- فقط IPv4: برای IPv6 باید از رکورد AAAA استفاده کنید.
- چندین رکورد A: میتوانید برای یک نام، چند رکورد A داشته باشید (Multi-A) و در واقع یک نوع Load Balancing ساده پیاده کنید.
- مقدار باید IP معتبر باشد: تایپ اشتباه IP، سایت را از کار میاندازد. مسئلهای که در مقالهی اشتباهات رایج در تنظیم DNS بهتفصیل آوردهام.
- قابل ریدایرکت: اگر سرور را تغییر دهید، فقط مقدار IP در رکورد A عوض میشود و همهی درخواستها به سرور جدید میروند.
رکورد AAAA: آدرس IPv6
رکورد AAAA (که چهار A خوانده میشود، بهخاطر چهار برابر بودن طول آدرس IPv6 نسبت به IPv4) معادل IPv6 رکورد A است. ساختار مشابه دارد اما مقدار، یک آدرس IPv6 است:
example.com. 3600 IN AAAA 2001:db8::1
سه نکته مهم در مورد رکورد AAAA:
- پشتیبانی جهانی: اکثر کاربران امروزی، از طریق شبکههای IPv6 متصل میشوند یا از حالت dual-stack استفاده میکنند. نداشتن رکورد AAAA بهطور فزایندهای یک نقص محسوب میشود.
- ترتیب انتخاب: مرورگرها معمولاً ابتدا از طریق IPv6 تلاش میکنند و در صورت شکست، به IPv4 برمیگردند (Happy Eyeballs).
- هماهنگی با سرور: اگر سرور IPv6 را پشتیبانی نکند، داشتن رکورد AAAA فقط تأخیر اضافه میکند. همیشه پس از افزودن رکورد AAAA، دسترسی از طریق IPv6 را تست کنید.
رکورد CNAME: نام مستعار
رکورد CNAME (Canonical Name) بهجای اشاره به یک IP، به یک نام دیگر اشاره میکند. به عبارت دیگر، یک نام را به نام دیگری نگاشت میکند. مثال:
blog.example.com. 3600 IN CNAME example.com.
در این مثال، درخواست برای blog.example.com در واقع به رکورد A برای example.com هدایت میشود. کاربردهای اصلی CNAME:
- سابدامینهای سرویسهای SaaS: مثل هدایت shop.example.com به Shopify یا پنلهای ابری.
- نسخهی www: در بسیاری از پیکربندیها، www به دامنهی ریشه CNAME میشود.
- تغییر متمرکز: اگر IP سرور تغییر کند، فقط رکورد A اصلی بهروزرسانی میشود و همهی CNAMEها بهطور خودکار به سرور جدید اشاره میکنند.
دو محدودیت مهم CNAME:
- روی دامنهی ریشه قابل استفاده نیست: استاندارد DNS اجازه نمیدهد دامنهی ریشه CNAME داشته باشد، چون در کنار آن رکوردهای SOA و NS وجود دارند. برای دامنهی ریشه، از A یا در بعضی سرویسها از ALIAS یا ANAME استفاده کنید.
- همنشینی محدود: اگر یک نام CNAME دارد، نمیتواند رکوردهای دیگری مثل TXT و MX داشته باشد. اگر به هر دو نیاز دارید، CNAME را برای زیردامین دیگری تعریف کنید.
رکورد MX: مسیریابی ایمیل
رکورد MX (Mail Exchange) مشخص میکند که ایمیلهای ورودی برای یک دامنه، باید به کدام سرور تحویل داده شوند. مثال:
example.com. 3600 IN MX 10 mail1.example.com.
example.com. 3600 IN MX 20 mail2.example.com.
دو نکته در مورد رکورد MX:
- عدد Priority: هر رکورد MX یک عدد اولویت دارد. سرور ایمیل با عدد کمتر، اولویت بالاتری دارد. اگر سرور اول پاسخ ندهد، سرور بعدی امتحان میشود.
- مقدار باید نام باشد، نه IP: رکورد MX باید به یک نام میزبان اشاره کند، نه آدرس IP. این نام سپس توسط یک رکورد A یا AAAA resolve میشود.
رکورد MX یکی از حساسترین رکوردها است؛ چون اگر اشتباه تنظیم شود، کل ایمیل سازمانی از کار میافتد. حتماً پس از هر تغییری، ارسال و دریافت ایمیل را تست کنید. برای درک اثرات کلی تغییر، تغییر DNS چه تاثیری بر سایت و رتبه Google دارد را ببینید.
رکورد TXT: اطلاعات متنی و تأیید
رکورد TXT، یک رشتهی متنی آزاد را در DNS ذخیره میکند. اگرچه در ابتدا برای اهداف جانبی طراحی شده بود، امروز یکی از پرکاربردترین انواع رکورد است. سه کاربرد اصلی:
۱. تأیید مالکیت دامنه
سرویسهای مختلف — از Google Search Console و Microsoft 365 گرفته تا سرویسهای امنیتی — برای تأیید مالکیت دامنه، از شما میخواهند یک مقدار TXT خاص را اضافه کنید. مثلاً:
example.com. 3600 IN TXT "google-site-verification=abc123..."
۲. SPF، DKIM و DMARC
سه استاندارد ایمیل که برای جلوگیری از جعل و اسپم استفاده میشوند و همه در قالب رکورد TXT ذخیره میشوند:
- SPF (Sender Policy Framework): فهرست سرورهای مجاز برای ارسال ایمیل از دامنه.
- DKIM (DomainKeys Identified Mail): کلید عمومی برای تأیید امضای دیجیتال ایمیل.
- DMARC (Domain-based Message Authentication, Reporting and Conformance): سیاستی برای برخورد با ایمیلهای نامعتبر.
۳. اطلاعات عمومی
گاهی برای اهداف توضیحی یا مستندسازی، از TXT برای درج اطلاعات عمومی استفاده میشود. اما از آنجا که TXT برای هر کاربر قابل خواندن است، هرگز اطلاعات حساس را در آن قرار ندهید.
رکورد NS: اعلام سرورهای Authoritative
رکورد NS (Name Server) مشخص میکند که Zone شما روی کدام سرورها میزبانی میشود. این رکورد، در سطح دامنهی والد اعلام میشود و به Resolverها میگوید برای این دامنه به کدام سرور مراجعه کنند. مثال:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
سه نکته در مورد رکورد NS:
- حداقل دو NS توصیه میشود: برای مقاومت در برابر outage، حداقل دو Nameserver در دو مکان مختلف داشته باشید.
- تغییر NS، خطرناکتر از تغییر A است: چون تمام Zone در سرویس جدید باید منتقل شود. تفاوت دقیق این دو را در تفاوت DNS و Nameserver چیست آوردهام.
- TTL بالاتر برای NS مفید است: چون تغییرات NS بهندرت انجام میشود، TTL بالاتر (۸۶۴۰۰ ثانیه یا بیشتر) منطقی است.
رکورد SOA: سند اصلی Zone
رکورد SOA (Start of Authority) اولین رکورد هر Zone است و اطلاعات مدیریتی آن را تعیین میکند. ساختار آن پیچیدهتر از رکوردهای دیگر است و شامل این فیلدهاست:
example.com. 86400 IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
7200 ; Refresh
3600 ; Retry
1209600 ; Expire
86400 ; Minimum TTL
)
هر فیلد معنای مشخصی دارد:
- Serial: شمارهی نسخهی Zone. هر بار که Zone را تغییر میدهید، این عدد باید افزایش یابد تا سرورهای ثانویه متوجه تغییر شوند.
- Refresh: بازهای که سرور ثانویه باید از سرور اصلی بهروزرسانی بگیرد.
- Retry: بازهای که در صورت شکست، سرور ثانویه دوباره تلاش کند.
- Expire: مدت زمانی که سرور ثانویه میتواند بدون پاسخ از سرور اصلی به کار ادامه دهد.
- Minimum TTL: حداقل TTL برای رکوردهای Zone.
در سرویسهای DNS ابری مدرن، مدیریت Serial معمولاً خودکار است و نیازی به دخالت دستی ندارید. اما در سرویسهای سنتی، فراموش کردن افزایش Serial یکی از رایجترین اشتباهات است.
رکورد SRV: سرویسهای خاص
رکورد SRV (Service) برای اعلام محل سرویسهای خاص — مثل VoIP، SIP، LDAP و برخی سرویسهای داخلی — استفاده میشود. ساختار آن از الگوی خاصی پیروی میکند:
_sip._tcp.example.com. 3600 IN SRV 10 60 5060 sipserver.example.com.
در این ساختار، چهار مقدار مهم وجود دارد: Priority، Weight، Port و Target. SRV معمولاً در پروژههای معمولی وب کمتر کاربرد دارد، اما در پروژههای مرتبط با ارتباطات (VoIP، چت و...)، ابزار ضروری است.
رکورد CAA: محدودسازی صدور گواهی
رکورد CAA (Certification Authority Authorization) مشخص میکند کدام Certificate Authorityها (CA) مجاز به صدور گواهی SSL برای دامنهی شما هستند. این رکورد، یک لایهی امنیتی اضافه است که جلوی صدور ناخواستهی گواهی توسط CAهای غیرمجاز را میگیرد. مثال:
example.com. 3600 IN CAA 0 issue "letsencrypt.org"
مقدار 0 issue به معنای «اجازهی صدور» است. برای اعلام محدودیت بیشتر، میتوانید از issuewild برای Wildcard و iodef برای گزارش تخلف استفاده کنید. اگر Wildcard SSL دارید یا در حال تصمیمگیری در مورد آن هستید، SSL Wildcard چیست و چه زمانی به آن نیاز داریم را ببینید.
جدول جمعبندی: کدام رکورد برای چه کاری؟
جدول زیر، خیلی سریع به شما میگوید کدام رکورد به چه کاری میآید:
| نوع رکورد | کاربرد اصلی | مثال مقدار |
|---|---|---|
| A | نگاشت نام به IPv4 | 203.0.113.10 |
| AAAA | نگاشت نام به IPv6 | 2001:db8::1 |
| CNAME | نام مستعار برای نام دیگر | example.com. |
| MX | مسیریابی ایمیل | mail.example.com. |
| TXT | تأیید دامنه، SPF، DKIM، DMARC | "v=spf1 ..." |
| NS | اعلام سرورهای Authoritative | ns1.example.com. |
| SOA | سند مدیریتی Zone | دارای ۵ فیلد خاص |
| SRV | سرویسهای خاص مثل SIP | 10 60 5060 sip.example.com. |
| CAA | محدودسازی صدور گواهی SSL | 0 issue "letsencrypt.org" |
پرسشهای پرتکرار درباره رکوردهای DNS
چه تفاوتی بین A و CNAME وجود دارد و کدام را انتخاب کنم؟ اگر میخواهید نام را به یک IP مشخص نگاشت کنید، از A استفاده کنید. اگر میخواهید نام را به یک نام دیگر نگاشت کنید (مثلاً برای سرویسهای شخص ثالث)، از CNAME. اگر سرور شما بهندرت تغییر میکند، A مناسب است؛ اگر میخواهید انعطاف داشته باشید، CNAME.
چرا نمیتوانم روی دامنهی ریشه CNAME داشته باشم؟ چون استاندارد DNS اجازه نمیدهد یک نام هم CNAME باشد و هم رکوردهای دیگر (مثل SOA و NS) داشته باشد. راهحل، استفاده از A Record یا در بعضی سرویسها ALIAS/ANAME است. برای درک مفاهیم مرتبط، تفاوت دامنه و سابدامین چیست را ببینید.
چطور رکوردهای DNS را تست کنم؟ با ابزارهایی مثل dig یا nslookup روی خط فرمان، یا با سرویسهای آنلاین DNS Lookup. برای هر نوع رکورد، دستور مخصوص وجود دارد: dig example.com A برای رکورد A، dig example.com MX برای MX و الی آخر. مسیر کامل عیبیابی در چگونه DNS را عیبیابی کنیم آمده است.
چند رکورد DNS برای یک سایت ضروری است؟ حداقل: یک رکورد A (یا AAAA)، یک رکورد NS برای هر Nameserver، و یک رکورد SOA. اگر ایمیل دارید، رکوردهای MX و SPF و DKIM و DMARC. اگر گواهی SSL دارید، به CAA هم فکر کنید. الگوی حداقلی برای سایتهای ساده، حداقل ۵ رکورد دارد.
آیا ثبت رکورد اشتباه باعث افتی در سئو میشود؟ مستقیم نه، اما اگر خطا باعث outage یا کاهش سرعت شود، رتبه آسیب میبیند. برای درک مسیر، HTTPS چه تاثیری بر سئو و رتبه Google دارد را ببینید.
تفاوت رکورد MX و رکورد A چیست؟ رکورد A برای اشاره به سرور وب (HTTP/HTTPS) استفاده میشود؛ رکورد MX برای اشاره به سرور ایمیل. این دو مستقل از هم هستند و به همین دلیل، میتوانید ایمیل و وب را روی سرورهای جدا داشته باشید.
آیا برای ایمیل سازمانی حتماً به رکورد TXT نیاز دارم؟ بله. برای ارسال ایمیل قابلاعتماد از دامنهی خودتان، حداقل رکورد SPF ضروری است. برای استاندارد بالاتر، DKIM و DMARC هم توصیه میشوند.
رکورد CAA چه فایدهی عملی دارد؟ جلوی صدور گواهی SSL توسط CAهای غیرمجاز را میگیرد. این مهم است چون اگر یک CA نادرست، گواهی برای دامنهی شما صادر کند، مهاجم میتواند خود را جای سایت شما جا بزند. رکورد CAA این در را میبندد.
آیا میتوان رکوردهای DNS را از طریق API مدیریت کرد؟ بله، و این یکی از مزیتهای سرویسهای DNS ابری مدرن است. مدیریت رکوردها از طریق API، امکان IaC (Infrastructure as Code) و مدیریت نسخهبندیشده در Git را میدهد. مفهوم DNS ابری را در DNS ابری چیست و چه تفاوتی با DNS سنتی دارد باز کردهام.
چرا برخی رکوردها TTL بالاتر و برخی پایینتر دارند؟ به الگوی تغییرشان بستگی دارد. رکوردهای کمتغییر مثل NS و MX میتوانند TTL بالا داشته باشند. رکوردهای پرمتغیر مثل A و CNAME بهتر است TTL پایینتری داشته باشند. اگر در حال برنامهریزی مهاجرت هستید، پیش از تغییر TTL را کاهش دهید؛ جزئیات در پروپاگیشن DNS چیست و چقدر طول میکشد.
آیا میتوان یک رکورد DNS را در چند مقدار تعریف کرد؟ بله، و این یکی از قابلیتهای پرکاربرد است. مثلاً برای یک نام میتوانید چند رکورد A یا MX تعریف کنید. برای MX، مقدار Priority تعیین میکند کدامیک اولویت بالاتری دارد؛ برای A، سیستم بهطور پیشفرض بهصورت Round-Robin بین آنها تقسیم میکند.
سهگانهی طلایی هر Zone
اگر یک نکته از این مقاله با خود ببرید، بگذارید این باشد: در هر Zone، سه رکورد نقش بنیادی دارند — A (یا AAAA)، NS و SOA. همهی رکوردهای دیگر روی اینها سوار میشوند. قبل از هر تغییر، ابتدا از این سه مطمئن شوید؛ اگر اینها درست باشند، عیبیابی بقیهی رکوردها بسیار سادهتر است.
در گام بعدی، ایمیل و امنیت اضافه میشوند: MX برای مسیریابی ایمیل، TXT برای تأیید و SPF/DKIM/DMARC، و CAA برای امنیت SSL. رکوردهای دیگر — CNAME، SRV و امثال آن — بر اساس نیاز پروژه اضافه میشوند. اگر در حال تنظیم یک دامنهی جدید هستید، چگونه دامنه را به هاست متصل کنیم و چگونه DNS دامنه را تنظیم کنیم مسیر کامل را نشان میدهد.
برای آشنایی عمیقتر با امنیت در رکوردهای DNS، DNS امن چیست و چه مزایایی دارد را ببینید. و اگر در انتخاب انواع رکورد تجربهای دارید — مخصوصاً اگر یک رکورد پنهان یا اشتباه باعث بحران شده — در دیدگاه بنویسید. جزئیات همان یک رکورد، برای نفر بعدی ارزشمند است. 🌐