it-swarm.asia

لماذا يتعذر على "ping" حل اسم عندما يعمل "nslookup" بشكل جيد؟

على محطة عمل Windows XP ، يمكنني العثور على الجهاز الذي أريد الاتصال به في DNS باستخدام nslookup:

nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

ولكن ، عندما أحاول الاتصال بهذا الجهاز ، تظهر لي رسالة خطأ تفيد بأنه لا يمكن العثور على الجهاز (أي لا يمكن البحث عنه في DNS):

C:\> ping wolfman
Ping request could not find Host wolfman. Please check the name and try again.

يمكنني الاتصال إذا كنت أستخدم عنوان IP مباشرةً:

C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

يمكنني حل هذا عن طريق إضافة إدخال إلى ملف hosts الخاص بي ، لكنني أفضل معرفة سبب حدوث ذلك. المشكلة عابرة ، معظم أيام اليوم يمكنني الاتصال بالجهاز على ما يرام.

كيف يكون هذا ممكنا؟

إيتا: لقد تركت هذا الأمر باختصار ، لكن تم سؤالك عن:

C:\> ping wolfman.company.com
Ping request could not find Host wolfman.company.com. Please check the name and try again.

ETA: تطبيقات أخرى تحصل على نفس النتائج. حاولت فقط بينغ لتبسيط. يتعذر على telnet الاتصال ، وتطبع تطبيقات Cygwin رسالة "غير معروف المضيف وولفمان".

تحديث: باستخدام wireshark ، وجدت أن محطة العمل الخاصة بي لا تحاول البحث عن DNS. إنه مجرد الإبلاغ عن رسالة الخطأ "تعذر العثور على المضيف".

131
skiphoppy

أعتقد أن NSLOOKUP يفتح اتصال winsock على منفذ DNS ويصدر استعلامًا ، بينما يستخدم ping خدمة عميل DNS. يمكنك محاولة إيقاف هذه الخدمة ومعرفة ما إذا كان هذا يحدث فرقًا أم لا.

بعض الأوامر التي ستعيد تهيئة حالات الشبكة المختلفة:

إعادة تعيين إدخالات WINSOCK إلى إعدادات التثبيت الافتراضية: netsh winsock reset catalog
إعادة تعيين مكدس TCP/IP إلى إعدادات التثبيت الافتراضية: netsh int ip reset reset.log
ذاكرة التخزين المؤقت لمحلل فلوش DNS: ipconfig /flushdns
تجديد تسجيل عميل DNS وتحديث عقود تأجير DHCP: ipconfig /registerdns
جدول توجيه التدفق: route /f (إعادة التشغيل مطلوبة)

98
harrymc

حاول تنفيذ الأمر ping باستخدام اسم المضيف متبوعًا بنقطة. لذلك بدلاً من ping wolfman استخدم ping wolfman.

سيؤدي ذلك إلى حل المشاكل دون الاضطرار إلى إجراء حلول مع ملف المضيفين ، إلخ.

28
Senthil

جرب ipconfig /displaydns وابحث عن wolfman. إذا تم تخزينه مؤقتًا على أنه "اسم غير موجود" (ربما بسبب فشل البحث المتقطع السابق) ، يمكنك مسح ذاكرة التخزين المؤقت بـ ipconfig /flushdns.

nslookup لا يستخدم ذاكرة التخزين المؤقت ، بل يستعلم خادم DNS مباشرة.

16
craig65535

حاول إضافة . إلى لاحقات DNS لهذا الاتصال. بمعنى ، اذهب إلى:

  1. حالة الإيثرنت
  2. انقر فوق خصائص
  3. بروتوكول الإنترنت الإصدار 4
  4. انقر فوق خصائص
  5. انقر فوق متقدم
  6. إلحاق هذه يكفي DNS (بالترتيب)
  7. أضف . لاحقة.

نفس الخطوات موضحة في لقطة الشاشة التالية:

 

هذا يجب أن يجعل ping wolfman العمل.

تفسير

يرسل nslookup wolfman (بحث عن خادم الاسم: wolfman) اسم المضيف (wolfman) إلى DNS (نظام اسم المجال) للحصول على عنوان IP المقابل. هذا هو الغرض الوحيد للأمر nslookup. هذا يعمل بالفعل ، لذلك تحققنا من أن DNS يعمل وأن wolfman يتوافق بالفعل مع عنوان IP.

