VMware ESXi and vSphere Cluster Management

Was ist DNS? Namensauflösung im Netzwerk einfach erklärt

DNS übersetzt Hostnamen und Domainnamen in IP-Adressen. Erfahre, wie DNS-Anfragen funktionieren, wie Linux DNS konfiguriert und wie du Fehler diagnostizierst.

DNS steht für Domain Name System. Dieser Dienst übersetzt menschenlesbare Hostnamen und Domainnamen in numerische IP-Adressen. Dadurch können Menschen Namen wie www.google.com oder home_server verwenden, während Netzwerkprotokolle mit IPv4- oder IPv6-Adressen arbeiten.

Was ist DNS und wofür wird es benötigt?

Ein Hostname ist der Name eines Rechners oder Dienstes, zum Beispiel home_server. Ein Domainname ist ein hierarchisch aufgebauter Name wie www.google.com. Beide Namen sind für Menschen leichter zu lesen und zu merken als numerische Adressen.

Für den eigentlichen Netzwerkverkehr benötigt eine Anwendung normalerweise jedoch die Adresse des Zielsystems. Bei IPv4 ist das eine Adresse wie 192.168.1.20. Bei IPv6 kann sie beispielsweise so aussehen: 2001:db8::20. DNS ermittelt diese Adresse, bevor die Anwendung die Verbindung zum Ziel aufbaut.

Eine Namensauflösung ist die Ermittlung der zu einem Namen passenden Netzwerkadresse oder anderer DNS-Informationen. DNS ersetzt die Verbindung zur Zielanwendung nicht. Es liefert lediglich die Informationen, die der Client für diese Verbindung benötigt.

Warum sind Namen nützlich?

  • IP-Adressen sind technisch notwendig, aber für Menschen oft schwer zu merken.
  • Ein Name kann gleich bleiben, auch wenn sich die IP-Adresse eines Servers ändert.
  • Webseiten, Serverdienste und Geräte im lokalen Netzwerk lassen sich einfacher über Namen ansprechen.
  • Anwendungen können Namen verwenden, ohne dass Benutzer die zugrunde liegenden Adressen kennen müssen.

Eine bekannte IP-Adresse kann grundsätzlich direkt verwendet werden. Gibt eine Anwendung beispielsweise eine Ziel-IP-Adresse vor, ist für diesen Schritt keine DNS-Auflösung erforderlich. Bei einem Hostnamen muss der Client dagegen normalerweise zuerst DNS verwenden.

Die beteiligten Komponenten

KomponenteAufgabeBeispiel
DNS-Client beziehungsweise ResolverVeranlasst die Namensabfrage und verarbeitet die Antwort.Betriebssystem, Browser oder Kommandozeilenwerkzeug
DNS-ServerNimmt DNS-Anfragen entgegen und beantwortet sie oder fragt weitere DNS-Server ab.Lokaler Router, Unternehmensserver oder öffentlicher Resolver
Zielhost oder NetzwerkdienstStellt nach der Namensauflösung die eigentliche Anwendung bereit.home_server, Webserver oder SSH-Dienst
DHCP-ServerKann Clients automatisch mit Netzwerkeinstellungen einschließlich DNS-Servern versorgen.DHCP-Dienst im Router

Wie läuft eine DNS-Anfrage ab?

  1. Der DNS-Client benötigt die Adresse eines Zielsystems, zum Beispiel für home_server.
  2. Der Resolver stellt eine DNS-Anfrage, auch DNS Request genannt. Sie enthält den Namen und meist den gewünschten Datensatztyp.
  3. Die Anfrage wird an einen konfigurierten DNS-Server gesendet.
  4. Der DNS-Server beantwortet die Anfrage mit einer DNS Reply. Die Antwort kann eine IP-Adresse, einen weiteren Verweis oder eine Fehlermeldung enthalten.
  5. Der Client verwendet die erhaltene IP-Adresse für die eigentliche Verbindung zum Zielhost.

Ein DNS-Server kann die Antwort bereits gespeichert haben. Fehlt sie in seinem Cache, kann er weitere DNS-Server fragen und das Ergebnis anschließend an den Client zurückgeben. Für den Client bleibt dabei das Client-Server-Prinzip erhalten: Er sendet eine Anfrage und verarbeitet die getrennte Antwort.

DNS-Datensatztypen: A und AAAA

Eine Anfrage kann neben dem Namen auch den gewünschten Datensatztyp enthalten:

  • Ein A-Record ordnet einen Namen einer IPv4-Adresse zu.
  • Ein AAAA-Record ordnet einen Namen einer IPv6-Adresse zu.

DNS kann außerdem andere Informationen liefern, etwa Verweise auf weitere Namen oder Daten für Maildienste. Für die grundlegende Namensauflösung sind A- und AAAA-Records besonders wichtig.

Praxisbeispiel: home_server erreichen

Ein Client soll den Rechner home_server erreichen. Zunächst kennt er nur den Namen. Der Resolver fragt den konfigurierten DNS-Server. Dieser liefert beispielsweise die Adresse 192.168.1.20 zurück.

SchrittAktionErgebnis
1Der Client benötigt die Adresse von home_server.Nur der Hostname ist bekannt.
2Der Client sendet eine DNS-Anfrage an den Nameserver.Der DNS-Server erhält den Namen und den gewünschten Datensatztyp.
3Der DNS-Server sendet eine DNS-Antwort.home_server wird beispielsweise zu 192.168.1.20 aufgelöst.
4Der Client baut die Verbindung zur IP-Adresse auf.Ping, SSH oder ein anderer Netzwerkdienst kann verwendet werden.

