این دستور یک ابزار دستوری مدیریت شبکه است که در اغلب سیستم های عامل وجود دارد برای پرس و جوی DNS که بدست آوردن آی پی یا دامنه یا برای هر رکورد مشخصی از DNS را انجام می دهد.در واقع ابزاری است که به مدیران شبکه امکان تست و رفع اشکال سرویس DNS را می دهد.NsLookup مخفف Name Server Lookup است. این برنامه بروی ویندوز های XP ؛ Vista و 7 نصب است .  در کل این دستور ابزاری است که معمولا برای رفع مشکل در DNS بکار برده می شود. با nslookup می توانید بصورت دستی از DNS یک یا چند query بگیرید ، اطلاعات مربوط به نحوه تنظیم DNS در سیستمتان را بررسی کنید و یا حتی مشخص کنید چه رکوردDNS باید resolved شود.وقتی که nslookup اجرا شود به شما نشان خواهد داد که نام host و آدرس IP سرور DNS شما به چه صورتی است. پس از اجرا این دستور خط فرمانی به شما نمایش داده خواهد شد که می توانید  query های دیگری بگیرید.

 موارد استفاده : NsLookup به دو صورت تعاملی و غیر تعاملی عمل می کند . وقتی از حالت غیر تعاملی استفاده می شود که برنامه می خواهد بدونِ نشان وند کار کند .برای استفاده از nslookup به صورت Interactive کافی است در run یا cmd دستور nslookup را وارد کنید .دستور nslookup پس اجرا شدن با توجه با تنظیمات TCP/IP کامپیوتر شما DNS پیش فرض کامپیوتر را به عنوان سرور انتخاب می کند و سعی می کند با استفاده از ارسال درخواست Reverse نام سرور را نیز پیدا و به شما نمایش دهد.اگر موفق به تبدیل IP به نام شود در قسمت Default Server: نام سرور را نمایش می دهد در غیر این صورت Unknown نمایش داده می شود ، اینکه nslookup موفق با تبدیل IP به نام شود یا نه تاثیری بر دستوراتی که در ادامه وارد می کنید ندارد و تنها برای اطلاع شما است.
حالت کلی دستور به این شکل است :

1
nslookup [-option] [name | -] [server]

به این حالت Interactive mode  گفته می شود. دستوراتی را که در این قسمت می توانید وارد کنید در زیر آورده ام :

search:   Uses domain search list
vc:        Always uses a virtual circuit
domain=NAME: Sets default domain name to NAME
srchlist=N1[/N2/.../N6]: Sets domain to N1 and search list to N1, N2, and so on
root=NAME: Sets root server to NAME
retry=X:      Sets number of retries to X
timeout=X  :  Sets initial timeout interval to X seconds
type=X  :    Sets query type (for example, A, ANY, CNAME, MX, NS, PTR, SOA, or SRV)
querytype=X  :   Same as type
:   Sets query class (for example, IN [Internet], ANY)
msxfr:  Uses MS fast zone transfer
ixfrver=X  : Current version to use in IXFR transfer request
server NAME:  Sets default server to NAME, using current default server
exit:    Exits the program
بجای  interactive mode شما همچنین می توانید از دستور nslookup بطور مستقیم استفاده کنید. در زیر مثالی را آورده ام که نام دامنه را توسط این دستور resolve نمایم :

C:\>nslookup comptia.org
Server:  nsc1.ht.ok.shawcable.net
Address:  ۶۴٫۵۹٫۱۶۸٫۱۳

Non-authoritative answer:
Name:    comptia.org
Address:  ۲۰۸٫۲۵۲٫۱۴۴٫۴

همانطور که در خروجی دیده می شود، خروجی نام host و  آدرس IP سرور DNS است و در ادامه نام و آدرس IP دامنه مورد نظر ما می باشد.
Dig
این دستورجایگزینی برای nslookup در سیستم های یونیکسی ، لینوکسی و همچنین مکینتاش می باشد. تفاوت این دستور با nslookup در این است فاقد interactive mode است.  درست مانندnslookup دستور dig  می تواند فرم ساده ای از یافتن dns شبکه را نمایش دهد و همچنین توسط خروجی این دستور قادر به رفع مشکلات مربوط به DNS خواهیم بود. در زیر نمونه ای از خروجی این دستور آمده است :
; DiG 8.2 xyz.com
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUERY SECTION:
;;    xyz.com, type = A, class = IN