في المقابل ، يحتاج ping wolfman إلى القيام بأمرين:

  1. احصل على IP الذي يتوافق مع اسم المضيف (wolfman).
  2. إرسال الحزم إلى IP والاستماع للاستجابة

على Windows (حتى الإصدارات الحديثة مثل Windows 10) ، يمكن أن تفشل الخطوة الأولى بسهولة. من أجل التوافق مع الإصدارات السابقة ، يدعم Windows الأساليب المختلفة لتحليل اسم المضيف (ملف المضيفين ، DNS ، NetBIOS/WINS ، ملف LMHOST).

لسوء الحظ ، يبدو أن أمر Windows ping لا يحاول دائمًا البحث عن DNS. لا أعرف الشروط المحددة التي تؤدي إلى هذا السلوك.

لحسن الحظ ، يمكننا إجبار Windows على إجراء بحث عن DNS باستخدام FQDN (اسم مجال مؤهل بالكامل). في الممارسة العملية ، نقوم بذلك عن طريق لاحقة . نقطة إلى اسم المضيف: wolfman.. جرب ping wolfman. وتحقق من أنه يعمل.

الخطوة الأخيرة هي إجبار Windows على إلحاق هذه النقطة بنفسها. لقد أظهرت بالفعل كيفية القيام بذلك في بداية هذه الإجابة.

12
Frederik Aalund

nslookup يعمل بشكل مختلف عن الأوامر الأخرى عند حل أسماء/عناوين IP على Windows.

طريقة الدقة العادية على Windows هي كما يلي:

  1. يتحقق العميل لمعرفة ما إذا كان الاسم الذي تم الاستعلام عنه خاصًا به.
  2. يبحث العميل بعد ذلك عن ملف Hosts محلي وقائمة بعنوان IP والأسماء المخزنة على الكمبيوتر المحلي.
  3. يتم الاستعلام عن خوادم نظام اسم المجال (DNS).
  4. إذا لم يتم حل الاسم ، يتم استخدام تسلسل تحليل اسم NetBIOS كنسخة احتياطية. يمكن تغيير هذا الترتيب عن طريق تكوين نوع عقدة NetBIOS للعميل.

nslookup من ناحية أخرى يتم استخدام لاختبار خوادم اسم المجال.

10
Bryan

لقد واجهت مشكلة مماثلة وجربت الحل الذي اقترحهharrymc. لقد وجدت ما يبدو في النهاية (على الأقل إلى حد ما) العمل في منتدى Microsoft technet ( يعمل NSLOOKUP ولكن لا شيء آخر لديه DNS على Win7 PC مستقل )

وهنا الاقتباس:

... حاول استخدام الأمر أدناه لمسح وإعادة تعيين ذاكرة التخزين المؤقت لمحلل العميل للاختبار.

إيبكونفيغ/فلوشدس

ipconfig/registerdns

يرجى الرجوع إلى الرابط أدناه لمزيد من التفاصيل. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

لذلك في الأساس ما كان مفقودًا بالنسبة لي كان ipconfig /registerdns

8
Mick Halsband

اليوم فقط كان لدينا نفس المشكلة ، ولكن الحل كان مختلفًا . لذلك اعتقدت ، أود إضافته كمرجع لأن هذا كان أعلى نتيجة بحث.

  • المشكلة : ping لن يحل اسم المضيف ، ولكن nslookup يمكن. (تمت ملاحظته على مضيفين مختلفين لـ Windows Server 2012 R2.)
  • السبب : (لكل مضيف) لدى المضيف أكثر من NIC متصل وهناك عدة بوابات افتراضية تهيئتها.
  • الحل : (لكل مضيف) قم بإزالة العبارة الافتراضية من تكوين جميع بطاقات NIC باستثناء واحدة ، لذلك هناك reamains بوابة افتراضية واحدة فقط .
6
djlauk

واجهت نفس المشكلة في نظام Windows 2012R2 (= 8.1) ، وحاولت جميع الاقتراحات المذكورة أعلاه ، ولكن أيا منها لن يصلحها:
- تنفيذ اختبار الاتصال على الاسم المؤهل بالكامل.
- لم الأزيز pinging اسم غير مؤهل.
- كلاهما يعمل على عدة أنظمة أخرى ، والتي لديها نفس نظام التشغيل وعلى ما يبدو نفس التكوين.
- كانت جميع سلاسل البحث عن اللاحقة اللازمة هناك.
(لاحظ أن بعض الإصلاحات المقترحة ، مثل الحل البديل لاستعلامات التسمية المتعددة ، غير ذات صلة بشكل واضح ، لأن الاسم غير المؤهل يحتوي على جزء واحد فقط.)

