در دنیای شبکه و مدیریت سرور، ابزارهای خط فرمان برای بررسی وضعیت دامنهها و سرورهای DNS از اهمیت بالایی برخوردارند. دو ابزار پرکاربرد در این زمینه dig و nslookup هستند. این دو دستور به مدیران شبکه و متخصصان لینوکس کمک میکنند تا بتوانند بهسرعت وضعیت رکوردهای DNS را بررسی، مشکلات ارتباطی را شناسایی و پیکربندیهای دامنه را تحلیل کنند.
در این مطلب بهصورت گامبهگام با روش نصب و استفاده از دستورات dig و nslookup در لینوکس آشنا میشویم و تفاوتها، گزینههای مهم و کاربردهای عملی آنها را بررسی خواهیم کرد.
اهمیت ابزارهای DNS در لینوکس
هر بار که نام دامنهای مانند example.com را در مرورگر وارد میکنید، سیستم شما باید آن را به یک آیپی ترجمه کند. این فرآیند توسط Domain Name System (DNS) انجام میشود. اگر در شبکه یا وبسایت خود با خطاهای ارتباطی، تاخیر در پاسخدهی یا اختلال در سرویسها مواجه شوید، اولین گام در عیبیابی معمولا بررسی وضعیت DNS است.
در لینوکس، دو ابزار اصلی برای انجام این بررسیها وجود دارد:
- dig (Domain Information Groper)
- nslookup (Name Server Lookup)
هر دو ابزار اطلاعات دقیقی از رکوردهای DNS در اختیار شما قرار میدهند، اما dig معمولا خروجی دقیقتر و ساختارمندتری ارائه میکند و در نسخههای جدید لینوکس، ابزار پیشفرض توصیهشده محسوب میشود.
نحوه نصب دستور dig در لینوکس
در بسیاری از توزیعهای لینوکسی، دستور dig بهصورت پیشفرض نصب نیست. این ابزار بخشی از بستهی dnsutils یا bind-utils است (بسته به توزیع مورد استفاده).
نصب در Debian / Ubuntu
برای نصب dig در سیستمهای مبتنی بر Debian یا Ubuntu، کافی است دستور زیر را اجرا کنید:
sudo apt update sudo apt install dnsutils -y
پس از نصب، میتوانید با دستور زیر از صحت نصب اطمینان حاصل کنید:
dig -v

اگر نسخه ابزار نمایش داده شود، نصب با موفقیت انجام شده است.
نصب در CentOS / RHEL / Fedora
در سیستمهای مبتنی بر Red Hat یا CentOS از دستور زیر استفاده کنید:
sudo yum install bind-utils -y
و در نسخههای جدیدتر Fedora:
sudo dnf install bind-utils -y
با اجرای دستور dig در ترمینال میتوانید بررسی کنید که نصب بهدرستی انجام شده باشد.
نحوه نصب دستور nslookup در لینوکس
دستور nslookup معمولا همراه با همان بستههایی که dig را نصب میکنند، در سیستم موجود میشود.
در Debian/Ubuntu با نصب dnsutils و در CentOS با نصب bind-utils، ابزار nslookup نیز فعال میشود.
برای اطمینان از در دسترس بودن آن کافی است بنویسید:
nslookup google.com

اگر خروجی شامل آدرس IP سرور گوگل باشد، یعنی ابزار آماده استفاده است.
نحوه استفاده از دستور dig در لینوکس
ابزار dig برای بررسی رکوردهای DNS یک دامنه بهکار میرود. ساختار کلی دستور به شکل زیر است:
dig [domain] [record type]
مثال ساده
برای بررسی رکورد A مربوط به یک دامنه، کافی است بنویسید:
dig google.com

