آموزشآموزش شبکه به زبان ساده

درس ۸۷ از ۹۹، شبکه و اینترنت، حدود ۱۱ دقیقه خواندن

nslookup و dig

جواب کوتاه

nslookup و dig دو فرمان برای پرسیدن مستقیم از DNS‌اند: می‌گویند یک نام به چه نشانی‌ای می‌رسد، و هر رکورد دیگری مثل MX، TXT یا NS را هم می‌آورند. nslookup در ویندوز، مک و لینوکس هست؛ dig بیشتر در مک و لینوکس. می‌شود از یک سرور مشخص پرسید. «Non-authoritative answer» یعنی جواب از سروری آمده که مرجع آن دامنه نیست، و عیب نیست. «Nonexistent domain» یا NXDOMAIN یعنی چنین نامی وجود ندارد.

نام

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

وقتی سایتی باز نمی‌شود، یکی از اولین پرسش‌ها این است که «DNS درست جواب می‌دهد یا نه؟» این دو فرمان جواب همین پرسش‌اند.

میز اطلاعات کتابخانه

فرض کنید در کتابخانه‌ای بزرگ دنبال کتابی هستید. از میز اطلاعات می‌پرسید «این کتاب کجاست؟» و جواب می‌گیرید «قفسه‌ی ۱۲». اگر کتابدار میز نداند، از کتابدار همان بخش می‌پرسد و جواب را در دفترچه‌اش می‌نویسد تا دفعه‌ی بعد دوباره نپرسد:

میز اطلاعات همان سرور DNS خانه یا اپراتور شماست، کتابدار بخش سرور مرجع آن دامنه، و دفترچه همان حافظه‌ی نهان. nslookup و dig یعنی خودتان پشت میز بروید و بپرسید.

nslookup و خواندن جوابش

در Command Prompt ویندوز، یا ترمینال مک و لینوکس، بنویسید nslookup و نام:

C:\> nslookup example.com
Server:   router.home
Address:  192.168.1.1

Non-authoritative answer:
Name:     example.com
Addresses: 2001:db8::10
           203.0.113.10

دو خط اول می‌گویند از کدام سرور DNS پرسیده شد؛ همانی که در ipconfig /all دیدید. بعد، نام و نشانی‌هایش: نشانی IPv6 و نشانی IPv4. اگر به‌جای نام، نشانی IP بدهید، nslookup نام آن نشانی را برمی‌گرداند.

Non-authoritative answer

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

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

پرسیدن نوع رکورد

DNS فقط نشانی نگه نمی‌دارد. هر نام چند جور رکورد دارد، و با -type= می‌گویید کدام را می‌خواهید:

نوعفرمانچه می‌گوید
Anslookup -type=A example.comنشانی IPv4
AAAAnslookup -type=AAAA example.comنشانی IPv6
MXnslookup -type=MX example.comسرور ایمیل دامنه
TXTnslookup -type=TXT example.comمتن؛ اثبات مالکیت و تنظیم ایمیل
CNAMEnslookup -type=CNAME www.example.comنام مستعار
NSnslookup -type=NS example.comسرورهای مرجع دامنه

مثلا اگر ایمیل‌های دامنه‌ای نمی‌رسد، اول رکورد MX آن را ببینید. معنی هر رکورد را در درس DNS دیدید.

پرسیدن از یک سرور مشخص

اگر نشانی یک سرور DNS را بعد از نام بنویسید، nslookup به‌جای سرور پیش‌فرض از همان می‌پرسد:

nslookup example.com 198.51.100.53

این کار برای مقایسه است: اگر سرور خانه جواب کهنه یا هیچ جوابی نمی‌دهد و سرور دیگر جواب درست می‌دهد، مشکل از سرور خانه است. نشانی این مثال نمونه است؛ نشانی سرور DNS دیگرتان را بگذارید.

حالت تعاملی

اگر nslookup را تنها و بی نام بنویسید، به حالت تعاملی می‌رود: اعلان به > عوض می‌شود و می‌توانید چند پرسش پشت سر هم بپرسید:

C:\> nslookup
> set type=MX
> example.com
> server 198.51.100.53
> example.com
> exit