ثم لاحظت أن النظام الهدف الذي كنت أحاول اختباره لم يكن لديه عنوان IPv6. لذلك حاولت "بينغ -4 unqualified_name"، والبنغو! هذا عملت.
لذا لسبب ما ، على هذا النظام فقط ، حاول ping فقط حل الاسم غير المؤهل> عنوان IPv6 ، وليس الاسم غير المؤهل> IPv4.
بالنسبة لي كان الإصلاح هو تعطيل الإصدار IPv6 تمامًا لأنني لست بحاجة إلى ذلك على الإطلاق. لكنني مهتم حقًا بإيجاد طريقة أكثر دقة لإخبار ping (أو يفترض أن تكون خدمة عميل DNS) لمحاولة حل عناوين IPv4 و IPv6.

5
Jean-François Larvoire

ربما يتم سرد wolfman.company.com في C:\Windows\system32\drivers\etc\hosts؟

يتجاوز NSLOOKUP هذا الملف ويسأل دائمًا DNS ، بينما يبحث ping والأدوات الأخرى أولاً وقبل كل شيء في ملف "hosts" ، ثم في DNS.

5
Mikhail Kupchik

قد تؤدي إضافة إدخال في الملف c:/windows/system32/drivers/etc/hosts إلى إصلاحه.

2
Manoj Agarwal

جئت عبر هذه المسألة كذلك. كانت الطريقة "الأسهل" لإصلاحها بالنسبة لي هي ببساطة إضافة . إلى نهاية اسم المضيف. لكن هذا مزعج إلى حد ما. معظم الشبكات لا تتطلب هذا. أفضل عدم إخبار أي شخص آخر على الشبكة بالقيام بذلك عندما يحتاجون إلى الوصول إلى نفس المورد.

كنت أبحث في الاقتراح المقدم من Frederik Aalund كحل ممكن ولاحظت أنهم اقترحوا التبديل من الخيار الافتراضي "إلحاق لاحقات DNS الأساسية والخاصة بالاتصال". هذا جعلني أفكر ربما شبكتي ببساطة تم تكوينها بشكل خاطئ.

بالنظر إلى إعدادات DD-WRT ، تم ترك "LAN LAN" بدون تعيين. تعيين هذا إلى سلسلة عشوائية يبدو أنه قد حل هذه المشكلة لجميع العملاء على شبكتي دون الحاجة إلى تكوين خاص على كل جهاز ، والحل الذي أردت! :)

2
Cameron Tacklind

كنت أحاول أن أعرف لماذا يمكنني استخدام ping server على جهاز كمبيوتر واحد يعمل بنظام win 7 ، والآخر لا يمكنه حل server. ومع ذلك ، يمكن لكل من ping server.lan الذي لم أفهمه تمامًا.

تبين أنني قد تعثرت مع بعض الإعدادات (لاحقات DNS) لعدم استخدام FQDNs أثناء استخدام VPN العمل. اضطررت للذهاب إلى إضافة .lan المحلي إلى تلك اللواحق من أجل جعل كلا الجهازين يتصرفان بنفس الطريقة.

انتقل إلى لوحة التحكم> الشبكة والإنترنت> اتصالات الشبكة وانقر بزر الماوس الأيمن على اتصال الشبكة واضغط على الخصائص. انقر فوق Internet Protocol Version 4 واضغط على الزر Properties. ثم الزر Advanced ... في هذه النافذة الجديدة. انتقل إلى علامة تبويب DNS ، حيث أضفت لاحقة DNS لعملي ولكنني كنت بحاجة أيضًا لواجهة المنزل العادية.

Advanced TCP/IP Settings

2
eresonance

قد أكون مخطئًا في هذا لأنه يستند إلى أيام مجموعة موارد NT4 المنسية منذ زمن طويل.

كأجرة يمكنني أن أذكر أن PING يستخدم NetBios/WINS و DNS (بهذا الترتيب ، على الأقل إذا لم تحدد FQDN).