خروجی شامل چند بخش است، اما مهمترین بخش، ANSWER SECTION است که IP دامنه را نمایش میدهد:
;; ANSWER SECTION: gogole.com. 16 IN A 142.251.140.174
بررسی انواع رکوردها
میتوانید نوع رکورد دلخواه را مشخص کنید:
- رکورد MX برای ایمیل:
dig example.com MX
- رکورد TXT برای احراز مالکیت یا SPF:
dig example.com TXT
- رکورد NS برای نامسرورها:
dig example.com NS
- رکورد CNAME برای نام مستعار:
dig www.example.com CNAME
درخواست از سرور DNS خاص
بهصورت پیشفرض، dig از DNS سیستم شما استفاده میکند. اما میتوانید سرور DNS دیگری را مشخص کنید. مثلا برای درخواست از سرور گوگل:
dig @8.8.8.8 example.com
این روش برای تست سرعت یا بررسی تفاوت پاسخ سرورهای مختلف مفید است.
نحوه استفاده از دستور nslookup در لینوکس
دستور nslookup ابزار قدیمیتری است، اما همچنان در بسیاری از آموزشها و سیستمها کاربرد دارد.
ساختار اصلی آن مشابه dig است:
nslookup [domain]
مثال ساده
برای بررسی IP دامنه:
nslookup google.com
خروجی مشابه زیر نمایش داده میشود:
Server: 127.0.0.53 Address: 127.0.0.53#53 Non-authoritative answer: Name: google.com Address: 142.251.140.174 Name: google.com Address: 2a00:1450:4001:804::200e
تغییر سرور DNS در nslookup
میتوانید از سرور دیگری برای پرسوجو استفاده کنید:
nslookup example.com 1.1.1.1
در این مثال، درخواست از طریق DNS کلادفلر (۱.۱.۱.۱) ارسال میشود.
حالت تعاملی nslookup
با اجرای nslookup بدون هیچ پارامتری وارد حالت تعاملی میشوید. در این حالت میتوانید چند دامنه مختلف را بدون خروج از ابزار بررسی کنید:
> set type=MX > example.com > set type=A > google.com > exit

