پیکوسیستم خدمات فنی IT

DNS چیست؟ نحوه کار، رکوردهای A، MX و CNAME و عیب یابی مشکلات DNS

DNS نام دامنه را به آدرس IP تبدیل می کند. مراحل resolve شدن یک نام، انواع رکورد، نقش TTL، عیب یابی با dig و nslookup، مشکل های رایج تنظیم DNS و نکات امنیتی برای شرکت ها.

DNS چیست؟ نحوه کار، رکوردهای A، MX و CNAME و عیب یابی مشکلات DNS

DNS چیست؟ سیستمی که نام دامنه ای مثل example.com را به آدرس IP تبدیل می کند. کامپیوترها با آدرس IP با هم حرف می زنند، ولی ما اسم ها را به خاطر می سپاریم. هر بار آدرس سایتی را در مرورگر می زنید، اول یک پرسش DNS انجام می شود و بعد اتصال واقعی شروع می شود. اگر DNS خراب باشد، سایت و ایمیل و همه سرویس هایی که با نام کار می کنند از دسترس خارج می شوند، حتی وقتی سرور سالم و روشن است.

یک نام چطور resolve می شود

وقتی کامپیوتر آدرس www.example.com را می خواهد، مراحل زیر طی می شود:

  • کامپیوتر اول حافظه موقت خودش و فایل hosts را نگاه می کند.
  • اگر جواب را نداشت، از DNS resolver خودش می پرسد؛ همان DNS که در تنظیمات شبکه یا DHCP آمده، مثلاً DNS ارائه دهنده اینترنت یا یک سرور داخل شرکت.
  • resolver اگر جواب را نداشته باشد از root server می پرسد کدام سرور مسئول پسوند .com است.
  • سرور TLD (مسئول .com) نشان می دهد سرور مرجع (authoritative) دامنه example.com کدام است.
  • سرور مرجع جواب نهایی، یعنی آدرس IP، را می دهد.
  • resolver جواب را برای مدتی در حافظه نگه می دارد و به کامپیوتر برمی گرداند.

بیشتر وقت ها این زنجیره در کسری از ثانیه تمام می شود، چون بخش زیادی از جواب ها از حافظه موقت resolver می آیند.

انواع رکورد DNS

رکورد کاربرد نمونه
A نام را به آدرس IPv4 وصل می کند www.example.com به 203.0.113.10
AAAA نام را به آدرس IPv6 وصل می کند www.example.com به 2001:db8::10
CNAME یک نام را مستعار نام دیگر می کند shop.example.com به www.example.com
MX مشخص می کند ایمیل دامنه به کدام سرور برود mail.example.com با اولویت 10
TXT متن دلخواه؛ برای SPF، DKIM و تأیید مالکیت دامنه v=spf1 ip4:203.0.113.10 ~all
NS سرورهای مرجع دامنه را نشان می دهد ns1.example.net
PTR آدرس IP را به نام برمی گرداند (reverse DNS) 10.113.0.203.in-addr.arpa به mail.example.com
SRV محل سرویس خاص را مشخص می کند، مثل دامین کنترلر اکتیو دایرکتوری _ldap._tcp.example.com

TTL و موضوع «آپدیت شدن DNS»

هر رکورد یک TTL (Time To Live) دارد که به ثانیه است و می گوید resolver ها چقدر می توانند جواب را در حافظه نگه دارند. اگر TTL برابر 3600 باشد، تا یک ساعت بعد از تغییر رکورد هم بعضی کاربران جواب قدیمی را می گیرند.

به همین دلیل پیش از انتقال سایت به سرور جدید، یکی دو روز قبل TTL را روی عدد کوچکی مثل 300 بگذارید. وقتی IP را عوض کردید، تغییر تا 5 دقیقه بعد به بیشتر کاربران می رسد. بعد از اینکه مطمئن شدید همه چیز درست کار می کند، TTL را دوباره بالا ببرید تا فشار روی سرور DNS کم شود. ادعای «DNS تا 48 ساعت طول می کشد» معمولاً به خاطر TTL بالا یا تغییر سرورهای NS است.

