Rekursive und iterative Namensauflösung

Abfrage des DNS

Rekursive und iterative Namensauflösung beschreibt verschiedene Arten der Namensauflösung im Domain Name System (DNS).

Eine DNS-Anfrage kann von einem Nameserver nach drei verschiedenen Verfahren beantwortet werden:

  • autoritativ (der Server holt die Daten aus einer lokalen Zonendatei)
  • nicht-autoritativ
    • rekursiv (der Server holt die Daten von einem anderen Nameserver)
    • iterativ (der Server antwortet mit einem Verweis auf andere Nameserver)

Welches Verfahren angewandt wurde, ergibt sich aus den Flags im Header der DNS-Antwort.

Autoritative Antwort

Eine autoritative Antwort erfolgt, wenn der angefragte Domainname in einer Zone enthalten ist, für die der angefragte Nameserver zuständig ist. Ob eine Anfrage autoritativ, also aus einer lokalen Zonendatei, beantwortet wurde, wird durch das Flag Authoritative Answer (AA) in der DNS-Antwort definiert.

Rekursive Antwort

Der Administrator eines Nameservers kann konfigurieren, ob der Nameserver Anfragen rekursiv bearbeiten kann oder nicht. Gängige Praxis ist es, Rekursion für unbekannte Clients zu deaktivieren, da ein offener DNS-Resolver für DNS Amplification Attacks missbraucht werden kann. Ein anfragender Resolver setzt im Header einer DNS-Anfrage das Flag Recursion Desired (RD), wenn er eine rekursive Auflösung seiner Anfrage wünscht. Der Nameserver kopiert das RD-Flag von der Anfrage in die Antwort unverändert. Zusätzlich zeigt der Nameserver über das Flag Recursion Available (RA) an, ob er Rekursion unterstützt. Nur wenn die Antwort sowohl das RD-Flag, als auch das RA-Flag enthält, kam tatsächlich Rekursion zum Einsatz.

Ein Nameserver kann eine rekursive Anfrage entweder selbst auflösen, indem er nacheinander Nameserver anfragt, bis er eine autoritative Antwort erhält, oder die Anfrage an einen anderen rekursiv arbeitenden Nameserver weiterleiten. Im Falle einer Weiterleitung wird der Nameserver, an den eine rekursive Anfrage weitergeleitet wird, Forwarder genannt.[1]

Eine rekursive Antwort enthält entweder die gesuchten Resource Records oder einen Fehlercode, jedoch niemals einen Verweis auf einen anderen Nameserver.[1] Der anfragende Resolver erhält bei einer rekursiven Antwort das Ergebnis einer abgeschlossenen Namensauflösung zurück.

Iterative Antwort

Eine iterative Antwort enthält anstelle der gesuchten Daten einen Verweis auf andere Nameserver, die der Resolver als nächstes anfragen kann. Ein derartiger Verweis enthält einen Zonennamen, für den ein oder mehrere andere Nameserver zuständig sind, sowie die Domainnamen der zuständigen Nameserver. Falls bekannt, sind auch die IP-Adressen der Nameserver enthalten (Glue Records).

Eine iterative Antwort bringt den anfragenden Resolver im hierarchischen Domain-Namensraum einen Schritt näher an die gesuchten Daten. Die Root-Nameserver beispielsweise verweisen mit einer iterativen Antwort auf die zuständigen Nameserver der Top-Level-Domain, die wiederum mit einer iterativen Antwort auf die Nameserver der Second-Level-Domain verweisen. Durch wiederholte (iterative) Anfrage erreicht der anfragende Resolver schließlich einen autoritativen Nameserver, von dem er eine autoritative Antwort mit den gesuchten Resource Records erhält.

Das folgende fiktive Beispiel zeigt eine iterative DNS-Antwort mit nslookup:

C:\>nslookup test.example.com
Name:    test.example.com
Served by:
 - dns01.extern.com
       172.27.182.11, 172.27.158.208
       example.com
 - dns02.extern.com
       example.com
 - dns03.extern.com
       172.27.157.16
       example.com

Der Nameserver teilt in diesem Beispiel dem Resolver mit, dass er den Namen test.example.com nicht auflösen kann, dass er aber drei Nameserver kennt, die Informationen zu diesem Namen besitzen. Für den Nameserver dns01.extern.com werden zwei IP-Adressen mitgeliefert, für dns02.extern.com keine und dns03.extern.com eine.

Einzelnachweise

  1. a b https://datatracker.ietf.org/doc/html/rfc8499

Auf dieser Seite verwendete Medien

Dns-abfrage.svg
Autor/Urheber: Hank van Helvete, Lizenz: CC BY-SA 2.5
Schematische Darstellung der rekursiven und iterativen DNS-Abfrage. Abfrage des DNS.