Das gleiche Prinzip gilt für eine öffentliche Domain wie www.google.com: Der Browser fragt zunächst nach den passenden Adressdaten und verbindet sich danach mit einer zurückgelieferten IP-Adresse.

DNS-Server auf einem Client konfigurieren

Ein Client benötigt mindestens einen erreichbaren DNS-Server, wenn er Namen per DNS auflösen soll. Die Adressen können manuell eingetragen oder automatisch über DHCP bezogen werden. Mehrere DNS-Server ermöglichen eine Ausweichmöglichkeit, falls der bevorzugte Server nicht antwortet.

Unter Linux hängt der genaue Konfigurationsort von der Distribution und der verwendeten Netzwerkverwaltung ab. Häufig sind NetworkManager, systemd-resolved, ein DHCP-Client oder die Datei /etc/resolv.conf beteiligt.

cat /etc/resolv.conf

Diese Datei zeigt die aktuell eingetragenen Nameserver, sofern sie nicht nur auf eine andere, automatisch verwaltete Konfiguration verweist. Eine einfache Konfiguration für ein nicht automatisch verwaltetes System könnte so aussehen:

nameserver 192.168.1.1
nameserver 1.1.1.1

DNS unter Linux testen

Mit den folgenden Werkzeugen lässt sich prüfen, ob ein Name aufgelöst wird und welcher Datensatz zurückkommt:

WerkzeugZweckBeispielaufruf
digAusführliche DNS-Abfrage für einen bestimmten Datensatztypdig A www.google.com
nslookupEinfache alternative DNS-Abfragenslookup www.google.com
getent hostsNamensauflösung über die lokale Systemkonfigurationgetent hosts home_server
pingNachgelagerter Test der Erreichbarkeit eines aufgelösten Hostsping -c 4 home_server

Eine bestimmte DNS-Serveradresse lässt sich mit dig direkt angeben:

dig @1.1.1.1 www.google.com

IPv4- und IPv6-Abfragen können getrennt geprüft werden:

dig A www.google.com
dig AAAA www.google.com

DNS-Fehler von Netzwerkfehlern unterscheiden

Wenn ein Zugriff über einen Hostnamen fehlschlägt, sollte zunächst geprüft werden, ob eine direkte Verbindung zu einer bekannten IP-Adresse funktioniert. Ist die IP-Adresse erreichbar, der Hostname aber nicht, liegt der Fehler wahrscheinlich bei der Namensauflösung. Schlagen beide Varianten fehl, kommen zusätzlich Routing-, Firewall-, Dienst- oder allgemeine Verbindungsprobleme infrage.

Hostname funktioniert nicht, IP-Adresse ist erreichbar

Mögliche Ursachen sind ein fehlender DNS-Server, ein nicht erreichbarer Nameserver oder ein fehlender DNS-Eintrag. Prüfe zuerst die Konfiguration und frage den zuständigen Server direkt ab:

cat /etc/resolv.conf
dig home_server
dig @<dns-server-ip> home_server

Danach sollten die Netzwerkverbindung zum Nameserver, der korrekte DNS-Server und der Eintrag für den Namen geprüft werden.

Die Antwort lautet NXDOMAIN

NXDOMAIN bedeutet, dass der angefragte Name nicht existiert. Häufig wurde der Name falsch geschrieben, im DNS wurde kein passender Eintrag eingerichtet oder es wird eine falsche Such- beziehungsweise DNS-Suffixdomäne verwendet. Teste den vollständigen Domainnamen und prüfe den Datensatz beim zuständigen DNS-Server.

DNS-Abfrage läuft in einen Timeout

Ein Timeout bedeutet, dass innerhalb der erwarteten Zeit keine Antwort eingetroffen ist. Ursachen können ein nicht erreichbarer Nameserver, fehlerhaftes Routing, eine Firewall oder ein ausgefallener DNS-Dienst sein. Prüfe den Nameserver, sofern ICMP erlaubt ist, und frage ihn direkt ab:

dig @<dns-server-ip> <name>

Bei der Netzwerk- und Firewallprüfung muss insbesondere DNS-Verkehr über UDP und gegebenenfalls TCP auf Port 53 berücksichtigt werden.

Änderungen an resolv.conf verschwinden

Wird /etc/resolv.conf nach einer Neuverbindung oder einem Neustart überschrieben, wird die Datei wahrscheinlich von DHCP, NetworkManager oder systemd-resolved verwaltet. Prüfe, welche Netzwerkverwaltung aktiv ist und ob die Datei ein symbolischer Link ist. Setze die DNS-Server anschließend in der zuständigen Netzwerkverbindung oder DHCP-Konfiguration.

Prüfungsrelevante Zusammenfassung

  • DNS bedeutet Domain Name System.
  • DNS übersetzt Namen in IP-Adressen oder liefert andere DNS-Informationen.
  • Der DNS-Client beziehungsweise Resolver sendet einen DNS Request an einen DNS-Server.
  • Der DNS-Server antwortet mit einer DNS Reply, einer Adresse, einem Verweis oder einer Fehlermeldung.
  • Erst nach der Namensauflösung baut der Client normalerweise die Verbindung zum Zielsystem auf.
  • Ein A-Record steht für IPv4, ein AAAA-Record für IPv6.
  • NXDOMAIN bedeutet, dass der angefragte Name nicht existiert.
  • DNS-Probleme lassen sich unter Linux unter anderem mit dig, nslookup, getent und /etc/resolv.conf untersuchen.

Weiterführend: Was ist DNS?