ترتيب تحليل الأسماء على Windows ── hosts والذاكرة المؤقّتة لـ DNS وLLMNR/mDNS وDoH

· آخر تحديث: · · Windows, DNS, تحليل الأسماء, الشبكات, تحقيق الأعطال, PowerShell, TCP/IP, نظم المعلومات

سجل التعديلات (النسخة الأولى، نُشرت في 4 Sep، 2026)
النشر الأول

«الإعدادات نفسها، لكن هذا الحاسوب وحده لا يصل إلى الخادم الداخلي.» «يُفتح في المتصفّح، لكن تطبيق الأعمال يفشل في تحليل الأسماء.» «وضعته في hosts ولا أثر.»

عند التحقيق في مشكلات كهذه، أوّل ما تثبته هو أيّ آليّة تجيب عن ذلك الاسم. لـ Windows عدّة مسارات: الذاكرة المؤقّتة، وhosts، وخادم DNS، وLLMNR، وNetBIOS، وmDNS، وبعض التطبيقات تستخدم مساراً خاصّاً منفصلاً عن Windows.

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

مشكلتك ما تفحصه أوّلاً أين تقرأ
hosts لا أثر له / بعض الحواسيب فقط تعيد IP قديماً محتويات الذاكرة المؤقّتة والمسار الذي سلكته الأداة التي استخدمتها الذاكرة المؤقّتة وhosts، الخطوة 2
اسم قصير مثل app01 يفشل على بعض الحواسيب فقط إكمال اللاحقة، وما إذا كان LLMNR وNetBT متاحين شكل الاسم، حالة الاسم أحادي الوسم النموذجيّة
النتيجة تتغيّر عند الاتّصال بـ VPN الأولويّة بين عدّة NIC وNRPT عدّة NIC، NRPT
يتّصل بعد انتظار ثوانٍ عدّة خادم DNS لا يردّ وتوقيت إعادة الإرسال المهل
المتصفّح وتطبيق الأعمال يحصلان على نتيجتين مختلفتين المحلّل المضمَّن، Secure DNS، الوكيل أين يدخل التطبيق، DoH في المتصفّح
لا تعرف من أين تبدأ ابدأ من شكل الاسم وقارن النتائج مع تقييد المسار إجراء العزل

مقدّمات هذه المقالة

البند التفاصيل
القرّاء المقصودون موظّفو تقنية المعلومات الذين يحقّقون في «الاسم لا يُحلّ» و«بعض الحواسيب فقط لا تتّصل»، ومطوّرو تطبيقات Windows الذين يصمّمون اتّصال تطبيقات الأعمال ويصونونه
المعرفة الخلفيّة أساسيّات عناوين IP وDNS (سجلات A، FQDN)، والقدرة على تشغيل أوامر PowerShell بصلاحيات مسؤول
البيئة المستهدفة Windows 10 / Windows 11. يتطلّب قسم DoH Windows 11 أو Windows Server 2022 فما بعده.1 تستخدم أوامر الفحص وحدة DnsClient (Windows 8 / Windows Server 2012 فما بعده)2
خارج النطاق التكوين والإخفاقات في جانب خادم DNS (المناطق والمعيدون والتكرار في Windows Server DNS). خطوات نشر Zero Trust DNS (ZTDNS)

تغطي مقالة التقاط الحزم الحزم التي تسري على السلك، وتغطي مقالة الوكيل «إعدادات وكيل من تُقرأ». تغطي هذه المقالة الخطوة قبل ذلك: «من أين جاء عنوان IP للوجهة»، منظَّمة على أساس مصادر Microsoft الأوّليّة.

1. الخلاصة أوّلاً

ثلاثة أمور تُحفَظ.

  • تحليل الأسماء على Windows لا يمضي دائماً في طابور واحد بالترتيب. تأتي الذاكرة المؤقّتة وhosts أوّلاً، لكن لاسم أحادي الوسم يعمل DNS وLLMNR/NetBT على التوازي افتراضيّاً.34
  • الاسم نفسه يعطي نتائج مختلفة عندما تختلف إعدادات الحاسوب ومسار التطبيق. فكّر في اللواحق وVPN وNRPT ومحلّل المتصفّح المضمَّن منفصلين.567
  • في تحقيق، قيِّد المسار المستخدَم وقارن النتائج. افصل الذاكرة المؤقّتة وDNS والمحلّي للرابط بمفاتيح Resolve-DnsName، ثمّ أكِّد بفرق إعدادات تجاه حاسوب يعمل وبالتقاط.8

استخدم المخطّط التالي خريطة كلّيّة.

تحليل الأسماء كومة طبقاتيمضي طلب تحليل أسماء من واجهة برمجة التطبيق إلى خدمة DNS Client؛ تُفحَص الذاكرة المؤقّتة وhosts أوّلاً، ثمّ خادم DNS، وللأسماء أحاديّة الوسم فقط يُجرَّب LLMNR وNetBIOS (على التوازي مع DNS افتراضيّاً). لأسماء .local، mDNS مسار إضافي إلى جانب DNS المكوَّن. للمتصفّح محلّل خاصّ خارج هذا الطابورإن غابتإن غابت، اسم أحادي الوسم (على التوازي مع DNS افتراضيّاً)اسم .local (مسار إضافي)محلّل خاصّ، DoHالتطبيق (getaddrinfo)خدمة DNS Clientالذاكرة المؤقّتة (بما فيها hosts)استعلام خادم DNSLLMNR / NetBIOSmDNSالمتصفّحمسار منفصل

تُفحَص الذاكرة المؤقّتة أوّلاً؛ وبعدها يعمل DNS، وللأسماء أحاديّة الوسم LLMNR وNetBIOS، على التوازي. للمتصفّح مسار منفصل.

فيما يلي، «أيّ طبقة تجيب» مشمول في الفصول 3 إلى 5، و«كيف يُرسَل الاستعلام» في الفصل 6، و«كيفيّة التحقّق» في الفصلين 7 و8. DoH ميزة تبدّل النقل إلى خادم DNS إلى HTTPS؛ لا تستبدل ترتيب hosts والذاكرة المؤقّتة وNRPT.9

في المخطّط، يشير الخطّ المتّصل إلى علاقة قائمة دائماً، ويشير الخطّ المتقطّع إلى علاقة مشروطة (شروط قيامها مذكورة في شرح كلّ علاقة في الصفحة التفصيليّة). القائمة الكاملة للعلاقات (المجموع 48، مع الأدلّة ودرجة اليقين) وتعريفات المفاهيم الرئيسة مجمّعة في صفحة تفاصيل خريطة المعرفة (باليابانية). البيانات: JSON-LD / Turtle

2. «تحليل الأسماء» ليس عمليّة واحدة

كلّ ما يعود إلى التطبيق عنوان أو خطأ

عندما يتّصل تطبيق باستخدام اسم مثل www.example.com، تُستدعى getaddrinfo في Winsock (الإصدار Unicode هو GetAddrInfoW). لمساحة الأسماء NS_DNS، تحوّل هذه الدالّة الاسم إلى عنوان عبر DNS وملف hosts المحلّي وآليّات أخرى. إن ردّ عدّة موفِّري مساحة أسماء، تجمع استجاباتهم وتعيدها.10

بعبارة أخرى، من النتيجة التي يتلقّاها التطبيق، لا تستطيع أن تعرف أيّ طبقة أجابت.

يستخدم Dns.GetHostAddresses في .NET أيضاً getaddrinfo على Windows. لمضيف مدرَج في hosts، يعيد ذلك العنوان دون استعلام خادم DNS. يعمل HttpClient فوق صنف Dns هذا أيضاً، لذا يرث تطبيق .NET يتّصل مباشرة بوجهته ترتيب تحليل الأسماء على Windows.11

عبر وكيل HTTP، يتغيّر الاسم الذي يُحلّ. ما يُحلّ محلّيّاً هو اسم الوكيل؛ يُحلّ اسم الوجهة في جانب الوكيل. في تلك الحالة لا دور لـ hosts المحلّي والذاكرة المؤقّتة واللواحق وNRPT في حلّ الوجهة. أيّ إعدادات وكيل تُستخدَم مشمولة في مقالة الوكيل.

2.1 خدمة DNS Client تقرّر الترتيب

ما يعمل تحت getaddrinfo هو خدمة DNS Client (اسم الخدمة Dnscache). تصف وثائق Microsoft الترتيب الأساسي كما يلي.3

  1. افحص الذاكرة المؤقّتة.
  2. افحص ملف hosts.
  3. استعلم خادم DNS.

لأنّ محتويات hosts تُحمَّل إلى الذاكرة المؤقّتة عند بدء الخدمة، تعامل هذه المقالة الأوّلين معاً الطبقة 1، «الذاكرة المؤقّتة وhosts».5

بعد ذلك يتفرّع المسار حسب الاسم والنهج.

الطبقة الدور تحفّظ عند قراءة الترتيب
الطبقة 1: الذاكرة المؤقّتة وhosts تعيد جواباً محفوظاً داخل الحاسوب إن وُجد جواب هنا، لا يُسأل خادم DNS
الطبقة 2: خادم DNS تحصل على جواب باستعلام DNS تتدخّل اللواحق وعدّة NIC وNRPT وما إلى ذلك
الطبقة 3: LLMNR وNetBT تحلّ الأسماء أحاديّة الوسم بوسائل أخرى أيضاً على التوازي مع الطبقة 2 افتراضيّاً. تصير متسلسلة بعد فشل DNS فقط عندما عُطِّل التحسين

يرسل «تحليل الأسماء الذكي متعدّد المنازل» الافتراضي استعلامات DNS وLLMNR وNetBT إلى جميع الشبكات على التوازي. أيّ استجابة تُعتمَد تُقرَّر بقواعد القسمين 4.3 و5.2.4

لذلك، «متى يُرسَل الاستعلام» و«الأولويّة المعطاة للأجوبة التي تعود» أمران مختلفان. رؤية LLMNR أو NetBT في التقاط لا تعني بمفردها «فشل DNS». «الطبقات الثلاث» في هذه المقالة تقسيم للشرح؛ لا تعني أنّ الطبقات تجري دائماً بالتتابع زمنيّاً.

2.2 أشياء خارج الطابور

الأسهل خلطاً هما هذان.

الأداة أو التطبيق كيف يختلف عن مسار Windows تحفّظ أثناء تحقيق
nslookup لا يستخدم محلّل نظام التشغيل؛ يتجاوز الذاكرة المؤقّتة وhosts وNRPT ويستعلم خادم DNS الأوّل مباشرة123 لا مفاجأة عندما تختلف نتيجته عن ping أو تطبيق الأعمال
Microsoft Edge يستخدم عميل DNS المضمَّن افتراضيّاً. يُعالَج DoH أيضاً دائماً بالمحلّل المضمَّن7 «يُفتح في المتصفّح» ليس دليلاً على أنّ تحليل أسماء نظام التشغيل سليم

استخدام العميل المضمَّن في Edge لا يعني بمفرده أنّ خادم DNS يتغيّر. يعامله القسم 6.2 منفصلاً عن إعداد Secure DNS الذي يختار موفِّراً مختلفاً.

3. الطبقة 1 ── الذاكرة المؤقّتة وhosts

ما تريد معرفته في هذه الطبقة هو أيّ أجوبة تبقى داخل الحاسوب. تحمل الذاكرة المؤقّتة لا الأجوبة الصحيحة فحسب بل أيضاً أجوبة قديمة وأجوبة «الاسم غير موجود».

3.1 hosts يُحمَّل إلى الذاكرة المؤقّتة

ملف hosts في C:\Windows\System32\drivers\etc\hosts. عندما تبدأ خدمة DNS Client، تُحمَّل تعيينات الاسم إلى عنوان IP إلى ذاكرة المحلّل المؤقّتة. تُحفَظ السجلات الحاصلة من استعلامات DNS في الذاكرة المؤقّتة نفسها لمدّة TTL (وقت البقاء).5

