
چگونه 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 و ایجاد خطا در آن میتواند منجر به اختلال در دسترسی به وبسایتها، کاهش سرعت بارگذاری صفحات، مشکلات در ارسال و دریافت ایمیلها، افزایش خطر حملات سایبری مانند: فیشینگ و جعل هویت، و کاهش اعتماد کاربران به سرویسهای آنلاین شود. همچنین، خطاهای 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
برای دریافت اطلاعات DNS با استفاده از nslookup، تنها کافی است نام دامنه دلخواه را به عنوان ورودی وارد کنید. در این بخش تست را بر روی آدرس دامنه Goolge انجام میدهیم:
nslookup www.Google.com
پس از وارد کردن این کد دستوری در سیستم های لینوکس و ویندوز با اطلاعات زیر مواجه میشوید:
دریافت اطلاعات از DNS خاص در خروجی nslookup:
دستور nslookup به صورت پیشفرض از DNS هایی که بر روی سرور و یا سیستم خود ثبت کرده اید استفاده میکند. برای دریافت اطلاعات و یا پرس و جو از دیگر DNS ها مانند: DNS های اصلی گوگول و یا کلودفلر تنها کافی است DNS مورد نظر را مانند کد دستوری زیر وارد کنید:
nslookup domain_name dns_server
nslookup Google.com 1.1.1.1
تغییر سرور DNS پیشفرض به سرورهای DNS خاص و پرسوجو از آنها، ابزار قدرتمندی برای عیبیابی، افزایش امنیت، بهبود سرعت و دریافت اطلاعات دقیقتر دربارهی دامنهها است. توسط این روش، میتوانید کنترل بیشتری بر روی نحوهی مدیریت و ترجمه نام دامنهها داشته باشید و از صحت و امنیت تنظیمات DNS نیز اطمینان حاصل کنید.
نتایج بدست آمده و مقایسه نتیجهها میتواند نشاندهندهی صحت تنظیمات DNS و یا امکان نیاز به بررسی و تنظیمات مجدد DNS را شامل شود.
تایید رکوردهای MX با استفاده از nslookup
رکورد MX، به عنوان عضو اصلی سیستمهای ایمیل، نقشی اساسی در تحویل صحیح و به موقع ایمیلها ایفا میکنند. این رکوردها، آدرسی دقیق از سرورهای ایمیل را به انواع سرورهای ارسالکننده ایمیل، ارائه میدهند تا ایمیلها بتوانند به درستی مسیریابی شده و به صندوق پستی مقصد برسند.
بدون وجود MX رکورد درست، ایمیلها گم شده یا به مقصدهای نادرست ارسال خواهند شد و این امر به شدت بر ارتباطات اینترنتی و عملکرد کسبوکارها تاثیر میگذارد.
جهت دریافت رکوردهای MX دامنهی Google.com تنها کافی است کد دستوری زیر را وارد کنید:
nslookup -type=MX Google.com
خروجی مانند تصویر زیر است:
- 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
- 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 یک دامنه:
جهت بررسی تمامی رکوردهای 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 ها و یا همان نام دامنه و خطاهای مربوط به آن را نمایش دهند. اما در دل کار با این ابزارها تفاوت هایی نهفته شده است که در جدولی به آنها خواهیم پرداخت.
ویژگی | nslookup | dig |
ساده و راحت | ✔ | ✖ |
قابلیتها | پایه ای | حرفهای |
خروجی | خلاصه با جرئیات کم | مفصل |
پشتیبانی سیستم | ویندوز، لینوکس، 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 یک ابزار ساده و کاربردی است که برای بررسی و پیدا کردن اطلاعات مربوط به دامنهها (Domain) و سیستم نام دامنه (DNS) استفاده میشه. یعنی، با استفاده از nslookup
میتونی بفهمی یک وبسایت ساده مانند www.google.com به کدام آدرس IP متصل شده است.
dig ابزاری پرکاربرد جهت بررسی و پیدا کردن اطلاعات مربوط به دامنهها و سیستم نام دامنه (DNS) است. در واقع، با استفاده از dig
میتوان فهمید که یک وبسایت خاص مانند: www.google.com به کدام آدرس IP متصل شده است.
اگر با مشکلاتی مانند: ناهماهنگی بین اطلاعات وبسایت و چیزی که نمایش داده میشود مواجه شدید میتوانید از این دستورات استفاده کنید و مشکل را پیدا کنید.