الفلاتر
طريقة البحث
  • الكلمات العادية تجد الأسماء والنصوص والأمثلة.
  • "كلمتان" تجد العبارة بالضبط.
  • --name أو -x تجد خيارًا.
  • #كلمة تبحث داخل الأوامر فقط.
  • @grep تجد الدروس والمعامل التي تستخدم grep.
  • الفلاتر: cat:network · in:labs · level:rhcsa · ch:8 · root:yes. ضع ! قبل كلمة لاستبعادها. OR بين الكلمات تعني إحداها.
  • ↑ ↓ للتنقل · Enter للفتح · Esc للإغلاق · / للبحث

nslookup

اسأل خادم DNS عن عنوان اسم معيّن، أو عن سجلات DNS أخرى (البريد، النصوص، خوادم الأسماء).

المستوى
لينكس اليومي
المجموعة
الشبكة
يحتاج root
لا
الحزمة
bind-utils

ماذا يفعل

الأمر 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.
-port=n
اسأل على منفذ غير 53، مثلًا خادم DNS للاختبار.
-timeout=seconds
مدة انتظار الإجابة قبل المحاولة مرة أخرى.
-retry=n
عدد مرات المحاولة من جديد.
-debug, -nodebug
اعرض الإجابة كاملة بكل أقسامها وقيم TTL.
-d2, -nod2
مخرجات تصحيح أكثر: ما يرسله nslookup وما يستقبله.
-domain=name
اضبط نطاق البحث للأسماء القصيرة.
-search, -nosearch
أضف نطاقات البحث للأسماء التي لا تنتهي بنقطة (مفعّل افتراضيًا).
-recurse, -norecurse
اطلب من الخادم أن يبحث عن الإجابة بدلًا منك (مفعّل افتراضيًا). ‏-norecurse يعرض فقط ما يعرفه هذا الخادم.
-vc, -novc
استخدم TCP بدل UDP.
-fail, -nofail
مع ‎-fail يتوقف عندما يجيب الخادم بـ SERVFAIL. ومع ‎-nofail (الافتراضي) يجرب الخادم التالي.
-ndots=n
الاسم الذي فيه هذا العدد من النقاط يُسأل عنه كما هو أولًا، قبل نطاقات البحث.
-class=CLASS
فئة DNS: ‏IN (الإنترنت، الافتراضي) أو CH أو HS أو ANY.
-all
في الوضع التفاعلي (مثل set all): يعرض الإعدادات الحالية.
-version
يعرض الإصدار ثم يتوقف.

أوامر الوضع التفاعلي

name [server]
ابحث عن اسم (أو عن عنوان IP لمعرفة اسمه العكسي).
server server
استخدم خادم DNS آخر للأسئلة التالية.
lserver server
مثل server، لكنه يستخدم الخادم الأول لمعرفة عنوان الخادم الجديد.
set keyword[=<value>]
غيّر إعدادًا، مثلًا set type=mx أو set debug.
exit
اخرج من الوضع التفاعلي. يعمل Ctrl+D أيضًا.

أمثلة 14

