DNS چیست؟ راهنمای ساده دی ان اس برای سایت و دامنه

یاسین
1405/7/10
13 دقیقه
51 بازدید
DNS چیست؟ راهنمای ساده دی ان اس برای سایت و دامنه

DNS چیست و چه کاری برای سایت انجام می دهد؟

پاسخ کوتاه: DNS دفترچه تلفن اینترنت است. نام دامنه مثل codeyas.com را به آدرس عددی سرور مثل 185.7.212.89 ترجمه می کند تا مرورگر بداند صفحه را از کجا بگیرد. هر صاحب سایتی بالاخره یک روز به این دفترچه دست می زند: وقتی هاست را عوض می کند، وقتی ایمیل سازمانی راه می اندازد یا وقتی می خواهد یک زیر دامنه بسازد.

این راهنما برای صاحبان سایت نوشته شده، نه برای مهندسان شبکه. اول می گوییم DNS چیست و چگونه کار می کند، بعد با چهار دستور واقعی روی دامنهٔ خودمان نشان می دهیم چطور وضعیت دی ان اس سایت را ببینید، و آخر سر جدول تصمیم می دهیم که چه زمانی باید DNS را تغییر دهید و چه زمانی دست نزنید.

دی ان اس به زبان ساده؛ دفترچه تلفنی که همه هر روز از آن استفاده می کنند

آدم ها نام را یاد می گیرند، رایانه ها عدد را. سرور سایت شما یک آدرس عددی دارد و هیچ کس آن عدد را حفظ نمی کند. دی ان اس همان لایه ای است که بین این دو می نشیند و نام را به عدد تبدیل می کند.

سه نکته که تصویر را کامل می کند:

  • DNS روی همه دستگاه ها و همه مرورگرها فعال است؛ شما کاری برای روشن کردنش نمی کنید.
  • هر دامنه دو بخش مدیریتی دارد: نیم سرور (چه کسی جواب می دهد) و رکوردها (چه جوابی می دهد).
  • هیچ رکوردی روی کامپیوتر شما نیست؛ همه روی سرورهای نیم سرور نوشته شده اند و از آنجا خوانده می شوند.

پرسش «DNS چگونه کار می کند» در یک جمله جواب دارد: مرورگر می پرسد این نام کدام آدرس عددی است و یکی از سرورهای میانی جواب می دهد. بعد همین جواب در کش می ماند تا پرسش بعدی سریع تر باشد.

تفاوت DNS با IP را می شود این طور جمع کرد: IP نشانی واقعی سرور است و DNS نام خوانا برای انسان. اگر آی پی سرور عوض شود، تا وقتی رکورد DNS به روز شود، بازدیدکننده چیزی نمی فهمد.

کابل شبکه پیچیده شده روی میز کار در کنار لپ تاپ خاموش
مسیر یک نام دامنه تا سرور روی همین کابل ها طی می شود؛ هر ایستگاه فقط یک جواب کوتاه می دهد.

از تایپ آدرس تا دیدن صفحه؛ چهار ایستگاه در مسیر

وقتی آدرس سایت را می زنید، این مسیر در چند صدم ثانیه طی می شود:

  1. حافظهٔ دستگاه شما: اگر همین چند دقیقه پیش سایت را باز کرده باشید، جواب در حافظهٔ موقت (کش) مرورگر و سیستم است و هیچ پرسشی بیرون نمی رود.
  2. سرور بازگشتی (Resolver): معمولا سرور اینترنت شما. اگر جواب را نداند، خودش پرسش را ادامه می دهد.
  3. سرورهای ریشه و سرور دامنهٔ سطح بالا: ریشه فقط می گوید برای پسوند .com باید از کجا بپرسید. شماره گذاری نمی کنیم، چون هیچ صاحب سایتی قرار نیست با این سرورها کار کند.
  4. سرور معتبر دامنهٔ شما (نیم سرور): همان جایی که رکوردها را ثبت کرده اید. جواب نهایی از اینجا می آید.