;; ANSWER SECTION:
xyz.com.        ۷h33m IN A    ۶۳٫۲۴۰٫۹۳٫۱۵۷

;; AUTHORITY SECTION:
xyz.com.        ۷h33m IN NS    usrxdns1.ABC.com.
xyz.com.        ۷h33m IN NS    oldtxdns2.ABC.com.

;; Total query time: 78 msec
;; FROM: localhost.localdomain to SERVER: default — 209.53.4.130
;; WHEN: Sat Oct 16 20:21:24 2004
;; MSG SIZE  sent: 30  rcvd: 103

همانطور که مشاهده می کنید خروجی این دستور به سه قسمت Answer Section,Authority Section, و چهار خط پایانی تقسیم شده است. قسمت پاسخ یا answer section نام دامنه و آدرس شبکه آن را نمایش می دهد. A در این قسمت نشاندهنده نوع رکوردی است که نمایش داده شده است. قسمت اعتبار یا authority section نشاندهند سرورهای DNSای است که در عمل resolution بر پایه آن ها انجام شده است و این اطلاعات به ما نشان می دهد آیا DNS های مجاز نشانگر دامنه ما هستند یا خیر. چهارخط پایانی این خروجی نشان می دهد که چقدر طول کشیده تا عمل resolve شدن دامنه انجام گیرد همچنین آدرس DNSپایه را که در عمل resolution مورد استفاده قرار گرفته است را نشان می دهد. ساعت و تاریخ و همچنین اندازه پاکت های دریافتی و ارسالی نیز در این قسمت نمایش داده شده اند.


توضیحات تکمیلی:

در فیلم زیر به صورت اجمالی نحوه کار با ابزار nslookup را خواهید دید. 

پیش از مطالعه  درباره NSLookup حتماً لازم است درباره مفهوم DNS و مفاهیم مربوط به آن مانند Name Server و Zone File  اطلاع داشته باشید، که در ادامه به اختصار این مفاهیم را توضیح می‌دهیم.

DNS:

همانطور که می‌دانید برای مشاهده سایتهای اینترنتی یا ارسال ایمیل از آدرس‌های حرفی مانند www.radcom.ir استفاده می‌شود، ولی کامپیوتر و مجموعه اینترنت  برای تبادل اطلاعات از آدرس‌های عددی ‌مانند ‌ 217.218.60.147 که IP  نامیده میشوند، استفاده می‌کند.
مجموعه سیستم DNS، آدرس حرفی یک سایت (یا همان دامنه) را به آدرس عددی تبدیل می‌کند،  در واقع مشخص می‌کند که این سایت در کجای اینترنت واقع شده است، که این عملیات شامل مراحل مختلفی می‌شود.
کامپیوتری  که به طور مشخص آدرس حرفی را به آدرس عددی تبدیل می‌کند، Name Server نامیده میشود. Name Server این کار را توسط نرم افزار مشخصی انجام می‌دهد، که رایج ترین آنها BIND و Microsoft DNS میباشد.

در Name Server یک مجموعه اطلاعات درباره دامنه‌ها ذخیره می‌شود. هنگامیکه برای یک دامنه فضای هاست تعریف می‌شود، در 2 یا چند Name Server اطلاعات مربوط به آن دامنه وارد می‌شود، که به این Name Server ها، Name Server های مرجع  پایه گفته می‌شود. که برای نمونه اطلاعات مربوط به دامنه font.ir را در جدول زیر مشاهده می‌کنید.

Host Record type Value

font.ir.

NS

ns2.parsihost.com.

font.ir.

NS

ns4.parsihost.com.

font.ir.

NS

ns28.DNSLake.com.

font.ir.

A

217.218.60.151

font.ir.

MX (10)

mail.font.ir.

font.ir.

TXT

v=spf1 mx -all

ftp.font.ir.

CNAME

font.ir.

mail.font.ir.

A

217.218.60.151

mssql.font.ir.

A

217.218.60.151

ns.font.ir.

A

217.218.60.151

webmail.font.ir.