$ مستخدم عادي# بصلاحية root (أو مع sudo)

  1. 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. 2معرفة اسم عنوان IP (بحث عكسي)

    nslookup 8.8.8.8
    8.8.8.8.in-addr.arpa    name = dns.google.

    مفيد في الاستجابة للحوادث: ما الجهاز الموجود خلف عنوان IP في سجلاتك؟ ليس لكل عنوان اسم عكسي.

  3. 3سؤال خادم DNS واحد مباشرة

    nslookup app.example.com 10.0.0.53
    nslookup app.example.com 1.1.1.1

    قارن بين الخادم الداخلي وخادم عام. اختلاف الإجابات يعني split DNS أو سجلًا قديمًا في ذاكرة أحدهما.

  4. 4معرفة خوادم البريد لنطاق

    nslookup -type=mx example.com
    example.com     mail exchanger = 10 mx1.example.com.

    الرقم الأقل له الأولوية الأعلى. تحقق من هذا عندما لا يصل البريد.

  5. 5فحص سجل SPF لنطاق (أمان البريد)

    nslookup -type=txt example.com
    example.com     text = "v=spf1 include:_spf.example.com -all"

    سجل SPF يحدد الخوادم المسموح لها بإرسال بريد باسم النطاق. و "-all" تعني: ارفض كل الآخرين.

  6. 6فحص سجل DMARC

    nslookup -type=txt _dmarc.example.com

    عدم وجود إجابة يعني عدم وجود سياسة DMARC: يستطيع الآخرون إرسال بريد مزيّف باسم النطاق بسهولة أكبر.

  7. 7معرفة خوادم الأسماء لنطاق

    nslookup -type=ns example.com

    يعرض الخوادم المالكة (authoritative) للنطاق. اسألها مباشرة لترى السجلات الحقيقية.

  8. 8رؤية سجل SOA والرقم التسلسلي

    nslookup -type=soa example.com

    بعد تغيير منطقة (zone) يجب أن يزيد الرقم التسلسلي، وإلا لن تأخذ الخوادم الأخرى التغيير.

  9. 9معرفة الجهات المسموح لها بإصدار الشهادات

    nslookup -type=caa example.com

    سجل CAA يسمح لجهات معيّنة فقط (مثل Let's Encrypt) بإصدار شهادات للنطاق.

  10. 10إيجاد خدمة بسجل SRV (مثل LDAP أو Kerberos)

    nslookup -type=srv _ldap._tcp.corp.example.com

    أجهزة لينكس التي تنضم إلى Active Directory أو IdM تجد وحدات التحكم بالنطاق بهذه الطريقة.

  11. 11رؤية الإجابة كاملة مع قيم TTL

    nslookup -debug app.example.com

    قيمة TTL توضح كم تحتفظ الخوادم بالإجابة في الذاكرة المؤقتة. اخفضها قبل نقل خدمة إلى عنوان IP جديد.

  12. 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. 13اختبار تحليل الأسماء داخل Pod في Kubernetes

    kubectl exec -it debug-pod -- nslookup my-service.default.svc.cluster.local

    إذا فشل هذا، افحص DNS العنقود (CoreDNS) قبل أن تنظر إلى تطبيقك.

  14. 14طرح أسئلة كثيرة في الوضع التفاعلي

    nslookup
    > server 1.1.1.1
    > set type=aaaa
    > www.example.com
    > exit

    الوضع التفاعلي يحتفظ بإعداداتك بين الأسئلة. اكتب الكلمات بعد علامة > الخاصة بـ nslookup.

انتبه

  • الأمر nslookup لا يقرأ /etc/hosts. قد يعمل اسم مع ping ولا يعمل مع nslookup، أو العكس.
  • النوع ANY ترفضه غالبًا خوادم DNS الحديثة. اسأل عن النوع الذي تحتاجه.
  • في الوضع التفاعلي العلامة هي >. اكتب exit للخروج.
  • رمز الخروج 1 عندما يفشل سؤال، و 0 عندما ينجح. السكربتات تستطيع استخدام ذلك.

الملفات

/etc/resolv.conf
خوادم DNS ونطاقات البحث التي يستخدمها nslookup افتراضيًا.

نصائح للحفظ

  • اسم ← عنوان، وعنوان ← اسم.
  • ضع اسم الخادم في النهاية لتسأله هو: nslookup NAME SERVER.
  • الخيار -type= يحدد السجل: mx للبريد، و txt لـ SPF و DMARC، و ns للمالك، و ptr للبحث العكسي.

الدليل الكامل

هذه الصفحة تشرح الأمر بكلمات بسيطة. الدليل الأصلي فيه كل التفاصيل.

في الطرفية: man nslookup