در دامنهٔ خودمان، رکورد NS دو سرور کلادفلر را نشان می دهد: andronicus.ns.cloudflare.com و zita.ns.cloudflare.com. همین دو خط جواب می دهند که تنظیمات دامنه از کجا خوانده شود.

کش (حافظهٔ موقت) بخش مهمی از داستان است: هر جواب یک «زمان اعتبار» دارد و تا وقتی آن زمان تمام نشده، همه همان جواب قدیمی را می بینند. همان چیزی که باعث می شود بعد از تغییر DNS، سایت برای شما باز شود ولی برای مشتری تان باز نشود.

انواع رکورد DNS؛ هر خط چه کاری می کند؟

رکورد یعنی یک خط تنظیمات روی نیم سرور. اگر صاحب سایت هستید، این شش رکورد را باید بشناسید:

رکوردکارش چیستمثال از دامنهٔ ما
Aنام را به آی پی نسخهٔ چهارم وصل می کند؛ رکورد اصلی سایتcodeyas.com → 185.7.212.89
AAAAهمان کار برای آی پی نسخهٔ ششدر دامنهٔ ما خالی است
CNAMEیک نام را به نام دیگر وصل می کند؛ بیشتر برای زیر دامنه هاwww روی همین دامنه تنظیم شده
NSمی گوید نیم سرور دامنه کدام هاستدو سرور کلادفلر
MXایمیل دامنه را به صندوق پستی می رساندباید پیش از هر مهاجرت چک شود
TXTمتن آزاد؛ برای تایید مالکیت و تنظیم ایمیلرکورد ضد اسپم دامنه فعال است
SOAشناسنامهٔ تنظیمات دامنه: شمارهٔ نسخه و زمان های تازه سازیدر دامنهٔ ما فعال است

در اندازه گیری امروز دامنهٔ خودمان این رکوردها را دیدیم: رکورد A روی آی پی 185.7.212.89، رکورد NS روی دو سرور کلادفلر، و رکورد TXT با مقدار ضد اسپم. رکورد AAAA خالی بود؛ یعنی سایت فقط روی آی پی نسخهٔ چهار جواب می دهد. خالی بودن AAAA خطا نیست، ولی اگر ارائه دهندهٔ اینترنت مشتری کم کم به نسخهٔ شش مهاجرت کند، این بحث دوباره بالا می آید.

یک رکورد دیگر هم هست که کم دیده می شود: CAA. این رکورد می گوید کدام شرکت اجازه دارد برای دامنهٔ شما گواهی امنیتی صادر کند. تنظیم نکردنش سایت را قطع نمی کند، ولی جلوی یک نوع سوءاستفاده را می گیرد.

نیم سرور چیست و چه تفاوتی با رکورد دارد؟

این دو را زیاد با هم قاطی می کنند و همین قاطی شدن، علت بیشتر سایت های خرابی است که بعد از مهاجرت پیش می آید.

  • نیم سرور (که به آن سرور DNS هم می گویند) آدرس جایی است که تنظیمات دامنه در آن نگه داشته می شود. با تغییر نیم سرور، تمام رکوردها از جای قبلی به جای جدید منتقل می شوند.
  • رکورد یک خط تنظیمات مشخص است: کدام نام به کدام سرور یا کدام صندوق ایمیل برود.

پس دو راه برای انتقال سایت دارید: یا نیم سرور را عوض می کنید و کل تنظیمات با آن می رود، یا نیم سرور را دست نمی زنید و فقط رکورد A را از آی پی قدیم به آی پی جدید تغییر می دهید. راه اول ساده تر است و خطر جا ماندن رکوردها را دارد، راه دوم کنترل بیشتری می دهد و برای ایمیل سازمانی امن تر است.