يعرض ipconfig /displaydns كلاً من القيود المحمَّلة من hosts والقيود الحاصلة من استعلامات DNS حديثة.13 في مثال Microsoft نفسه، إن وضعت contoso.com في hosts، يعيد Resolve-DnsName contoso.com ذلك العنوان ولا تسري حركة DNS.3

كيفيّة قراءة غياب حزم DNS

إن حلَلت FQDN بلا DoH أو DoT، ونجح تحليل الأسماء، ولا يوجد استعلام على المنفذ 53، فالأرجح أنّ الذاكرة المؤقّتة أو hosts تجيب. أوّلاً مع ذلك، استبعد المسارات الأخرى التالية.

الاسم أو الإعداد الحركة التي تفحصها إلى جانب المنفذ 53
اسم .local mDNS (UDP 5353)
اسم أحادي الوسم LLMNR (5355)، خدمة أسماء NetBT (UDP 137)
DoH مفعَّل HTTPS (443)
DoT مفعَّل TLS (853)

لا تستنتج «ذاكرة مؤقّتة» لمجرد أنّ «لا شيء على المنفذ 53»؛ انظر إلى المسارات التي يمكن أن تكون مستخدَمة أيضاً. سطر واحد من hosts اختباري متروك على آلة تطوير يمكن أن يضلّل تحقيقاً.

يتطلّب تحرير hosts صلاحيات مسؤول، وقد تكتشف منتجات أمنيّة التغيير. ينبغي تجنّب تصميم يجعل تشغيل تطبيق الأعمال يعتمد على hosts.

3.2 الردود السلبيّة تُخزَّن أيضاً

«غير موجود» أيضاً واحد من الأجوبة التي تُخزَّن. يخزّن عميل DNS الردود السلبيّة كما الإيجابيّة.5

إن أظهر ipconfig /displaydns «Name does not exist» للاسم المستهدف، يبقى ردّ سلبي من خادم DNS على العميل. يخبرك إجراء Microsoft بطرحه بـ ipconfig /flushdns.1413

زمن احتفاظ الذاكرة المؤقّتة السلبيّة هو MaxNegativeCacheTtl تحت HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters، والافتراضي 5 ثوانٍ.15 هذا سبب استمرار حاسوب في إعادة إخفاقات لثوانٍ قليلة حتّى مباشرة بعد إضافة سجلّ إلى DNS.

3.3 TTL و«بعض الحواسيب فقط قديمة»

تبقى الردود الإيجابيّة أيضاً لمدّة TTL. حاسوب حلّ الاسم قبل تغيير عنوان IP للخادم يواصل استخدام الجواب القديم، بينما حاسوب يحلّه لأوّل مرّة بعد التغيير يحصل على الجديد. وحتّى مع خادم DNS نفسه، تختلف النتيجة عندما يختلف وقت البحث.5

يتصرّف Clear-DnsClientCache كـ ipconfig /flushdns ويحذف محتويات الذاكرة المؤقّتة كلّها، بما فيها الردود السلبيّة.16 بـ Get-DnsClientCache، يمكنك استرداد الذاكرة المؤقّتة كائنات وفحص نوع السجلّ وTTL المتبقّي.17

# هل اسم معيّن في الذاكرة المؤقّتة، وكم ثانية TTL تبقى؟
Get-DnsClientCache -Entry 'app01.corp.example.com' |
    Select-Object Entry, Type, Status, TimeToLive, Data

# افحص محتويات hosts والذاكرة المؤقّتة معاً
ipconfig /displaydns | Select-String -Pattern 'app01' -Context 0,6

# اطرح الذاكرة المؤقّتة (بما فيها الردود السلبيّة)
Clear-DnsClientCache

إن وُجد جواب في الطبقة 1، يُحسَم هذا البحث قبل أن يبلغ خادم DNS. غير أنّ احتمال أن يكون جواب خاطئ قد تُعلِّم أصلاً من خادم DNS يبقى. لا تتوقّف عند طرحه؛ افحص أيضاً الجواب الحاصل جديداً في الخطوة 3 من الفصل 8.

4. الطبقة 2 ── استعلام خادم DNS

إن لم يكن للطبقة 1 جواب، يمضي التحليل إلى DNS. هنا، فكّر منفصلاً في أيّ اسم يُرسَل، وإلى أيّ خادم، وبأيّ توقيت.

4.1 الأسماء أحاديّة الوسم واللواحق

أوّلاً، افحص شكل الاسم الذي مرّره التطبيق.5

شكل الاسم مثال كيف يُرسَل إلى DNS
FQDN بنقطة ختاميّة (اسم مطلق) www.contoso.com. يُرسَل كما هو
يحتوي نقطة لكن بلا نقطة ختاميّة www.contoso.com افتراضيّاً يُرسَل بنقطة ختاميّة مضافة. إن فُعِّل النهج الذي يسمح بإلحاق لاحقة للأسماء متعدّدة الوسوم، تُجرَّب اللواحق أيضاً4
اسم أحادي الوسم بلا نقطة www يُكمَل بإعدادات لاحقة الحاسوب ثمّ يُرسَل

اللاحقة هي جزء المجال المُلحَق بعد اسم قصير. إلحاق corp.example.com بـ app01 يجعل الاسم المستعلَم app01.corp.example.com.

عندما توجد قائمة بحث

تُلحَق لواحق قائمة البحث بلاحقة DNS بالترتيب من الأعلى، ويُرسَل الاسم بنقطة ختاميّة. متى كُوِّنت قائمة بحث، تُستخدَم تلك القائمة فقط. لا تُستخدَم اللاحقة الأوّليّة واللواحق الخاصّة بالاتّصال وتفكيك الاسم.18

عندما لا توجد قائمة بحث

تُلحَق لاحقة DNS الأوّليّة. إن فُعِّل تفكيك الاسم، يُسقَط الوسم الأيسر بعد كلّ فشل ويُجرَّب الاسم مجدّداً؛ مثلاً، من www.test.contoso.com إلى www.contoso.com. إن كان لمحوّل لاحقة DNS خاصّة بالاتّصال، تُلحَق تلك أيضاً وتُرسَل.5

لهذا السبب، يتوسّع server01 نفسه على نحو مختلف في بيئة يوزّع فيها نهج المجموعة قائمة بحث وفي بيئة يوفّر فيها الانضمام إلى المجال لاحقة أوّليّة.

قائمة طويلة تزيد الانتظار أيضاً

إن كانت اللاحقة الصحيحة قرب نهاية القائمة، يتراكم وقت الاستعلام حتّى تُبلَغ. تشرّح Microsoft أيضاً هذا التأخير بمثال يجرّب ستّ لواحق. لتجربة توسعة واحدة معيّنة فقط، ألحِق نقطة ختاميّة، كما في internal.contoso.com..3

# الإعدادات الكلّيّة: قائمة البحث والتفكيك
Get-DnsClientGlobalSetting

# لكلّ واجهة: اللاحقة الخاصّة بالاتّصال وإعدادات التسجيل
Get-DnsClient | Select-Object InterfaceAlias, ConnectionSpecificSuffix, UseSuffixWhenRegistering

# خوادم DNS لكلّ واجهة (IPv4 وIPv6 كلاهما)
Get-DnsClientServerAddress | Where-Object ServerAddresses | Select-Object InterfaceAlias, AddressFamily, ServerAddresses

يعيد Get-DnsClientGlobalSetting الإعدادات الكلّيّة مثل قائمة البحث وما إذا فُعِّل التفكيك وإلى أيّ مستوى؛ ويعيد Get-DnsClient الإعدادات لكلّ واجهة.1920

4.2 ترتيب خوادم DNS المتعدّدة والمهل

عندما «لا يفشل، لكن هناك انتظار ثوانٍ عدّة»، اشتبه بإعادات إرسال إلى خادم DNS لا يردّ. لخوادم DNS المكوَّنة على NIC واحدة، يصطفّ توقيت إعادة الإرسال الافتراضي كما يلي.21

الوقت من البداية خادم واحد خادمان 3 خوادم فما فوق
0 ث استعلام الخادم إلى الأوّل إلى الأوّل
1 ث إعادة إرسال إلى الثاني إلى الثاني
2 ث إعادة إرسال إعادة إرسال إلى الثاني إلى الثالث
4 ث إعادة إرسال إلى جميع الخوادم دفعة إلى جميع الخوادم دفعة
8 ث إعادة إرسال إلى جميع الخوادم دفعة إلى جميع الخوادم دفعة
10 ث تخلٍّ تخلٍّ تخلٍّ

هذا جدول حالة لا ردّ فيها. خصوصاً، لا تخلط الاثنين التاليين.

ردّ فعل الخادم هل يُجرَّب الخادم التالي؟ كيفيّة قراءته
لا ردّ نعم مشكلة إعادة إرسال ومهلة
ردّ سلبي يقول «الاسم غير موجود» يتوقّف هناك وُجد جواب يقول إنّ الاسم غير موجود

عندما «أوقفنا واحداً منها لكنّه لا ينتقل»، إن استمرّ خادم يحمل منطقة قديمة في العمل وأعاد ردوداً سلبيّة، لا ينتقل التحليل إلى الخادم التالي.21

الخوادم الرابعة فما بعد لا تُبلَغ حتّى مرور 4 ثوانٍ

إن كان الخادم الذي يستطيع الردّ رابعاً فما بعد في القائمة، تمرّ 4 ثوانٍ على الأقلّ بعد الاستعلام الأوّل. إن كان موعد التطبيق النهائي أقصر من ذلك، يفشل في مرحلة تحليل الأسماء. لإخراج الاستعلام أبكر، سيكون عليك نقل ذلك الخادم إلى الثلاثة الأولى، لكن الإصلاح الجذري هو إصلاح الخوادم غير القابلة للوصول قبله، أو إزالتها من الإعدادات. راجع مهلة جانب التطبيق أيضاً.21

في مثال Microsoft أيضاً، تكوين يكون فيه واحد فقط من أربعة خوادم قابلاً للوصول يستغرق نحو 4 ثوانٍ ليكتمل. يمكنك قياس الوقت المنقضي بـ Measure-Command، وتعامل الوثيقة نفسها أقلّ من ثانية مقبولاً.3

# اسأل خادماً معيّناً مباشرة، DNS فقط، واحصل على الوقت المنقضي بالميلّي ثانية
(Measure-Command {
    Resolve-DnsName -Name 'app01.corp.example.com' -Server 10.0.1.2 -DnsOnly
}).TotalMilliseconds

لأنّ هذا الأمر يثبّت الخادم، يقيس زمن استجابة ذلك الخادم وحده. التأخير حتّى بلوغ القيد الرابع في القائمة يُفحَص باستعلام بلا -Server، أو بالتقاط لذلك الاستعلام.

لاحظ أنّ عميل DNS يرفع الخوادم الأسرع ردّاً، ويتذكّر الخوادم التي لا تردّ، ويعيد تجربتها دوريّاً. تُعدَّل المهلة الأوّليّة أيضاً ضمن مدى 25 إلى 1,000 ميلّي ثانية استناداً إلى الأداء السابق. الجدول أعلاه هو الهيكل الافتراضي، ولهذا تنحرف القياسات الفعليّة عنه.5

4.3 عدّة NIC و«تحليل الأسماء الذكي متعدّد المنازل»

على حاسوب بسلكي وWi-Fi، أو حاسوب يُضاف إليه محوّل VPN، افحص لا قائمة خوادم DNS فحسب بل أيضاً الاستعلام عبر الشبكات واختيار الاستجابة.

إعادة الإرسال إلى محوّلات متعدّدة

في إجراء استعلام Microsoft، يذهب الاستعلام إلى خادم DNS الأوّل للمحوّل المفضَّل، بانتظار ثانية واحدة. إن لم يكن هناك ردّ، يذهب إلى الخادم الأوّل لكلّ محوّل ما زال في مجموعة المرشّحين، بانتظار ثانيتين، وبعد ذلك إلى جميع خوادم جميع المحوّلات، بانتظار 2 و4 و8 ثوانٍ. عندما يعيد خادم على محوّل ردّاً سلبيّاً، تُزال الخوادم الأخرى لذلك المحوّل من المرشّحين.5