ابزارهای عیب یابی: nslookup و dig

برای دیدن اینکه یک نام چه جوابی می گیرد، از nslookup (در ویندوز) یا dig (در لینوکس و macOS) استفاده کنید:

dig example.com A +short
dig example.com MX
dig @8.8.8.8 example.com NS
nslookup -type=TXT example.com

گزینه @8.8.8.8 در dig از یک resolver مشخص می پرسد. وقتی سایت برای شما باز می شود ولی برای دیگران نه، با پرسیدن از چند resolver مختلف می فهمید مشکل از حافظه موقت یک resolver است یا از خود رکورد. دستور dig +trace example.com مسیر کامل از root تا سرور مرجع را نشان می دهد و نقطه خرابی را پیدا می کند.

مشکل های رایج DNS

  • رکورد CNAME روی دامنه اصلی (example.com بدون www) گذاشته شده. استاندارد این را اجازه نمی دهد چون با رکوردهای دیگر دامنه مثل MX و NS تداخل می کند. برای دامنه اصلی از A استفاده کنید یا از قابلیت CNAME flattening سرویس DNS خود.
  • سرورهای NS در محل ثبت دامنه با جایی که رکوردها را ویرایش می کنید یکی نیستند. تغییر رکورد در پنل هاست اثری ندارد اگر NS دامنه به Cloudflare یا جای دیگری اشاره می کند.
  • رکورد MX به نام دامنه ای اشاره می کند که CNAME است. MX باید مستقیم به رکورد A یا AAAA برسد.
  • بعد از انتقال سرور ایمیل، رکوردهای SPF و PTR به روز نشده اند و ایمیل ها به اسپم می روند.
  • در شبکه شرکتی، کامپیوترهای دامین از DNS عمومی استفاده می کنند، پس نام سرورهای داخلی را پیدا نمی کنند. اکتیو دایرکتوری کارش را با رکوردهای SRV در DNS داخلی انجام می دهد، که در اکتیو دایرکتوری چیست هم دیدید.

DNS داخلی و خارجی

شرکت ها معمولاً دو نوع DNS دارند. DNS خارجی (سرور مرجع دامنه عمومی) آدرس سایت و ایمیل را به دنیا اعلام می کند و معمولاً جایی مثل Cloudflare یا ثبت کننده دامنه است. DNS داخلی نام سرورها و کامپیوترهای شبکه شرکت را حل می کند، مثل دامین کنترلر یا یک سرور BIND و Unbound، و برای کار دامین ضروری است.

یک روش رایج، split DNS است: یک نام (مثلاً vpn.example.com) در بیرون به IP عمومی اشاره می کند و در شبکه داخلی به IP خصوصی همان سرویس. به این ترتیب کارمند داخل دفتر مستقیم به سرویس می رسد و لازم نیست ترافیک از اینترنت برگردد.

آدرس DNS کامپیوترها معمولاً با DHCP پخش می شود. اگر می خواهید بدانید چطور، DHCP چیست را بخوانید.

امنیت DNS

  • DNS سنتی رمزگذاری نمی شود. کسی که روی مسیر شبکه است می بیند کاربر کدام نام ها را پرس می کند. DNS over HTTPS (DoH) و DNS over TLS این پرس وجوها را رمز می کنند.
  • DNSSEC جواب ها را امضا می کند تا مهاجم نتواند جواب جعلی تحویل بدهد. فعال کردنش به پشتیبانی ثبت کننده دامنه و سرویس DNS نیاز دارد.
  • سرور DNS داخلی نباید برای همه اینترنت باز باشد (open resolver). مهاجم از آن برای حمله DDoS تقویتی استفاده می کند.
  • دسترسی به پنل ثبت کننده دامنه را با احراز هویت دومرحله ای محافظت کنید. تغییر NS یا رکورد A توسط مهاجم، کل سایت و ایمیل شما را عملاً به او می دهد.
  • رکوردهای قدیمی که دیگر استفاده نمی شوند را پاک کنید. زیردامنه ای که به سرور حذف شده اشاره می کند ممکن است توسط دیگران ثبت و سوءاستفاده شود.