کشوی فهرست کارتی چوبی پر از کارت های سفید بدون نوشته
کش و زمان اعتبار همان کارت های فهرست اند: تا وقتی کارت قدیمی معتبر باشد، همه همان جواب را می گیرند.

TTL چیست و چرا تغییر DNS فوری دیده نمی شود؟

TTL عددی است که می گوید یک جواب چند ثانیه اعتبار دارد. هر چه این عدد بزرگ تر باشد، اینترنت سریع تر جواب می دهد و تغییر دادن کندتر دیده می شود. برای دیدن همین عدد، دستور dig codeyas.com A را در خط فرمان اجرا کنید:

$ dig codeyas.com A | grep -A1 "ANSWER SECTION"
;; ANSWER SECTION:
codeyas.com.  300  IN  A  185.7.212.89

در اندازه گیری امروز، TTL رکورد A دامنهٔ ما ۳۰۰ ثانیه (پنج دقیقه) و TTL رکورد NS ۲۱۶۰۰ ثانیه (شش ساعت) بود. یعنی اگر امروز رکورد A را عوض کنیم، در بدترین حالت پنج دقیقه بعد همه جای دنیا جواب تازه را می بینند؛ ولی اگر نیم سرور را عوض کنیم، تا شش ساعت ممکن است کاربران جواب قدیمی بگیرند.

چه چیزی را عوض می کنیدTTL فعلی دامنهٔ ماچقدر باید صبر کنید
رکورد A یا CNAME سایت۳۰۰ ثانیهپنج دقیقه تا نیم ساعت
رکورد ایمیلبستگی به ارائه دهنده داردیک تا چند ساعت
نیم سرور۲۱۶۰۰ ثانیهچند ساعت تا یک روز

نکتهٔ عملی: اگر از قبل می دانید فردا شب هاست را عوض می کنید، امروز TTL را روی ۳۰۰ ثانیه بیاورید. این کار هزینه ای ندارد و شب مهاجرت، سایت شما زودتر بالا می آید.

رکوردها را کجا تنظیم می کنیم؟

دو جای متفاوت وجود دارد و پیدا کردن جای درست، نیمی از کار است:

  • پنل دامنه (رجیسترار): جایی که نیم سرور را عوض می کنید. اگر دامنه را از یک شرکت خریده اید و هاست را از شرکت دیگری گرفته اید، اینجاست که می گویید «جواب دادن به پرسش های دامنه را برو از فلان نیم سرور بگیر».
  • پنل هاست یا پنل نیم سرور: جایی که رکوردها را می نویسید؛ افزودن رکورد A، ساختن زیر دامنه، تنظیم رکورد ایمیل.

اگر نمی دانید رکوردها را در کدام پنل تنظیم کرده اید، اول نیم سرورها را ببینید. نام دامنه ای که در خروجی رکورد NS می آید، شرکت مسئول تنظیمات است.

هر رکورد در پنل با چهار قطعه نوشته می شود: نوع، نام، مقدار و زمان اعتبار. نمونهٔ ساده اش این جدول است:

نوعناممقدار نمونهزمان اعتبار
A@ (خود دامنه)185.7.212.89۳۰۰ ثانیه
CNAMEwww@ (همان دامنه)۳۰۰ ثانیه
TXT@متن ضد اسپم ایمیل۳۰۰ ثانیه
MX@10 mail.example.com۳۰۰ ثانیه

با چهار دستور، وضعیت دی ان اس سایت را خودتان ببینید

لازم نیست منتظر پشتیبانی هاست باشید. این چهار دستور روی لینوکس و مک مستقیم کار می کنند و روی ویندوز به جای دستور dig از nslookup استفاده می کنید.

۱. سایت به کدام آی پی وصل است و نیم سرور دامنه کدام شرکت است؟ دو دستور dig +short codeyas.com و dig +short NS codeyas.com را در ترمینال اجرا کنید:

$ dig +short codeyas.com
185.7.212.89

$ dig +short NS codeyas.com
andronicus.ns.cloudflare.com.
zita.ns.cloudflare.com.