النهج الذي يتحكّم في الاستعلام المتوازي

يتحكّم إعداد نهج المجموعة «Turn off smart multi-homed name resolution» في السلوك التالي.4

النهج السلوك
افتراضي (غير مكوَّن) يُستعلَم DNS وLLMNR وNetBT عبر جميع الشبكات على التوازي. إن وصلت عدّة ردود إيجابيّة، يُعتمَد الآتي من الشبكة الأعلى في ترتيب الربط
Enabled يوقف التحسين. يُجرَّب DNS على جميع الشبكات أوّلاً؛ إن فشل، LLMNR؛ إن فشل ذلك أيضاً، NetBT، بالتتابع

لأنّ النهج اسمه «Turn off»، لاحظ أنّ تفعيل النهج يعطّل التحسين.

مثال تتغيّر فيه النتيجة بـ VPN

عندما يُستعلَم اسم داخلي، يعيد DNS في جانب VPN العنوان الداخلي، ويمكن لـ DNS في جانب موجّه المنزل أيضاً إعادة ردّ إيجابي مختلف: عنواناً عامّاً تحت اسم المجال نفسه كالداخلي، أو عنوان صفحة إعلان مستبدَلة لاسم غير موجود، مثلاً.

مع ردّين إيجابيّين، يُحسَم الاعتماد بترتيب الربط. على Windows الحالي، تُقرَّر هذه الأولويّة بمقياس الواجهة؛ كلّما صغر InterfaceMetric الذي يعرضه Get-NetIPInterface، ارتفعت الأولويّة. فروق هذا الترتيب من حاسوب إلى آخر تصير فروقاً في النتيجة.22

إن أعاد جانب المنزل، من جهة أخرى، ردّاً سلبيّاً، يُزال ذلك المحوّل من المرشّحين ويُستخدَم جواب جانب VPN.5 توزّع منتجات VPN NRPT أو «Turn off smart multi-homed name resolution» بالضبط للتحكّم في هذه الفروق.

4.4 NRPT ── تغيير وجهة الاستعلامات لكلّ مساحة أسماء

NRPT (Name Resolution Policy Table) جدول يحدّد، لكلّ مساحة أسماء مثل .corp.contoso.com، أيّ خوادم DNS تُستخدَم وإعدادات DirectAccess وDNSSEC. تكتب ملفّات تعريف DirectAccess وAlways On VPN قواعد فيه لتنتج سلوكاً مثل «أرسل الأسماء الداخليّة فقط إلى DNS الداخلي».236

يعرض Get-DnsClientNrptPolicy -Effective القواعد السارية فعلاً.

# قواعد NRPT السارية فعلاً
Get-DnsClientNrptPolicy -Effective

# اعرض قواعد مساحة أسماء معيّنة فقط. -Namespace يرشّح فقط على خاصّيّة Namespace؛ لا يطابق اسماً.
# تمرير 'app01.corp.example.com' لا يعيد قاعدة اللاحقة لـ '.corp.example.com'.
# لمعرفة أيّ قاعدة تسري على اسم، عدِّد القواعد وطابقها بنفسك، كما في الخطوة 4 من الفصل 8
Get-DnsClientNrptPolicy -Effective -Namespace '.corp.example.com'

يسري NRPT فقط على تطبيقات تستخدم Windows DNS API. تطبيقات بتحقيق DNS خاصّ تتجاوز ذلك المسار. تستشهد وثائق VPNv2 CSP بـ nslookup مثالاً وتشترط Resolve-DnsName لفحص NRPT. محلّل المتصفّح المضمَّن وDoH أيضاً خارج Windows DNS API.6

5. الطبقة 3 ── مسارات الهروب للأسماء أحاديّة الوسم: LLMNR وNetBIOS ثمّ mDNS

5.1 كيف تختلف البروتوكولات الثلاثة

LLMNR وNetBIOS over TCP/IP (NetBT) وسيلتان بديلتان لحلّ اسم أحادي الوسم مثل app01. افتراضيّاً يعملان على التوازي مع DNS، ويمكن اعتماد ردّ محلّي للرابط حتّى عندما يعيد DNS ردّاً إيجابيّاً. يصيران متسلسلين بعد فشل DNS فقط عندما عُطِّل تحليل الأسماء الذكي متعدّد المنازل.4

mDNS منفصل عن هذين؛ هو مسار إضافي لأسماء .local. ليس مساراً شاملاً ينطلق بعد فشل تحليل DNS لاسم أحادي الوسم.24

البروتوكول المنفذ المدى الموقع
LLMNR بث متعدّد على UDP 5355. TCP 5355 لإعادة الإرسال الأحادي2526 الرابط ضمن الشبكة الفرعيّة نفسها تحليل أسماء ثانوي يعمل بلا DNS مكوَّن4
mDNS بث متعدّد على UDP 535324 الشبكة المحلّيّة التي يبلغها البث المتعدّد حلّ أسماء .local. الطريقة التي اختارتها Microsoft محوراً للمضيّ قدماً27
NetBT خدمة الأسماء على UDP 13728 بث، أو استعلام خادم WINS29 قديم. يُوصى بالترحيل من WINS إلى DNS30

وحتّى لـ .local، لا تتخطَّ فحص DNS

.local لا يصير mDNS فقط. إن كان مجال Active Directory شيئاً مثل corp.local، يواصل ذلك الاسم حلّه بخوادم DNS المكوَّنة وNRPT أيضاً. يسمح RFC 6762 أيضاً بالتعايش مع DNS أحادي البث. عند التحقيق في أسماء .local، افحص سياسات DNS وVPN أيضاً.24

يعتمد NetBT على ما إذا وُجد WINS وعلى نوع العقدة

نوع العقدة طريقة تحليل الأسماء
B-node بث فقط
P-node استعلامات WINS فقط
M-node بث، ثمّ WINS
H-node WINS، ثمّ بث

بلا WINS مكوَّن الافتراضي B-node؛ مع خادم WINS واحد حتّى مكوَّن، الافتراضي H-node.29 لا تعبر بثوث LLMNR وNetBT الشبكات الفرعيّة، لكن استعلامات WINS أحاديّة البث ولذلك يمكنها.

يعرض nbtstat -c ذاكرة أسماء NetBIOS المؤقّتة، ويمسح nbtstat -R الذاكرة المؤقّتة ويعيد تحميل LMHOSTS.31

5.2 أيّها يتقدّم

أيّ استجابة تتقدّم بعد الاستعلامات المتوازية يُحكَم أيضاً بنهج.4

الشرط أولويّة الاستجابات لاسم أحادي الوسم
افتراضي، على شبكة ليست شبكة مجال تتقدّم الاستجابات المحلّيّة للرابط من LLMNR أو NetBT على DNS
شبكة مجال تتقدّم استجابات DNS
«Turn off smart protocol reordering» مفعَّل DNS، ثمّ LLMNR، ثمّ NetBT، على كلّ شبكة

على شبكات المنزل أو العامّة، يمكن أن يتقدّم جواب جهاز قريب بالاسم نفسه على DNS. هنا أيضاً، يهمّ قراءة أولويّة الاستجابة منفصلة عن كون الاستعلامات متسلسلة أو متوازية.

5.3 اتّجاه Microsoft: الاتّساق على mDNS

في أبريل 2022، أعلنت Microsoft اتّجاهاً للاتّساق على mDNS وتقليص تحليل أسماء NetBIOS وLLMNR تدريجيّاً.27 أُهملت أيضاً بروتوكولات اكتشاف أجهزة قديمة وغير آمنة مثل Computer Browser.32 التصاميم التي تكمّل الأسماء أحاديّة الوسم ببث متعدّد أو بث في طريقها إلى الخروج.

تسرد معلومات Microsoft عن ثغرة LLMNR، بوصفها حلولاً بديلة، حظر TCP/UDP 5355 وتفعيل إعداد نهج المجموعة «Turn off multicast name resolution». تنصّ أيضاً على أنّه نتيجة لذلك قد يصير الحاسوب غير مرئي لحواسيب أخرى.25 تفعيل هذا النهج يعطّل LLMNR على جميع محوّلات عميل DNS.4

قرار تعطيلهما نفسه صحيح، لكن يجب توفير بديل للمسار الذي يختفي في DNS. لأجهزة غير مسجَّلة في DNS، سجّل سجلات A أو فعِّل التسجيل الديناميكي عبر DHCP، وغيّر الوجهات إلى FQDN. يمكن لأجهزة تدعم mDNS استخدام أسماء .local، لكن المدى مقصور على حيث يمرّ البث المتعدّد.

5.4 حالة «بعض الحواسيب فقط لا تتّصل» النموذجيّة: الأسماء أحاديّة الوسم

عندما يحتوي ملف تكوين أو اختصار \\fileserver01 أو http://app01/، ينتج الاسم نفسه الفروق التالية.

بيئة الحاسوب ما يمكن أن يحدث
سطح مكتب منضمّ إلى مجال تكمّله اللاحقة إلى app01.corp.example.com، ويحلّه DNS الداخلي
حاسوب محمول عبر VPN يعتمد الإكمال على ملف تعريف VPN. إن لم يُكمَل ولم يكن هناك هدف على الشبكة الفرعيّة نفسها، يأتي LLMNR وNetBT فارغين
مكتب على شبكة فرعيّة أخرى بلا تسجيل DNS، لا تبلغ بثوث LLMNR وNetBT. إن وُجد تسجيل WINS، مع ذلك، قد يُحلّ بعد2930
حاسوب عُطِّل فيه LLMNR وNetBT كلاهما اسم ليس في DNS لا يمكن حلّه. إن عُطِّل LLMNR فقط، ما زال هناك مجال لـ NetBT أو WINS ليحلّه

ما يخبرك به Resolve-DnsName app01 -LlmnrOnly هو «ما إذا كان يمكن حلّه عبر LLMNR». لا يخبرك من أين جاء الجواب المعتمَد في الاستعلامات اليوميّة. تُجرى المقارنة بالنتيجة بلا مفاتيح، والتقاطات، في الخطوة 5 من الفصل 8.8

الإصلاح الجذري هو FQDN وتسجيل DNS

غيّر الوجهات التي تعتمد على أسماء أحاديّة الوسم إلى FQDN، ووحِّد تحليل الأسماء على DNS.

تتّصل SMB2 فما بعده مباشرة على TCP 445 ولا تستخدم جلسات NetBIOS.33 غير أنّ ذلك شأن نقل. في مرحلة حلّ الاسم في وجهة مثل \\fileserver01\share، قد يُستخدَم LLMNR أو NetBT. حدِّد FQDN، كما في \\fileserver01.corp.example.com\share، لإزالة الاعتماد على مسار الاسم أحادي الوسم.

تبقى بعض التحفّظات حتّى مع FQDN، مع ذلك. يُجرَّب FQDN بلا نقطة ختاميّة أيضاً بلواحق إن فُعِّل النهج الذي يلحق لواحق بأسماء متعدّدة الوسوم. قد يستخدم اسم ينتهي بـ .local mDNS إلى جانب DNS. الشكل الذي يثبّت الاسم بلا شرط هو الاسم المطلق بنقطة ختاميّة. مقدّمة معاملة «FQDN مثبَّت على DNS» صحيحة عمليّاً أنّ النهج أعلاه معطَّل وأنّ اسم المجال الداخلي لا يستخدم .local.

6. النقل إلى خادم DNS ── DoH لا يغيّر الترتيب

6.1 DoH على Windows 11 / Windows Server 2022

DoH في Windows ميزة ترسل استعلامات إلى خادم DNS عبر HTTPS. يندمج مع hosts والذاكرة المؤقّتة وNRPT القائمين، ومع إعدادات المحلّل لكلّ محوّل ولكلّ ملف تعريف؛ لا يستبدل الترتيب الموصوف في الفصلين 3 و4.9