لقد مضى WINS منذ عدة سنوات ، لكن لا يزال بإمكانك تمكين NetBios على الواجهة الخاصة بك ، وبالتالي قد يستخدم PING netbios قد لا يعطيك أي نتيجة. خاصة إذا كانت حركة المرور تمر جهاز التوجيه في مكان ما.

فقط قم بتعطيل Netbios وسوف يستخدم Ping DNS كأولوية أولى وألحق DNS Surffic المسجلة على الواجهة باسم المضيف الخاص بك.

1
MrCalvin

أنا أتناول هذا لأنه أزعجني العام الماضي وربما وجدت حلاً.

بالنسبة لي يبدو أن بعض نظام ذاكرة التخزين المؤقت لنظام أسماء النطاقات داخل عميل Windows خاطئ. يتأثر نظاما التشغيل Windows 7 و 8.1 بهذا ... لم يعد بإمكانهما التحدث عن Windows XP بعد الآن. بينغ لا يحل الاسم. انها ليست الجزء icmp الذي هو مهم ولكن اسم حل جزء). تم تصميم NSLOOKUP للاستعلام عن خادم الأسماء وفعل ذلك بالضبط وليس حل التسلسل الهرمي لـ windows name.

ساعد إعادة تشغيل dnscache الخدمة في كل مرة. لكن منذ I تعطيل IPv6 on all واجهات العميل - المشكلة لم تحدث بعد الآن.

في صحتك!

1
grim

لقد واجهت هذا عندما انتقلنا إلى نظام التشغيل Windows 7 من نظام التشغيل Windows XP ، وكانت المشكلة متعلقة بمسألة استعلام Windows 7 Multi Label DNS.

السماح لاحقة نظام أسماء النطاقات (DNS لاحقة) باستفسارات الأسماء المتعددة غير المؤهلة - انظر:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

أتمنى أن يساعدك هذا

1
Sony NS

إذا كان ذلك على نظام التشغيل Mac OS x فقد تكون مشكلة DNS Cache:

تفريغ ذاكرة التخزين المؤقت

Sudo killall -HUP mDNSResponder
Sudo dscacheutil -flushcache
1
Christian

أي من الحلول هنا عملت بالنسبة لي. ما الذي نجح بالنسبة لي كان إعادة الاتصال بـ vpn الخاص بعملي باستخدام OpenVPN. ثم بعد فصل كل شيء تابع للعمل.

أعتقد أن المشكلة كانت متعلقة بالطاقة الخارجة أثناء اتصال جهاز الكمبيوتر بـ openVPN. الطريقة الوحيدة التي حظيت بها هي استخدام WireShark. لقد لاحظت أن عناوين IP المقصودة لجميع الاستعلامات كانت في طريقها إلى عناوين IP على الشبكة الداخلية لعملي.

0
Bela

لقد واجهت هذه المشكلة للتو ، ووجدت شيئًا غريبًا تمامًا ، وتمكنت من حلها

بشكل أساسي ، إذا كان لديك أي إدخالات في ملف المضيفين الخاص بك ، والتي هي نفس عنوان IP الذي يحاول ping حله ، فسيفشل.

على سبيل المثال ، إذا كان لديك نظام أسماء النطاقات في DNS لديك ، فلديك سجل لـ www.example.com - 10.0.0.20 ، ولكن بعد ذلك لديك إدخال في ملف مضيف عميلك ، 10.0.0.20 somethingelse.com ، لن تتمكن من تنفيذ الأمر ping www .example.com

غريب هاه

0
Just Lucky Really

واجهت نفس المشكلة وتبين أن لجهاز آخر نفس عنوان IP ، وكان ذلك يسبب ذلك.

تغيير IP مرة أخرى إلى DHCP وكان كل شيء يعمل بشكل جيد.

0
Klaus

في حالتي ، ما حل هذه المشكلة هو إضافة مجال المضيف الذي كنت أحاول اختباره على خيار نهج المجموعة المسمى "قائمة بحث لاحقة DNS" .

الإجراء باختصار هو: افتح gpedit.msc وانتقل إلى Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List ، اضبطه على "ممكّن" وأضف اسم المجال إلى القائمة (القائمة فارغة افتراضيًا).

يمكن العثور على وصف أكثر تفصيلاً لهذه الخطوات هنا

0
ndemou