عدد اول را با آی پی هاست جدید مقایسه کنید. اگر همان است، یعنی تغییر DNS شما هنوز برای اینترنت دیده نشده. دو خط بعدی می گوید مسئول تنظیمات دامنه کدام شرکت است.

۲. رکورد ایمیل و رکورد تایید مالکیت چه می گویند؟ با دو دستور زیر بپرسید:

$ dig +short MX codeyas.com
$ dig +short TXT codeyas.com
"v=spf1 ip4:185.7.212.89 include:... ~all"

اگر خروجی رکورد ایمیل خالی باشد یعنی این دامنه هیچ صندوق پستی ندارد. این را پیش از هر مهاجرت چک کنید؛ چون رکورد ایمیل از رکوردهای سایت جداگانه است و آدم ها معمولا فراموش می کنند.

۳. جست و جو چقدر طول می کشد و چند وقته کش می شود؟ دستور curl زمان هر مرحله را جدا نشان می دهد:

$ curl -o /dev/null -s -w "dns=%{time_namelookup}\n" \
  https://codeyas.com/
dns=0.008510
dns=0.011016
dns=0.010944

سه اندازه گیری امروز روی همین سرور: جست و جوی دی ان اس بین ۸ تا ۱۱ میلی ثانیه طول کشید. عدد سلامتی است؛ اگر این عدد روی سایت های ایرانی به چند صد میلی ثانیه برسد، مشکل از سرورهای DNS شما یا اینترنت شماست، نه از سایت.

یک دستور دیگر هم هست که کل زنجیره را از سرورهای ریشه تا نیم سرور نشان می دهد: dig +trace codeyas.com. خروجی این دستور به چند ده خط می رسد و برای صاحب سایت فقط خط آخرش ارزش دارد که همان جواب نهایی است.

چه زمانی DNS را تغییر دهیم و چه زمانی دست نزنیم؟

تغییر DNS خودش هدف نیست. این جدول تصمیم را از تجربهٔ مهاجرت ها نوشته ایم:

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

مهاجرت به هاست جدید: چک لیست تغییر DNS بدون قطع شدن سایت و ایمیل

ترتیب کارها مهم است. این ترتیب هشت مرحله ای، سایت را در کوتاه ترین حالت ممکن پایین نگه می دارد:

  1. پیش از هر چیز، از سایت و پایگاه داده پشتیبان کامل بگیرید.
  2. TTL رکوردهای سایت را یک روز قبل روی ۳۰۰ ثانیه بیاورید.
  3. همهٔ رکوردهای فعلی را از پنل فعلی کپی کنید: A، CNAME، MX، TXT و زیر دامنه ها.
  4. سایت را روی هاست جدید بالا بیاورید و با فایل میزبان روی رایانهٔ خودتان تست کنید تا مطمئن شوید درست کار می کند.
  5. رکوردهای جدید را در پنل جدید بسازید؛ هنوز نیم سرور را عوض نکنید.
  6. حالا نیم سرور را عوض کنید یا رکورد A را تغییر دهید.
  7. ایمیل را جداگانه تست کنید: یک نامه بفرستید و یک نامه دریافت کنید.
  8. دو روز بعد، اگر همه چیز سالم بود، نسخهٔ قدیمی را خاموش کنید.

چه چیزی جا می ماند؟ چهار چیز بیشتر از همه فراموش می شوند: رکورد ایمیل، رکورد تایید مالکیت، زیر دامنه ها (مثل یک پنل مدیریت یا فروشگاه قدیمی) و رکورد CAA. این چهار مورد در چک لیست بالا جای مشخص دارند و باید پر شوند.

پنج خطای رایج DNS و معنای واقعی شان