يدعم عميل DNS في Windows 11 DoH، وتدعم الإصدارات الأحدث أيضاً DoT (DNS over TLS). غير أنّ وصف Microsoft لا ينصّ على أيّ إصدارات تدعم DoT، لذا لا يُضمَن توفّره على كلّ بيئة تفترضها هذه المقالة. ما يلي يغطّي DoH.9

أوّلاً، افحص قائمة خوادم DoH المعروفة

ما لم يُفعَّل DDR، لا يمكن استخدام إلا الخوادم في قائمة خوادم DoH المعروفة. تحتوي القائمة الافتراضيّة على Cloudflare وGoogle وQuad9، ويمكن فحصها بـ Get-DnsClientDohServerAddress. لخادم DNS داخلي وما شابه، سجّل قالب DoH مع إعدادات الرجوع والترقية التلقائيّة.134

# قائمة خوادم DoH المعروفة
Get-DnsClientDohServerAddress

# سجّل خادم DNS الداخلي خادم DoH (بلا رجوع إلى النصّ الصريح، مع ترقية تلقائيّة)
Add-DnsClientDohServerAddress -ServerAddress '10.0.1.2' `
    -DohTemplate 'https://dns.corp.example.com/dns-query' `
    -AllowFallbackToUdp $false -AutoUpgrade $true

التسجيل ممكن أيضاً بـ netsh dnsclient add encryption. الإعداد الكلّي netsh dnsclient set global doh=yes|no|auto إعداد منفصل عن autoupgrade لكلّ خادم.35

الإعداد الكلّي المعنى
doh=no حظر DoH
doh=yes السماح بـ DoH وفق إعدادات الخادم والمحوّل
doh=auto فرض DoH تلقائيّاً لاستعلامات خوادم DoH المعروفة

auto وحده لا يحظر الرجوع إلى النصّ الصريح. ما إذا يُرجَع إلى UDP عند الفشل يُقرَّر منفصلاً بـ udpfallback لكلّ خادم، أو -AllowFallbackToUdp في PowerShell. لتقييد التحليل بالنقل المشفَّر فقط، عطِّل الرجوع أيضاً.35

مع DDR مفعَّلاً، يوجد أيضاً مسار اكتشاف ديناميكي

على إصدارات تدعم DDR (Discovery of Designated Resolvers)، يمكن لمحلّل مكوَّن بنصّ صريح الإعلان عن نقاط نهاية DNS المشفَّرة. لأنّ الاتّصال يمكن ترقيته إلى التشفير بلا تسجيل في القائمة الثابتة، لا تستطيع القول «ليس في القائمة، لذا ليس DoH».35

ليعمل DDR، يلزم كلا netsh dnsclient set global ddr=yes الكلّي وset interface <name> ddr=yes لكلّ محوّل. ما إذا يُرجَع إلى النصّ الصريح عندما يفشل تحليل مشفَّر حاصل عبر DDR يُقرَّر بـ ddrfallback، وهو معطَّل افتراضيّاً.

في تحقيق، إلى جانب القائمة المعروفة، افحص netsh dnsclient show global وnetsh dnsclient show state، والقيم المضبوطة بـ set interface على محوّلات لها خوادم DNS. أوامر show الفرعيّة المعرَّفة في الوثائق هي encryption وglobal وstate؛ لا يوجد أمر show فرعي خاصّ بالمحوّل.35

افصل «السماح» و«الاشتراط» والرجوع إلى النصّ الصريح

في تطبيق الإعدادات، اضبط إعدادات DNS يدوياً؛ يمكن اختيار «Preferred DNS encryption» فقط عندما يكون خادم DNS المفضَّل في القائمة المعروفة. هناك ثلاثة خيارات.1

الخيار في تطبيق الإعدادات السلوك
Encrypted only (DNS over HTTPS) استخدم التشفير فقط
Encrypted preferred, unencrypted allowed عند فشل DoH، ارجع إلى النصّ الصريح بلا إشعار
Unencrypted only أرسل بنصّ صريح

لإعداد نهج المجموعة «Configure DNS over HTTPS (DoH) name resolution» Allow وProhibit وRequire. مع Allow، يُستخدَم DoH عندما، بالإضافة إلى تسجيل في القائمة المعروفة، تُستوفى شروط مثل الترقية التلقائيّة أو إعداد تشفير المحوّل أو doh=auto الكلّي. مع «Require»، يفشل تحليل الأسماء نفسه تجاه خوادم لا تدعم DoH.135

لا تطبِّق «Require DoH» على حواسيب منضمّة إلى مجال. تحذّر Microsoft من هذا صراحة. تعتمد خدمات مجال Active Directory بشدّة على DNS، وخدمة DNS Server التي تشحن مع Windows Server لا تدعم استعلامات DoH.1

في التقاط، اقرأ الإعدادات والحركة الفعليّة منفصلتين

الاستعلامات المرسلة فعلاً عبر DoH تمضي داخل TLS على المنفذ 443 لا UDP 53. غير أنّه حتّى مع «Allow DoH»، تسري استعلامات خوادم ليست في القائمة المعروفة، والرجوع بعد فشل تشفير، بنصّ صريح. كون DoH مكوَّناً لا يجعل حركة المنفذ 53 تختفي.

إن لم تكن استعلامات DNS مرئيّة، افحص DoH وDoT (المنفذ 853) بالإضافة إلى hosts والذاكرة المؤقّتة. لكيفيّة التقاط، انظر مقالة التقاط الحزم.

6.2 DoH في المتصفّح منفصل عن نظام التشغيل

يسهل فهم عميل DNS المضمَّن في Edge وتغيير وجهة الاستعلام عبر Secure DNS عندما يُقسَمان إلى مرحلتين.

الإعداد من يستعلم، ومن
عميل DNS المضمَّن الافتراضي يستعلم Edge بدلاً من عميل DNS لنظام التشغيل. خادم DNS المستخدَم نفسه لا يتغيّر
Secure DNS باستخدام الموفِّر الحالي يستعلم الموفِّر الحالي بتشفير. عند الفشل، يعيد المحاولة بنصّ صريح
Secure DNS مع اختيار موفِّر مختلف يستعلم محلّل DoH المختار. لا يرجع إلى النصّ الصريح عند الفشل

يُتحكَّم في العميل المضمَّن بـ BuiltInDnsClientEnabled، وتُجرى استعلامات DoH دائماً بالمحلّل المضمَّن.7 Secure DNS معطَّل افتراضيّاً على حواسيب تديرها منظّمة ويُكوَّن بـ DnsOverHttpsMode (off / automatic / secure) وDnsOverHttpsTemplates.3637

قد يحلّ Edge اختير له موفِّر مختلف مواقع خارجيّة لكن يفشل في حلّ أسماء يعرفها DNS الداخلي فقط. بالمقابل، قد يفتح Edge وحده صفحات عندما يكون DNS نظام التشغيل غير سليم. إن بقي مع الموفِّر الحالي، لا تتغيّر وجهة الاستعلام.

الخلاصة: لا تعامل نجاح المتصفّح ونجاح تطبيق الأعمال دليلاً عن المسار نفسه. افحص مسار نظام التشغيل بـ Resolve-DnsName أو ping.

7. أيّ مسار يسلكه التطبيق؟

قبل اختيار أدوات تحقيق، وافق المسار الذي تنظر إليه.

الاستدعاء المسار المسلك hosts الذاكرة المؤقّتة NRPT LLMNR/NetBT
getaddrinfo / Dns.GetHostAddresses / HttpClient (اتّصال مباشر)1011 خدمة DNS Client لنظام التشغيل. يحلّ HttpClient يمرّ بوكيل اسم الوكيل فقط محلّيّاً؛ يحلّ الوكيل الوجهة يُفحَص يُفحَص يسري يُستخدَم للأسماء أحاديّة الوسم (على التوازي مع DNS افتراضيّاً؛ متسلسل بعد الفشل فقط مع إيقاف التحسين)
ping خدمة DNS Client لنظام التشغيل يُفحَص يُفحَص يسري يُستخدَم للأسماء أحاديّة الوسم (على التوازي مع DNS افتراضيّاً؛ متسلسل بعد الفشل فقط مع إيقاف التحسين)
Resolve-DnsName8 خدمة DNS Client لنظام التشغيل (يمكن اختيار الطبقة بمفاتيح) يمكن استبعاده بـ -NoHostsFile يُقيَّد بـ -CacheOnly يسري يمكن استبعاده بـ -DnsOnly
nslookup123 مباشرة إلى خادم DNS الأوّل لا يُفحَص لا يُفحَص لا يسري لا يُستخدَم
Microsoft Edge (افتراضي)76 عميل DNS المضمَّن (لا يمرّ بعميل DNS لنظام التشغيل) منفصل عن مسار نظام التشغيل منفصل عن ذاكرة نظام التشغيل المؤقّتة لا يسري (خارج Windows DNS API) منفصل عن مسار نظام التشغيل

المفاتيح الرئيسة لـ Resolve-DnsName، منظَّمة حسب غرض التحقيق، كما يلي.8

ما تريد فحصه المفتاح
ما إذا كانت الذاكرة المؤقّتة المحلّيّة وحدها تنتج جواباً -CacheOnly
جرِّبه مع استبعاد hosts -NoHostsFile
استخدم بروتوكول DNS فقط، دون إرسال LLMNR أو NetBIOS -DnsOnly
اسأل خادم DNS معيّناً -Server
جرِّب LLMNR فقط -LlmnrOnly
جرِّب LLMNR أو NetBIOS فقط -LlmnrNetbiosOnly
اسمح بالرجوع إلى NetBIOS عندما يفشل DNS -NetbiosFallback
اختر نوع السجلّ -Type. الافتراضي، A_AAAA، يسأل عن A وAAAA كليهما

7.1 A وAAAA: IPv6 يعود أوّلاً

حتّى عندما ينجح تحليل الأسماء، يمكن لاختيار العنوان الذي يلي أن يجعل الاتّصال بطيئاً.

يستعلم عميل DNS كلاً من A (IPv4) وAAAA (IPv6). في التقاط أيضاً، يظهر الاستعلامان زوجاً.3 بعد عودة الأجوبة، تختار getaddrinfo ومكدّس الاتّصال العنوان المستخدَم. يستخدم Windows Vista فما بعده جدول بادئة RFC 3484، ويفضّل افتراضيّاً البث الأحادي العام لـ IPv6 على IPv4.38

غير أنّ جواب AAAA وحده لا يعني أنّ اتّصال IPv6 يُحاوَل دائماً. يطرح اختيار الوجهة أوّلاً الوجهات غير القابلة للاستخدام، مثل تلك بلا عنوان مصدر IPv6 أو مسار، ثمّ يرتّب المرشّحين.39

تنشأ المشكلة في بيئات يبدو أنّ عنوان مصدر IPv6 ومساراً موجودان لكنّهما لا يعملان فعلاً. ينجح تحليل الأسماء، لكن يُفقد الوقت على الاتّصال. ما إذا حُوول IPv6 فعلاً يُؤكَّد لا من استجابة DNS وحدها بل من سجلات الاتّصال أو التقاط.

لا توصي Microsoft بتعطيل IPv6 علاجاً، لأنّ بعض مكوّنات Windows تتوقّف عن العمل. بدلاً من ذلك، تصف ضبط DisabledComponents على 0x20 لتفضيل IPv4 في سياسة البادئة.38 الحالة التي يحلّ فيها localhost إلى ::1 ويتعارض مع تحقيق افترض 127.0.0.1 مشمولة أيضاً في مقالة التقاط الحزم.

8. إجراء العزل ── اقشر الطبقات من الأعلى

على الحاسوب الفاشل، نفِّذ ما يلي بالترتيب. يوجد كلّ أمر لتقييد المسار، ونجاحه وحده لا يثبت المسار المسلك في التحليل اليومي. اجمع مقارنة النتائج مع التقاط في النهاية.

