Die Reihenfolge der Namensauflösung unter Windows — hosts, DNS-Cache, LLMNR/mDNS und DoH

· Aktualisiert am: · · Windows, DNS, Namensauflösung, Netzwerk, Fehleruntersuchung, PowerShell, TCP/IP, IT-Systeme

Änderungsverlauf (Erstfassung, veröffentlicht am 4. Sep 2026)
Erstveröffentlichung

„Die Einstellungen sind dieselben, aber nur dieser PC erreicht den internen Server nicht.“ „Im Browser öffnet es sich, aber die Geschäftsanwendung scheitert an der Namensauflösung.“ „Ich habe es in hosts eingetragen, und es greift nicht.“

Bei solchen Störungen ist zuerst festzustellen, welcher Mechanismus für diesen Namen antwortet. Windows hat mehrere Pfade: Cache, hosts, DNS-Server, LLMNR, NetBIOS und mDNS, und manche Apps nutzen einen eigenen Pfad, der von Windows getrennt ist.

Dieser Artikel gibt zuerst das Gesamtbild, ordnet die Form eines Namens und die Unterschiede der Pfade und geht dann zum konkreten Eingrenzungsverfahren. Wer sofort untersuchen muss, springt aus der folgenden Tabelle zum passenden Abschnitt.

Das Problem Zuerst prüfen Wo lesen
hosts greift nicht / nur manche PCs liefern eine alte IP Der Inhalt des Caches und der Pfad des verwendeten Werkzeugs Cache und hosts, Schritt 2
Ein kurzer Name wie app01 scheitert nur auf manchen PCs Suffixergänzung und ob LLMNR und NetBT verfügbar sind Form des Namens, Der typische Fall mit Single-Label-Namen
Das Ergebnis ändert sich bei VPN-Verbindung Die Priorität zwischen mehreren NICs und die NRPT Mehrere NICs, NRPT
Die Verbindung kommt nach mehreren Sekunden Wartezeit Ein nicht antwortender DNS-Server und der Zeitpunkt der Neuübertragung Timeouts
Browser und Geschäftsanwendung liefern unterschiedliche Ergebnisse Der integrierte Resolver, Sicheres DNS, der Proxy Wo die App eintritt, DoH im Browser
Unklar, wo anzufangen ist Von der Form des Namens ausgehen und Ergebnisse bei eingeschränktem Pfad vergleichen Eingrenzungsverfahren

Voraussetzungen für diesen Artikel

Punkt Inhalt
Zielgruppe IT-Verantwortliche, die „der Name löst sich nicht auf“ und „nur manche PCs kommen nicht durch“ untersuchen, sowie Windows-App-Entwickler, die die Kommunikation von Geschäftsanwendungen entwerfen und warten
Vorkenntnisse Grundlagen von IP-Adressen und DNS (A-Einträge, FQDN) und die Fähigkeit, PowerShell-Cmdlets mit Administratorrechten auszuführen
Zielumgebung Windows 10 / Windows 11. Der DoH-Abschnitt setzt Windows 11 oder Windows Server 2022 oder höher voraus.1 Die Prüfbefehle nutzen das DnsClient-Modul (Windows 8 / Windows Server 2012 oder höher)2
Außerhalb des Umfangs Konfiguration und Störungen auf der DNS-Serverseite (Zonen, Forwarder und Rekursion in Windows Server DNS). Bereitstellungsschritte für Zero Trust DNS (ZTDNS)

Der Artikel zum Paketmitschnitt behandelt die Pakete, die über die Leitung gehen, und der Artikel zu Proxys behandelt, „wessen Proxyeinstellungen gelesen werden“. Dieser Artikel behandelt den Schritt davor: „woher die Ziel-IP-Adresse kam“, geordnet anhand der Primärquellen von Microsoft.

1. Zuerst das Fazit

Drei Punkte sind festzuhalten.

  • Die Namensauflösung unter Windows läuft nicht immer eine einzige Reihe der Reihe nach ab. Cache und hosts kommen zuerst, aber bei einem Single-Label-Namen laufen DNS und LLMNR/NetBT standardmäßig parallel.34
  • Derselbe Name liefert andere Ergebnisse, wenn die Einstellungen des PCs und der Pfad der App differieren. Suffixe, VPN, die NRPT und den integrierten Resolver des Browsers getrennt denken.567
  • In der Untersuchung den genutzten Pfad einschränken und die Ergebnisse vergleichen. Cache, DNS und Link-Local mit den Schaltern von Resolve-DnsName trennen, dann mit einem Einstellungsdiff gegen einen funktionierenden PC und mit einem Mitschnitt bestätigen.8

Die folgende Abbildung dient als Gesamtkarte.

Namensauflösung ist eine SchichtungEine Anfrage zur Namensauflösung geht von der API der App zum DNS-Clientdienst; Cache und hosts werden zuerst geprüft, dann der DNS-Server, und nur bei Single-Label-Namen werden LLMNR und NetBIOS versucht (standardmäßig parallel zu DNS). Bei .local-Namen ist mDNS ein zusätzlicher Pfad neben dem konfigurierten DNS. Der Browser hat einen eigenen Resolver außerhalb dieser Reihefalls fehlendfalls fehlend, Single-Label-Name (standardmäßig parallel zu DNS).local-Name (zusätzlicher Pfad)eigener Resolver, DoHApp (getaddrinfo)DNS-ClientdienstCache (einschließlich hosts)DNS-Server abfragenLLMNR / NetBIOSmDNSBrowserSeparater Pfad

Zuerst wird der Cache geprüft; danach laufen DNS und, bei Single-Label-Namen, LLMNR und NetBIOS parallel. Der Browser hat einen eigenen Pfad.

Im Folgenden behandeln die Kapitel 3 bis 5 „welche Schicht antwortet“, Kapitel 6 „wie die Abfrage gesendet wird“ und die Kapitel 7 und 8 „wie sich das prüfen lässt“. DoH ist eine Funktion, die den Transport zum DNS-Server auf HTTPS umstellt; sie ersetzt nicht die Reihenfolge von hosts, Cache und NRPT.9

In der Abbildung kennzeichnet eine durchgezogene Linie eine stets geltende Beziehung und eine gestrichelte Linie eine bedingte (die Bedingungen stehen bei jeder Beziehung auf der Detailseite). Die vollständige Liste der Beziehungen (48 insgesamt, mit Beleg und Sicherheitsgrad) und die Definitionen der wichtigsten Konzepte sind auf der Detailseite der Wissenskarte (auf Japanisch) zusammengestellt. Daten: JSON-LD / Turtle

2. „Namensauflösung“ ist kein einzelner Vorgang

Die App erhält nur eine Adresse oder einen Fehler zurück

Wenn eine App mit einem Namen wie www.example.com verbindet, wird Winsocks getaddrinfo aufgerufen (die Unicode-Variante ist GetAddrInfoW). Für den Namensraum NS_DNS wandelt diese Funktion den Namen über DNS, die lokale Hosts-Datei und andere Mechanismen in eine Adresse. Antworten mehrere Namensraum-Anbieter, aggregiert sie die Antworten und gibt sie zurück.10

Mit anderen Worten: Am Ergebnis, das die App erhält, ist nicht zu erkennen, welche Schicht geantwortet hat.

Auch Dns.GetHostAddresses in .NET nutzt unter Windows getaddrinfo. Für einen in hosts eingetragenen Host gibt es diese Adresse zurück, ohne einen DNS-Server zu fragen. HttpClient läuft ebenfalls auf dieser Dns-Klasse, sodass eine .NET-App, die das Ziel direkt verbindet, die Reihenfolge der Windows-Namensauflösung übernimmt.11

Über einen HTTP-Proxy ändert sich der Name, der aufgelöst wird. Lokal aufgelöst wird der Name des Proxys; der Zielname wird auf der Proxy-Seite aufgelöst. Dann spielen lokales hosts, Cache, Suffixe und NRPT bei der Auflösung des Ziels keine Rolle. Welche Proxyeinstellungen gelesen werden, behandelt der Artikel zu Proxys.

2.1 Der DNS-Clientdienst legt die Reihenfolge fest

Unter getaddrinfo arbeitet der DNS-Clientdienst (Dienstname Dnscache). Die Microsoft-Dokumentation beschreibt die grundlegende Reihenfolge so.3

  1. Den Cache prüfen.
  2. Die Hosts-Datei prüfen.
  3. Den DNS-Server abfragen.

Weil der Inhalt von hosts beim Dienststart in den Cache geladen wird, fasst dieser Artikel die ersten beiden zusammen als Schicht 1, „Cache und hosts“.5

Danach verzweigt der Pfad je nach Name und Richtlinien.

Schicht Rolle Vorsicht beim Lesen der Reihenfolge
Schicht 1: Cache und hosts Gibt eine im PC gehaltene Antwort zurück Wird hier eine Antwort gefunden, wird der DNS-Server nicht gefragt
Schicht 2: DNS-Server Holt eine Antwort durch Abfrage von DNS Suffixe, mehrere NICs, die NRPT und Ähnliches greifen ein
Schicht 3: LLMNR und NetBT Löst Single-Label-Namen auch auf anderem Weg auf Standardmäßig parallel zu Schicht 2. Seriell nach einem DNS-Fehler wird es nur, wenn die Optimierung deaktiviert ist

Die standardmäßige „intelligente Multihomed-Namensauflösung“ sendet DNS-, LLMNR- und NetBT-Abfragen parallel an alle Netzwerke. Welche Antwort übernommen wird, entscheiden die Regeln in den Abschnitten 4.3 und 5.2.4

Deshalb sind „wann die Abfrage gesendet wird“ und „die Priorität der zurückkommenden Antworten“ zwei verschiedene Dinge. LLMNR oder NetBT in einem Mitschnitt zu sehen heißt für sich noch nicht „DNS ist gescheitert“. Die „drei Schichten“ in diesem Artikel sind eine Gliederung zur Erklärung; sie bedeuten nicht, dass die Schichten stets zeitlich nacheinander laufen.

2.2 Was außerhalb der Reihe steht

Besonders leicht zu verwechseln sind die folgenden beiden.

Werkzeug oder App Unterschied zum Windows-Pfad Vorsicht in der Untersuchung
nslookup Nutzt den OS-Resolver nicht; umgeht Cache, hosts und die NRPT und fragt den ersten DNS-Server direkt123 Ein anderes Ergebnis als bei ping oder der Geschäftsanwendung ist nicht überraschend
Microsoft Edge Nutzt standardmäßig den integrierten DNS-Client. DoH wird ebenfalls stets vom integrierten Resolver verarbeitet7 „Im Browser öffnet es sich“ ist kein Beweis, dass die OS-Namensauflösung gesund ist

Dass Edge den integrierten Client nutzt, bedeutet für sich nicht, dass sich der DNS-Server ändert. Abschnitt 6.2 trennt das von der Einstellung Sicheres DNS, die einen anderen Anbieter wählt.

3. Schicht 1 — Cache und hosts

Was auf dieser Schicht zu klären ist: welche Antworten im PC liegen bleiben. Der Cache hält nicht nur korrekte Antworten, sondern auch veraltete und Antworten „der Name existiert nicht“.

