LLMNR vs DNS - Warum verwendet 'ping' llmnr anstelle von dns, es sei denn, ich füge '.' auf den Hostnamen und warum funktioniert llmnr nicht?

683
Hybr13

Ich arbeite in einem LAN, das vom Internet getrennt ist, und es gibt einige Geräte (A, B, C, ...), die über ein Ethernet-Kabel an einen einzigen Router angeschlossen sind, der dieses LAN ermöglicht. Betriebssystem auf allen Geräten: Windows 10.

Fragen:

  • Warum schlägt LLMNR fehl, wenn DNS nicht funktioniert?
  • Warum verwendet 'Ping A' LLMNR und 'Ping A'? verwendet DNS?
  • Gibt es eine Möglichkeit, nslookup zu zwingen, LLMNR anstelle von DNS zu verwenden, und warum?
  • Was genau passiert, wenn ich ein '.' auf den Hostnamen, sowohl für "Ping" als auch für "Nslookup"?
  • Woher kennen Sie die Antworten auf diese Fragen (Arbeitsbereich & Art der Erfahrung)?

Der Inhalt dieser Frage kann unten gefunden werden

nslookup A 

und

nslookup A. 

beide ergeben die folgende zufriedenstellende Leistung

Server: localDnsServerName Address: 192.168.1.1  Name: A Address: 192.168.1.X 

Sogar

ping A. 

liefert eine zufriedenstellende Ausgabe ('.' wird an den abgefragten Hostnamen angehängt)

Pinging A [192.168.1.x] with 32 bytes of data: Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128 Reply from 192.168.1.X: byte=32 time<1ms TTL=128  Ping statistics for 192.168.1.X: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms 

Der folgende Befehl jedoch

ping A 

ergibt eine unbefriedigende Leistung

Ping request could not find host A. Please check the name and try again. 

Nach weiteren Untersuchungen über Wireshark sehe ich die nslookup-Befehle und "ping A." Befehl führt zu erfolgreichen Standardabfragen unter Verwendung des DNS-Protokolls.

'Ping A' führt jedoch zu einer Standardabfrage mit dem LLMNR-Protokoll, die fehlschlägt.

Über RFC 4795, Abstract für LLMNR:
"Ziel der Link-Local-Multicast-Namensauflösung (LLMNR) ist es, die Namensauflösung in Szenarien zu ermöglichen, in denen eine herkömmliche DNS-Namensauflösung nicht möglich ist. LLMNR unterstützt alle aktuellen und zukünftigen DNS-Formate, -typen, und Klassen, die an einem von DNS getrennten Port arbeiten, und mit einem separaten Auflösungscache. Da LLMNR nur für die lokale Verbindung ausgeführt wird, kann dies nicht als Ersatz für DNS angesehen werden. "

Zusätzliches Tag: 'llmnr'
Ich hätte das erwähnte zusätzliche Tag offiziell hinzugefügt, aber ich habe keinen Ruf von mindestens 300, um ein neues Tag zu erstellen. Fügen Sie dieses Tag hinzu, wenn es möglich ist, eine Frage nach ihrer Erstellung zu kennzeichnen, indem Sie diese Frage bearbeiten.

1
`nslookup` fragt immer DNS ab, so dass test irgendwie sinnlos ist. Ich habe nicht gesehen, wie Sie ein Betriebssystem erwähnt haben. Ich denke, es ist Windows ...? Daniel B vor 5 Jahren 0
@DanielB Ich habe die Frage so bearbeitet, dass sie das Betriebssystem anspricht. Alle Geräte im LAN sind Windows 10. Ich habe die Eingabe und Ausgabe des Befehls nslookup mit aufgenommen, weil ich auch neugierig bin, was genau wann passiert und warum Sie ein '.' zu einem Hostnamen. Hybr13 vor 5 Jahren 0
Willkommen bei Super User. Ich gehe hier auch von Windows aus. Bearbeiten Sie Ihre Frage, um die Ausgabe von `ipconfig / all` einzuschließen. Sie stellen auch einige zu viele Fragen in einem Beitrag. Sie können mehrere Fragen posten und ggf. auf diese zurückverweisen, um den Kontext bereitzustellen. Twisty Impersonator vor 5 Jahren 0
@ TwistyImpersonator Danke für den Rat. Ich werde dies zeitnah tun (kann nur alle 40 Minuten eine Frage stellen). Hybr13 vor 5 Jahren 0
Haben Sie Apple-Software auf diesem PC installiert? Daniel B vor 5 Jahren 0
@DanielB ich nicht. Hybr13 vor 5 Jahren 0

1 Antwort auf die Frage

1
Johan Myréen

LLMNR ist nur für die lokale Verknüpfung von Namen mit einer einfachen Bezeichnung (oder als Sonderfall von Namen des Formulars hostname.local, in das konvertiert wird, hostnamebevor sie aufgelöst werden) vorgesehen. Gastgeber antworten mit ihren eigenen Namen; Es gibt keinen zentralen Nameserver.

Why is LLMNR failing, when DNS doesn't? 

Möglicherweise, weil der Host Aunter einem anderen Namen bekannt ist, dh der Name Aist dem DNS bekannt, der hostnameBefehl gibt jedoch etwas anderes zurück, wenn er ausgeführt wird A. Oder der Host fungiert Anicht als LLMNR-Responder.

Why does 'ping A' use LLMNR, while 'ping A.' uses DNS? 

Ursache A.ist kein Name mit einer einzelnen Bezeichnung, dh ein Name ohne Punkte.

Is there any way to force nslookup to use LLMNR, instead of DNS, and why? 

nslookup ist ein Tool zum Abfragen des DNS. Das Programm kennt LLMNR nicht.

DNS und LLMNR ergänzen sich gegenseitig. LLMNR wird im LAN verwendet, sodass Sie keinen lokalen DNS-Server benötigen, der lokale Namen bereitstellt. Das DNS wird zur Auflösung von Namen im Internet verwendet.

Ein Tutorial zu LLMNR finden Sie unter Auflösung von Link-Local-Multicast-Namen

Nachdem ich Ihre Antwort gelesen hatte, dachte ich, ich würde den Befehl "hostname" ausprobieren und erkannte, dass "A" in meiner Frage der "Gerätename" (eingestellt von einer von mir erstellten DHCP-Reservierung) und nicht der Hostname war. Ich hatte die Annahme gemacht, dass beim Erstellen einer DHCP-Reservierung über die Einstellungen Ihres Routers der mit der Reservierung festgelegte "Gerätename" der neue Hostname ist (mindestens über DNS). Ich hätte diese Annahme nicht treffen sollen. Der Hostname entspricht weiterhin dem "vollständigen Computernamen". Diese Erfahrung gab mir zusätzliche Einblicke in diese Art von Dingen. Danke Johan! Hybr13 vor 5 Jahren 0