الخطوة ما تفحصه
1 شكل الاسم الذي مرّره التطبيق
2 جواب الذاكرة المؤقّتة وhosts
3 نتيجة DNS مع استبعاد hosts وLLMNR وNetBIOS
4 النتيجة من كلّ خادم DNS على مسار التحليل الفعلي
5 حلّ الاسم أحادي الوسم عبر LLMNR وNetBT
6 فرق الإعدادات بين حاسوب يعمل وآخر يفشل
7 ما إذا خرجت حزم، وما عاد

الخطوة 1: افحص شكل الاسم

افحص، في سجلّ أو ملف تكوين، الاسم الذي يمرّره التطبيق فعلاً. يتغيّر المسار حسب ما إذا كان اسماً أحادي الوسم، أو ينتهي بـ .local، أو له نقطة ختاميّة. لاسم قصير مثل http://app01/، ابدأ من الإكمال في القسم 4.1 والفروق لكلّ حاسوب في القسم 5.4.

الخطوة 2: هل يمكن حلّه من الذاكرة المؤقّتة وhosts وحدهما؟

Resolve-DnsName -Name 'app01.corp.example.com' -CacheOnly
Get-DnsClientCache -Entry 'app01.corp.example.com'
Get-Content "$env:SystemRoot\System32\drivers\etc\hosts" | Select-String -Pattern 'app01'
النتيجة القراءة والفحص التالي
يعود الجواب الصحيح هذه المرّة يُحسَم الجواب قبل أن يبلغ خادم DNS
يعود جواب قديم أو خاطئ إن كان hosts، أصلح ذلك السطر. إن كانت الذاكرة المؤقّتة، اطرحها ثمّ افحص الجواب الحاصل جديداً في الخطوة 3
«Name does not exist» ذاكرة مؤقّتة سلبيّة. نفِّذ Clear-DnsClientCache، ثمّ امضِ إلى الخطوة 3
لا جواب ربّما غياب عادي من الذاكرة المؤقّتة. امضِ إلى الخطوة 3

يقيّد -CacheOnly هذا البحث بالذاكرة المؤقّتة المحلّيّة فقط. إن تُعلِّم جواب خاطئ من خادم DNS، تعود القيمة نفسها بعد الطرح. كونُه في الذاكرة المؤقّتة ليس دليلاً على أنّ خادم DNS غير مرتبط.8

الخطوة 3: هل يمكن حلّه عبر DNS وحده؟

# استبعد hosts، ولا ترسل LLMNR/NetBIOS، واستعلم خوادم DNS المكوَّنة فقط
Resolve-DnsName -Name 'app01.corp.example.com' -NoHostsFile -DnsOnly

إن لم يكن للخطوة 2 جواب ونجحت هذه الخطوة فحسب، فذلك عادة غياب عادي من الذاكرة المؤقّتة. يمكنك تسميتها مشكلة ذاكرة مؤقّتة أو hosts فقط عندما أظهرت الخطوة 2 جواباً قديماً أو خاطئاً أو قيد ذاكرة مؤقّتة سلبيّة.

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

  • Get-DnsClientNrptPolicy -Effective: هل توجد قاعدة توجّه الاسم إلى خادم DNS مختلف؟
  • Get-DnsClientDohServerAddress ونهج مجموعة DoH: هل ضُبط «Require DoH» تجاه خادم لا يدعمه؟

إن وُجد NRPT، تتغيّر الخوادم المستهدفة في الخطوة 4. إن كان «Require DoH» السبب، يفشل تحليل الأسماء فقط بينما المسار والخادم كلاهما سليم. أنهِ فحوصات القسمين 4.4 و6.1 أوّلاً.

الخطوة 4: اسأل كلّ خادم مباشرة

اجمع خوادم DNS للمحوّلات المتّصلة، وإن سرت قاعدة NRPT على الاسم المستهدف، استبدلها بخوادم تلك القاعدة. ضمّن خوادم DNS المكوَّنة لـ IPv6 فقط أيضاً.

$name = 'app01.corp.example.com'
# اجمع خوادم DNS للواجهات المتّصلة من IPv4 وIPv6 كليهما.
# خوادم متروكة في إعدادات VPN أو مبدّل افتراضي مقطوع ليست جزءاً من مسار التحليل الحالي، لذا استبعدها (لا تُفلت خوادم مكوَّنة لـ IPv6 فقط)
$connected = @((Get-NetIPInterface -ConnectionState Connected).ifIndex | Select-Object -Unique)
$servers = @((Get-DnsClientServerAddress |
    Where-Object { $_.ServerAddresses -and ($connected -contains $_.InterfaceIndex) }).ServerAddresses)
# خوادم قاعدة NRPT التي تسري على هذا الاسم (يكتبها Always On VPN أو DirectAccess) لا تظهر في إعدادات المحوّل، لذا اخترها من النهج الفعّال.
# معامل -Namespace لـ Get-DnsClientNrptPolicy يرشّح فقط على خاصّيّة Namespace للقاعدة؛ لا يطابق الاسم.
# لذا طابق قاعدة Any (.) وقواعد اللاحقة (نقطة بادئة؛ تسري على مساحة الأسماء نفسها والنطاقات الفرعيّة) وقواعد FQDN وقواعد البادئة (جزء اسم المضيف؛ أحرف بدل مثل web* مسموحة) بنفسك،
# واعتمد القاعدة الأكثر تخصيصاً (الأطول). قاعدة Any هي الأقصر، لذا تُختار فقط عندما لا تطابق قاعدة أخرى
# Namespace مجموعة سلاسل (تُعرَض Namespace : {.corp.example.com})، لذا وسِّع عناصر كلّ قاعدة للمطابقة ورتِّب بطول مساحة الأسماء المطابقة
# لاسم مطلق بنقطة ختاميّة (app01.corp.example.com.)، انزع النقطة للمطابقة فقط. مرِّر $name الأصلي إلى Resolve-DnsName
$matchName = $name.TrimEnd('.')
$label = $matchName.Split('.')[0]
$matched = foreach ($policy in @(Get-DnsClientNrptPolicy -Effective)) {
    foreach ($ns in @($policy.Namespace)) {
        if (-not $ns) { continue }
        $hit = if ($ns -eq '.') { $true }
               elseif ($ns.StartsWith('.')) { $matchName.Equals($ns.TrimStart('.'), [System.StringComparison]::OrdinalIgnoreCase) -or $matchName.EndsWith($ns, [System.StringComparison]::OrdinalIgnoreCase) }
               elseif ($ns.Contains('.')) { $matchName.Equals($ns, [System.StringComparison]::OrdinalIgnoreCase) }
               else { $label -like $ns }
        if ($hit) { [pscustomobject]@{ Namespace = $ns; Policy = $policy } }
    }
}
$rule = $matched | Sort-Object { $_.Namespace.Length } -Descending | Select-Object -First 1
$policyServers = @()
if ($rule) { $policyServers = @(@($rule.Policy.NameServers) + @($rule.Policy.DirectAccessDnsServers) | Where-Object { $_ }) }
if ($policyServers.Count -gt 0) {
    # إن حدّد NRPT خوادم لمساحة الأسماء هذه، يذهب استعلام الخطوة 3 إلى تلك الخوادم. خوادم المحوّل خارج المسار، لذا استبدلها
    $servers = $policyServers
}
$servers = $servers | Where-Object { $_ } | Select-Object -Unique
foreach ($server in $servers) {
    $sw = [System.Diagnostics.Stopwatch]::StartNew()
    try {
        $r = Resolve-DnsName -Name $name -Server $server -DnsOnly -ErrorAction Stop
        $status = 'OK'
        # يمكن أن تعود سجلات متعدّدة بترتيب مختلف لكلّ استجابة، لذا رتِّب قبل المقارنة
        $answer = ($r.IPAddress | Sort-Object) -join ','
    } catch {
        # الردود السلبيّة (الاسم غير موجود) وSERVFAIL والمهل تقع هنا. احتفظ بالسبب بدلاً من طرحه
        $status = $_.Exception.Message
        $answer = ''
    }
    [pscustomobject]@{ Server = $server; Status = $status; Answer = $answer; Milliseconds = [int]$sw.ElapsedMilliseconds }
}

أوّلاً، صفّ الخوادم للمقارنة

قد لا يظهر NameServers وDirectAccessDnsServers لـ NRPT في إعدادات DNS للمحوّل. إن سألت الخطوة 3 خوادم NRPT لكن الخطوة 4 تفحص خوادم المحوّل فقط، ينتهي بك الأمر مقارنة مسارات مختلفة.

لـ NRPT أنواع قواعد مثل اللاحقة وFQDN والبادئة وAny (.) ، وتتقدّم القواعد الأكثر تخصيصاً.40 يرشّح -Namespace فقط على خاصّيّة القاعدة؛ لا يطابق اسم المضيف. لهذا توسّع الشيفرة أعلاه مساحات أسماء القواعد وتطابقها بالاسم المستهدف.23

على VPN DNS منقسم، من الطبيعي أن يعيد محلّل جانب المنزل ردّاً سلبيّاً لاسم داخلي بينما يعيد جانب NRPT فقط إيجابيّاً. إن قارنت أيضاً خوادم خارج المسار، سجّلها منفصلة «شاهداً» ولا تخلطها في حكم عدم تطابق المناطق. مهل تجاه خوادم متروكة على محوّلات مقطوعة كذلك منفصلة عن تأخيرات مسار التحليل الحالي.

ثانياً، اقرأ النتائج منفصلة

النتيجة ما تحقّق فيه
خادم معيّن فقط يبلغ المهلة لماذا لا يردّ ذلك الخادم
ردّ سلبي مثل «الاسم غير موجود» ميّزه عن مهلة، وافحص الاسم ومحتويات المنطقة
تختلف عناوين IP في الاستجابات أكِّد أنّ الخوادم تلعب الدور نفسه، وقارن مجموعات سجلات
يختلف ترتيب السجلات فقط ربّما round robin. إن تساوت المجموعات المرتَّبة، لا تسمِّ فرق ترتيب عدم تطابق منطقة

إن اختلفتا مجموعات أيضاً، افحص محتويات المنطقة والأرقام التسلسليّة. كذلك، هذا قياس بالوجهة مثبَّتة بـ -Server. التأخير الناجم عن موضع القائمة، «4 ثوانٍ حتّى تُبلَغ الخوادم الرابعة فما بعد» من القسم 4.2، يُفحَص في الخطوة 3 أو في التقاطها.

الخطوة 5: افحص الطبقة المحلّيّة للرابط

Resolve-DnsName -Name 'app01' -LlmnrOnly          # LLMNR فقط
Resolve-DnsName -Name 'app01' -LlmnrNetbiosOnly   # LLMNR أو NetBIOS فقط (بلا DNS)
nbtstat -c                                        # ذاكرة أسماء NetBIOS المؤقّتة

يستهدف هذا الفحص الأسماء أحاديّة الوسم. يرجع -NetbiosFallback إلى NetBIOS فقط عندما يفشل DNS، لذا لاسم يستطيع DNS حلّه ليس فحص NetBIOS.8

اقرأ النتائج كما يلي.

النتيجة ما تخبرك به / ما لا تخبرك به بعد
ينجح -LlmnrOnly يمكن حلّه عبر LLMNR. غير أنّ ذلك لا يعني أنّ هذا الجواب هو ما يُعتمَد في الاستخدام اليومي
يفشل -LlmnrOnly وينجح -LlmnrNetbiosOnly لا تستطيع أن تستنتج أنّ NetBIOS أجاب. بسبب حزم ساقطة أو توقيت بدء النظير، قد يكون LLMNR أجاب في محاولة لاحقة
تنجح هذه الطبقة فقط على الحاسوب العامل، وتفشل على الفاشل اشتبه باعتماد على مسار الاسم أحادي الوسم. الإصلاح الجذري FQDN وتسجيل DNS

يُميَّز أيّ بروتوكول أجاب في التقاط بـ UDP 5355 (LLMNR) مقابل UDP 137 (NetBT). لتأكيد مسار التحليل اليومي، قارن أيضاً بالعنوان الذي يعيده Resolve-DnsName بلا مفاتيح، وإن اختلفا، افحص الاستجابة المعتمَدة في التقاط، لأنّ DNS يُستعلَم افتراضيّاً على التوازي أيضاً.

الخطوة 6: قارن تفريغات الإعدادات

في تحقيق «بعض الحواسيب فقط»، نفِّذ السكربت نفسه على حاسوب يعمل وآخر يفشل وقارن.

# name-resolution-dump.ps1 -- نفِّذ بصلاحيات مسؤول وقارن ملفّي خرج الآلتين جنباً إلى جنب
$out = "$env:COMPUTERNAME-name-resolution.txt"
$sections = [ordered]@{
    'Get-DnsClientServerAddress' = { Get-DnsClientServerAddress | Format-Table -AutoSize | Out-String -Width 200 }
    'Get-DnsClientGlobalSetting' = { Get-DnsClientGlobalSetting | Format-List | Out-String }
    'Get-DnsClient'              = { Get-DnsClient | Format-Table InterfaceAlias, ConnectionSpecificSuffix, UseSuffixWhenRegistering -AutoSize | Out-String -Width 200 }
    'Get-DnsClientNrptPolicy'    = { Get-DnsClientNrptPolicy -Effective | Format-List | Out-String }
    'Get-DnsClientDohServerAddress' = { Get-DnsClientDohServerAddress | Format-Table -AutoSize | Out-String -Width 200 }
    'netsh dnsclient show state' = { netsh dnsclient show state 2>&1 | Out-String }
    'Get-NetIPInterface'         = { Get-NetIPInterface | Sort-Object AddressFamily, InterfaceMetric | Format-Table InterfaceAlias, AddressFamily, InterfaceMetric, ConnectionState, Dhcp -AutoSize | Out-String -Width 200 }
    'DNSClient policy registry'  = { Get-ItemProperty 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient' -ErrorAction SilentlyContinue | Format-List | Out-String }
    'ipconfig /all'              = { ipconfig /all | Out-String }
}
$sections.GetEnumerator() | ForEach-Object {
    "===== $($_.Key) ====="
    try { & $_.Value } catch { "ERROR: $($_.Exception.Message)" }  # اترك البنود الناقصة (مثل DoH على Windows 10) مسجَّلة أخطاء
} | Set-Content -Path $out -Encoding UTF8
Write-Host "wrote $out"

ما تقارنه هو ترتيب خوادم DNS، وقائمة البحث، واللواحق الخاصّة بالاتّصال، وNRPT، وDoH، ومقاييس الواجهة، وقيم النهج.

يحمل HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient EnableMulticast لـ «Turn off multicast name resolution»، وDisableSmartNameResolution لـ «Turn off smart multi-homed name resolution»، وقائمة البحث، واللاحقة الأوّليّة، وما إلى ذلك.4 افحص الفرق مقابل عمل كلّ طبقة المنظَّم حتّى الآن.

الخطوة 7: عزِّزه بالتقاط حزم

يبدأ إجراء جمع بيانات Microsoft netsh trace start capture=yes على العميل والخادم كليهما، ويطرح الذاكرة المؤقّتة بـ ipconfig /flushdns، ويعيد إنتاج المشكلة، ويتوقّف بـ netsh trace stop.41

في Wireshark، رشِّح بـ dns.qry.name == "app01.corp.example.com" أو dns.qry.name contains "app01" لترى أيّ خادم سُئل عمّا، وما عاد.

ما يُظهره التقاط أين تنظر
لا يخرج استعلام إلى جانب الذاكرة المؤقّتة وhosts ومسارات أخرى مثل DoH وDoT والمحلّي للرابط، افحص حظر UDP 53 بجدار ناري في جانب الإرسال
يخرج الاستعلام لكن لا ردّ المسار إلى خادم DNS، الجدران الناريّة، خادم لا يردّ
يعود ردّ سلبي الاسم المستعلَم والسجلات في جانب الخادم
يعود ردّ إيجابي جانب الاتّصال بعد تحليل الأسماء. افحص العنوان المستخدَم وIPv6 أيضاً

إن حظر الجدار الناري في جانب الإرسال UDP 53، يبلغ Resolve-DnsName المهلة ولا يظهر استعلام DNS في التقاط أيضاً. اعزل لا الحالة التي ينجح فيها تحليل الأسماء ولا تخرج حركة فحسب، بل أيضاً الحالة التي يفشل فيها ولا تخرج حركة.3

إلى جانب DNS، افحص 5355 لـ LLMNR، وUDP 5353 لـ mDNS، وUDP 137 لخدمة أسماء NetBT. DoH هو 443 وDoT هو 853. كيفيّة التقاط وقراءة التقاطات مجمَّعة في مقالة التقاط الحزم.

9. التصميم في جانب تطبيق الأعمال ── جعله متيناً تجاه تحليل الأسماء

لتخفيف التحقيقات، يهمّ أن يستطيع جانب التطبيق تسجيل «أيّ اسم، حُلّ إلى ماذا، وأين فشل». مطابقة سجلّ التطبيق بتفريغات الإعدادات والتقاطات التي يجمعها موظّفو تقنية المعلومات تجعل تقرير أين تبدأ في الفصل 8 أسهل.

احمل الوجهات FQDN ولا تعتمد على hosts

اجعل الافتراضيّات في ملفّات التكوين والاختصارات ومسارات UNC FQDN. هذا يزيل الاعتماد على إكمال لاحقة الأسماء أحاديّة الوسم وعلى LLMNR وNetBT. غير أنّ تحفّظات القسم 5.4 تبقى: mDNS إلى جانب DNS لأسماء .local، والنهج الذي يلحق لواحق بأسماء بلا نقطة ختاميّة.

hosts مريح لتجاوز مؤقّت أثناء التطوير، لكنّه يتطلّب صلاحيات مسؤول وعملاً يدويّاً. التوزيع وتاريخ التغيير صعب الإدارة، وبعض المحلّلات لا تستشيره أصلاً (nslookup لا يفعل12). بدِّل الوجهات عبر ملفّات التكوين.

سجّل نتيجة تحليل الأسماء والوقت وسبب الفشل

عند البدء ونقاط مشابهة، سجّل عناوين IPv4 وIPv6 والوقت المنقضي للوجهات الرئيسة. لأنّ Dns.GetHostAddresses يعيد النتيجة نفسها لـ getaddrinfo، يمكنك تتبّع «على أيّ حاسوب، منذ متى، إلى ماذا حُلّ».11

// سجّل نتائج تحليل أسماء الوجهات الرئيسة عند البدء (.NET 6 فما بعده)
static async Task LogNameResolutionAsync(ILogger logger, string host)
{
    var sw = System.Diagnostics.Stopwatch.StartNew();
    try
    {
        var addresses = await System.Net.Dns.GetHostAddressesAsync(host);
        logger.LogInformation("تحليل الأسماء {Host} -> {Addresses} ({Elapsed} ms)",
            host, string.Join(",", addresses.Select(a => a.ToString())), sw.ElapsedMilliseconds);
    }
    catch (System.Net.Sockets.SocketException ex)
    {
        logger.LogError(ex, "فشل تحليل الأسماء {Host} خطأ {Code} ({Elapsed} ms)",
            host, ex.SocketErrorCode, sw.ElapsedMilliseconds);
        throw;
    }
}

سجّل الإخفاقات وأعد الرمي. التبديل صامتاً إلى اسم مختلف أو IP ثابت يجعل المسار الفعلي غير قابل للمعرفة أثناء تحقيق. مع رمز الخطأ والوقت المنقضي، يستطيع موظّفو تقنية المعلومات تقرير أين يبدأون في الخطوات 2 إلى 4.

اسمح للمهل وأجوبة IPv6

يقضي عميل DNS حتّى 10 ثوانٍ لكلّ مرشّح مستعلَم تجاه خوادم لا تردّ.21 إن أنتجت بحث اللاحقة عدّة مرشّحين، يمكن أن يتجاوز المجموع 10 ثوانٍ.

إن ضُغطت مهلة الاتّصال إلى ثانيتين أو ثلاث، لا ينتهي تحليل الأسماء قبل الموعد النهائي في تكوينات مثل واحد يكون فيه الخادم الذي يستطيع الإجابة رابعاً فما بعد. غير أنّ الخادم الثاني يُستعلَم بعد ثانية والثالث بعد ثانيتين، لذا لا يعني خادم فاشل واحد الفشل بالضرورة. صمِّم مع توقيت إعادة الإرسال في القسم 4.2 في الحسبان.

كذلك، عندما يعود جواب AAAA ويوجد عنوان مصدر IPv6 ومسار، يفضّل Windows IPv6 افتراضيّاً.38 شيفرة اتّصال تفترض IPv4 فقط قد تفشل في الاتّصال رغم نجاح تحليل الأسماء. افصل نجاح تحليل الأسماء عن نجاح الاتّصال، وعالج نوعي العنوان كليهما.

10. الخلاصة

أوّل ما تفصله في تحليل الأسماء على Windows هو شكل الاسم، والطبقة التي تعيد الجواب، والمسار الذي يسلكه التطبيق.

تجيب الذاكرة المؤقّتة وhosts أوّلاً، وللأسماء أحاديّة الوسم يعمل DNS وLLMNR/NetBT على التوازي افتراضيّاً. لـ .local، ينضمّ mDNS. متى انتقل التحليل إلى DNS، تغيّر اللواحق وتوقيت إعادة الإرسال وعدّة NIC وNRPT النتيجة. DoH ميزة تبدّل ذلك النقل، وتُعتبَر منفصلة عن محلّل المتصفّح المضمَّن.

يقيّد التحقيق المسار بترتيب -CacheOnly، ثمّ -NoHostsFile -DnsOnly، ثمّ -Server، ثمّ -LlmnrOnly، ويؤكّد بفرق إعدادات والتقاط. ما يهمّ ألا تغفل الذاكرة المؤقّتة السلبيّة، والفرق بين لا ردّ وردّ سلبي، ونهج جانب العميل.

عندما «هذا الحاسوب وحده لا يتّصل»، افحص أوّلاً هذين الأمرين.

بأيّ شكل يُمرَّر الاسم؟ على ذلك الحاسوب، أيّ مسار يجيب؟

بهذين مثبتين، يمكنك تضييق أين تنظر.

مقالات ذات صلة

مجالات الاستشارة ذات الصلة

تتعامل شركة كومورا سوفت ذ.م.م. مع تحقيقات السبب الجذري لمتاعب اتّصال مرتبطة بتحليل الأسماء مثل «تطبيق الأعمال لا يصل إلى الخادم الداخلي على بعض الحواسيب فقط» و«يُفتح في المتصفّح لكن التطبيق يفشل في تحليل الأسماء»، ومراجعات تصميم لما إذا كان تطبيق أعمال يصمد أمام تغييرات بيئة مثل تعطيل LLMNR وDoH وVPN، وتنفيذ طبقة اتّصال تسجّل نتائج تحليل الأسماء والمهل. إن أرفقت تفريغات إعدادات من حاسوب يعمل وآخر يفشل عند التواصل، تستقرّ نقطة بدء التحقيق سريعاً.

روابط مرجعيّة

  1. Microsoft Learn, Secure DNS Client over HTTPS (DoH). حول إمكان تكوين DoH فقط عندما يكون خادم DNS المفضَّل/البديل في قائمة خوادم DoH المعروفة؛ وخيارات التشفير الثلاثة في تطبيق الإعدادات ورجوع «Encrypted preferred» إلى النصّ الصريح بلا إشعار؛ وقيم Allow/Prohibit/Require لإعداد نهج المجموعة «Configure DNS over HTTPS (DoH) name resolution»؛ وسبب وجوب عدم تفعيل Require على حواسيب منضمّة إلى مجال؛ وقائمة الخوادم المعروفة (Cloudflare، Google، Quad9) وGet-DnsClientDohServerAddress؛ وإضافة خوادم بـ Add-DnsClientDohServerAddress؛ والاستخدام مع NRPT.  2 3 4 5

  2. Microsoft Learn, MSFT_DNSClientGlobalSetting class. حول كون أدنى نظام تشغيل مدعوم لصنف WMI الذي تقوم عليه أوامر DnsClient هو Windows 8 / Windows Server 2012. 

  3. Microsoft Learn, Troubleshoot DNS client name resolution issues. حول حلّ عميل DNS بترتيب الذاكرة المؤقّتة، وملف hosts، وخادم DNS؛ وعدم سريان حركة DNS عندما يكون لـ hosts قيد مطابق؛ وبلوغ Resolve-DnsName المهلة عندما يُحظَر UDP 53؛ واستغراق التحليل نحو 4 ثوانٍ عندما يكون قليل من عدّة خوادم قابلاً للوصول؛ واستعلام nslookup خادم DNS الأوّل فقط؛ والتأخير الناجم عن قائمة بحث لاحقة طويلة؛ والاستعلامات المحدَّدة بنقطة ختاميّة؛ وقياس الوقت المنقضي بـ Measure-Command.  2 3 4 5 6 7 8 9

  4. Microsoft Learn, Policy CSP - ADMX_DnsClient. حول «Turn off smart multi-homed name resolution» (افتراضيّاً يُستعلَم DNS وLLMNR وNetBT عبر جميع الشبكات على التوازي وتُعتمَد عدّة ردود إيجابيّة بترتيب الربط؛ عند التفعيل، DNS ثمّ LLMNR ثمّ NetBT بالتتابع)؛ و«Turn off smart protocol reordering» (افتراضيّاً تتقدّم الاستجابات المحلّيّة للرابط للأسماء أحاديّة الوسم على شبكات غير المجال)؛ و«Turn off multicast name resolution» (كون LLMNR بروتوكولاً ثانويّاً وتعطيله على جميع المحوّلات؛ قيمة السجلّ EnableMulticast)؛ وقائمة البحث بلاحقة DNS والتفكيك؛ و«Allow DNS suffix appending to unqualified multi-label name queries» (النهج الذي يستعلم أسماء تحتوي نقطة بلا نقطة ختاميّة بلواحق ملحقة أيضاً)؛ ولاحقة DNS الأوّليّة؛ واللواحق الخاصّة بالاتّصال؛ ومفتاح السجلّ Software\Policies\Microsoft\Windows NT\DNSClient.  2 3 4 5 6 7 8 9

  5. Microsoft Learn, DNS queries and lookups. حول تحميل محتويات hosts إلى الذاكرة المؤقّتة عند بدء خدمة DNS Client واحتفاظ استجابات DNS أيضاً في الذاكرة المؤقّتة لمدّة TTL؛ وبناء الاستعلام على نحو مختلف لـ FQDN والأسماء متعدّدة الوسوم وأحاديّة الوسم، مع استخدام قائمة البحث باللاحقة واللاحقة الأوّليّة والتفكيك واللواحق الخاصّة بالاتّصال بالتتابع؛ وتخزين الاستجابات سواء إيجابيّة أم سلبيّة؛ وترتيب الاستعلام عبر محوّلات متعدّدة واستبعاد محوّل بعد ردّ سلبي؛ والمهل التكيّفيّة وتخزين الخوادم التي لا تردّ.  2 3 4 5 6 7 8 9 10

  6. Microsoft Learn, VPNv2 CSP. حول كون DomainNameInformationList لملف تعريف VPN قواعد NRPT؛ وقدرة التطبيقات التي تستخدم Windows DNS API فقط على استخدام NRPT بينما تتجاوزه تطبيقات بتحقيق DNS خاصّ؛ واستشهاد nslookup مثالاً؛ ووجوب Resolve-DnsName دائماً لفحص NRPT.  2 3 4

  7. Microsoft Learn, Microsoft Edge policy: BuiltInDnsClientEnabled. حول استخدام Edge لعميل DNS المضمَّن افتراضيّاً؛ وعدم تأثير هذا النهج في أيّ خادم DNS يُستخدَم؛ وإجراء استعلامات DoH دائماً بالمحلّل المضمَّن.  2 3 4

  8. Microsoft Learn, Resolve-DnsName. حول المعاملات -CacheOnly (الذاكرة المؤقّتة المحلّيّة فقط)، و-DnsOnly (بروتوكول DNS فقط، دون إرسال LLMNR أو NetBIOS)، و-NoHostsFile (تخطّي hosts)، و-LlmnrOnly، و-LlmnrNetbiosOnly، و-LlmnrFallback، و-NetbiosFallback، و-Server، و-Type (الافتراضي A_AAAA)، و-QuickTimeout، و-TcpOnly.  2 3 4 5 6

  9. Microsoft Learn, Windows security book: Network security. حول دعم عميل DNS في Windows 11 لـ DoH وDoT؛ وإمكان تكوين DoH عبر نهج المجموعة وبرمجيّاً؛ واندماج دعم DNS المشفَّر مع تكوين DNS القائم مثل NRPT وملف hosts للنظام وإعدادات المحلّل لكلّ محوّل ولكلّ ملف تعريف.  2 3

  10. Microsoft Learn, getaddrinfo function (ws2tcpip.h). حول تحويل اسم إلى عنوان لمساحة الأسماء NS_DNS عبر DNS وملف hosts المحلّي وآليّات أخرى، وتجميع استجابات عدّة موفِّري مساحة أسماء، وكون الإصدار Unicode هو GetAddrInfoW.  2

  11. Microsoft Learn, Dns.GetHostAddresses Method. حول التنفيذ بواجهة تحليل أسماء نظام التشغيل التحتيّة (getaddrinfo على Windows)، وإعادة عنوان مضيف مدرَج في ملف hosts دون استعلام خادم DNS.  2 3

  12. Microsoft Learn, Troubleshoot Azure DNS. حول عدم استخدام nslookup لمكتبة محلّل DNS المحلّي لنظام التشغيل وتجاوزه الذاكرة المؤقّتة المحلّيّة لـ DNS وملف hosts وNRPT، ووجوب استخدام Resolve-DnsName عندما تتدخّل تلك الطبقات.  2 3

  13. Microsoft Learn, ipconfig. حول عرض /displaydns لذاكرة محلّل عميل DNS المؤقّتة، التي تشمل القيود المحمَّلة من hosts والسجلات المحلولة حديثاً؛ وطرح /flushdns للذاكرة المؤقّتة بما فيها قيود الذاكرة المؤقّتة السلبيّة؛ والتسجيل الديناميكي بـ /registerdns.  2

  14. Microsoft Learn, Troubleshooting DNS clients. حول كون «Name does not exist» في ipconfig /displaydns لاسم فاشل يعني أنّ ردّاً سلبيّاً من خادم DNS مخزَّن على العميل؛ وحله بـ ipconfig /flushdns؛ وعدم استخدام nslookup لذاكرة عميل DNS المؤقّتة. 

  15. Microsoft Learn, Windows Firewall profile doesn’t always switch to Domain when you use a third-party VPN client. حول القيمة الافتراضيّة لـ MaxNegativeCacheTtl تحت Dnscache\Parameters وهي 5 ثوانٍ، و0 يعطّل الذاكرة المؤقّتة السلبيّة. 

  16. Microsoft Learn, Clear-DnsClientCache. حول حذف محتويات ذاكرة عميل DNS المؤقّتة كلّها، المعادل لـ ipconfig /flushdns. 

  17. Microsoft Learn, Get-DnsClientCache. حول استرداد محتويات ذاكرة عميل DNS المؤقّتة المحلّيّة والترشيح بـ Name وType وTimeToLive وSection وما إلى ذلك. 

  18. Microsoft Learn, How to configure a domain suffix search list on the Domain Name System clients. حول استخدام قائمة البحث بلاحقة المجال المكوَّنة فقط متى كُوِّنت، مع عدم استخدام لاحقة DNS الأوّليّة ولا اللواحق الخاصّة بالاتّصال ولا التفكيك. 

  19. Microsoft Learn, Get-DnsClientGlobalSetting. حول استرداد إعدادات عميل DNS الكلّيّة غير المرتبطة بواجهة (UseSuffixSearchList، SuffixSearchList، UseDevolution، DevolutionLevel). 

  20. Microsoft Learn, Get-DnsClient. حول استرداد ConnectionSpecificSuffix وRegisterThisConnectionsAddress وUseSuffixWhenRegistering لكلّ واجهة. 

  21. Microsoft Learn, DNS client resolution timeouts. حول توقيت إعادة الإرسال مع خادم DNS واحد أو اثنين أو ثلاثة فما فوق (إعادة إرسال عند 1 و2 و4 و8 ثوانٍ من البداية، وتخلٍّ عند 10 ثوانٍ)؛ وتوقّف المعالجة عند ردّ سلبي وتجربة الخادم التالي فقط عندما لا ردّ؛ وعدم بلوغ الخوادم الرابعة فما بعد قبل 4 ثوانٍ.  2 3 4

  22. Microsoft Learn, Automatic interface metric. حول تقرير أولويّة الواجهة على Windows الحالي بمقياس الواجهة، وفحص المقياس وتغييره بـ Get-NetIPInterface. 

  23. Microsoft Learn, Get-DnsClientNrptPolicy. حول استرداد الإعدادات لكلّ مساحة أسماء المكوَّنة في NRPT (خوادم أسماء عميل DNS، DirectAccess، DNSSEC، وما إلى ذلك)، وعرض النهج الفعّال بـ -Effective، وعرض مساحة أسماء معيّنة بـ -Namespace.  2

  24. IETF, RFC 6762: Multicast DNS. حول كون mDNS بروتوكولاً يحلّ أسماء .local ضمن الرابط نفسه ببث متعدّد على منفذ UDP 5353.  2 3

  25. Microsoft Learn, Microsoft Security Bulletin MS11-030. حول استخدام LLMNR لـ TCP/UDP 5355؛ وحلول بديلة بحظر 5355 عند الجدار الناري وإعداد نهج المجموعة «Turn off multicast name resolution»؛ والنتيجة أنّ الحاسوب قد يصير غير مرئي لحواسيب أخرى.  2

  26. IETF, RFC 4795: Link-Local Multicast Name Resolution (LLMNR). حول إرسال استعلامات LLMNR ببث متعدّد UDP (المنفذ 5355) واستخدام TCP لتبادلات أحاديّة البث مثل الاستجابات المقطوعة. 

  27. Microsoft Tech Community, Networking Blog, Aligning on mDNS: ramping down NetBIOS name resolution and LLMNR. حول الاتّجاه الذي أعلنته Microsoft في أبريل 2022 للاتّساق على mDNS وتقليص تحليل أسماء NetBIOS وLLMNR تدريجيّاً.  2

  28. Microsoft Learn, How to configure TCP/IP networking while NetBIOS is turned off. حول استخدام خدمة أسماء NetBIOS لـ UDP 137، وخدمة مخطّط البيانات UDP 138، وخدمة الجلسة TCP 139، وتوقّف الاستماع على تلك المنافذ عندما يُعطَّل NetBT. 

  29. Microsoft Learn, Windows security baseline (Azure Policy guest configuration). حول أنواع عقد NetBT (B-node بث فقط، P-node WINS فقط، M-node بث ثمّ WINS، H-node WINS ثمّ بث)؛ وكون الافتراضي B-node بلا WINS مكوَّن وH-node مع WINS مكوَّن؛ وكون P-node التوصية.  2 3

  30. Microsoft Learn, Windows Internet Name Service (WINS). حول كون WINS خدمة قديمة تعيّن أسماء NetBIOS إلى عناوين IP، والتوصية بعدم نشرها جديداً بل استخدام DNS، والترحيل إلى DNS وإيقافها حيث هي منشورة أصلاً.  2

  31. Microsoft Learn, nbtstat. حول عرض /c لذاكرة أسماء NetBIOS المؤقّتة، ومسح /R للذاكرة المؤقّتة وإعادة تحميل القيود مسبقة الوسم من Lmhosts، وتحرير /RR وإعادة التسجيل مع WINS. 

  32. Microsoft Learn, Features removed or no longer developed in Windows Server. حول إهمال خدمة Computer Browser بروتوكول اكتشاف أجهزة قديم وغير آمن، ومعاملة ميزات تحليل أسماء قديمة مثل WINS. 

  33. Microsoft Learn, Direct host SMB over TCP/IP. حول اشتراط SMB 2.0.2 في Windows Vista / Windows Server 2008 فما بعده TCP 445 وعدم استخدام نقل جلسة NetBIOS. تستشهد الوثيقة بفائدة إمكان توحيد تحليل الأسماء على DNS، لكن ذلك شأن نقل SMB ولا يوقف عميل DNS للعميل عن حلّ الأسماء أحاديّة الوسم عبر LLMNR أو NetBT (القسم 5.4 من هذه المقالة). 

  34. Microsoft Learn, Add-DnsClientDohServerAddress. حول إضافة تكوين خادم DoH إلى قائمة الخوادم المعروفة، وتحديد الرجوع عند فشل التشفير والترقية التلقائيّة بـ -DohTemplate و-AllowFallbackToUdp و-AutoUpgrade. 

  35. Microsoft Learn, netsh dnsclient. حول تسجيل خوادم DoH وDoT بـ add/set encryption (dohtemplate، dothost، autoupgrade، udpfallback)، والإعدادات الكلّيّة doh/dot/ddr بـ set global، وshow encryption وshow global وshow state.  2 3 4 5

  36. Microsoft Learn, User data and privacy in Microsoft Edge: Secure DNS. حول استخدام Secure DNS للموفِّر الحالي افتراضيّاً وإعادة المحاولة بنصّ صريح عندما يفشل الاتّصال المشفَّر؛ وعدم الرجوع إلى النصّ الصريح عندما يُختار موفِّر معيّن؛ وتعطيله افتراضيّاً على حواسيب تديرها منظّمة. 

  37. Microsoft Learn, Microsoft Edge policy: DnsOverHttpsMode. حول الأوضاع الثلاثة off وautomatic وsecure، وعدم إرسال استعلامات DoH على أجهزة مُدارة عندما لا يكون النهج مكوَّناً. 

  38. Microsoft Learn, Guidance for configuring IPv6 in Windows for advanced users. حول اختيار Windows Vista فما بعده للعنوان المستخدَم بجدول بادئة RFC 3484 وتفضيل البث الأحادي العام لـ IPv6 على IPv4 افتراضيّاً، وعدم التوصية بتعطيل IPv6 بل استخدام «تفضيل IPv4» بـ 0x20 في DisabledComponents.  2 3

  39. IETF, RFC 3484: Default Address Selection for Internet Protocol version 6 (IPv6). حول كون القاعدة الأولى لاختيار عنوان الوجهة «تجنّب الوجهات غير القابلة للاستخدام»، مع استبعاد الوجهات بلا عنوان مصدر أو مسار أوّلاً ثمّ ترتيب المرشّحين بأولويّة سياسة البادئة. 

  40. Microsoft Learn, Configure DNSSEC rules using the Name Resolution Policy Table. حول أنواع مساحة أسماء NRPT (لاحقة، بادئة، FQDN، شبكة فرعيّة، Any)؛ وكون اللاحقة مطابقة ختاميّة تشمل النطاقات الفرعيّة؛ وتقدّم القواعد الأكثر تخصيصاً على الأكثر عموميّة. 

  41. Microsoft Learn, Troubleshooting Domain Name System (DNS) issues: Data collection. حول إجراء جمع البيانات ببدء netsh trace start capture=yes على العميل والخادم، وطرح الذاكرة المؤقّتة بـ ipconfig /flushdns، وإعادة إنتاج المشكلة، والتوقّف بـ netsh trace stop. 

أحدث المقالات التي تشترك في نفس الوسوم. عمّق فهمك بمواضيع مرتبطة.

ترتبط هذه المقالة بشكل طبيعي بصفحات الخدمات التالية.

الأسئلة الشائعة

أسئلة شائعة حول موضوع هذه المقالة.

حرّرت ملف hosts لكن التغيير لا يسري. لماذا؟
على Windows تُحمَّل محتويات ملف hosts إلى الذاكرة المؤقّتة عند بدء خدمة DNS Client، ويمضي تحليل الأسماء بترتيب الذاكرة المؤقّتة، ثمّ hosts، ثمّ خادم DNS. عندما لا يسري تغيير، افحص أوّلاً قيد ذلك الاسم بـ ipconfig /displaydns، وإن بقي جواب قديم فاطرحه بـ ipconfig /flushdns. ثانياً، اسأل ما إذا كانت الأداة التي تختبر بها تمرّ بمحلّل Windows أصلاً. لا يستخدم nslookup محلّل نظام التشغيل؛ يتجاوز الذاكرة المؤقّتة وhosts وNRPT ويستعلم خادم DNS مباشرة، لذا لا ينعكس شيء من hosts في خرجه. لرؤية نتيجة التحليل الفعليّة بما فيها hosts، استخدم Resolve-DnsName أو ping. إن لم يسرِ بعد ذلك، افحص ما إذا كان للتطبيق، مثل متصفّح، محلّل خاصّ أو DoH.
الموقع يُفتح في المتصفّح، لكن تطبيق الأعمال وحده يفشل في تحليل الأسماء.
الأرجح أنّ المتصفّح والتطبيق يحلّان الاسم عبر مسارين مختلفين. افتراضيّاً يتحدّث Microsoft Edge إلى خادم DNS بعميل DNS مضمَّن لا بعميل DNS لنظام التشغيل، وإن اختير موفِّر مختلف تحت Secure DNS (DoH)، يستعلم محلّلاً خارجيّاً. من جهة أخرى، Dns.GetHostAddresses في .NET، وHttpClient يتّصل مباشرة بالوجهة، يمرّان عبر getaddrinfo لنظام التشغيل، لذا يخضعان لـ hosts والذاكرة المؤقّتة لـ DNS وNRPT وقائمة البحث بلاحقة DNS (للطلبات التي تمرّ عبر وكيل HTTP، يُحلّ اسم الوجهة في جانب الوكيل). عندما يعيد الاثنان جوابين مختلفين، أقصر طريق هو مطابقة أيّ مسار سأل أيّ خادم DNS عمّا، باستخدام Resolve-DnsName والتقاط حزم.
يفترض أن تكون الإعدادات متطابقة، ومع ذلك بعض الحواسيب فقط لا تصل إلى الخادم الداخلي. ماذا أقارن؟
قارن شكل الاسم والطبقة التي يحصل عندها كلّ حاسوب على جوابه. اسم أحادي الوسم (اسم بلا نقطة، مثل server01) يُكمَل بقائمة البحث بلاحقة DNS للحاسوب أو اللاحقة الخاصّة بالاتّصال ويُرسَل إلى DNS، وافتراضيّاً يُرسَل أيضاً، على التوازي، إلى آليّات مقصورة على الشبكة الفرعيّة نفسها مثل بث LLMNR وNetBIOS (تُجرَّب بالتتابع بعد فشل DNS فقط عندما عُطِّل التحسين؛ إن كُوِّن WINS يستخدم NetBIOS البث الأحادي ويمكنه عبور الشبكات الفرعيّة). قد يحلّ حاسوب منضمّ إلى مجال الاسم لأنّ اللاحقة تكمّله إلى FQDN، بينما حاسوب على VPN أو على شبكة فرعيّة أخرى، أو حاسوب عُطِّل فيه LLMNR وNetBIOS، لا يستطيع حلّ الاسم نفسه. الطريقة الموثوقة جمع خرج Get-DnsClientServerAddress وGet-DnsClientGlobalSetting وGet-DnsClient وGet-DnsClientNrptPolicy -Effective على حاسوب يعمل وآخر يفشل ومقارنتهما. الإصلاح الجذري جعل الوجهات في ملفّات التكوين والاختصارات FQDN.
تحليل الأسماء لا يفشل؛ يستغرق ثواني عدّة قبل أن يمرّ الاتّصال أخيراً. ما السبب؟
هذه آليّة المهلة وإعادة الإرسال لعميل DNS تظهر. تجاه خادم DNS لا يردّ، يعيد Windows الإرسال عند 1 و2 و4 و8 ثوانٍ من البداية ويتخلّى عند 10 ثوانٍ. وحتّى مع عدّة خوادم DNS مكوَّنة، إن كان الذي يردّ رابعاً فما بعد في القائمة، ينتظر Windows 4 ثوانٍ على الأقلّ قبل أن يستعلم ذلك الخادم. قائمة بحث بلاحقة DNS طويلة تكدّس تأخيراً أيضاً، لأنّ اسماً أحادي الوسم يُجرَّب مع كلّ لاحقة بالتتابع. قِس كم يستغرق Resolve-DnsName بـ Measure-Command، وطبق مرشّح dns.qry.name في Wireshark لترى استعلامات أيّ خادم تبقى بلا جواب.
عطّلنا LLMNR وNetBIOS إجراءً أمنيّاً، والآن لم يعد يمكن الوصول إلى بعض الأجهزة بالاسم.
ذلك أثر جانبي متوقَّع. LLMNR وNetBIOS over TCP/IP وسيلتان ثانويّتان لحلّ الأسماء أحاديّة الوسم لأجهزة غير مسجَّلة في DNS ضمن الشبكة الفرعيّة نفسها، وتعطيلهما يزيل ذلك المسار. أعلنت Microsoft نفسها في 2022 اتّجاهاً للاتّساق على mDNS وتقليص تحليل أسماء NetBIOS وLLMNR تدريجيّاً، لذا قرار تعطيلهما نفسه صحيح. العلاج توحيد تحليل الأسماء على DNS: سجّل سجلات A للأجهزة في DNS الداخلي، أو فعِّل التسجيل الديناميكي عبر DHCP، وأعد كتابة وجهات التطبيقات والمشاركات إلى FQDN. يمكن حلّ الأجهزة التي تدعم mDNS بأسماء .local، لكن ذلك المسار أيضاً مقصور على المدى الذي يبلغه البث المتعدّد.
ماذا يحدث لتحليل الأسماء الداخلي عندما أفعّل DoH (DNS over HTTPS) على Windows 11؟
DoH ميزة تبدّل النقل إلى HTTPS عندما يستعلم عميل DNS خوادم DNS المكوَّنة؛ يبقى ترتيب hosts والذاكرة المؤقّتة وNRPT القائم كما هو. ما لم يُفعَّل DDR (Discovery of Designated Resolvers)، لا يمكن استخدام DoH إلا عندما يكون الخادم في قائمة خوادم DoH المعروفة، لذا إن أردت استخدام خادم DNS داخلي، يجب أن يسجّله مسؤول بـ Add-DnsClientDohServerAddress. إن ضُبط إعداد نهج المجموعة «Configure DNS over HTTPS (DoH) name resolution» على «Require DoH»، يفشل تحليل الأسماء نفسه تجاه خوادم لا تدعم DoH. تقول Microsoft صراحة ألا تفعّل هذا الإعداد على حواسيب منضمّة إلى مجال، لأنّ خدمة DNS Server التي تشحن مع Windows Server، والتي يعتمد عليها Active Directory، لا تدعم استعلامات DoH.

الملف الشخصي للمؤلف

صفحة الملف الشخصي لمؤلف المقالة.

غو كومورا

مؤسّس شركة كومورا سوفت ذ.م.م.

يركّز على تطوير برامج ويندوز، والاستشارات التقنية، والتحقيق في الأخطاء، ويتميّز في المشاريع التي تبقى فيها الأصول القديمة ناشطة، وفي تشخيص الأعطال التي يصعب تحديد سببها.

العودة إلى المدونة