3.1 hosts wird in den Cache geladen

Die Hosts-Datei liegt unter C:\Windows\System32\drivers\etc\hosts. Beim Start des DNS-Clientdienstes werden die Zuordnungen von Name zu IP-Adresse in den Resolvercache geladen. Auch über DNS-Abfragen gewonnene Einträge bleiben für ihre TTL (Time to Live) im selben Cache.5

ipconfig /displaydns zeigt sowohl die aus hosts geladenen Einträge als auch die durch kürzliche DNS-Abfragen gewonnenen.13 Auch im Microsoft-Beispiel gilt: steht contoso.com in hosts, gibt Resolve-DnsName contoso.com diese Adresse zurück und es fließt kein DNS-Verkehr.3

Wie das Fehlen von DNS-Paketen zu lesen ist

Löst man einen FQDN ohne DoH oder DoT auf, die Namensauflösung gelingt, und auf Port 53 geht keine Abfrage, antworten vermutlich Cache oder hosts. Zuerst sind jedoch die folgenden anderen Pfade auszuschließen.

Name oder Einstellung Verkehr außer Port 53
.local-Name mDNS (UDP 5353)
Single-Label-Name LLMNR (5355), der NetBT-Namensdienst (UDP 137)
DoH aktiv HTTPS (443)
DoT aktiv TLS (853)

Nicht allein wegen „auf Port 53 ist nichts“ auf „Cache“ schließen; auch die Pfade ansehen, die in Frage kommen. Eine einzige Testzeile in hosts auf einem Entwicklungsrechner kann eine Untersuchung in die Irre führen.

Das Bearbeiten von hosts erfordert Administratorrechte, und Sicherheitsprodukte können die Änderung erkennen. Ein Design, das den Betrieb einer Geschäftsanwendung von hosts abhängig macht, ist zu vermeiden.

3.2 Auch negative Antworten werden zwischengespeichert

„Nicht gefunden“ ist ebenfalls eine der Antworten, die in den Cache gehen. Der DNS-Client speichert negative Antworten ebenso wie positive.5

Zeigt ipconfig /displaydns für den Zielnamen „Name does not exist“, liegt eine negative Antwort des DNS-Servers auf dem Client. Das Microsoft-Verfahren weist an, sie mit ipconfig /flushdns zu verwerfen.1413

Die Haltezeit des negativen Caches ist MaxNegativeCacheTtl unter HKLM\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters, der Standard ist 5 Sekunden.15 Deshalb kann ein PC noch einige Sekunden lang Fehler liefern, unmittelbar nachdem ein Eintrag in DNS ergänzt wurde.

3.3 TTL und „nur manche PCs sind veraltet“

Auch positive Antworten bleiben für ihre TTL. Ein PC, der den Namen vor der Änderung der Server-IP aufgelöst hat, nutzt die alte Antwort weiter, während ein PC, der ihn nach der Änderung erstmals auflöst, die neue erhält. Selbst mit demselben DNS-Server unterscheidet sich das Ergebnis, wenn der Zeitpunkt der Abfrage ein anderer ist.5

Clear-DnsClientCache verhält sich wie ipconfig /flushdns und löscht den gesamten Cacheinhalt einschließlich negativer Antworten.16 Mit Get-DnsClientCache lässt sich der Cache als Objekte holen und Eintragstyp sowie verbleibende TTL prüfen.17

# Ist ein bestimmter Name im Cache, und wie viele Sekunden TTL bleiben?
Get-DnsClientCache -Entry 'app01.corp.example.com' |
    Select-Object Entry, Type, Status, TimeToLive, Data

# Inhalt von hosts und Cache gemeinsam prüfen
ipconfig /displaydns | Select-String -Pattern 'app01' -Context 0,6

# Cache verwerfen (einschließlich negativer Antworten)
Clear-DnsClientCache

Wird auf Schicht 1 eine Antwort gefunden, ist diese Abfrage entschieden, bevor sie den DNS-Server erreicht. Es bleibt jedoch die Möglichkeit, dass eine falsche Antwort ursprünglich vom DNS-Server gelernt wurde. Nicht beim Leeren stehen bleiben; auch die in Schritt 3 von Kapitel 8 neu geholte Antwort prüfen.

4. Schicht 2 — Abfrage des DNS-Servers

Hat Schicht 1 keine Antwort, geht die Auflösung zu DNS. Hier getrennt denken: welcher Name, an welchen Server, zu welchem Zeitpunkt.

4.1 Single-Label-Namen und Suffixe

Zuerst die Form des Namens prüfen, den die App übergeben hat.5

Form des Namens Beispiel Wie er an DNS geht
FQDN mit abschließendem Punkt (absoluter Name) www.contoso.com. Wird unverändert gesendet
Enthält einen Punkt, aber keinen abschließenden Punkt www.contoso.com Standardmäßig mit angefügtem Punkt gesendet. Ist die Richtlinie aktiv, die das Anfügen von Suffixen an Namen mit mehreren Bezeichnungen zulässt, werden Suffixe zusätzlich versucht4
Single-Label-Name ohne Punkt www Mit den Suffixeinstellungen des PCs ergänzt und dann gesendet

Ein Suffix ist der Domänenteil, der hinter einen kurzen Namen gesetzt wird. corp.example.com an app01 anzufügen macht den abgefragten Namen zu app01.corp.example.com.

Wenn eine Suchliste existiert

Suffixe aus der DNS-Suffixsuchliste werden von oben der Reihe nach angefügt, und der Name wird mit abschließendem Punkt gesendet. Sobald eine Suchliste konfiguriert ist, wird nur diese Liste verwendet. Primärsuffix, verbindungsspezifische Suffixe und Namensdevolution kommen nicht zum Einsatz.18

Wenn keine Suchliste existiert

Das primäre DNS-Suffix wird angefügt. Ist Namensdevolution aktiv, fällt nach jedem Fehlschlag die linkeste Bezeichnung weg und der Name wird erneut versucht; etwa von www.test.contoso.com zu www.contoso.com. Hat ein Adapter ein verbindungsspezifisches DNS-Suffix, wird auch das angefügt und gesendet.5

Deshalb expandiert dasselbe server01 anders in einer Umgebung, in der die Gruppenrichtlinie eine Suchliste verteilt, und in einer Umgebung, in der die Domänenmitgliedschaft ein Primärsuffix liefert.

Eine lange Liste verlängert auch die Wartezeit

Liegt das richtige Suffix weit hinten in der Liste, sammelt sich die Abfragezeit, bis es erreicht ist. Microsoft erklärt diese Verzögerung ebenfalls am Beispiel von sechs Suffixen. Um nur eine bestimmte Expansion zu versuchen, einen abschließenden Punkt anfügen, etwa internal.contoso.com..3

# Globale Einstellungen: Suchliste und Devolution
Get-DnsClientGlobalSetting

# Pro Schnittstelle: verbindungsspezifisches Suffix und Registrierungseinstellungen
Get-DnsClient | Select-Object InterfaceAlias, ConnectionSpecificSuffix, UseSuffixWhenRegistering

# DNS-Server pro Schnittstelle (IPv4 und IPv6)
Get-DnsClientServerAddress | Where-Object ServerAddresses | Select-Object InterfaceAlias, AddressFamily, ServerAddresses

Get-DnsClientGlobalSetting liefert die globalen Einstellungen wie Suchliste und ob und bis zu welcher Stufe Devolution aktiv ist; Get-DnsClient liefert die Einstellungen pro Schnittstelle.1920

4.2 Die Reihenfolge mehrerer DNS-Server und Timeouts

Wenn „es nicht scheitert, aber mehrere Sekunden Wartezeit entstehen“, Neuübertragungen an einen nicht antwortenden DNS-Server verdächtigen. Für die auf einer NIC konfigurierten DNS-Server sieht der standardmäßige Neuübertragungszeitpunkt so aus.21

Zeit ab Start 1 Server 2 Server 3 oder mehr Server
0 s Server abfragen An den 1. An den 1.
1 s Neuübertragung An den 2. An den 2.
2 s Neuübertragung Neuübertragung an den 2. An den 3.
4 s Neuübertragung An alle Server gleichzeitig An alle Server gleichzeitig
8 s Neuübertragung An alle Server gleichzeitig An alle Server gleichzeitig
10 s Aufgeben Aufgeben Aufgeben

Das ist die Tabelle für den Fall ohne Antwort. Insbesondere die folgenden beiden nicht verwechseln.

Reaktion des Servers Wird der nächste Server versucht? Lesart
Keine Antwort Ja Ein Problem von Neuübertragung und Timeout
Eine negative Antwort „der Name existiert nicht“ Es stoppt dort Eine Antwort, dass der Name nicht existiert, ist eingegangen

Wenn „wir einen davon gestoppt haben, aber es wechselt nicht“, und ein Server mit alter Zone weiterläuft und negative Antworten liefert, geht die Auflösung nicht zum nächsten Server.21

Der vierte und spätere Server wird erst nach 4 Sekunden erreicht

Liegt der Server, der antworten kann, an vierter oder späterer Stelle in der Liste, vergehen nach der ersten Abfrage mindestens 4 Sekunden. Ist die Frist der App kürzer, scheitert sie bereits an der Namensauflösung. Um die Abfrage früher hinauszuschicken, müsste dieser Server unter die ersten drei rücken; die grundlegende Abhilfe ist jedoch, die unerreichbaren Server davor zu reparieren oder aus den Einstellungen zu nehmen. Auch den Timeout auf der App-Seite überprüfen.21

Auch im Microsoft-Beispiel braucht eine Konfiguration, in der nur einer von vier Servern erreichbar ist, etwa 4 Sekunden bis zum Abschluss. Die Dauer lässt sich mit Measure-Command messen, und dasselbe Dokument behandelt unter 1 Sekunde als akzeptabel.3

# Einen bestimmten Server direkt nur per DNS fragen und die Dauer in Millisekunden erhalten
(Measure-Command {
    Resolve-DnsName -Name 'app01.corp.example.com' -Server 10.0.1.2 -DnsOnly
}).TotalMilliseconds

Weil dieser Befehl den Server festlegt, misst er die Antwortzeit allein dieses Servers. Die Verzögerung, bis der vierte Listeneintrag erreicht ist, prüft man mit einer Abfrage ohne -Server oder mit einem Mitschnitt dieser Abfrage.

Der DNS-Client rückt schneller antwortende Server nach oben, merkt sich nicht antwortende Server und versucht sie periodisch erneut. Der Anfangstimeout wird außerdem anhand der bisherigen Leistung im Bereich 25 bis 1.000 Millisekunden angepasst. Die Tabelle oben ist das standardmäßige Gerüst; deshalb weichen Messungen davon ab.5

4.3 Mehrere NICs und „intelligente Multihomed-Namensauflösung“

Auf einem PC mit Kabel und WLAN oder einem PC, dem ein VPN-Adapter hinzukommt, nicht nur die Liste der DNS-Server prüfen, sondern auch die Abfrage über Netzwerke hinweg und die Auswahl der Antwort.

Neuübertragung an mehrere Adapter