DNS و ایمیل

رکوردهای ایمیل را کامل کنید

برای اینکه ایمیل های دامنه تحویل داده شوند و به اسپم نروند، علاوه بر MX سه رکورد TXT دیگر لازم است. نمونه ها فقط شکل کار را نشان می دهند و مقدار واقعی را سرویس ایمیل شما می دهد:

example.com.                 TXT  "v=spf1 ip4:203.0.113.10 include:_spf.mailprovider.example ~all"
default._domainkey.example.com. TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."
_dmarc.example.com.          TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
  • SPF می گوید چه سرورهایی اجازه دارند به نام دامنه ایمیل بفرستند.
  • DKIM امضای دیجیتال هر ایمیل است و سرور گیرنده با کلید عمومی داخل DNS آن را بررسی می کند.
  • DMARC تعیین می کند اگر SPF یا DKIM جواب ندادند گیرنده چه کند (p=none فقط گزارش، p=quarantine قرنطینه، p=reject رد). با p=none شروع کنید، گزارش ها را بخوانید و بعد سخت گیرانه تر شوید.
  • رکورد PTR (reverse DNS) برای IP سرور ایمیل هم باید به نام سرور اشاره کند. این رکورد را ارائه دهنده IP تنظیم می کند.

انتقال سایت به سرور جدید بدون قطعی

ترتیب امن تغییر DNS هنگام جابجایی سرور:

  • دو روز قبل TTL رکوردهای A و AAAA را روی 300 بگذارید.
  • سایت را روی سرور جدید آماده و تست کنید. برای تست قبل از تغییر DNS، آدرس سرور جدید را در فایل hosts کامپیوتر خودتان بنویسید.
  • رکورد A را به IP جدید تغییر دهید.
  • تا چند ساعت هر دو سرور را سالم نگه دارید، چون بعضی کاربران هنوز IP قدیمی را می گیرند. اگر سایت داده می نویسد (سفارش، فرم)، قبل از جابجایی تعیین کنید چطور داده های دو سرور یکی می شود.
  • وقتی همه چیز پایدار بود، TTL را بالا ببرید.

جزئیات انتقال بین سرورها در صفحه انتقال هاست و سرور آمده است.

پاک کردن حافظه موقت و دیدن تنظیمات

ipconfig /flushdns
ipconfig /all
resolvectl status
resolvectl flush-caches

دو دستور اول ویندوز و دو دستور بعدی لینوکس (systemd-resolved) هستند. بعد از تغییر رکورد، اگر کامپیوتر خودتان هنوز جواب قدیمی می گیرد، اول حافظه موقت خودش را پاک کنید و بعد با dig @8.8.8.8 جواب سرور عمومی را بخوانید تا مطمئن شوید رکورد درست ثبت شده است.

منابع و مستندات رسمی

اگر ایمیل های شرکت شما به اسپم می رود یا برمی گردد، اول رکوردهای DNS دامنه را بررسی کنید. سرور ایمیل سازمانی با رکوردهای درست را می توانید در راه اندازی ایمیل سرور ببینید و DNS و DHCP داخلی شبکه را در نصب و راه اندازی شبکه.

نحوه تهیه مقاله ها

مقاله های مرتبط

استعلام

کارتان را بگویید، مسیر و هزینه را می گوییم

چند خط درباره وضعیت فعلی و چیزی که می خواهید بنویسید. یک مهندس خودش با شما تماس می گیرد و درخواست به واحد فروش نمی رود.

  1. 01درخواست را می خوانیم و اگر ابهامی بود تماس می گیریم.
  2. 02در صورت نیاز، بررسی اولیه ریموت یا بازدید انجام می شود.
  3. 03پیشنهاد مکتوب با دامنه کار، زمان بندی و هزینه می فرستیم.

اطلاعات شما فقط برای پاسخ به همین درخواست استفاده می شود. حریم خصوصی