خطامعنای واقعیکار درست
NXDOMAINاین نام اصلا شناخته نشده است؛ یا رکورد نساخته اید یا دامنه منقضی شدهرکورد را در پنل چک کنید و تاریخ دامنه را ببینید
SERVFAILسرور جواب دادن را قبول کرد ولی نتوانست پاسخ معتبر بدهدمعمولا اشکال موقت سرورهای نیم سرور است؛ چند ساعت بعد دوباره چک کنید
سایت باز نمی شود ولی با موبایل باز می شودکش دستگاه یا اینترنت شما جواب قدیمی را نگه داشتهکش را پاک کنید و از اینترنت دیگری تست بگیرید
ایمیل بعد از مهاجرت قطع شدهرکورد ایمیل منتقل نشده یا مقدارش اشتباه استرکورد ایمیل را از نسخهٔ پشتیبان بازگردانید
سایت برای بعضی کاربران باز می شود و برای بعضی نهمقدار TTL بالاست یا هنوز منتشر نشدهساعت ها صبر کنید؛ این حالت گذراست

امنیت دی ان اس؛ دو تنظیمی که کمتر کسی انجام می دهد

دو مورد امنیتی هست که در اندازه گیری امروز ما هیچ کدام از صفحه های رقیب به آن نپرداخته بودند:

  • قفل امنیتی DNS (DNSSEC): امضای دیجیتال روی رکوردها که جلوی جعل جواب را می گیرد. در اندازه گیری امروز، دامنهٔ ما این قفل را فعال ندارد. برای سایت های فروشگاهی ارزش فعال کردن دارد، ولی پیش از فعال کردن باید بدانید کدام شرکت آن را پشتیبانی می کند.
  • رکورد CAA: می گوید چه کسی حق دارد برای دامنهٔ شما گواهی امنیتی بگیرد.

یک نکتهٔ ساده امنیتی هم هست که هیچ تنظیمی نمی خواهد: هیچ وقت پنل دامنه را با یک رمز تکراری باز نگذرید. دزدیدن پنل دامنه یعنی از دست دادن کل سایت و ایمیل، نه فقط یک فایل.

پایش ماهانه با یک دستور

DNS تنظیم یک باره نیست. هر ماه یک بار این چهار مورد را ببینید: آی پی سایت، نیم سرورها، تاریخ انقضای گواهی امنیتی و تاریخ انقضای دامنه. این حلقهٔ for که با dig کار می کند، همه را یک جا جمع می کند:

$ for t in A NS TXT; do
    echo "== $t"
    dig +short codeyas.com $t
  done
== A
185.7.212.89
== NS
andronicus.ns.cloudflare.com.
zita.ns.cloudflare.com.
== TXT
"v=spf1 ip4:185.7.212.89 include:... ~all"

اگر این خروجی تا ماه دیگر تغییر نکرده باشد، DNS سایت شما سالم است. هر تغییر ناخواسته در این خروجی، یعنی کسی تنظیمات را دست زده است.

و اگر ترجیح می دهید کل این کارها را کسی برایتان انجام دهد و پایش کند، طراحی سایت در شیراز شامل راه اندازی دامنه و ایمیل و پایش دوره ای است.

برای اینکه جای هر قطعه در این نقشه را ببینید، دو مقالهٔ مرتبط کمک می کنند: راهنمای کامل دامنه سایت دربارهٔ خرید و تمدید و مالکیت دامنه است، و هاست چیست و چه انواعی دارد دربارهٔ انتخاب هاست. اگر می خواهید بدانید سایت شما روی چه سروری نشسته و اولین سقفش کدام است، تفاوت سرور اشتراکی، مجازی و اختصاصی را ببینید.

اشتراک‌گذاری مقاله:

سوالات متداول

نظرات کاربران

ارسال نظر جدید

حداقل ۱۰ و حداکثر ۱۰۰۰ کاراکتر

هنوز نظری ثبت نشده است

اولین نفری باشید که دیدگاه خود را می‌نویسد!

مطالب مرتبط

مقالات مشابه که ممکن است برایتان جالب باشد