Im Microsoft-Abfrageverfahren geht die Abfrage an den ersten DNS-Server des bevorzugten Adapters, mit 1 Sekunde Wartezeit. Kommt keine Antwort, geht sie an den ersten Server jedes Adapters, der noch in der Kandidatenmenge ist, mit 2 Sekunden Wartezeit, und danach an alle Server aller Adapter, mit Wartezeiten von 2, 4 und 8 Sekunden. Liefert ein Server eines Adapters eine negative Antwort, werden die übrigen Server dieses Adapters aus den Kandidaten genommen.5

Die Richtlinie, die parallele Abfragen steuert

Die Gruppenrichtlinie „Intelligente Multihomed-Namensauflösung deaktivieren“ steuert das folgende Verhalten.4

Richtlinie Verhalten
Standard (nicht konfiguriert) DNS, LLMNR und NetBT werden parallel über alle Netzwerke abgefragt. Treffen mehrere positive Antworten ein, wird die des in der Bindungsreihenfolge höchsten Netzwerks übernommen
Aktiviert Stoppt die Optimierung. Zuerst wird DNS in allen Netzwerken versucht; scheitert das, LLMNR; scheitert auch das, NetBT, der Reihe nach

Weil die Richtlinie „deaktivieren“ heißt, gilt: die Richtlinie zu aktivieren deaktiviert die Optimierung.

Ein Beispiel, in dem VPN das Ergebnis ändert

Wird ein interner Name abgefragt, liefert das DNS auf der VPN-Seite die interne Adresse, und das DNS auf der Seite des Heimrouters kann ebenfalls eine andere positive Antwort liefern: eine öffentliche Adresse unter demselben Domänennamen wie intern, oder die Adresse einer Werbe-Seite, die einen nicht existierenden Namen ersetzt, zum Beispiel.

Bei zwei positiven Antworten entscheidet die Bindungsreihenfolge über die Übernahme. Unter aktuellem Windows bestimmt die Schnittstellenmetrik diese Priorität; je kleiner das von Get-NetIPInterface gezeigte InterfaceMetric, desto höher die Priorität. Unterschiede dieser Reihenfolge von PC zu PC werden Unterschiede im Ergebnis.22

Liefert dagegen die Heimseite eine negative Antwort, fällt dieser Adapter aus den Kandidaten und die Antwort der VPN-Seite wird genutzt.5 VPN-Produkte verteilen die NRPT oder „Intelligente Multihomed-Namensauflösung deaktivieren“ gerade, um diese Unterschiede zu steuern.

4.4 NRPT — das Abfrageziel je Namensraum ändern

Die NRPT (Name Resolution Policy Table, Namensauflösungsrichtlinientabelle) ist eine Tabelle, die je Namensraum wie .corp.contoso.com festlegt, welche DNS-Server zu nutzen sind, sowie die Einstellungen für DirectAccess und DNSSEC. Profile von DirectAccess und Always On VPN schreiben Regeln hinein und erzeugen Verhalten wie „nur interne Namen an das interne DNS senden“.236

Get-DnsClientNrptPolicy -Effective zeigt die tatsächlich wirksamen Regeln.

# Die tatsächlich wirksamen NRPT-Regeln
Get-DnsClientNrptPolicy -Effective

# Nur die Regeln eines bestimmten Namensraums anzeigen. -Namespace filtert nur nach dem Namespace-Attribut; es gleicht nicht gegen einen Namen ab.
# 'app01.corp.example.com' zu übergeben liefert nicht die Suffixregel für '.corp.example.com'.
# Welche Regel auf einen Namen zutrifft, ermittelt man, indem man die Regeln auflistet und selbst abgleicht, wie in Schritt 4 von Kapitel 8
Get-DnsClientNrptPolicy -Effective -Namespace '.corp.example.com'

Die NRPT gilt nur für Apps, die die Windows-DNS-API nutzen. Apps mit eigener DNS-Implementierung umgehen diesen Pfad. Die VPNv2-CSP-Dokumentation nennt nslookup als Beispiel und verlangt Resolve-DnsName zur Prüfung der NRPT. Der integrierte Resolver des Browsers und DoH liegen ebenfalls außerhalb der Windows-DNS-API.6

5. Schicht 3 — Die Auswege für Single-Label-Namen: LLMNR, NetBIOS und danach mDNS

5.1 Worin sich die drei Protokolle unterscheiden

LLMNR und NetBIOS over TCP/IP (NetBT) sind alternative Mittel, um einen Single-Label-Namen wie app01 aufzulösen. Standardmäßig laufen sie parallel zu DNS, und eine Link-Local-Antwort kann übernommen werden, selbst wenn DNS eine positive Antwort liefert. Seriell nach einem DNS-Fehler werden sie nur, wenn die intelligente Multihomed-Namensauflösung deaktiviert ist.4

mDNS ist davon getrennt; es ist ein zusätzlicher Pfad für .local-Namen. Es ist kein Auffangnetz, das nach einem gescheiterten DNS-Auflösen eines Single-Label-Namens einspringt.24

Protokoll Port Reichweite Einordnung
LLMNR Multicast auf UDP 5355. TCP 5355 dient der Unicast-Neuübertragung2526 Die Verbindung innerhalb desselben Subnetzes Sekundäre Namensauflösung, die ohne konfiguriertes DNS funktioniert4
mDNS Multicast auf UDP 535324 Das lokale Netzwerk, das Multicast erreicht Auflösung von .local-Namen. Das Verfahren, das Microsoft künftig als Achse gewählt hat27
NetBT Der Namensdienst auf UDP 13728 Broadcast oder eine Abfrage an einen WINS-Server29 Legacy. Die Migration von WINS zu DNS wird empfohlen30

Auch bei .local die DNS-Prüfung nicht überspringen

.local wird nicht zu mDNS-exklusiv. Ist die Active-Directory-Domäne etwas wie corp.local, wird dieser Name weiterhin auch über die konfigurierten DNS-Server und die NRPT aufgelöst. RFC 6762 erlaubt ebenfalls das Nebeneinander mit Unicast-DNS. Bei der Untersuchung von .local-Namen auch die DNS- und VPN-Richtlinien prüfen.24

NetBT hängt davon ab, ob WINS existiert, und vom Knotentyp

Knotentyp Verfahren der Namensauflösung
B-node Nur Broadcast
P-node Nur WINS-Abfragen
M-node Broadcast, dann WINS
H-node WINS, dann Broadcast

Ohne konfiguriertes WINS ist der Standard B-node; ist auch nur ein WINS-Server konfiguriert, ist der Standard H-node.29 LLMNR- und NetBT-Broadcasts überschreiten keine Subnetze, Abfragen an WINS sind jedoch Unicast und können es daher.

nbtstat -c zeigt den NetBIOS-Namenscache, und nbtstat -R leert den Cache und lädt LMHOSTS neu.31

5.2 Welche Antwort Vorrang hat

Welche Antwort nach den parallelen Abfragen Vorrang hat, steuert ebenfalls die Richtlinie.4

Bedingung Priorität der Antworten für einen Single-Label-Namen
Standard, in einem Netzwerk, das kein Domänennetzwerk ist Link-Local-Antworten von LLMNR oder NetBT haben Vorrang vor DNS
Ein Domänennetzwerk DNS-Antworten haben Vorrang
„Intelligente Protokollumordnung deaktivieren“ aktiviert DNS, dann LLMNR, dann NetBT, in jedem Netzwerk

In Heim- oder öffentlichen Netzen kann die Antwort eines nahegelegenen Geräts mit demselben Namen Vorrang vor DNS haben. Auch hier gilt, die Antwortpriorität getrennt davon zu lesen, ob die Abfragen seriell oder parallel sind.

5.3 Die Richtung von Microsoft: Ausrichtung auf mDNS

Im April 2022 hat Microsoft die Ausrichtung auf mDNS und den schrittweisen Rückbau von NetBIOS-Namensauflösung und LLMNR angekündigt.27 Alte und unsichere Geräteerkennungsprotokolle wie Computer Browser sind ebenfalls als veraltet eingestuft.32 Entwürfe, die Single-Label-Namen mit Multicast oder Broadcast ergänzen, laufen aus.

Die Microsoft-Informationen zur LLMNR-Schwachstelle nennen als Umgehungen das Blockieren von TCP/UDP 5355 und das Aktivieren der Gruppenrichtlinie „Deaktivieren der Multicastnamensauflösung“. Sie halten außerdem fest, dass der Computer infolgedessen für andere Computer unsichtbar werden kann.25 Das Aktivieren dieser Richtlinie deaktiviert LLMNR auf allen Adaptern des DNS-Clients.4

Die Entscheidung zur Deaktivierung selbst ist richtig, aber für den verschwindenden Pfad muss ein Ersatz in DNS bereitstehen. Für Geräte, die nicht in DNS registriert sind, A-Einträge registrieren oder die dynamische Registrierung über DHCP aktivieren und die Ziele auf FQDN umstellen. Geräte mit mDNS-Unterstützung können .local-Namen nutzen, aber die Reichweite ist auf den Bereich beschränkt, den Multicast durchdringt.

5.4 Der typische Fall „nur manche PCs kommen nicht durch“: Single-Label-Namen

Steht in einer Konfigurationsdatei oder Verknüpfung \\fileserver01 oder http://app01/, erzeugt derselbe Name die folgenden Unterschiede.

PC-Umgebung Was eintreten kann
Domänenzugehöriger Desktop Das Suffix ergänzt zu app01.corp.example.com, und das interne DNS löst auf
Laptop über VPN Die Ergänzung hängt vom VPN-Profil ab. Wird nicht ergänzt und liegt kein Ziel im selben Subnetz, gehen LLMNR und NetBT ins Leere
Büro in einem anderen Subnetz Ohne DNS-Registrierung erreichen LLMNR- und NetBT-Broadcasts es nicht. Bei einer WINS-Registrierung kann es sich jedoch noch auflösen2930
PC mit deaktiviertem LLMNR und NetBT Ein Name, der nicht in DNS steht, lässt sich nicht auflösen. Ist nur LLMNR deaktiviert, bleibt Spielraum für NetBT oder WINS

Was Resolve-DnsName app01 -LlmnrOnly sagt, ist „ob sich über LLMNR auflösen lässt“. Es sagt nicht, woher die im Alltag übernommene Antwort stammt. Der Vergleich mit dem Ergebnis ohne Schalter und Mitschnitte erfolgen in Schritt 5 von Kapitel 8.8

Die grundlegende Abhilfe sind FQDN und DNS-Registrierung

Ziele, die von Single-Label-Namen abhängen, auf FQDN umstellen und die Namensauflösung auf DNS bündeln.

SMB2 und später verbinden direkt auf TCP 445 und nutzen keine NetBIOS-Sitzungen.33 Das ist jedoch eine Frage des Transports. Beim Auflösen des Namens in einem Ziel wie \\fileserver01\share können LLMNR oder NetBT zum Einsatz kommen. Den FQDN angeben, etwa \\fileserver01.corp.example.com\share, um die Abhängigkeit vom Single-Label-Pfad zu entfernen.