تفاوت dig و nslookup
هر دو ابزار dig و nslookup برای بررسی و تحلیل رکوردهای DNS به کار میروند، اما از نظر ساختار، امکانات و میزان بهروزبودن تفاوتهای قابل توجهی با یکدیگر دارند. ابزار nslookup از ابزارهای قدیمی در سیستمهای یونیکسی و لینوکسی به شمار میرود و سالهاست برای بررسی ساده رکوردهای دامنه استفاده میشود. در مقابل، dig نسخهای پیشرفتهتر و دقیقتر از همان ایده است که توسط پروژه BIND توسعه یافته و امروزه در اکثر توزیعهای لینوکس به عنوان ابزار استاندارد DNS شناخته میشود.
مهمترین تفاوت میان این دو ابزار در نحوه نمایش خروجی است. دستور dig اطلاعات را با قالبی دقیق و مبتنی بر استانداردهای RFC نمایش میدهد و به کاربر امکان میدهد جزئیات بیشتری از پاسخ سرورهای DNS را مشاهده کند، از جمله مدت زمان پاسخ، تعداد رکوردها، مسیر انتقال درخواست و حتی اطلاعات مربوط به سرورهای میانی. در مقابل، خروجی nslookup سادهتر و کوتاهتر است و معمولا فقط شامل نام دامنه، آدرس IP و سرور پاسخدهنده میشود.
از نظر توسعه و پشتیبانی نیز dig برتری دارد. ابزار nslookup سالهاست که در برخی توزیعها بهعنوان ابزاری قدیمی و منسوخشده تلقی میشود و دیگر بهروزرسانی منظم ندارد، در حالیکه dig به طور فعال توسط جامعه BIND نگهداری و توسعه داده میشود. به همین دلیل، در محیطهای حرفهای و سرورهای مدرن لینوکسی معمولا توصیه میشود از dig استفاده شود.
در نهایت میتوان گفت اگرچه nslookup همچنان برای کارهای ساده و سریع کاربرد دارد، اما dig به دلیل دقت، امکانات بیشتر، گزینههای قابل تنظیم و خروجی ساختاریافته، انتخاب بهتری برای مدیران سیستم و متخصصان شبکه است.
خرید VPS لینوکس با دسترسی کامل SSH و منابع اختصاصی، مناسب برای برنامهنویسان، توسعهدهندگان و مدیران سایت در پارسدو فراهم است.
گزینههای کاربردی در دستور dig
یکی از مزایای بزرگ dig، گزینههای متنوع آن است. در ادامه به چند مورد پرکاربرد اشاره میکنیم:
نمایش خلاصه فقط IP (گزینه +short)
اگر فقط آدرس IP برایتان مهم است، میتوانید خروجی را خلاصه کنید:
dig +short example.com
بررسی مسیر پاسخ DNS (گزینه +trace)
برای دنبالکردن مسیر کامل درخواست از ریشه تا سرور نهایی، از گزینه +trace استفاده کنید:
dig +trace example.com
این گزینه برای عیبیابی تاخیر یا تنظیمات نادرست DNS بسیار مفید است.
نمایش اطلاعات زمانی و آماری
با گزینه +stats میتوانید زمان پاسخ و تعداد رکوردهای دریافتشده را ببینید:
dig example.com +stats
نمونههای کاربردی در مدیریت سرور
بررسی صحت رکورد ایمیل (MX)
برای اطمینان از تنظیم صحیح رکوردهای میلسرور دامنه:
dig yourdomain.com MX +short
تست رکورد SPF یا DKIM
برای بررسی رکورد SPF
dig yourdomain.com TXT +short
اگر خروجی شامل عبارت “v=spf1” باشد، یعنی رکورد SPF تنظیم شده است.
بررسی وضعیت DNS از چند سرور مختلف
گاهی لازم است پاسخ DNS را از چند ناحیه جهان تست کنید:
dig @1.1.1.1 example.com +short dig @8.8.8.8 example.com +short
مقایسه نتایج به شما کمک میکند تفاوتهای کش DNS را متوجه شوید.
عیبیابی مشکلات DNS با dig و nslookup
فرض کنید وبسایت شما در برخی مناطق جهان در دسترس نیست. با ابزارهای dig و nslookup میتوانید بررسی کنید آیا مشکل از DNS است یا از تنظیمات شبکه.
ابتدا رکورد دامنه را بررسی کنید
dig example.com A
در صورت نیاز رکورد NS را چک کنید
dig example.com NS
از چند سرور مختلف تست بگیرید
dig @8.8.8.8 example.com +short dig @1.1.1.1 example.com +short
اگر پاسخها متفاوت باشند، احتمالا رکوردهای DNS شما در سرورهای ثانویه بهروزرسانی نشدهاند.
بهترین روش برای استفاده روزمره
اگر در زمینه مدیریت سرور، پشتیبانی دامنه یا عیبیابی وبسایت فعالیت دارید، بهتر است همیشه dig را در جعبهابزار خود داشته باشید. برای کارهای سریع میتوانید از اسکریپتهای کوتاه استفاده کنید، مثلا:
#!/bin/bash domain=$1 echo "Checking DNS records for: $domain" dig +short $domain dig +short $domain MX dig +short $domain NS
این اسکریپت ساده میتواند وضعیت رکوردهای حیاتی دامنه را تنها با یک دستور برای شما نمایش دهد.
جمعبندی
ابزارهای dig و nslookup از مهمترین ابزارهای خط فرمان در لینوکس برای بررسی و تحلیل رکوردهای DNS هستند.
درحالیکه nslookup ابزاری سادهتر و قدیمیتر است، دستور dig امکانات پیشرفتهتری مانند بررسی مسیر پاسخ، نمایش خروجی خلاصه و تحلیل دقیق رکوردها را فراهم میکند.
برای نصب این ابزارها کافی است بستههای dnsutils یا bind-utils را نصب کنید. سپس میتوانید با چند دستور ساده، وضعیت دامنه، رکوردهای ایمیل، نامسرور و حتی مشکلات احتمالی DNS را شناسایی کنید.
در نهایت، تسلط بر dig و nslookup برای هر مدیر سرور لینوکسی یک مهارت ضروری محسوب میشود، زیرا این ابزارها پایه و اساس تحلیل و رفع خطاهای ارتباطی در وب و شبکه هستند.