ماذا يفعل
الأمر nslookup يرسل سؤالًا إلى خادم DNS ويعرض الإجابة. يعمل على لينكس و macOS و Windows، لذلك من الجيد معرفته عندما تساعد الآخرين.
يمكن استخدامه بطريقتين:
- سؤال واحد:
nslookup NAME [SERVER]. يطبع الإجابة ثم يتوقف. - تفاعلي: اكتب
nslookupوحده. تحصل على علامة>وتستطيع طرح أسئلة كثيرة وتغيير الخادم أو نوع السجل.
الأمر nslookup يسأل DNS فقط، ولا يقرأ /etc/hosts. لاختبار ما يستخدمه النظام فعلًا (ملف hosts و DNS) استخدم getent hosts NAME. ولتفاصيل أكثر ومخرجات نظيفة في السكربتات، الأداة dig أفضل.
في Red Hat Enterprise Linux يوجد في الحزمة bind-utils (dnf install bind-utils).
طريقة الكتابة
nslookup [-option ...] [name | -] [server]
nslookup -type=TYPE name [server]
nslookup (interactive mode)الخيارات 20
الأكثر استخدامًا
خيارات سطر الأوامر (وأيضًا مع "set" في الوضع التفاعلي)
-type=TYPE,-query=TYPE,-q=TYPE- نوع السجل المطلوب: A و AAAA و MX و TXT و NS و SOA و PTR و CNAME و SRV و CAA و ANY. الافتراضي: A و AAAA.
-recurse,-norecurse- اطلب من الخادم أن يبحث عن الإجابة بدلًا منك (مفعّل افتراضيًا). -norecurse يعرض فقط ما يعرفه هذا الخادم.
-fail,-nofail- مع -fail يتوقف عندما يجيب الخادم بـ SERVFAIL. ومع -nofail (الافتراضي) يجرب الخادم التالي.
-all- في الوضع التفاعلي (مثل
set all): يعرض الإعدادات الحالية.
أوامر الوضع التفاعلي
setkeyword[=<value>]- غيّر إعدادًا، مثلًا
set type=mxأوset debug.
لا يوجد شيء يطابق هذا الفلتر.
أمثلة 14
$ مستخدم عادي# بصلاحية root (أو مع sudo)
1معرفة عنوان اسم معيّن
nslookup www.redhat.com Server: 192.168.122.1 Address: 192.168.122.1#53 Non-authoritative answer: www.redhat.com canonical name = ds-www.redhat.com.edgekey.net. ...السطر
Serverهو خادم DNS الذي أجاب. والعبارةNon-authoritativeتعني أن الإجابة جاءت من ذاكرة مؤقتة (cache) وليس من مالك النطاق.2معرفة اسم عنوان IP (بحث عكسي)
nslookup 8.8.8.8 8.8.8.8.in-addr.arpa name = dns.google.مفيد في الاستجابة للحوادث: ما الجهاز الموجود خلف عنوان IP في سجلاتك؟ ليس لكل عنوان اسم عكسي.
3سؤال خادم DNS واحد مباشرة
nslookup app.example.com 10.0.0.53 nslookup app.example.com 1.1.1.1قارن بين الخادم الداخلي وخادم عام. اختلاف الإجابات يعني split DNS أو سجلًا قديمًا في ذاكرة أحدهما.
4معرفة خوادم البريد لنطاق
nslookup -type=mx example.com example.com mail exchanger = 10 mx1.example.com.الرقم الأقل له الأولوية الأعلى. تحقق من هذا عندما لا يصل البريد.
5فحص سجل SPF لنطاق (أمان البريد)
nslookup -type=txt example.com example.com text = "v=spf1 include:_spf.example.com -all"سجل SPF يحدد الخوادم المسموح لها بإرسال بريد باسم النطاق. و "-all" تعني: ارفض كل الآخرين.
6فحص سجل DMARC
nslookup -type=txt _dmarc.example.comعدم وجود إجابة يعني عدم وجود سياسة DMARC: يستطيع الآخرون إرسال بريد مزيّف باسم النطاق بسهولة أكبر.
7معرفة خوادم الأسماء لنطاق
nslookup -type=ns example.comيعرض الخوادم المالكة (authoritative) للنطاق. اسألها مباشرة لترى السجلات الحقيقية.
8رؤية سجل SOA والرقم التسلسلي
nslookup -type=soa example.comبعد تغيير منطقة (zone) يجب أن يزيد الرقم التسلسلي، وإلا لن تأخذ الخوادم الأخرى التغيير.
9معرفة الجهات المسموح لها بإصدار الشهادات
nslookup -type=caa example.comسجل CAA يسمح لجهات معيّنة فقط (مثل Let's Encrypt) بإصدار شهادات للنطاق.
10إيجاد خدمة بسجل SRV (مثل LDAP أو Kerberos)
nslookup -type=srv _ldap._tcp.corp.example.comأجهزة لينكس التي تنضم إلى Active Directory أو IdM تجد وحدات التحكم بالنطاق بهذه الطريقة.
11رؤية الإجابة كاملة مع قيم TTL
nslookup -debug app.example.comقيمة TTL توضح كم تحتفظ الخوادم بالإجابة في الذاكرة المؤقتة. اخفضها قبل نقل خدمة إلى عنوان IP جديد.
12الانتظار في سكربت حتى يعمل اسم جديد
until nslookup -timeout=2 -retry=1 app.example.com >/dev/null 2>&1; do sleep 10; done; echo "DNS is ready"مفيد في خط النشر (pipeline): لا تكمل إلا عندما يوجد سجل DNS الجديد.
13اختبار تحليل الأسماء داخل Pod في Kubernetes
kubectl exec -it debug-pod -- nslookup my-service.default.svc.cluster.localإذا فشل هذا، افحص DNS العنقود (CoreDNS) قبل أن تنظر إلى تطبيقك.
14طرح أسئلة كثيرة في الوضع التفاعلي
nslookup > server 1.1.1.1 > set type=aaaa > www.example.com > exitالوضع التفاعلي يحتفظ بإعداداتك بين الأسئلة. اكتب الكلمات بعد علامة > الخاصة بـ nslookup.
لا يوجد شيء يطابق هذا الفلتر.
انتبه
الملفات
/etc/resolv.conf- خوادم DNS ونطاقات البحث التي يستخدمها nslookup افتراضيًا.
نصائح للحفظ
- اسم ← عنوان، وعنوان ← اسم.
- ضع اسم الخادم في النهاية لتسأله هو:
nslookup NAME SERVER. - الخيار
-type=يحدد السجل: mx للبريد، و txt لـ SPF و DMARC، و ns للمالك، و ptr للبحث العكسي.