Auch bei FQDN bleiben einige Vorsichtshinweise. Ein FQDN ohne abschließenden Punkt wird zusätzlich mit Suffixen versucht, wenn die Richtlinie aktiv ist, die Suffixe an Namen mit mehreren Bezeichnungen anfügt. Ein auf .local endender Name kann mDNS neben DNS nutzen. Die Form, die den Namen unbedingt festlegt, ist der absolute Name mit abschließendem Punkt. Die Voraussetzung, in der Praxis „ein FQDN ist auf DNS festgelegt“ als wahr zu behandeln, ist, dass die genannte Richtlinie deaktiviert ist und der interne Domänenname nicht .local verwendet.

6. Der Transport zum DNS-Server — DoH ändert die Reihenfolge nicht

6.1 DoH unter Windows 11 / Windows Server 2022

Windows-DoH ist eine Funktion, die Abfragen an den DNS-Server über HTTPS sendet. Sie ist mit dem bestehenden hosts, Cache und der NRPT sowie mit Resolver-Angaben je Adapter und Profil integriert; sie ersetzt nicht die Reihenfolge der Kapitel 3 und 4.9

Der DNS-Client von Windows 11 unterstützt DoH, und neuere Versionen unterstützen auch DoT (DNS over TLS). Die Microsoft-Beschreibung nennt jedoch nicht, welche Versionen DoT unterstützen, sodass es nicht auf jeder in diesem Artikel vorausgesetzten Umgebung verfügbar sein muss. Das Folgende behandelt DoH.9

Zuerst die Liste bekannter DoH-Server prüfen

Sofern DDR nicht aktiviert ist, sind nur Server in der Liste bekannter DoH-Server nutzbar. Die Standardliste enthält Cloudflare, Google und Quad9 und lässt sich mit Get-DnsClientDohServerAddress prüfen. Für einen internen DNS-Server und Ähnliches eine DoH-Vorlage zusammen mit Fallback- und Auto-Upgrade-Einstellungen registrieren.134

# Die Liste bekannter DoH-Server
Get-DnsClientDohServerAddress

# Den internen DNS-Server als DoH-Server registrieren (kein Klartext-Fallback, mit Auto-Upgrade)
Add-DnsClientDohServerAddress -ServerAddress '10.0.1.2' `
    -DohTemplate 'https://dns.corp.example.com/dns-query' `
    -AllowFallbackToUdp $false -AutoUpgrade $true

Die Registrierung ist auch mit netsh dnsclient add encryption möglich. Das globale netsh dnsclient set global doh=yes|no|auto ist eine von dem serverseitigen autoupgrade getrennte Einstellung.35

Globale Einstellung Bedeutung
doh=no DoH verbieten
doh=yes DoH gemäß Server- und Adaptereinstellungen zulassen
doh=auto DoH für Abfragen an bekannte DoH-Server automatisch erzwingen

auto allein verbietet nicht die Rückkehr zu Klartext. Ob bei Fehlschlag auf UDP zurückgefallen wird, entscheidet getrennt das serverseitige udpfallback bzw. -AllowFallbackToUdp in PowerShell. Um die Auflösung auf verschlüsselten Transport zu beschränken, auch den Fallback deaktivieren.35

Ist DDR aktiv, gibt es auch einen dynamischen Entdeckungspfad

Auf Versionen mit DDR (Discovery of Designated Resolvers) kann ein im Klartext konfigurierter Resolver seine verschlüsselten DNS-Endpunkte bekanntgeben. Weil die Verbindung ohne Eintrag in der statischen Liste auf Verschlüsselung angehoben werden kann, gilt nicht „es steht nicht in der Liste, also ist es kein DoH“.35

Damit DDR arbeitet, sind beide nötig: das globale netsh dnsclient set global ddr=yes und das adapterbezogene set interface <name> ddr=yes. Ob bei Fehlschlag der über DDR gewonnenen verschlüsselten Auflösung auf Klartext zurückgefallen wird, entscheidet ddrfallback, das standardmäßig deaktiviert ist.

In der Untersuchung neben der bekannten Liste netsh dnsclient show global und netsh dnsclient show state prüfen sowie die mit set interface gesetzten Werte auf Adaptern, die DNS-Server haben. Die in der Dokumentation definierten show-Unterbefehle sind encryption, global und state; einen adapterbezogenen Show-Unterbefehl gibt es nicht.35

„Zulassen“, „Anfordern“ und die Rückkehr zu Klartext trennen

In der Einstellungen-App die DNS-Einstellungen auf manuell setzen; „Bevorzugte DNS-Verschlüsselung“ lässt sich nur wählen, wenn der bevorzugte DNS-Server in der bekannten Liste steht. Es gibt drei Optionen.1

Option in der Einstellungen-App Verhalten
Nur verschlüsselt (DNS über HTTPS) Nur Verschlüsselung nutzen
Verschlüsselt bevorzugt, unverschlüsselt zulässig Bei DoH-Fehlschlag ohne Benachrichtigung auf Klartext zurückfallen
Nur unverschlüsselt Im Klartext senden

Die Gruppenrichtlinie „DNS über HTTPS (DoH)-Namensauflösung konfigurieren“ hat Zulassen, Verbieten und Anfordern. Bei Zulassen wird DoH genutzt, wenn zusätzlich zur Registrierung in der bekannten Liste Bedingungen wie Auto-Upgrade, die Verschlüsselungseinstellung des Adapters oder das globale doh=auto erfüllt sind. Bei „Anfordern“ scheitert die Namensauflösung selbst gegen Server ohne DoH-Unterstützung.135

„DoH anfordern“ nicht auf domänenzugehörige PCs anwenden. Microsoft warnt ausdrücklich davor. Active Directory Domain Services hängt stark von DNS ab, und der mit Windows Server gelieferte DNS-Serverdienst unterstützt keine DoH-Abfragen.1

Im Mitschnitt Einstellungen und tatsächlichen Verkehr getrennt lesen

Tatsächlich über DoH gesendete Abfragen liegen in TLS auf Port 443 statt auf UDP 53. Auch bei „DoH zulassen“ fließen Abfragen an Server außerhalb der bekannten Liste und Fallbacks nach einem Verschlüsselungsfehler im Klartext. Dass DoH konfiguriert ist, lässt den Verkehr auf Port 53 nicht verschwinden.

Sind keine DNS-Abfragen sichtbar, neben hosts und Cache auch DoH und DoT (Port 853) prüfen. Zum Mitschnitt siehe den Artikel zum Paketmitschnitt.

6.2 DoH im Browser ist vom Betriebssystem getrennt

Den integrierten DNS-Client von Edge und die Änderung des Abfrageziels über Sicheres DNS versteht man leichter, wenn man sie in zwei Stufen teilt.

Einstellung Wer fragt, und wen
Standardmäßiger integrierter DNS-Client Edge fragt statt des OS-DNS-Clients. Der genutzte DNS-Server selbst ändert sich nicht
Sicheres DNS mit dem aktuellen Anbieter Fragt den aktuellen Anbieter verschlüsselt. Bei Fehlschlag erneuter Versuch im Klartext
Sicheres DNS mit einem anderen Anbieter Fragt den gewählten DoH-Resolver. Fällt bei Fehlschlag nicht auf Klartext zurück

Der integrierte Client wird über BuiltInDnsClientEnabled gesteuert, und DoH-Abfragen erfolgen stets durch den integrierten Resolver.7 Sicheres DNS ist auf von der Organisation verwalteten PCs standardmäßig deaktiviert und wird mit DnsOverHttpsMode (off / automatic / secure) und DnsOverHttpsTemplates konfiguriert.3637

Ein Edge, bei dem ein anderer Anbieter gewählt ist, kann externe Sites auflösen, aber Namen scheitern lassen, die nur das interne DNS kennt. Umgekehrt kann Edge allein Seiten noch öffnen, wenn das OS-DNS ungesund ist. Bleibt es beim aktuellen Anbieter, ändert sich das Abfrageziel nicht.

Die Schlussfolgerung: Erfolg im Browser und Erfolg der Geschäftsanwendung nicht als Beleg für denselben Pfad behandeln. Den OS-Pfad mit Resolve-DnsName oder ping prüfen.

7. Welchen Pfad nimmt die App?

Bevor die Werkzeuge für eine Untersuchung gewählt werden, den betrachteten Pfad angleichen.

Aufruf Genommener Pfad hosts Cache NRPT LLMNR/NetBT
getaddrinfo / Dns.GetHostAddresses / HttpClient (Direktverbindung)1011 Der OS-DNS-Clientdienst. Ein HttpClient über einen Proxy löst lokal nur den Proxy-Namen auf; der Proxy löst das Ziel Geprüft Geprüft Gilt Für Single-Label-Namen genutzt (standardmäßig parallel zu DNS; seriell nach Fehlschlag nur bei deaktivierter Optimierung)
ping Der OS-DNS-Clientdienst Geprüft Geprüft Gilt Für Single-Label-Namen genutzt (standardmäßig parallel zu DNS; seriell nach Fehlschlag nur bei deaktivierter Optimierung)
Resolve-DnsName8 Der OS-DNS-Clientdienst (die Schicht lässt sich mit Schaltern wählen) Mit -NoHostsFile auszuschließen Mit -CacheOnly eingeschränkt Gilt Mit -DnsOnly auszuschließen
nslookup123 Direkt an den ersten DNS-Server Nicht geprüft Nicht geprüft Gilt nicht Nicht genutzt
Microsoft Edge (Standard)76 Der integrierte DNS-Client (geht nicht durch den OS-DNS-Client) Getrennt vom OS-Pfad Getrennt vom OS-Cache Gilt nicht (außerhalb der Windows-DNS-API) Getrennt vom OS-Pfad

Die wichtigsten Schalter von Resolve-DnsName, nach Untersuchungszweck geordnet, sind die folgenden.8

Was zu prüfen ist Schalter
Ob der lokale Cache allein eine Antwort liefert -CacheOnly
Mit ausgeschlossenen hosts versuchen -NoHostsFile
Nur das DNS-Protokoll nutzen, ohne LLMNR oder NetBIOS zu senden -DnsOnly
Einen bestimmten DNS-Server fragen -Server
Nur LLMNR versuchen -LlmnrOnly
Nur LLMNR oder NetBIOS versuchen -LlmnrNetbiosOnly
Bei DNS-Fehlschlag den Fallback auf NetBIOS zulassen -NetbiosFallback
Den Eintragstyp wählen -Type. Der Standard A_AAAA fragt A und AAAA

7.1 A und AAAA: IPv6 kommt zuerst zurück

Selbst wenn die Namensauflösung gelingt, kann die anschließende Adressauswahl die Verbindung langsam machen.

Der DNS-Client fragt sowohl A (IPv4) als auch AAAA (IPv6). Auch im Mitschnitt erscheinen beide Abfragen als Paar.3 Nach den Antworten wählen getaddrinfo und der verbindende Stapel die zu nutzende Adresse. Windows Vista und später verwenden die Präfixtabelle aus RFC 3484 und bevorzugen standardmäßig IPv6-Global-Unicast gegenüber IPv4.38

Allerdings gilt: Eine AAAA-Antwort allein bedeutet nicht, dass stets eine IPv6-Verbindung versucht wird. Die Zielauswahl verwirft zuerst unbrauchbare Ziele, etwa solche ohne IPv6-Quelladresse oder Route, und ordnet dann die Kandidaten.39

Das Problem entsteht in Umgebungen, in denen eine IPv6-Quelladresse und eine Route vorhanden zu sein scheinen, aber tatsächlich nicht funktionieren. Die Namensauflösung gelingt, doch Zeit geht an der Verbindung verloren. Ob IPv6 wirklich versucht wurde, bestätigt man nicht allein aus der DNS-Antwort, sondern aus Verbindungsprotokollen oder einem Mitschnitt.

Microsoft empfiehlt nicht, IPv6 zu deaktivieren, weil einige Windows-Komponenten dann nicht mehr arbeiten. Stattdessen beschreibt es, DisabledComponents auf 0x20 zu setzen, um IPv4 in der Präfixrichtlinie zu bevorzugen.38 Den Fall, dass localhost nach ::1 auflöst und mit einer Untersuchung kollidiert, die 127.0.0.1 angenommen hat, behandelt auch der Artikel zum Paketmitschnitt.

8. Das Eingrenzungsverfahren — die Schichten von oben abschälen

Auf dem scheiternden PC der Reihe nach ausführen. Jeder Befehl existiert, um den Pfad einzuschränken, und sein Erfolg allein beweist nicht den im Alltag genommenen Pfad. Den Vergleich der Ergebnisse mit dem Mitschnitt am Ende kombinieren.

Schritt Was zu prüfen ist
1 Die Form des Namens, den die App übergeben hat
2 Die Antwort aus Cache und hosts
3 Das DNS-Ergebnis mit ausgeschlossenen hosts, LLMNR und NetBIOS
4 Das Ergebnis jedes DNS-Servers auf dem tatsächlichen Auflösungspfad
5 Die Auflösung des Single-Label-Namens über LLMNR und NetBT
6 Der Einstellungsdiff zwischen einem funktionierenden und einem scheiternden PC
7 Ob Pakete hinausgegangen sind und was zurückkam

Schritt 1: Die Form des Namens prüfen

In einem Protokoll oder einer Konfigurationsdatei den Namen prüfen, den die App tatsächlich übergibt. Der Pfad ändert sich je nachdem, ob es ein Single-Label-Name ist, auf .local endet oder einen abschließenden Punkt hat. Bei einem kurzen Namen wie http://app01/ von der Ergänzung in Abschnitt 4.1 und den Unterschieden je PC in Abschnitt 5.4 ausgehen.

Schritt 2: Lässt sich allein aus Cache und hosts auflösen?

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'
Ergebnis Lesart und nächste Prüfung
Die korrekte Antwort kommt zurück Diesmal ist die Antwort entschieden, bevor sie den DNS-Server erreicht
Eine veraltete oder falsche Antwort kommt zurück Ist es hosts, diese Zeile korrigieren. Ist es der Cache, leeren und dann die in Schritt 3 neu geholte Antwort prüfen
„Name does not exist“ Negativer Cache. Clear-DnsClientCache ausführen, dann zu Schritt 3
Keine Antwort Möglicherweise ein gewöhnlicher Cache-Miss. Zu Schritt 3

-CacheOnly beschränkt nur diese Abfrage auf den lokalen Cache. Wurde eine falsche Antwort vom DNS-Server gelernt, kommt nach dem Leeren derselbe Wert zurück. Dass sie im Cache lag, ist kein Beweis, dass der DNS-Server unbeteiligt ist.8

Schritt 3: Lässt sich allein über DNS auflösen?

# hosts ausschließen, kein LLMNR/NetBIOS senden und nur die konfigurierten DNS-Server abfragen
Resolve-DnsName -Name 'app01.corp.example.com' -NoHostsFile -DnsOnly

Hatte Schritt 2 keine Antwort und gelingt dieser Schritt lediglich, ist es meist ein gewöhnlicher Cache-Miss. Von einem Cache- oder hosts-Problem kann man nur sprechen, wenn Schritt 2 eine veraltete Antwort, eine falsche Antwort oder einen negativen Cacheeintrag zeigte.

Scheitert auch dieser Schritt, den Weg zum DNS-Server, die Serverseite und die clientseitigen Richtlinien untersuchen. Bevor es zu Schritt 4 geht, Folgendes prüfen.

  • Get-DnsClientNrptPolicy -Effective: gibt es eine Regel, die den Namen an einen anderen DNS-Server lenkt?
  • Get-DnsClientDohServerAddress und die DoH-Gruppenrichtlinie: steht „DoH anfordern“ gegen einen Server, der es nicht unterstützt?

Gibt es eine NRPT, ändern sich die Zielserver in Schritt 4. Ist „DoH anfordern“ die Ursache, scheitert nur die Namensauflösung, während Weg und Server gesund sind. Zuerst die Prüfungen in den Abschnitten 4.4 und 6.1 abschließen.

Schritt 4: Jeden Server direkt fragen

Die DNS-Server der verbundenen Adapter sammeln und, wenn eine NRPT-Regel auf den Zielnamen zutrifft, durch die Server dieser Regel ersetzen. Auch DNS-Server einbeziehen, die nur für IPv6 konfiguriert sind.

$name = 'app01.corp.example.com'
# Die DNS-Server der verbundenen Schnittstellen aus IPv4 und IPv6 sammeln.
# Server, die in den Einstellungen eines getrennten VPN oder virtuellen Switches liegen bleiben, gehören nicht zum aktuellen Auflösungspfad, daher ausschließen (Server, die nur für IPv6 konfiguriert sind, nicht übersehen)
$connected = @((Get-NetIPInterface -ConnectionState Connected).ifIndex | Select-Object -Unique)
$servers = @((Get-DnsClientServerAddress |
    Where-Object { $_.ServerAddresses -and ($connected -contains $_.InterfaceIndex) }).ServerAddresses)
# Die Server der NRPT-Regel, die auf diesen Namen zutrifft (von Always On VPN oder DirectAccess geschrieben), erscheinen nicht in den Adaptereinstellungen, daher aus der wirksamen Richtlinie wählen.
# Der Parameter -Namespace von Get-DnsClientNrptPolicy filtert nur nach dem Namespace-Attribut der Regel; er gleicht nicht gegen den Namen ab.
# Daher Any-Regel (.), Suffixregeln (führender Punkt; gelten für den Namensraum selbst und untergeordnete Domänen), FQDN-Regeln und Präfixregeln (der Hostnamenteil; Platzhalter wie web* sind zulässig) selbst abgleichen
# und die spezifischere (längere) Regel übernehmen. Die Any-Regel ist die kürzeste, daher wird sie nur gewählt, wenn keine andere Regel zutrifft
# Namespace ist eine Menge von Zeichenfolgen (angezeigt als Namespace : {.corp.example.com}), daher die Elemente jeder Regel zum Abgleich expandieren und nach der Länge des getroffenen Namensraums ordnen
# Bei einem absoluten Namen mit abschließendem Punkt (app01.corp.example.com.) den Punkt nur für den Abgleich entfernen. An Resolve-DnsName das ursprüngliche $name übergeben
$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) {
    # Gibt die NRPT Server für diesen Namensraum vor, geht die Abfrage in Schritt 3 an diese Server. Die Server des Adapters liegen außerhalb des Pfads, daher ersetzen
    $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'
        # Mehrere Einträge können je Antwort in anderer Reihenfolge kommen, daher vor dem Vergleich sortieren
        $answer = ($r.IPAddress | Sort-Object) -join ','
    } catch {
        # Negative Antworten (Name existiert nicht), SERVFAIL und Timeouts landen hier. Den Grund behalten statt ihn zu verwerfen
        $status = $_.Exception.Message
        $answer = ''
    }
    [pscustomobject]@{ Server = $server; Status = $status; Answer = $answer; Milliseconds = [int]$sw.ElapsedMilliseconds }
}

Zuerst die zu vergleichenden Server aufreihen

Die NameServers und DirectAccessDnsServers der NRPT können in den DNS-Einstellungen des Adapters fehlen. Fragt Schritt 3 die Server der NRPT, untersucht Schritt 4 aber nur die Server des Adapters, werden unterschiedliche Pfade verglichen.

Die NRPT hat Regeltypen wie Suffix, FQDN, Präfix und Any (.), und spezifischere Regeln haben Vorrang.40 -Namespace filtert nur nach dem Attribut der Regel; es gleicht nicht gegen den Hostnamen ab. Deshalb expandiert der Code oben die Namensräume der Regeln und gleicht sie gegen den Zielnamen ab.23

Bei einem Split-DNS-VPN ist es normal, dass der Resolver der Heimseite eine negative Antwort auf einen internen Namen liefert und nur die NRPT-Seite eine positive. Werden auch Server außerhalb des Pfads verglichen, sie getrennt als „Kontrolle“ festhalten und nicht in die Beurteilung von Zonenabweichungen mischen. Timeouts gegen Server, die auf getrennten Adaptern liegen bleiben, sind ebenfalls von Verzögerungen auf dem aktuellen Auflösungspfad getrennt.

Als Nächstes die Ergebnisse auseinanderlesen

Ergebnis Was zu untersuchen ist
Nur ein bestimmter Server läuft in den Timeout Warum dieser Server nicht antwortet
Eine negative Antwort wie „der Name existiert nicht“ Vom Timeout unterscheiden und Name sowie Zoneninhalt prüfen
Die IP-Adressen in den Antworten unterscheiden sich Bestätigen, dass die Server dieselbe Rolle haben, und als Eintragsmengen vergleichen
Nur die Reihenfolge der Einträge unterscheidet sich Möglicherweise Round Robin. Sind die sortierten Mengen gleich, eine Reihenfolgeabweichung nicht als Zonenabweichung bezeichnen

Unterscheiden sie sich auch als Mengen, Zoneninhalt und Seriennummern prüfen. Außerdem ist dies eine Messung mit durch -Server festgelegtem Ziel. Die durch die Listenposition verursachte Verzögerung „4 Sekunden, bis der vierte und spätere Server erreicht wird“ aus Abschnitt 4.2 prüft man in Schritt 3 oder in dessen Mitschnitt.

Resolve-DnsName -Name 'app01' -LlmnrOnly          # Nur LLMNR
Resolve-DnsName -Name 'app01' -LlmnrNetbiosOnly   # Nur LLMNR oder NetBIOS (kein DNS)
nbtstat -c                                        # NetBIOS-Namenscache

Diese Prüfung gilt Single-Label-Namen. -NetbiosFallback fällt nur bei DNS-Fehlschlag auf NetBIOS zurück, daher ist es bei einem Namen, den DNS auflösen kann, keine NetBIOS-Prüfung.8

Die Ergebnisse so lesen.

Ergebnis Was es sagt / was es noch nicht sagt
-LlmnrOnly gelingt Es lässt sich über LLMNR auflösen. Das heißt jedoch nicht, dass diese Antwort im Alltag übernommen wird
-LlmnrOnly scheitert und -LlmnrNetbiosOnly gelingt Man kann nicht schließen, dass NetBIOS geantwortet hat. Wegen verlorener Pakete oder des Startzeitpunkts der Gegenseite kann LLMNR bei einem späteren Versuch geantwortet haben
Nur diese Schicht gelingt auf dem funktionierenden PC und scheitert auf dem scheiternden PC Eine Abhängigkeit vom Single-Label-Pfad verdächtigen. Die grundlegende Abhilfe sind FQDN und DNS-Registrierung

Welches Protokoll geantwortet hat, unterscheidet man im Mitschnitt anhand von UDP 5355 (LLMNR) gegenüber UDP 137 (NetBT). Um den alltäglichen Auflösungspfad zu bestätigen, auch mit der Adresse vergleichen, die Resolve-DnsName ohne Schalter zurückgibt, und bei Abweichung die übernommene Antwort im Mitschnitt prüfen, weil standardmäßig auch DNS parallel abgefragt wird.

Schritt 6: Die Einstellungsdumps vergleichen

In einer Untersuchung „nur manche PCs“ dasselbe Skript auf einem funktionierenden und einem scheiternden PC ausführen und vergleichen.

# name-resolution-dump.ps1 -- mit Administratorrechten ausführen und die Ausgabedateien der beiden Maschinen nebeneinander vergleichen
$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)" }  # Fehlende Punkte (etwa DoH unter Windows 10) als Fehler festhalten
} | Set-Content -Path $out -Encoding UTF8
Write-Host "wrote $out"

Zu vergleichen sind die Reihenfolge der DNS-Server, die Suchliste, verbindungsspezifische Suffixe, die NRPT, DoH, Schnittstellenmetriken und Richtliniewerte.

HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient hält EnableMulticast für „Deaktivieren der Multicastnamensauflösung“, DisableSmartNameResolution für „Intelligente Multihomed-Namensauflösung deaktivieren“, die Suchliste, das Primärsuffix und so weiter.4 Den Diff gegen die bisher geordnete Arbeitsweise jeder Schicht halten.

Schritt 7: Mit einem Paketmitschnitt untermauern

Das Microsoft-Verfahren zur Datenerfassung startet netsh trace start capture=yes auf Client und Server, verwirft den Cache mit ipconfig /flushdns, reproduziert das Problem und stoppt mit netsh trace stop.41

In Wireshark mit dns.qry.name == "app01.corp.example.com" oder dns.qry.name contains "app01" filtern, um zu sehen, welcher Server nach was gefragt wurde und was zurückkam.

Was der Mitschnitt zeigt Wohin schauen
Es geht keine Abfrage hinaus Neben Cache und hosts und anderen Pfaden wie DoH, DoT und Link-Local prüfen, ob UDP 53 von der Firewall der sendenden Seite blockiert wird
Die Abfrage geht hinaus, aber es kommt keine Antwort Der Weg zum DNS-Server, Firewalls, ein nicht antwortender Server
Eine negative Antwort kommt zurück Der abgefragte Name und die Einträge auf der Serverseite
Eine positive Antwort kommt zurück Die Verbindungsseite nach der Namensauflösung. Auch die genutzte Adresse und IPv6 prüfen

Blockiert die Firewall der sendenden Seite UDP 53, läuft Resolve-DnsName in den Timeout, und im Mitschnitt erscheint ebenfalls keine DNS-Abfrage. Nicht nur den Fall eingrenzen, in dem die Namensauflösung gelingt und kein Verkehr hinausgeht, sondern auch den, in dem sie scheitert und kein Verkehr hinausgeht.3

Über DNS hinaus 5355 für LLMNR, UDP 5353 für mDNS und UDP 137 für den NetBT-Namensdienst prüfen. DoH ist 443 und DoT ist 853. Wie man mitschneidet und Mitschnitte liest, ist im Artikel zum Paketmitschnitt gesammelt.

9. Entwurf auf der Seite der Geschäftsanwendung — gegen Namensauflösung robust machen

Damit Untersuchungen leichter werden, zählt, dass die App-Seite festhalten kann, „welcher Name, wonach aufgelöst, und wo es scheiterte“. Das Protokoll der App mit den Einstellungsdumps und Mitschnitten abzugleichen, die der IT-Betrieb sammelt, erleichtert die Entscheidung, wo in Kapitel 8 zu beginnen ist.

Ziele als FQDN führen und nicht von hosts abhängen

Die Vorgaben in Konfigurationsdateien, Verknüpfungen und UNC-Pfaden als FQDN führen. Das entfernt die Abhängigkeit von der Suffixergänzung von Single-Label-Namen und von LLMNR und NetBT. Die Vorsichtshinweise aus Abschnitt 5.4 bleiben jedoch: mDNS neben DNS für .local-Namen und die Richtlinie, die Suffixe an Namen ohne abschließenden Punkt anfügt.

hosts ist für eine vorübergehende Überschreibung in der Entwicklung praktisch, erfordert aber Administratorrechte und Handarbeit. Verteilung und Änderungshistorie sind schwer zu führen, und manche Resolver ziehen es gar nicht zu Rate (nslookup tut es nicht12). Ziele über Konfigurationsdateien umschalten.

Ergebnis, Dauer und Fehlergrund der Namensauflösung festhalten

Beim Start und ähnlichen Punkten die IPv4- und IPv6-Adressen und die Dauer für die wichtigsten Ziele festhalten. Weil Dns.GetHostAddresses dasselbe Ergebnis wie getaddrinfo liefert, lässt sich nachverfolgen, „auf welchem PC, seit wann, wonach es aufgelöst war“.11

// Die Namensauflösungsergebnisse der wichtigsten Ziele beim Start festhalten (.NET 6 oder höher)
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("Namensauflösung {Host} -> {Addresses} ({Elapsed} ms)",
            host, string.Join(",", addresses.Select(a => a.ToString())), sw.ElapsedMilliseconds);
    }
    catch (System.Net.Sockets.SocketException ex)
    {
        logger.LogError(ex, "Namensauflösung fehlgeschlagen {Host} Fehler {Code} ({Elapsed} ms)",
            host, ex.SocketErrorCode, sw.ElapsedMilliseconds);
        throw;
    }
}

Fehler protokollieren und erneut werfen. Stillschweigend auf einen anderen Namen oder eine feste IP umzuschalten macht den tatsächlichen Pfad in einer Untersuchung unerkennbar. Mit Fehlercode und Dauer kann der IT-Betrieb entscheiden, wo in den Schritten 2 bis 4 zu beginnen ist.

Timeouts und IPv6-Antworten einplanen

Der DNS-Client verbraucht gegen nicht antwortende Server bis zu 10 Sekunden je abgefragtem Kandidaten.21 Erzeugt die Suffixsuche mehrere Kandidaten, kann die Gesamtdauer 10 Sekunden übersteigen.

Wird der Verbindungstimeout auf 2 oder 3 Sekunden zusammengedrückt, endet die Namensauflösung vor der Frist nicht in Konfigurationen wie einer, in der der antwortfähige Server an vierter oder späterer Stelle steht. Der zweite Server wird jedoch nach 1 Sekunde abgefragt und der dritte nach 2 Sekunden, sodass ein einzelner ausgefallener Server nicht unbedingt Scheitern bedeutet. Mit den Neuübertragungszeiten aus Abschnitt 4.2 entwerfen.

Außerdem bevorzugt Windows standardmäßig IPv6, wenn eine AAAA-Antwort zurückkommt und eine IPv6-Quelladresse und Route existieren.38 Verbindungscode, der nur IPv4 annimmt, kann die Verbindung scheitern lassen, obwohl die Namensauflösung gelungen ist. Den Erfolg der Namensauflösung vom Erfolg der Verbindung trennen und beide Adressarten behandeln.

10. Zusammenfassung

Was in der Windows-Namensauflösung zuerst zu trennen ist: die Form des Namens, die Schicht, die die Antwort liefert, und der Pfad, den die App nimmt.

Cache und hosts antworten zuerst, und bei Single-Label-Namen laufen DNS und LLMNR/NetBT standardmäßig parallel. Bei .local kommt mDNS hinzu. Sobald die Auflösung zu DNS übergeht, ändern Suffixe, Neuübertragungszeiten, mehrere NICs und die NRPT das Ergebnis. DoH ist eine Funktion, die diesen Transport umstellt, und sie ist vom integrierten Resolver des Browsers getrennt zu betrachten.

Die Untersuchung schränkt den Pfad in der Reihenfolge -CacheOnly, dann -NoHostsFile -DnsOnly, dann -Server, dann -LlmnrOnly ein und bestätigt mit einem Einstellungsdiff und einem Mitschnitt. Was zählt, ist den negativen Cache, den Unterschied zwischen keiner Antwort und einer negativen Antwort und die clientseitigen Richtlinien nicht zu übersehen.

Wenn „nur dieser PC kommt nicht durch“, zuerst diese beiden Dinge prüfen.

In welcher Form wird der Name übergeben? Auf diesem PC, welcher Pfad antwortet?

Sind diese beiden geklärt, lässt sich eingrenzen, wo zu suchen ist.

Verwandte Artikel

Verwandte Beratungsbereiche

Die KomuraSoft LLC übernimmt Ursachenuntersuchungen von Kommunikationsstörungen rund um die Namensauflösung wie „die Geschäftsanwendung erreicht den internen Server nur auf manchen PCs nicht“ und „im Browser öffnet es sich, aber die App scheitert an der Namensauflösung“, Design-Reviews, ob eine Geschäftsanwendung Umgebungsänderungen wie das Deaktivieren von LLMNR, DoH und VPN standhält, und die Umsetzung einer Kommunikationsschicht, die Namensauflösungsergebnisse und Timeouts festhält. Werden Einstellungsdumps eines funktionierenden und eines scheiternden PCs der Anfrage beigelegt, steht der Ausgangspunkt der Untersuchung schnell fest.

  1. Microsoft Learn, Secure DNS Client over HTTPS (DoH). Dazu, dass DoH nur konfigurierbar ist, wenn der bevorzugte/alternative DNS-Server in der Liste bekannter DoH-Server steht; zu den drei Verschlüsselungsoptionen in der Einstellungen-App und dazu, dass „Verschlüsselt bevorzugt“ ohne Benachrichtigung auf Klartext zurückfällt; zu den Werten Zulassen/Verbieten/Anfordern der Gruppenrichtlinie „DNS über HTTPS (DoH)-Namensauflösung konfigurieren“; warum Anfordern auf domänenzugehörigen PCs nicht aktiviert werden darf; zur bekannten Serverliste (Cloudflare, Google, Quad9) und Get-DnsClientDohServerAddress; zum Hinzufügen von Servern mit Add-DnsClientDohServerAddress; und zur Nutzung zusammen mit der NRPT.  2 3 4 5

  2. Microsoft Learn, MSFT_DNSClientGlobalSetting class. Dazu, dass das minimale unterstützte Betriebssystem der WMI-Klasse hinter den DnsClient-Cmdlets Windows 8 / Windows Server 2012 ist. 

  3. Microsoft Learn, Troubleshoot DNS client name resolution issues. Dazu, dass der DNS-Client in der Reihenfolge Cache, Hosts-Datei, DNS-Server auflöst; dass kein DNS-Verkehr fließt, wenn hosts einen passenden Eintrag hat; dass Resolve-DnsName in den Timeout läuft, wenn UDP 53 blockiert ist; dass die Auflösung etwa 4 Sekunden braucht, wenn von mehreren Servern nur wenige erreichbar sind; dass nslookup nur den ersten DNS-Server abfragt; zur Verzögerung durch eine lange Suffixsuchliste; zu gezielten Abfragen mit abschließendem Punkt; und zum Messen der Dauer mit Measure-Command.  2 3 4 5 6 7 8 9

  4. Microsoft Learn, Policy CSP - ADMX_DnsClient. Zu „Intelligente Multihomed-Namensauflösung deaktivieren“ (standardmäßig werden DNS, LLMNR und NetBT parallel über alle Netzwerke abgefragt und mehrere positive Antworten nach Bindungsreihenfolge übernommen; wenn aktiviert, DNS, dann LLMNR, dann NetBT der Reihe nach); „Intelligente Protokollumordnung deaktivieren“ (standardmäßig haben Link-Local-Antworten bei Single-Label-Namen in Nicht-Domänennetzwerken Vorrang); „Deaktivieren der Multicastnamensauflösung“ (LLMNR als sekundäres Protokoll und Deaktivierung auf allen Adaptern; der Registrierungswert EnableMulticast); zur DNS-Suffixsuchliste und Devolution; „Anfügen von DNS-Suffixen an nicht qualifizierte Namensabfragen mit mehreren Bezeichnungen zulassen“ (die Richtlinie, die Namen mit Punkt, aber ohne abschließenden Punkt, zusätzlich mit angefügten Suffixen abfragt); zum primären DNS-Suffix; zu verbindungsspezifischen Suffixen; und zum Registrierungsschlüssel Software\Policies\Microsoft\Windows NT\DNSClient.  2 3 4 5 6 7 8 9

  5. Microsoft Learn, DNS queries and lookups. Dazu, dass der Inhalt von hosts beim Start des DNS-Clientdienstes in den Cache geladen wird und DNS-Antworten ebenfalls für ihre TTL im Cache gehalten werden; dass die Abfrage für FQDN, Namen mit mehreren Bezeichnungen und Single-Label-Namen unterschiedlich aufgebaut wird und Suffixsuchliste, Primärsuffix, Devolution und verbindungsspezifische Suffixe der Reihe nach genutzt werden; dass Antworten unabhängig davon, ob positiv oder negativ, zwischengespeichert werden; zur Abfragereihenfolge über mehrere Adapter und zum Ausschluss eines Adapters nach einer negativen Antwort; und zu adaptiven Timeouts und dem Zwischenspeichern nicht antwortender Server.  2 3 4 5 6 7 8 9 10

  6. Microsoft Learn, VPNv2 CSP. Dazu, dass die DomainNameInformationList eines VPN-Profils NRPT-Regeln sind; dass nur Apps, die die Windows-DNS-API nutzen, die NRPT verwenden können, während Apps mit eigener DNS-Implementierung sie umgehen; dass nslookup das Beispiel ist; und dass Resolve-DnsName stets zur Prüfung der NRPT verlangt wird.  2 3 4

  7. Microsoft Learn, Microsoft Edge policy: BuiltInDnsClientEnabled. Dazu, dass Edge standardmäßig den integrierten DNS-Client nutzt; dass diese Richtlinie nicht beeinflusst, welcher DNS-Server genutzt wird; und dass DoH-Abfragen stets vom integrierten Resolver ausgeführt werden.  2 3 4

  8. Microsoft Learn, Resolve-DnsName. Zu den Parametern -CacheOnly (nur lokaler Cache), -DnsOnly (nur DNS-Protokoll, ohne LLMNR oder NetBIOS zu senden), -NoHostsFile (hosts überspringen), -LlmnrOnly, -LlmnrNetbiosOnly, -LlmnrFallback, -NetbiosFallback, -Server, -Type (Standard A_AAAA), -QuickTimeout und -TcpOnly.  2 3 4 5 6

  9. Microsoft Learn, Windows security book: Network security. Dazu, dass der DNS-Client von Windows 11 DoH und DoT unterstützt; dass DoH über Gruppenrichtlinie und programmgesteuert konfigurierbar ist; und dass die Unterstützung für verschlüsseltes DNS mit bestehender DNS-Konfiguration wie der NRPT, der systemweiten Hosts-Datei und Resolver-Angaben je Adapter und Profil integriert ist.  2 3

  10. Microsoft Learn, getaddrinfo function (ws2tcpip.h). Zur Umwandlung eines Namens in eine Adresse für den Namensraum NS_DNS über DNS, die lokale Hosts-Datei und andere Mechanismen, zur Aggregation der Antworten mehrerer Namensraum-Anbieter und dazu, dass die Unicode-Variante GetAddrInfoW ist.  2

  11. Microsoft Learn, Dns.GetHostAddresses Method. Zur Implementierung mit der zugrunde liegenden OS-Namensauflösungs-API (getaddrinfo unter Windows) und dazu, dass für einen in der Hosts-Datei eingetragenen Host die Adresse ohne Abfrage eines DNS-Servers zurückgegeben wird.  2 3

  12. Microsoft Learn, Troubleshoot Azure DNS. Dazu, dass nslookup die lokale DNS-Resolverbibliothek des Betriebssystems nicht nutzt und den lokalen DNS-Cache, die Hosts-Datei und die NRPT umgeht, und dazu, dass Resolve-DnsName das Werkzeug ist, wenn diese Schichten beteiligt sind.  2 3

  13. Microsoft Learn, ipconfig. Dazu, dass /displaydns den Resolvercache des DNS-Clients zeigt, der sowohl die aus hosts geladenen Einträge als auch kürzlich aufgelöste Einträge enthält; dass /flushdns den Cache einschließlich negativer Cacheeinträge verwirft; und zur dynamischen Registrierung mit /registerdns.  2

  14. Microsoft Learn, Troubleshooting DNS clients. Dazu, dass „Name does not exist“ in ipconfig /displaydns für einen scheiternden Namen bedeutet, dass eine negative Antwort des DNS-Servers auf dem Client zwischengespeichert ist; zur Behebung mit ipconfig /flushdns; und dazu, dass nslookup den DNS-Cache des Clients nicht nutzt. 

  15. Microsoft Learn, Windows Firewall profile doesn’t always switch to Domain when you use a third-party VPN client. Dazu, dass der Standardwert von MaxNegativeCacheTtl unter Dnscache\Parameters 5 Sekunden ist und 0 den negativen Cache deaktiviert. 

  16. Microsoft Learn, Clear-DnsClientCache. Zum Löschen des gesamten Inhalts des DNS-Clientcaches, gleichwertig zu ipconfig /flushdns. 

  17. Microsoft Learn, Get-DnsClientCache. Zum Abrufen des Inhalts des lokalen DNS-Clientcaches und zum Filtern nach Name, Type, TimeToLive, Section und so weiter. 

  18. Microsoft Learn, How to configure a domain suffix search list on the Domain Name System clients. Dazu, dass nach der Konfiguration einer Domänensuffixsuchliste nur diese Liste verwendet wird, ohne primäres DNS-Suffix, verbindungsspezifische Suffixe oder Devolution. 

  19. Microsoft Learn, Get-DnsClientGlobalSetting. Zum Abrufen der nicht an eine Schnittstelle gebundenen globalen Einstellungen des DNS-Clients (UseSuffixSearchList, SuffixSearchList, UseDevolution, DevolutionLevel). 

  20. Microsoft Learn, Get-DnsClient. Zum Abrufen von ConnectionSpecificSuffix, RegisterThisConnectionsAddress und UseSuffixWhenRegistering je Schnittstelle. 

  21. Microsoft Learn, DNS client resolution timeouts. Zum Neuübertragungszeitpunkt bei einem, zwei oder drei und mehr DNS-Servern (Neuübertragung 1, 2, 4 und 8 Sekunden nach Start, Aufgeben nach 10 Sekunden); dazu, dass die Verarbeitung bei einer negativen Antwort stoppt und der nächste Server nur versucht wird, wenn keine Antwort kommt; und dazu, dass der vierte und spätere Server frühestens nach 4 Sekunden erreicht wird.  2 3 4

  22. Microsoft Learn, Automatic interface metric. Dazu, dass die Schnittstellenpriorität unter aktuellem Windows von der Schnittstellenmetrik bestimmt wird und die Metrik mit Get-NetIPInterface geprüft und geändert werden kann. 

  23. Microsoft Learn, Get-DnsClientNrptPolicy. Zum Abrufen der in der NRPT konfigurierten Einstellungen je Namensraum (Namensserver des DNS-Clients, DirectAccess, DNSSEC und so weiter), zum Anzeigen der wirksamen Richtlinie mit -Effective und zum Anzeigen eines bestimmten Namensraums mit -Namespace.  2

  24. IETF, RFC 6762: Multicast DNS. Dazu, dass mDNS ein Protokoll ist, das .local-Namen innerhalb derselben Verbindung per Multicast auf UDP-Port 5353 auflöst.  2 3

  25. Microsoft Learn, Microsoft Security Bulletin MS11-030. Dazu, dass LLMNR TCP/UDP 5355 nutzt; zu den Umgehungen, 5355 an der Firewall zu blockieren und die Gruppenrichtlinie „Deaktivieren der Multicastnamensauflösung“ zu aktivieren; und zur Folge, dass der Computer für andere Computer unsichtbar werden kann.  2

  26. IETF, RFC 4795: Link-Local Multicast Name Resolution (LLMNR). Dazu, dass LLMNR-Abfragen per UDP-Multicast (Port 5355) gesendet werden und TCP für Unicast-Austausch wie abgeschnittene Antworten genutzt wird. 

  27. Microsoft Tech Community, Networking Blog, Aligning on mDNS: ramping down NetBIOS name resolution and LLMNR. Zur Richtung, die Microsoft im April 2022 angekündigt hat: Ausrichtung auf mDNS und schrittweiser Rückbau von NetBIOS-Namensauflösung und LLMNR.  2

  28. Microsoft Learn, How to configure TCP/IP networking while NetBIOS is turned off. Dazu, dass der NetBIOS-Namensdienst UDP 137, der Datagrammdienst UDP 138 und der Sitzungsdienst TCP 139 nutzen und diese Ports nicht mehr abgehört werden, wenn NetBT deaktiviert ist. 

  29. Microsoft Learn, Windows security baseline (Azure Policy guest configuration). Zu den NetBT-Knotentypen (B-node nur Broadcast, P-node nur WINS, M-node Broadcast dann WINS, H-node WINS dann Broadcast); dazu, dass der Standard ohne konfiguriertes WINS B-node und mit konfiguriertem WINS H-node ist; und dazu, dass P-node die Empfehlung ist.  2 3

  30. Microsoft Learn, Windows Internet Name Service (WINS). Dazu, dass WINS ein Legacy-Dienst ist, der NetBIOS-Namen auf IP-Adressen abbildet, und zur Empfehlung, ihn nicht neu bereitzustellen, sondern DNS zu nutzen, und wo er bereits bereitsteht, zu DNS zu migrieren und ihn außer Betrieb zu nehmen.  2

  31. Microsoft Learn, nbtstat. Dazu, dass /c den NetBIOS-Namenscache zeigt, /R den Cache leert und die vorab markierten Einträge aus Lmhosts neu lädt und /RR bei WINS freigibt und neu registriert. 

  32. Microsoft Learn, Features removed or no longer developed in Windows Server. Dazu, dass der Computer-Browser-Dienst als veraltetes und unsicheres Geräteerkennungsprotokoll als überholt gilt, und zur Behandlung legacy-bezogener Namensauflösungsfunktionen wie WINS. 

  33. Microsoft Learn, Direct host SMB over TCP/IP. Dazu, dass SMB 2.0.2 unter Windows Vista / Windows Server 2008 und später TCP 445 voraussetzt und den NetBIOS-Sitzungstransport nicht nutzt. Das Dokument nennt als Vorteil, dass die Namensauflösung auf DNS standardisiert werden kann, aber das ist eine Frage des SMB-Transports und hält den DNS-Client des Clients nicht davon ab, Single-Label-Namen über LLMNR oder NetBT aufzulösen (Abschnitt 5.4 dieses Artikels). 

  34. Microsoft Learn, Add-DnsClientDohServerAddress. Zum Hinzufügen einer DoH-Serverkonfiguration zur Liste bekannter Server und zum Angeben des Fallbacks bei Verschlüsselungsfehler und des Auto-Upgrades mit -DohTemplate, -AllowFallbackToUdp und -AutoUpgrade. 

  35. Microsoft Learn, netsh dnsclient. Zur Registrierung von DoH- und DoT-Servern mit add/set encryption (dohtemplate, dothost, autoupgrade, udpfallback), zu den globalen doh/dot/ddr-Einstellungen mit set global und zu show encryption, show global und show state.  2 3 4 5

  36. Microsoft Learn, User data and privacy in Microsoft Edge: Secure DNS. Dazu, dass Sicheres DNS standardmäßig den aktuellen Anbieter nutzt und bei Fehlschlag der verschlüsselten Verbindung im Klartext erneut versucht; dass es bei Wahl eines bestimmten Anbieters nicht auf Klartext zurückfällt; und dass es auf von der Organisation verwalteten PCs standardmäßig deaktiviert ist. 

  37. Microsoft Learn, Microsoft Edge policy: DnsOverHttpsMode. Zu den drei Modi off, automatic und secure und dazu, dass auf verwalteten Geräten ohne konfigurierte Richtlinie keine DoH-Abfragen gesendet werden. 

  38. Microsoft Learn, Guidance for configuring IPv6 in Windows for advanced users. Dazu, dass Windows Vista und später die zu nutzende Adresse mit der Präfixtabelle aus RFC 3484 wählen und standardmäßig IPv6-Global-Unicast gegenüber IPv4 bevorzugen, und dazu, IPv6 nicht zu deaktivieren, sondern „IPv4 bevorzugen“ mit 0x20 in DisabledComponents zu nutzen.  2 3

  39. IETF, RFC 3484: Default Address Selection for Internet Protocol version 6 (IPv6). Dazu, dass die erste Regel der Zieladressauswahl „unbrauchbare Ziele vermeiden“ ist, Ziele ohne Quelladresse oder Route zuerst ausgeschlossen werden und die Kandidaten dann nach der Vorrangigkeit der Präfixrichtlinie geordnet werden. 

  40. Microsoft Learn, Configure DNSSEC rules using the Name Resolution Policy Table. Zu den NRPT-Namensraumtypen (Suffix, Präfix, FQDN, Subnetz, Any); dazu, dass ein Suffix eine Endübereinstimmung ist, die untergeordnete Domänen einschließt; und dazu, dass spezifischere Regeln Vorrang vor allgemeineren haben. 

  41. Microsoft Learn, Troubleshooting Domain Name System (DNS) issues: Data collection. Zum Verfahren der Datenerfassung, netsh trace start capture=yes auf Client und Server zu starten, den Cache mit ipconfig /flushdns zu verwerfen, das Problem zu reproduzieren und mit netsh trace stop zu stoppen. 

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Windows-App-Entwicklung

Eine Geschäftsanwendung umzusetzen, die Namensauflösungsstörungen standhält — mit bewusster Zielangabe, Timeouts und Protokollierung der Auflösungsergebnisse — fällt in die Windows-App-Entwicklung.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Ich habe die Hosts-Datei geändert, aber die Änderung greift nicht. Warum?
Unter Windows wird der Inhalt der Hosts-Datei beim Start des DNS-Clientdienstes in den Cache geladen, und die Namensauflösung läuft in der Reihenfolge Cache, hosts, DNS-Server. Greift eine Änderung nicht, prüfen Sie zuerst den Eintrag für diesen Namen mit ipconfig /displaydns und verwerfen Sie eine alte Antwort mit ipconfig /flushdns. Als Nächstes stellen Sie in Frage, ob das verwendete Werkzeug überhaupt den Windows-Resolver durchläuft. nslookup nutzt den OS-Resolver nicht; es umgeht Cache, hosts und die NRPT und fragt den DNS-Server direkt, sodass nichts aus hosts in der Ausgabe erscheint. Das tatsächliche Auflösungsergebnis einschließlich hosts sehen Sie mit Resolve-DnsName oder ping. Greift es dann immer noch nicht, prüfen Sie, ob die App wie ein Browser einen eigenen Resolver oder DoH hat.
Die Site öffnet sich im Browser, aber nur die Geschäftsanwendung scheitert an der Namensauflösung.
Wahrscheinlich lösen Browser und App den Namen über unterschiedliche Pfade auf. Microsoft Edge spricht standardmäßig mit dem integrierten DNS-Client statt mit dem OS-DNS-Client zum DNS-Server, und ist unter Sicheres DNS (DoH) ein anderer Anbieter gewählt, fragt es einen externen Resolver. Dns.GetHostAddresses in .NET und ein HttpClient, der das Ziel direkt verbindet, gehen dagegen über die OS-getaddrinfo und unterliegen hosts, dem DNS-Cache, der NRPT und der DNS-Suffixsuchliste (bei Anforderungen über einen HTTP-Proxy wird der Zielname auf der Proxy-Seite aufgelöst). Liefern beide unterschiedliche Antworten, ist der schnellste Weg, mit Resolve-DnsName und einem Paketmitschnitt abzugleichen, welcher Pfad welchen DNS-Server nach was gefragt hat.
Die Einstellungen sollten identisch sein, und trotzdem erreichen nur manche PCs den internen Server nicht. Was soll ich vergleichen?
Vergleichen Sie die Form des Namens und die Schicht, auf der jeder PC seine Antwort erhält. Ein Single-Label-Name (ein Name ohne Punkt, etwa server01) wird mit der DNS-Suffixsuchliste des PCs oder dem verbindungsspezifischen Suffix ergänzt und an DNS geschickt und standardmäßig parallel auch an auf dasselbe Subnetz beschränkte Mechanismen wie LLMNR und NetBIOS-Broadcast (nacheinander nach einem DNS-Fehler werden sie nur versucht, wenn die Optimierung deaktiviert ist; ist WINS konfiguriert, nutzt NetBIOS Unicast und kann Subnetze überschreiten). Ein domänenzugehöriger PC kann den Namen auflösen, weil das Suffix ihn zum FQDN ergänzt, während ein PC im VPN oder in einem anderen Subnetz oder ein PC mit deaktiviertem LLMNR und NetBIOS denselben Namen nicht auflösen kann. Zuverlässig ist, die Ausgabe von Get-DnsClientServerAddress, Get-DnsClientGlobalSetting, Get-DnsClient und Get-DnsClientNrptPolicy -Effective auf einem funktionierenden und einem scheiternden PC zu sammeln und zu vergleichen. Die grundlegende Abhilfe besteht darin, die Ziele in Konfigurationsdateien und Verknüpfungen als FQDN zu führen.
Die Namensauflösung scheitert nicht; es dauert nur mehrere Sekunden, bis die Verbindung zustande kommt. Was verursacht das?
Hier zeigt sich der Timeout- und Wiederholungsmechanismus des DNS-Clients. Gegen einen DNS-Server, der nicht antwortet, überträgt Windows 1, 2, 4 und 8 Sekunden nach Start erneut und gibt nach 10 Sekunden auf. Auch bei mehreren konfigurierten DNS-Servern wartet Windows mindestens 4 Sekunden, bevor es den vierten oder späteren Server in der Liste abfragt, wenn genau der antwortet. Eine lange DNS-Suffixsuchliste stapelt ebenfalls Verzögerung, weil ein Single-Label-Name mit jedem Suffix der Reihe nach versucht wird. Messen Sie mit Measure-Command, wie lange Resolve-DnsName braucht, und legen Sie in Wireshark den Filter dns.qry.name, um zu sehen, welche Serverabfragen unbeantwortet bleiben.
Wir haben LLMNR und NetBIOS als Sicherheitsmaßnahme deaktiviert, und jetzt sind manche Geräte nicht mehr per Namen erreichbar.
Das ist eine erwartete Nebenwirkung. LLMNR und NetBIOS over TCP/IP sind sekundäre Mittel, um Single-Label-Namen von Geräten, die nicht in DNS registriert sind, im selben Subnetz aufzulösen; sie zu deaktivieren entfernt diesen Pfad. Microsoft selbst hat 2022 die Ausrichtung auf mDNS und den schrittweisen Rückbau von NetBIOS-Namensauflösung und LLMNR angekündigt, sodass die Entscheidung zur Deaktivierung selbst richtig ist. Die Abhilfe besteht darin, die Namensauflösung auf DNS zu bündeln: A-Einträge der Geräte im internen DNS registrieren oder die dynamische Registrierung über DHCP aktivieren und die Ziele von Apps und Freigaben auf FQDN umschreiben. Geräte mit mDNS-Unterstützung lassen sich über ihren .local-Namen auflösen, aber auch dieser Pfad reicht nur so weit, wie Multicast kommt.
Was geschieht mit der internen Namensauflösung, wenn ich DoH (DNS over HTTPS) unter Windows 11 aktiviere?
DoH ist eine Funktion, die den Transport auf HTTPS umstellt, wenn der DNS-Client die konfigurierten DNS-Server abfragt; die bestehende Reihenfolge von hosts, Cache und NRPT bleibt. Sofern DDR (Discovery of Designated Resolvers) nicht aktiviert ist, ist DoH nur nutzbar, wenn der Server in der Liste bekannter DoH-Server steht; soll ein interner DNS-Server genutzt werden, muss ein Administrator ihn mit Add-DnsClientDohServerAddress registrieren. Steht die Gruppenrichtlinie „DNS über HTTPS (DoH)-Namensauflösung konfigurieren“ auf „DoH anfordern“, scheitert die Namensauflösung selbst gegen Server ohne DoH-Unterstützung. Microsoft sagt ausdrücklich, diese Einstellung auf domänenzugehörigen PCs nicht zu aktivieren, weil der mit Windows Server gelieferte DNS-Serverdienst, von dem Active Directory abhängt, keine DoH-Abfragen unterstützt.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog