عیب یابی DNS با دستور dig

چگونه DNS را با dig و nslookup عیب یابی کنیم؟

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

در واقع توسط این ابزارها میتوان به صورت دقیق و موثر مشکلاتی اعم از اتصال دامنه به IP و یا امکان کش آنها نسبت به یکدیگر، ایمیل، تنظیمات DNS را مورد بررسی قرار داد. در ادامه همین مقاله از بلاگ وب‌داده به نحوه نصب دستور nslookup و dig خواهیم پرداخت و راه حل و نحوه عیب‌یابی DNS را به درستی و گام به گام آموزش می‌دهیم. با من در ادامه این مقاله همراه باشید.

DNS چیست؟

DNS مخفف Domain Name System و یا سیستم نام دامنه است. به زبان ساده، DNS مانند یک دفترچه تلفن برای اینترنت عمل می‌کند. همانطور که شما برای تماس با دوستتان به جای شماره تلفن، نام او را به خاطر می‌آورید، در اینترنت هم به جای وارد کردن آدرس IP پیچیده یک وبسایت، نام دامنه آن را مثل google.com در مرورگر خود تایپ می‌کنید.

DNS به زبان ساده میتواند آدرس IP را به نام دامنه متصل کند.اگر DNS نباشد ما باید به جای آدرس و نام هر سایت آدرس IP وبسایت ها را بیاد بسپاریم که این موضوع عملا با تعداد بسیار زیاد وبسایت ها و غیر ممکن است. در واقع DNS باعت می‌شود. به عنوان مثال IP 192.0.2.1 به آدرس دامنه مقابل www.example.com اشاره دارد.

عیب یابی DNS با دستور dig
عیب یابی DNS با دستور dig

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

آشنایی با دستورات nslookup و dig

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

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

دستور nslookup چیست؟

nslookup مخفف عبارت Name Server Lookup است و یکی از ابزارهای کاربردی در سیستم‌عامل‌های مختلف مانند ویندوز، لینوکس و macOS محسوب می‌شود. این دستور جهت دریافت اطلاعات مربوط به رکوردهای DNS و کلیه اطلاعات مربوط به دامنه موردنظر استفاده می‌شود. توسط nslookup جزئیات مختلفی درباره‌ی یک دامنه، مانند: آدرس‌های IP، سرورهای ایمیل، و سایر رکوردهای DNS مورد بررسی قرار میگیرد.

کاربردهای عیب‌یابی nslookup و dig

1- مشکلات DNS

تشخیص مشکلاتی همچون ترجمه درست نام دامنه به آدرس IP. بررسی تنظیمات DNS و مشکلات مربوط به آن که ممکن است باعث اختلال در دسترسی به وب‌سایت‌ها یا سرویس‌های آنلاین شود.

2- دریافت اطلاعات DNS

مشاهده رکوردهای مختلف DNS. بررسی و تأیید تنظیمات DNS برای دامنه‌ها و زیر دامنه‌ها.

3- بررسی سرور DNS

بررسی DNS پیش‌فرضی که سیستم شما از آن استفاده می‌کند. تغییر سرور DNS پیش‌فرض به سرورهای دیگر.

دستور nslookup در سیستم ویندوز

برای اجرای دستور nslookup در سیستم های ویندوزی و یا سرور هایی با سیستم عامل ویندوز از طریق CMD و در سرور و یا سیستم شخصی استفاده کنید و کد زیر را وارد محیط ترمینال کنید.

nslookup www.example.com

در این دستور به جای www.example.com تنها کافی است آدرس دامنه مورد نظر را تایپ کنید تا اطلاعات مربوز به دامنه مانند درس IP متصل و … نمایش داده شوند.

نصب nslookup در سیستم لینوکس

دستور nslookup در اکثر سیستم های لینوکسی فعال است اما اگر پس از استفاده از دستور با پیغامی غیر از اطلاعات DNS مواجه شدید باید ابزار را نصب کنید. پس برای نصب در سیستم های لینوکسی و برای توزیع‌های مبتنی بر Debian/Ubuntu از کد دستوری زیر استفاده کنید:

sudo apt-get update
sudo apt-get install dnsutils

و برای توزیع‌های لینوکسی مبتنی بر Red Hat/CentOS/Fedora میتوانید از دستور زیر استفاده کنید:

sudo yum install bind-utils

و برای توزیع‌های مبتنی بر Arch Linux از کد دستوری زیر استفاده کنید:

sudo pacman -S bind-tools

نصب nslookup در سیستم macOS

سیستم عامل mac این ابزار را به صورت پیش‌فرض بر روی خود نصب شده دارد اما اگر نیازی به نصب این ابزار دارید تنها کافی است با کد دستوری زیر و استفاده از ابزار مدیریت بسته Homebrew، نصب nslookup را انجام دهید.

brew install bind

پارامترهای قابل نمایش در دستور nslookup

ابزار nslookup با ارائه طیف وسیعی از دستورات، به شما امکان می‌دهد تا مشکلات مربوط به سیستم نام دامنه (DNS) را به طور دقیق تشخیص داده و عیب‌یابی کنید. از این ابزار قدرتمند می‌توان برای بررسی وضعیت دامنه‌ها، یافتن آدرس‌های IP و رفع خطاهای مختلف DNS استفاده کرد.

پارامترتوضیحات
nslookup exitاین دستور خط فرمان nslookup را خاتمه می‌دهد .
nslookup fingerجهت دریافت اطلاعات کاربر از سرور finger بر روی سیستم استفاده میکند.
nslookup helpراهنمای کار با دستور nslookup.
nslookup lsبرای نمایش تمام رکوردهای DNS، یک دامنه استفاده می‌شود.
nslookup lserverسرور پیش‌فرض را به دامنه DNS مشخص شده تغییر می‌دهد.
nslookup rootسرور پیش‌فرض را به سرور ریشه نام دامنه DNS تغییر می‌دهد. سرورهای ریشه بالاترین سطح سلسله مراتب DNS هستند.
nslookup serverسرور DNS پیش‌فرض را به سرور DNS مشخص شده تغییر می‌دهد. مشابه lserver است و برای هدایت پرس‌وجوها به سرور دیگری استفاده می‌شود.
nslookup setتنظیمات config را که بر نحوه عملکرد پرس‌وجوها و اطلاعات تأثیر می‌گذارد، تغییر می‌دهد.
nslookup set allکلیه کانفیگ اصلی تنظیمات را نمایش می‌دهد. که شامل تمام پارامترهای تنظیم شده در nslookup است.
nslookup set classکلاس پرس‌وجو را تغییر می‌دهد. کلاس مشخص می‌کند که اطلاعات مورد نظر به کدام گروه پروتکل تعلق دارد (مانند IN برای اینترنت).
nslookup set d2حالت دیباگ جامع (Debugging mode) را روشن یا خاموش می‌کند. در این حالت تمام فیلدهای هر بسته چاپ می‌شوند که برای عیب‌یابی پیشرفته مفید است.
nslookup set debugحالت دیباگ را روشن یا خاموش می‌کند. در این حالت اطلاعات بیشتری درباره فرآیند پرس‌وجو نمایش داده می‌شود.
nslookup set domainنام دامنه DNS پیش‌فرض را به نام مشخص شده تغییر می‌دهد. این نام دامنه برای تکمیل خودکار نام‌های میزبان استفاده می‌شود.
nslookup set portپورت پیش‌فرض TCP/UDP سرور نام DNS را به مقدار مشخص شده تغییر می‌دهد. معمولا برای تنظیم سرور DNS روی پورت غیر استاندارد استفاده می‌شود.
nslookup set querytypeنوع رکورد منابع (resource record) را برای پرس‌وجو تغییر می‌دهد. به عنوان مثال، تغییر به A، MX، TXT و غیره.
nslookup set recurseبه سرور نام DNS می‌گوید که اگر اطلاعات را ندارد، از سرورهای دیگر پرس‌وجو کند. این گزینه عموما برای داشتن اطمینان از کامل بودن پاسخ استفاده می‌شود.
nslookup set retryتعداد دفعات تلاش مجدد برای پرس‌وجو را تنظیم می‌کند. اگر پاسخ دریافت نشود، این تعداد دفعات تلاش مجدد انجام می‌شود.
nslookup set rootنام سرور ریشه‌ای که برای پرس‌وجوها استفاده می‌شود را تغییر می‌دهد. این فرمان به شما امکان می‌دهد سرور ریشه خاصی را تعیین کنید.
nslookup set searchنام‌های دامنه DNS در لیست جستجوی دامنه DNS را به درخواست اضافه می‌کند تا زمانی که پاسخی دریافت شود. این مورد زمانی کاربرد دارد که درخواست حاوی حداقل یک نقطه باشد اما با نقطه پایانی نباشد.
nslookup set srchlistنام دامنه DNS پیش‌فرض و لیست جستجوی دامنه را تغییر می‌دهد. این تنظیمات برای تکمیل خودکار نام‌های میزبان استفاده می‌شوند.
nslookup set timeoutتعداد ثانیه‌های اولیه برای انتظار پاسخ به یک درخواست را تغییر می‌دهد. اگر در این مدت پاسخی دریافت نشود، تلاش برای دریافت مجدد انجام می‌شود.
nslookup set typeنوع رکورد منابع (resource record) را برای پرس‌وجو تغییر می‌دهد. مشابه set querytype است و برای تعیین نوع رکورد مورد نظر استفاده می‌شود.
nslookup set vcمشخص می‌کند که از یک مدار مجازی (virtual circuit) هنگام ارسال درخواست‌ها به سرور استفاده شود یا خیر. این گزینه معمولا برای آزمایش و عیب‌یابی استفاده می‌شود.
جدول پارامترهای دستور nslookup