set type= نوع رکورد را عوض می‌کند، server سرور را، و exit بیرون می‌آید. این کار برای وقتی است که چند چیز را با هم می‌سنجید.

dig و برگه‌اش

dig فرمانی است که بیشتر مدیران DNS برای عیب‌یابی از آن استفاده می‌کنند، چون جواب را کامل و مرتب نشان می‌دهد. روی مک هست و در لینوکس هم به کار می‌رود. شکلش: dig @server name type، یعنی سرور، نام و نوع رکورد؛ سرور و نوع را می‌شود ننوشت، و آن‌وقت از سرور پیش‌فرض رکورد A را می‌پرسد. جوابش برگه‌ای چندبخشی است:

عدد ۳۶۰۰ در بخش جواب همان TTL است: این جواب را تا ۳۶۰۰ ثانیه، یعنی یک ساعت، می‌شود نگه داشت. سه شکل کوتاه‌تر هم به کار می‌آید: dig +short example.com فقط نشانی را می‌دهد، dig -x 203.0.113.10 برعکس از نشانی نام را می‌پرسد، و dig +trace example.com راه پرسش را از سرورهای ریشه تا سرور مرجع نشان می‌دهد.

پیام‌های خطا

سه پیام رایج و معنی هر کدام:

Nonexistent domain: «چنین کتابی نداریم»: این نام اصلا وجود ندارد؛ شاید غلط تایپی است. dig آن را NXDOMAIN می‌نویسد.
No records: «کتاب هست، ولی ترجمه‌اش را نداریم»: نام درست است، ولی رکوردی از این نوع ندارد.
timed out: «کسی پشت میز نیست»: سرور DNS در مهلت جواب نداد؛ شاید راه تا سرور مشکل دارد.

DNS است یا نه؟ قدم‌به‌قدم

  1. nslookup نام سایت: جواب آمد؟ اگر Nonexistent domain گفت، نام را دوباره ببینید؛ اگر timed out، سرور DNS جواب نمی‌دهد.
  2. همان پرسش از سرور DNS دیگر: اگر سرور دیگر جواب درست داد و سرور خودتان نه، مشکل از سرور DNS شماست.
  3. از سرور مرجع دامنه بپرسید: با nslookup -type=NS سرورهای مرجع را پیدا کنید و از یکی‌شان بپرسید؛ اگر جوابش با بقیه فرق دارد، رکورد تازه عوض شده و کش‌ها هنوز کهنه‌اند.
  4. DNS درست بود؟: اگر نشانی درست آمد، DNS سالم است؛ آن نشانی را ping کنید و بقیه‌ی راه را بگردید.

قدم آخر شما را به ping و traceroute برمی‌گرداند.

سه اشتباه

  • «Non-authoritative یعنی جواب غلط است.»فقط یعنی جواب از سرور مرجع نیامد؛ بیشتر جواب‌های درست همین‌اند.
  • «رکورد را عوض کردم، پس همه باید فورا نشانی تازه را ببینند.»سرورها جواب کهنه را تا تمام شدن TTL نگه می‌دارند؛ تا آن موقع بعضی نشانی کهنه را می‌بینند.
  • «nslookup جواب داد، پس سایت باید باز شود.»nslookup فقط می‌گوید نام به چه نشانی‌ای می‌رسد؛ راه تا آن نشانی و خود سایت جداگانه آزموده می‌شوند.

جمع‌بندی. آنچه از این درس با خودتان می‌برید.

  • nslookup نام: نشانی آن نام از سرور DNS پیش‌فرض.
  • -type=MX و مانند آن: پرسیدن نوع رکورد.
  • نام سرور بعد از نام: پرسیدن از آن سرور.
  • Non-authoritative: از سرور مرجع نیامده؛ عیب نیست.
  • dig: برگه‌ی کامل جواب، با TTL و سرور پاسخ‌دهنده.
  • NXDOMAIN: چنین نامی نیست.

خودتان را بسنجید

۱۵ پرسش، هر بار تازه از میان ۳۰ پرسش این درس. آخر آزمون فقط کارنامه را می‌بینید: چند درست، چند نادرست.

خودتان را بسنجید

۱۵ پرسش

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

فصل‌های این درس

درس بعد