A

217.218.60.151

www.font.ir.

CNAME

font.ir.

به این مجموعه اطلاعا ت مربوط به دامنه ZoneFile گفته می‌شود.

NSLookup:

NSLookup یک برنامه از نوع خط فرمان (command-line) است که مخفف Name Server Lookup می‌باشد. به وسیله NSLookup می‌توان از Name Serverهای مختلف اطلاعات مربوط به دامنه‌های مورد نظر را در صورت امکان بدست آورد. اطلاعاتی که درباره دامنه از طریق NSLookup مشاهده می‌کنیم، در واقع همان اطلاعاتی است که در ZoneFile مربوط به دامنه وجود دارد.

اجرای برنامه NSLookup:

Command Shell را باز میکنیم و دستور nslookup را تایپ میکنیم.


هنگام اجرا، NSLookup سروری را که به عنوان DNS Server کامپیوتر شما تعریف شده است را به عنوان سرور پیش فرض تعیین میکند.  این آدرس را میتوانید در تنظیمات شبکه خود در بخش TCP/IP مشاهده کنید. برای مثال در شکل بالا سروری که پرسش‌های ما را جواب می‌دهد، دارای آدرس 192.168.200.192 است که یک Name Server در شبکه داخلی میباشد.

حال آدرس font.ir را وارد میکنیم.

دو خط اول پاسخ مشخص می‌کند که کدام سرور و با چه آدرسی پاسخ را ارائه کرده است.


خط سوم عبارت Non-authoritative را مشاهده میکنیم. این عبارت به این معنی است که سرور 192.168.200.192، مرجع پایه  اطلاعات دامنه font.ir نیست و آن را در اختیار ندارد، لذا فرایند resolve را برای دریافت آنها آغاز کرده است و اطلاعات مربوط به این دامنه را از سرور دیگری دریافت کرده است.
درخط چهارم و پنجم نام دامنه و آدرس هاست آن 217.218.60.151 را مشاهده می
کنیم. که مطابق با آدرسی است که در ابتدای صفحه در جدول ZoneFile مربوط به دامنه font.ir در رکورد مشاهده کردیم.

برای اینکه از یک سرور دیگر پرس و جو کنیم، در خط فرمان عبارت server و نام سرور مورد نظر یا آدرس IP آن را مینویسیم.
این بار از سرور 
ns4.parsihost.com درباره دامنه font.ir می‌پرسیم.

 

همانطورکه در شکل می‌بینید، به کمک دستور server ns4.parsihost.com ، سرور پیش فرض را  به ns4.parsihost.com تغییر میدهیم. این بار در جوابی که برای font.ir مشاهده میکنیم عبارت Non-authoritative دیده نمیشود. در واقع در اینجا ns4.parsihost.com مرجع پایه اطلاعات دامنه font.ir است.

همانطور که در جدول مربوط به ZoneFile دامنه دیدید، در این جدول انواع مختلفی از اطلاعات وجود دارد که میتوان نوع آنها را در ستون Record type مشاهده کرد.
برای بدست آوردن سایر اطلاعات دامنه می
توانیم از دستور set type استفاده کنیم. این دستور دارای ساختاری طبق عبارت ذیل میباشد.

set type=NAME 
(where NAME is the type of record to look at for example, A, ANY, CNAME, MX, NS, PTR, SOA, SRV)

به جای عبارت NAME میتوان یکی از انواع داده موجود در ZoneFile را نوشت. به طور مثال A, MX, NS ,TXT,...

برای مثال دستور set type=txt را تایپ می‌کنیم و مجدداً درباره دامنه font.ir پرس و جو می‌کنیم.

همانطور که در شکل می‌بینید، اطلاعات مربوط به رکورد TXT دامنه را نمایش می‌دهد، که می‌توان مقدار نمایش داده شده را با مقدار آن در جدول ابتدای صفحه مقایسه کرد.

NSLookup دارای دو دستور اصلی server و set type می باشد. برای مشاهده فهرست دستورات می‌توانید در خط فرمان عبارت ? یا help را تایپ کنید.

برای اطلاع بیشتر درباره NSLookup می توانید به این مقاله مراجعه کنید. (http://support.microsoft.com/kb/200525)