دریافت تست nslookup

برای دریافت اطلاعات DNS با استفاده از nslookup، تنها کافی است نام دامنه دلخواه را به عنوان ورودی وارد کنید. در این بخش تست را بر روی آدرس دامنه Goolge انجام ‌ می‌دهیم:

nslookup www.Google.com

پس از وارد کردن این کد دستوری در سیستم های لینوکس و ویندوز با اطلاعات زیر مواجه می‌شوید:

عیب یابی DNS با دستور Dig

دریافت اطلاعات از DNS خاص در خروجی nslookup:

دستور nslookup به صورت پیش‌فرض از DNS هایی که بر روی سرور و یا سیستم خود ثبت کرده اید استفاده می‌کند. برای دریافت اطلاعات و یا پرس و جو از دیگر DNS ها مانند: DNS های اصلی گوگول و یا کلودفلر تنها کافی است DNS مورد نظر را مانند کد دستوری زیر وارد کنید:

nslookup domain_name dns_server
nslookup Google.com 1.1.1.1
عیب یابی DNS با دستور Dig

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

نتایج بدست آمده و مقایسه نتیجه‌ها میتواند نشان‌دهنده‌ی صحت تنظیمات DNS و یا امکان نیاز به بررسی و تنظیمات مجدد DNS را شامل شود.

تایید رکوردهای MX با استفاده از nslookup

رکورد MX، به عنوان عضو اصلی سیستم‌های ایمیل، نقشی اساسی در تحویل صحیح و به موقع ایمیل‌ها ایفا می‌کنند. این رکوردها، آدرسی دقیق از سرورهای ایمیل را به انواع سرورهای ارسال‌کننده ایمیل، ارائه می‌دهند تا ایمیل‌ها بتوانند به درستی مسیریابی شده و به صندوق پستی مقصد برسند.
بدون وجود MX رکورد درست، ایمیل‌ها گم شده یا به مقصدهای نادرست ارسال خواهند شد و این امر به شدت بر ارتباطات اینترنتی و عملکرد کسب‌وکارها تاثیر می‌گذارد.

جهت دریافت رکوردهای MX دامنه‌ی Google.com تنها کافی است کد دستوری زیر را وارد کنید:

nslookup -type=MX Google.com

خروجی مانند تصویر زیر است:

عیب یابی DNS با دستور Dig
  • Server: سرور DNS مورد استفاده برای پرس‌وجو
  • Address: آدرس IP سرور
  • Non-authoritative answer: این بخش به این معناست که اطلاعات از کش سرور DNS بازگشتی آمده است و نه از سرور DNS اصلی دامنه.
  • MX preference: سروری با اولویت پایین‌تر (عدد کمتر) ابتدا امتحان می‌شود.
  • mail exchanger: نام سرور ایمیل مسئول دریافت ایمیل‌های دامنه.

دستور dig چیست؟

دستور dig مخفف عبارت Domain Information Groper و یکی از ابزارهای قدرتمند در یافت کلیه مشکلات DNS ها است.این ابزار به صورت پیش‌فرض بر روی سیستم های لینوکسی فعال است و این امکان را به کاربران می دهد تا کلیه رکوردهای DNS مانند MX، NS و … را تحلیل کنند و در عیب‌یابی DNS موفق شوند. این ابزار یعنی dig هم مانند nslookup است اما با این تفاوت که بسیار حرفه‌ای تر عمل می‌کند و برای کاربرانی با سطح علمی بالاتر که نیاز به اطلاعات بیشتری دارند کاربرد دارد.

نصب dig در سیستم لینوکس

این ابزار به صورت پیش‌فرض بر روی سیستم‌های لینوکسی نصب است اما اکر نیاز به دستور نصب این ابزار را دارید می‌توانید از دستورات زیر استفاده کنید:

نصب دستور dig در Debian و Ubuntu:

apt-get install -y dnsutils

نصب ابزار dig در CentOS و Redhat:

yum install -y bind-utils

پارامترهای قابل نمایش دستور dig

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

TTL چیست؟
TTL (Time To Live) مقداری عددی از صفر تا حداکتر 255 است که زمانی برای اعتبار بسته را نمایش می‌دهد. یعنی یک بسته در یک شبکه به ازای هر عبور از یک روتر، مقدار TTL آن کاهش می‌یابد و زمانی که این مقدار یعنی TTL=0 باشد، بسته از شبکه حذف می‌شود تا از گردش نامحدود آن، جلوگیری شود.

در DNS:
TTL مدت زمانی است که یک رکورد DNS (مانند آدرس‌های IP یا سایر رکوردها) در کش سرورها یا دستگاه‌های کلاینت ذخیره می‌شود. وقتی رکوردی درخواست می‌شود، پاسخ همراه با مقدار TTL ارسال می‌شود و تا زمانی که این مقدار به پایان نرسد، همان اطلاعات ذخیره شده بدون درخواست مجدد از سرور اصلی استفاده می‌شود.

دریافت تست dig

ابزار dig را میتوان جهت کاربرد های مختلف و دریافت اطلاعات کاربردی جهت خطاهای مربوط به نام دامنه استفاده کرد. و اما اولین اطلاعات بدست آمده از دستورات به صورت زیر است:

ستورات پایه‌ای dig برای استعلام DNS

در این دستور آدرس IPv4 را می‌توایند دریافت کنید:

dig Google.com
عیب یابی DNS با دستور Dig
  • QUESTION SECTION: نشان‌دهنده‌ی پرس‌وجوی انجام شده است.
  • ANSWER SECTION: پاسخ دریافتی شامل رکورد A دامنه است.
  • Query time: زمان لازم برای دریافت پاسخ.
  • SERVER: سرور DNS مورد استفاده برای پرس‌وجو.
  • WHEN: زمان انجام پرس‌وجو.
  • MSG SIZE rcvd: اندازه پیام دریافتی.

MX رکورد چیست؟
MX رکورد یا Mail Exchanger رکوردی در سیستم DNS است که تعیین می‌کند ایمیل‌های ارسال شده از طریق پروتکل SMTP (پروتکل های ایمیل)به کدام سرور یا سرورهای دریافتی، هدایت شوند. این رکورد مشخص می‌کند که ایمیل‌های ورودی برای یک دامنه به کدام سرور تحویل داده شوند.علاوه بر این، MX رکوردها امکان تنظیم اولویت برای سرورها را فراهم می‌کنند، به طوری که در صورت عدم دسترسی به سرور اصلی (با اولویت بالاتر)، ایمیل‌ها به سرورهای جایگزین با اولویت پایین‌تر هدایت می‌شوند. این ساختار باعث می‌شود تا تحویل ایمیل‌ها حتی در شرایط ناپایدار برخی سرورها به‌صورت پیوسته و بدون وقفه انجام شود.

💡 بیشتر بدانید: آشنایی با پروتکل های ایمیل: POP3 IMAP و SMTP و پورت های آنها

بررسی رکورد MX دامنه با dig:

جهت دریافت رکوردهای MX دامنه‌ی Google.com تنها کافی است کد دستوری زیر را وارد کنید:

dig MX Google.com
عیب یابی DNS با دستور Dig

بررسی تمامی رکوردهای DNS یک دامنه:

جهت بررسی تمامی رکوردهای DNS یک دامنه تنها کافی است از دستور dig به همراه پارا متر ANY استفاده کنید و خروجی را دریافت کنید:

dig google.com ANY
  • dig: ابزار خط فرمان برای انجام پرس‌وجوهای DNS.
  • google.com: دامنه‌ای که می‌خواهید رکوردهای DNS آن را بررسی کنید.
  • ANY: نوع رکورد که تمام نوع‌های DNS را شامل می‌شود.
root@--------:~# dig google.com ANY

; <<>> diG 9.18.30-0ubuntu0.24.04.1-Ubuntu <<>> google.com ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3018
;; flags: qr rd ra; QUERY: 1, ANSWER: 30, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com.                    IN      ANY

;; ANSWER SECTION:
google.com.             257     IN      A       108.177.119.102
google.com.             257     IN      A       108.177.119.139
google.com.             257     IN      A       108.177.119.101
google.com.             257     IN      A       108.177.119.113
google.com.             257     IN      A       108.177.119.138
google.com.             257     IN      A       108.177.119.100
google.com.             257     IN      AAAA    2a00:1450:4013:c00::65
google.com.             257     IN      AAAA    2a00:1450:4013:c00::71
google.com.             257     IN      AAAA    2a00:1450:4013:c00::66
google.com.             257     IN      AAAA    2a00:1450:4013:c00::8b
google.com.             3557    IN      TXT     "google-site-verification=4ibFUg                    B-wXLQ_S7vsXVomSTVamuOXBiVAzpR5IZ87D0"
google.com.             3557    IN      TXT     "v=spf1 include:_spf.google.com                     ~all"
google.com.             21557   IN      NS      ns3.google.com.
google.com.             3557    IN      TXT     "apple-domain-verification=30afI                    BcvSuDV2PLX"
google.com.             257     IN      MX      10 smtp.google.com.
google.com.             3557    IN      TXT     "MS=E4A68B9AB2BB9670BCE15412F629                    16164C0B20BB"
google.com.             21557   IN      CAA     0 issue "pki.goog"
google.com.             21557   IN      HTTPS   1 . alpn="h2,h3"
google.com.             17      IN      SOA     ns1.google.com. dns-admin.google                    .com. 713984766 900 900 1800 60
google.com.             3557    IN      TXT     "docusign=1b0a6754-49b1-4db5-854                    0-d2c12664b289"
google.com.             3557    IN      TXT     "cisco-ci-domain-verification=47                    9146de172eb01ddee38b1a455ab9e8bb51542ddd7f1fa298557dfa7b22d963"
google.com.             21557   IN      NS      ns1.google.com.
google.com.             3557    IN      TXT     "docusign=05958488-4752-4ef2-95e                    b-aa7ba8a3bd0e"
google.com.             21557   IN      NS      ns4.google.com.
google.com.             3557    IN      TXT     "google-site-verification=wD8N7i                    1JTNTkezJ49swvWW48f8_9xveREV4oB-0Hf5o"
google.com.             3557    IN      TXT     "globalsign-smime-dv=CDYX+XFHUw2                    wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8="
google.com.             3557    IN      TXT     "onetrust-domain-verification=de                    01ed21f2fa4d8781cbc3ffb89cf4ef"
google.com.             3557    IN      TXT     "facebook-domain-verification=22                    rm551cu4k0ab0bxsw536tlds4h95"
google.com.             21557   IN      NS      ns2.google.com.
google.com.             3557    IN      TXT     "google-site-verification=TV9-DB                    e4R80X4v0M4U_bd_J9cpOJM0nikft0jAgjmsQ"

;; Query time: 2 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (TCP)
;; WHEN: Sat Jan 11 12:46:27 UTC 2025
;; MSG SIZE  rcvd: 1285

مشاهده میکنید که تمامی رکوردهای مربوط به دامنه google.com که شامل A، MX، NS، TXT و CNAME و… است در حال نمایش هستند.

البته برای دریافت اطلاعات کمتر و مفید تر میتوانید از دستور زیر استفاده کنید:

dig google.com ANY +short
142.250.190.78
google.com.    MX 10 aspmx.l.google.com.
google.com.    MX 20 alt1.aspmx.l.google.com.
google.com.    MX 20 alt2.aspmx.l.google.com.
google.com.    MX 30 alt3.aspmx.l.google.com.
google.com.    MX 30 alt4.aspmx.l.google.com.
google.com.    NS ns1.google.com.
google.com.    NS ns2.google.com.
google.com.    TXT "v=spf1 include:_spf.google.com ~all"
www.google.com. CNAME www.google.com.
  • A: آدرس IPv4 دامنه.
  • MX: سرورهای ایمیل دامنه با اولویت‌های مختلف.
  • NS: سرورهای نام دامنه.
  • TXT: رکوردهای متنی مانند SPF.
  • CNAME: نام مستعار دامنه.

مقایسه دستور nslookup و dig

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

ویژگیnslookupdig
ساده و راحت
قابلیت‌هاپایه ایحرفه‌ای
خروجیخلاصه با جرئیات کممفصل
پشتیبانی سیستمویندوز، لینوکس، macOSلینوکس، macOS
انعطاف‌پذیریکمبالا
کاربردعیب یابی سطحی DNSعیب یابی دقیق و حرفه‌ای DNS

مشکلات رایج DNS برای کاربران و راهکارهای حل آن‌ها با nslookup و dig

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

کش DNS چیست؟

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

پس کش DNS یک حافظه موقتی است که تمامی نتایج جستجوی نام دامنه ها را ذخیره می‌کند. یعنی وقتی شما آدرس یک سایت را در مرورگر خود تایپ می‌کنید، سیستم شخصی شما ابتدا کش DNS خود را بررسی می‌کند تا ببیند آیا آدرس IP مربوط به آن دامنه قبلا ذخیره شده است و یا خیر.

اگر ذخیره شده باشد، سیستم به جای ارسال درخواست مجدد به سرور DNS، از اطلاعات موجود در کش استفاده می‌کند که باعث افزایش سرعت دسترسی به سایت می‌شود. هر رکورد در کش DNS دارای یک زمان انقضا (TTL) است که پس از گذشت آن، رکورد از کش حذف می‌شود و در صورت نیاز مجددا باید از سرور DNS درخواست شود.

مشکلات مربوط به کش DNS

عدم هماهنگی در نمایش اطلاعات

گاهی ممکن است رکوردهای DNS تغییر کنند اما بازهم به دلیل کش DNS برخی سرورها رکوردهای قدیمی را نگه‌دارند در این حالت بازهم اطلاعات قدیمی و اشتباه لود می‌شود.

نمایش اطلاعات قدیمی

گاهی ممکن است اطلاعات زیر ساختی مانندآدرس IP یک وبسایت تغییر کند اما با توجه به مدت زمان کش DNS که توضیح دادیم وبسایت از آدرس قدیمی لود شود و اطلاعات جدید بروز نشود. در این حالت اگر با سیستم دیگری بررسی کنید اطلاعات با آدرس IP جدید بدست می آیند. در این حالت میگوییم کش DNS رخ داده است. و باید از ابزارهای Clear cache استفاده کنید.

📌 درنظر داشته باشید استفاده از ابزارهایی مانند: drill در برخی سیستم‌ها جایگزین ابزار dig شده است.

عیب یابی کش DNS با دستورات nslookup و dig

1- ابتدا از دستور nslookup استفاده کنید و آدرس دامنه وبسایت خود را وارد کنید:

nslookup www.example.com

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

Server:  dns.google
Address:  8.8.8.8

Non-authoritative answer:
Name:    www.example.com
Address: 93.184.216.34

2- از ابزار dig استفاده کنید و دستور زیر را وارد کنید:

درنظر داشته باشید برای بدست آوردن اطلاعات درست می‌توانید از DNS های معتبر مانند: Cloudflare (1.1.1.1) و Google (8.8.8.8) استفاده کنید تا از آدرس IP جدید و درست اطمینان حاصل کنید. در این حالت کد دستوری زیر را میتوانید وارد کنید:

dig @1.1.1.1 www.example.com A

حال خروجی را دریافت کنید. در این بخش اگر آدرس IP دریافت شده از سرور Cloudflare (1.1.1.1) با آدرس IP جدید شما مطابقت داشت، مشکل کش در سرور DNS پیش‌فرض شما رخ داده است.

;; ANSWER SECTION:
www.example.com.  300 IN A 93.184.216.35

راه‌حل‌ رفع مشکل کش DNS

جهت رفع مشکل کش DNS در انواع سیستم ها می‌توانید کد های دستوری زیر را وارد کنید.

رفع مشکل کش DNS در ویندوز:

ipconfig /flushdns

رفع مشکل کش DNS در macOS:

sudo killall -HUP mDNSResponder

رفع مشکل کش DNS در لینوکس:

رفع مشکل کش DNS در سیستم های لینوکسی کمی متفاوت است. در واقع قبل از درخواست به پاک‌سازی کش DNS، باید بدانید که سیستم شما از کدام سرویس مدیریت کش DNSاستفاده می‌کند؟ سرویس‌های مدیریت کش شامل موارد زیر هستند:

  • Unbound
  • systemd-resolved
  • nscd (Name Service Cache Daemon)
  • dnsmasq

جهت یافتن سرویس سیستم خود میتوانید از دستورات زیر استفاده کنید:

systemctl status systemd-resolved
systemctl status nscd
systemctl status dnsmasq
systemctl status unbound

حال باتوجه به جواب دریافتی از این کدها و یافتن سرویس کش سیستم خود می‌توانید اقدام به پاک کردن کش DNS سیستم لینوکس خود کنید:

پاک‌سازی کش DNS با استفاده از Unbound

sudo systemctl restart unbound

پاک‌سازی کش DNS با استفاده از systemd-resolved

sudo systemd-resolve --flush-caches

پاک‌سازی کش DNS با استفاده از nscd

sudo systemctl restart nscd

پاک‌سازی کش DNS با استفاده از dnsmasq

sudo killall -HUP dnsmasq

نتیجه گیری

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

منابع مورد استفاده در این مقاله:
learn.microsoft و phoenixnap

سوالات متداول از عیب‌یابی DNS توسط دستور nslookup و dig

دستور nslookup چیست؟

nslookup یک ابزار ساده و کاربردی است که برای بررسی و پیدا کردن اطلاعات مربوط به دامنه‌ها (Domain) و سیستم نام دامنه (DNS) استفاده می‌شه. یعنی، با استفاده از nslookup می‌تونی بفهمی یک وبسایت ساده مانند www.google.com به کدام آدرس IP متصل شده است.

دستور dig چیست؟

dig ابزاری پرکاربرد جهت بررسی و پیدا کردن اطلاعات مربوط به دامنه‌ها و سیستم نام دامنه (DNS) است. در واقع، با استفاده از dig می‌توان فهمید که یک وب‌سایت خاص مانند: www.google.com به کدام آدرس IP متصل شده است.

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

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

نرسی مزداب
نرسی مزداب
مقاله‌ها: 17

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *