Wie werden Namen in modernen lokalen Netzwerken aufgelöst?

509
Cameron Tacklind

In modernen lokalen Netzwerken verwenden Geräte einige unterschiedliche Techniken, um Namen aufzulösen. Um nur einige zu nennen: DNS, Avahi, zeroconf, mDNS, Bonjour, NetBIOS, WINS oder sogar manuelle Hostdateien. Einige davon sind, glaube ich, unterschiedliche Begriffe für grundsätzlich dasselbe. Einige verwenden dezentrale Technologien, andere verlassen sich auf DHCP, um zentrale Adressen zu verteilen.

Wie gehen gängige Betriebssysteme durch diese unterschiedlichen, möglicherweise widersprüchlichen Namensauflösungsverfahren? Welche Reihenfolge verwenden sie? Haben unterschiedliche Betriebssysteme unterschiedliche Verhaltensweisen?

Wenn man nach der IP von fragt foobar, wann wird die lokale Suchdomäne an den Namen angehängt - nachdem die ursprüngliche Namensauflösung fehlgeschlagen ist, bevor etwas im Netzwerk gefragt wird oder zu einem anderen Zeitpunkt? Können (und / oder) DNS-Auflöser Suchdomänen hinzufügen, wenn Sie versuchen, einen Eintrag in ihren Tabellen zu finden?

Warum hat sich das Verhalten meiner Clients geändert, als ich in meinem Router eine lokale Suchdomäne (im Gegensatz zu einem leeren Feld) angegeben habe?

Einige dieser Methoden unterstützen und / oder verwenden die .localDomäne tld / search. Ist das nur eine Avahi-Sache?

Wie ändert sich das Hinzufügen .einer Domain am Ende einer Domain? Verhindert dies einfach die Suche nach "lokaler Domäne"? google.comWarum brauche ich nicht, wenn ich nachschaue .?

Warum sucht mein DNS-Resolver nicht nach google.com.localoder google.com.MyLocalSearchDomain?

Können Sie verschachtelte Suchdomänen haben?

Sind NetBIOS und WINS dasselbe? Was ist mit Avahi, Bonjour und anderen?

Folgefrage: Wie funktionieren die einzelnen Dienste? Ich verstehe, dass DNS einen herkömmlicheren (im Wesentlichen) zentralen Server verwendet, für den jeder Client konfiguriert ist. Die dezentralen Methoden müssen jedoch andere Methoden verwenden, um Namen automatisch zu ermitteln. Wie arbeiten diese?

2
Dies sind gute Fragen, aber leider sind es zu viele Fragen für einen Frage-Beitrag, daher passt es nicht sehr gut zum Modell dieser Site. Wenn W. Richard Stevens noch da wäre, könnte er ein ganzes Buch namens "Modern Name Resolution Illustrated" schreiben. Stellen Sie zu jeder Zeit eine Kernfrage. Spiff vor 5 Jahren 2

2 Antworten auf die Frage

3
Spiff

Kurz gesagt, es handelt sich um eine sehr chaotische Mischung aus verschiedenen Namensauflösungsprotokollen, die von verschiedenen Betriebssystemen, Produkten, Apps, Services und APIs verwendet werden.

IETF ZeroConf definiert das mDNS-Protokoll (Multicast-DNS) sowie das DNS-SD-Protokoll (DNS Service Discovery). Bonjour (geb. Rendezvous, alias mDNSResponder) und Avahi sind zwei Implementierungen von ZeroConf. Ich habe gehört, dass es auch eine Implementierung der OpenWrt-Community gibt, die sich einfach "mDNS" nennt. Seit der Einführung von Apple haben sich Apple-Produkte darauf konzentriert, obwohl Macs auch NetBIOS Name Service und WINS für die Namensauflösung verwenden können, insbesondere wenn der SMB-Client von macOS für die Verbindung mit SMB-Dateiservern (Windows Server, Linux SaMBa-Server) verwendet wird.

Die proprietären Namensdienstprotokolle von Microsoft beginnen mit dem NetBIOS-Namensdienst, der auf lokalen LAN-Übertragungen (nicht routbar) basiert. Ich sage "proprietär von Microsoft", aber technisch stammt es von IBM als Teil der SMB-Protokolle (Server Message Block). Als der SMB-Dateidienst zu einem De-facto-Industriestandard wurde, mussten viele Betriebssysteme den NetBIOS-Namensdienst zumindest in ihren SMB-Clients und -Servern einsetzen. Später entwickelte Microsoft WINS, um eine serverbasierte Unicast-Lösung für diese Art von Microsoft-proprietärer Namensauflösung bereitzustellen. Als Apple mDNS unter dem Namen "Rendezvous" (später umbenannt in Bonjour) erstellte und es zur IETF brachte, um schließlich IETF ZeroConf zu werden, beschloss Microsoft verwirrend, ein etwas anderes, inkompatibles mDNS-ähnliches Denken zu machen, das sie als "

Linux, einschließlich Google Android, scheint sich jetzt für ZeroConf für die LAN-basierte serverlose Namensauflösung zu interessieren. Google portierte den POSIX-kompatiblen Open-Source-Dämon "mDNSResponder" von Apple für Linux zur Verwendung in Android. Dies ist, was die "Network Service Discovery" (NSD) APIs von Android implementiert.

Wie macOS verwendet Linux den NetBIOS-Namensdienst und WINS, um Verbindungen zu SMB-Servern herzustellen.

Es ist ein riesiges Durcheinander, und welche Protokolle für eine bestimmte Sache verwendet werden, hängt davon ab, auf welchem ​​Betriebssystem Sie sich befinden, welche APIs Ihre Software aufruft und viele andere Dinge.

Ich habe den schwachen Verdacht, dass Win10 schließlich die mDNS-Namensauflösung hinzufügt, da sie bereits die Erkennung von Diensten unterstützen. Inzwischen implementiert Linux systemd-resolution sowohl mDNS als auch LLMNR (obwohl das frühere Avahi bei weitem nicht so gut ist). grawity vor 5 Jahren 0
Nun, das ist seltsam - egal, ob ich versuche, "foo" oder "foo.local" zu erreichen, mein Windows 10.1803.17134 macht ** sowohl LLMNR- als auch mDNS ** -Anfragen gleichzeitig (und NBNS, aber ignorieren wir das). Dies muss eingebaut werden, da ich Bonjour / mDNSResponder auf diesem System nicht installiert habe und nie hatte ... grawity vor 5 Jahren 0
2
G-Man

Ein weiterer Teil des Puzzles ist die /etc/nsswitch.confDatei. Dies ist der "Name Service Switch", der auf vielen Unix-basierten Systemen vorhanden ist. Sie teilt dem System mit, wie Namen in numerische Werte und zurück übersetzt werden können. Es enthält ungefähr ein Dutzend Zeilen, die aussehen

(Datenbank) : (Quelle)
Ausführlich hier beschrieben .

Eine Beispielzeile wäre

hosts: Dateien DNS
Das bedeutet, dass jedes Programm, in dem * ein Host- / Domänenname in eine IP-Adresse übersetzt werden soll (oder umgekehrt), dies tun sollte

  1. Schauen Sie rein /etc/hosts, und wenn es dort kein Ergebnis findet,
  2. konsultiere DNS.

So können Systeme individuell konfiguriert werden, wie Hostnamen (einschließlich der Suchreihenfolge) aufgelöst werden.
________
* Dies gilt für die meisten Anwendungsprogramme, wie ping, ssh, ftpusw. Utility - Programme wie digund nslookupsind hartcodierte DNS und nichts anderes zu verwenden.