کار اصلی «ابزار خط فرمان جستجوی نام سرور» که با نام اختصاری nslookup شناخته میشود این است که آدرس پروتکل اینترنت (IP) یا رکورد سیستم نام دامنه (DNS) برای یک نام میزبان خاص را پیدا کند. همچنین این فرمان از قابلیت جستجوهای معکوس DNS (این فرمان) که با وارد کردن آدرسهای IP دامنهها انجام میشود، پشتیبانی میکند. از این ابزار معمولا برای انجام وظایف مرتبط با DNS مانند آزمایش سرور و عیبیابی استفاده میشود. برای استفاده از این ابزار، فقط کافی است عبارت “nslookup” را در رابط خط فرمان (CLI) خود مانند Command Prompt در ویندوز یا ترمینال در لینوکس و macOS وارد کنید. در این مطلب به بررسی این که دستور nslookup چیست، چه کارهایی انجام میدهد، چه دستورات و قابلیتهایی دارد و چطور میتوانیم از آن استفاده کنیم، میپردازیم.
هدف دستور nslookup چیست؟
هدف اصلی دستور nslookup، دریافت اطلاعات دقیق دربارهی یک دامنه خاص است. این اطلاعات برای رفع مشکلات مرتبط با DNS بسیار مفید هستند.
بهعنوان مثال، فرض کنید وبسایت شما کار نمیکند و میخواهید بررسی کنید که آیا سرور میزبان در دسترس است یا نه. برای این کار، میتوانید از دستور زیر برای درخواست IP دامنه استفاده کنید:
nslookup domainname.tld
برای بررسی اینکه آیا سرور DNS از کار افتاده یا نه، از این دستور استفاده کنید. اگر سرور DNS بهدرستی کار کند، بعنوان نتیجه یک پاسخ مثبت دریافت خواهید کرد.
در غیر این صورت، اگر سرور DNS به درخواست پاسخ ندهد، یک پیام خطا نمایش داده میشود که ممکن است نشانهای از خرابی سرور DNS باشد.
اگر آدرس IP سرور DNS را وارد نکنید، nslookup درخواست را به سرور DNS پیشفرض تنظیمشده روی کامپیوتر شما ارسال میکند.
برای تغییر سرور DNS، ابتدا دستور nslookup را وارد کرده و سپس از این دستور استفاده کنید:
server dns.server.ip.address
یکی دیگر از مشکلات مربوط به DNS، زمانی است که دامنه به نامسرورهای نادرست اشاره میکند. برای بررسی نامسرورهای یک دامنه، دستور زیر را وارد کنید:
nslookup -type=ns yourdomainname.tld
علاوه بر بررسی name serverها، میتوانید از انواع دیگر کوئریها برای جستجوی رکوردهای مختلف استفاده کنید، مانند: A، AAAA، CNAME، LOC، PTR و MX.
رکوردهای DNS اطلاعاتی هستند که در nameserverهای DNS دربارهی یک دامنه ذخیره شدهاند. تعداد این رکوردها میتواند متفاوت باشد و برای دامنههایی با Premium DNS به هزاران مورد هم برسد. هر نوع رکورد هدف خاص خود را دارد:
-
A: دامنه را به یک آدرس IP نگاشت میکند.
-
AAAA: مشابه رکورد A است، اما از پروتکل IPv6 بهجای IPv4 استفاده میکند.
-
CNAME: اطلاعاتی دربارهی نام جایگزین یک دامنه ارائه میدهد.
-
LOC: موقعیت جغرافیایی یک دامنه را مشخص میکند.
-
PTR: یک آدرس IP را به یک نام میزبان نگاشت میکند و همچنین برای تبادل ایمیل کاربرد دارد. رکورد PTR نیاز به IP اختصاصی دارد.
-
MX: مسئول تبادل ایمیل است. رکوردهای MX دامنه را به سرورهای ایمیل متصل میکنند.
رکورد PTR برای جستجوی معکوس DNS (Reverse DNS Lookup) ضروری است، که در آن بهجای نام دامنه، از آدرس IP برای یافتن نام دامنه استفاده میشود. این فرآیند به سرورهای ایمیل کمک میکند تا تایید کنند آیا ایمیلهای ورودی از منابع معتبر آمدهاند یا خیر.
برای بررسی اینکه آیا یک آدرس IP به نام میزبان شما نگاشت شده یا نه، با وارد کردن IP سرور، مقدار رکورد PTR را بررسی کنید. بهعنوان مثال، میخواهید رکورد PTR دامنهی google.com را ببینید. با توجه به اینکه آدرس IP آن 142.250.4.113 است، دستور زیر را وارد کنید:
nslookup 142.250.4.113
در این مثال، مشاهده میکنیم که رکورد PTR این آدرس IP به صورت زیر است:
sm-in-f113.1e100.net
تنظیم صحیح رکورد PTR برای تبادل ایمیل از اهمیت بالایی برخوردار است. این کار باعث میشود آدرس IP سرور ایمیل با رکورد DNS مستقیم همخوانی داشته باشد و از بازگشت ایمیلها جلوگیری کند.
توجه داشته باشید که به دلیل نیاز به IP اختصاصی، فقط میتوان رکورد PTR را روی دامنههایی با میزبانی VPS یا همان سرور مجازی تنظیم کرد. سرور مجازی بر خلاف هاست اشتراکی از آدرس IP ثابت و اختصاصی برخوردار است.
چگونه از دستور nslookup استفاده کنیم
شما میتوانید از دستور nslookup در تقریبا هر سیستمعامل و از طریق اپلیکیشن خط فرمان آن (مانند Command Prompt در سرور مجازی ویندوز یا Terminal در سرور مجازی لینوکس و macOS) استفاده کنید.
در سیستمعاملهای مختلف، نحوه عملکرد nslookup مشابه است، با اینکه ظاهر آن ممکن است کمی متفاوت باشد. بهعنوان مثال، در لینوکس به شکل زیر دیده میشود:
nslookup دارای دو حالت است: تعاملی (Interactive) و غیرتعاملی (Non-Interactive). هر دو حالت هدف مشابهی دارند، اما برای موقعیتهای متفاوت طراحی شدهاند.
-
حالت تعاملی به کاربران این امکان را میدهد که پارامترهای بیشتری وارد کرده و اطلاعات متعددی از نامسرورها درباره دامنه یا میزبانها دریافت کنند.
-
حالت غیرتعاملی فقط یک قطعه اطلاعات درباره دامنه یا میزبان نمایش میدهد.
برای ورود به حالت تعاملی، کافی است nslookup را بدون هیچ آرگومانی در خط فرمان تایپ کنید. این دستور نام و آدرس سرور پیشفرض را نمایش میدهد و خطی باز میکند که در آن میتوانید نام دامنه یا دستورات مختلف را وارد کنید.
برای دسترسی به حالت غیرتعاملی، باید nslookup را همراه با نام دامنه بهعنوان آرگومان اول وارد کنید. میتوانید قبل از نام دامنه، دستورات دیگری وارد کنید یا آدرس یک nameserver را پس از آن بیاورید.
در حالت غیرتعاملی، باید نام دامنه و دستورات را در یک خط تایپ کنید. در حالی که در حالت تعاملی، برای هر دامنه یا آرگومان، یک خط مجزا وجود دارد.
گاهی اوقات پس از وارد کردن یک کوئری، nslookup پاسخی غیر معتبر (non-authoritative) نمایش میدهد. این زمانی رخ میدهد که اطلاعات از کش (cache) سرور DNS محلی شما گرفته شدهاند، نه از سرور معتبر دامنه.
وقتی برای اولین بار به یک وبسایت دسترسی پیدا میکنید، مرورگر شما از DNS Resolver آدرس IP دامنه را میپرسد. حلکننده از سرور روت میپرسد و آن را به سمت سرور دامنهی سطح بالا (TLD Server) هدایت میکند.
سپس، سرور TLD پاسخ داده و حلکننده را به سرور معتبر دامنه (Authoritative Server) هدایت میکند. Resolver اطلاعاتی مانند آدرس IP و رکوردهای DNS را از سرور معتبر دریافت میکند.
در مرحلهی بعد، سرور معتبر آدرس دامنه و رکوردهای DNS را به Resolver برمیگرداند و Resolver نیز آن را به کاربر میفرستد. پس از دریافت آدرس IP، مرورگر میتواند به دامنه متصل شود.
اطلاعات دامنه توسط کلاینت و Resolver بهصورت کش DNS در حافظه محلی ذخیره میشود. بنابراین در دسترسیهای بعدی به همان دامنه، دیگر نیازی به تکرار تمام مراحل نیست و مرورگر میتواند مستقیماً آدرس IP را از کش دریافت کند.
پاسخهای غیرمعتبر ممکن است بهدلیل کش بودن، قدیمی یا نادرست باشند و برای عیبیابی مناسب نیستند. برای دریافت پاسخ معتبر، از دستور زیر استفاده کنید:
nslookup -type=soa domainname.tld
این دستور رکورد SOA (Standard of Authority) را که حاوی اطلاعات مهمی درباره دامنه است، بازیابی میکند. مثلاً اگر بخواهید پاسخ معتبر برای دامنهی google.com دریافت کنید، دستور زیر را وارد کنید:
nslookup -type=soa google.com
از آنجا که فقط به سرور اصلی نیاز دارید، نیازی به نگرانی درباره پاسخ غیرمعتبر نیست.
اکنون میتوانید از nameserver اصلی (Primary Nameserver) برای ارسال کوئری استفاده کنید. پس از این مرحله، پیام مربوط به پاسخ غیرمعتبر دیگر نمایش داده نمیشود.
استفاده از دستور nslookup برای بررسی سرورهای DNS از طریق مرورگر
شما میتوانید سرورهای DNS را بدون نیاز به خط فرمان، مستقیماً از طریق مرورگر و با استفاده از ابزارهای شبکهی آنلاین بررسی کنید. برای این کار، از وبسایتهایی مانند ping.eu یا centralops.net کمک بگیرید.
هر دو وبسایت، امکانات پایهای دستور nslookup را در اختیار شما قرار میدهند و به شما اجازه میدهند تا اطلاعات دامنهها و سرورهای DNS آنها را مشاهده کنید.
با این حال، centralops.net قابلیتهای پیشرفتهتری نیز ارائه میدهد، مانند پشتیبانی از کوئریهای بازگشتی (recursion) که امکان بررسی دقیقتر رکوردهای DNS را فراهم میکند.
جمعبندی
در این مقاله به بررسی این پرداختیم که nslookup چیست، چه کاربردهایی دارد و چگونه از آن استفاده کنیم. nslookup یک ابزار خط فرمانی است که برای دریافت اطلاعات یک دامنه، از جمله آدرس IP و رکوردهای DNS آن، استفاده میشود. برای اجرای این ابزار، کافی است در Command Prompt (ویندوز) یا Terminal (لینوکس و macOS) دستور nslookup را وارد کنید.
با استفاده از دستورات مختلف nslookup، میتوانید اطلاعات گوناگونی دربارهی دامنه خود به دست بیاوردید. این اطلاعات به شما در عیبیابی مشکلات مربوط به DNS کمک میکنند. با این حال، هنگام استفاده از این ابزار، حتما بررسی کنید که پاسخ دریافتی، معتبر باشد. برای این کار میتوانید رکورد SOA دامنه را درخواست کنید.
سوالات متداول
تفاوت بین nslookup و ping چیست؟
ping برای بررسی اتصال شبکه و در دسترس بودن یک آدرس IP استفاده میشود، در حالیکه nslookup فقط اطلاعات DNS دامنه مانند IP و رکوردها را نمایش میدهد. ping بهصورت عملی تست اتصال انجام میدهد اما nslookup برای بررسی تنظیمات DNS کاربرد دارد.
حالتهای مختلف دستور nslookup چیستند؟
دستور nslookup دارای دو حالت تعاملی و غیرتعاملی است که هرکدام کاربرد خاصی دارند. در حالت تعاملی، میتوانید چندین پرسوجو را بهصورت مرحلهای انجام دهید؛ در حالیکه حالت غیرتعاملی تنها یک پرسوجو انجام میدهد. برای حالت تعاملی، دستور را تنها با nslookup اجرا کنید و در غیرتعاملی، دامنه و پارامترها را در یک خط وارد کنید.
آیا nslookup همان DNS است؟
خیر، nslookup و DNS با هم متفاوتاند، اما nslookup برای عملکرد خود به DNS نیاز دارد. DNS وظیفه دارد نام دامنه را به آدرس IP تبدیل کند. در حالیکه nslookup ابزاری است برای ارسال درخواست به سرورهای DNS و دریافت اطلاعات دربارهی دامنه یا میزبان.