Rekursive und iterative Namensauflösung

aus Wikipedia, der freien Enzyklopädie
Abfrage des DNS

Eine DNS-Anfrage (auch DNS-Request) kann 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 oder mehreren Verweisen oder einem Resource Record auf andere Nameserver)

Der Administrator eines Nameservers kann definieren, ob dieser Nameserver Anfragen rekursiv bearbeiten kann oder nicht. Normalerweise arbeiten Nameserver rekursiv, da einige Resolver mit einer iterativen Antwort nichts anfangen können. Bei stark ausgelasteten Servern (z. B. DNS-Root-Servern) ist die Rekursion aber deaktiviert.

Ob ein Request autoritativ (also aus einer lokalen Zonendatei) beantwortet wurde, wird durch ein Flag in den DNS-Headern bei Anfragen und Antworten definiert, dem Authoritative Response Flag. Der Resolver kann also aus der Antwort des Servers entnehmen, welche der drei oben aufgeführten Methoden verwendet wurde.

Die rekursive Antwort

Das Rekursionsverhalten wird durch weitere Flags bestimmt. Ein Resolver setzt im DNS-Request-Header das Recursion Desired Flag – kurz RD genannt –, wenn er eine rekursive Auflösung seines Requests wünscht. Der Nameserver setzt in seiner Antwort das Recursion Available Flag – RA –, wenn er grundsätzlich zur Rekursion bereit ist. Nur wenn sowohl bei einem Request, als auch bei der Response diese Flags gesetzt sind, wird rekursiv gearbeitet. Ansonsten unterscheiden sich autoritative und rekursive Antworten nicht.

Rekursive Anfragen, die an einen Nameserver gestellt wurden, werden in der Regel ausschließlich von diesem aufgelöst. Dazu wendet sich der Nameserver aktiv an andere Nameserver, es sei denn, er kann die Anfrage selbst auflösen (meist nicht der Fall).

Die iterative Antwort

Eine iterative Antwort enthält anstelle der Daten (z. B. IP-Adresse) einen oder mehrere Verweise auf andere Nameserver. Ein derartiger Verweis enthält den Namen des anderen Servers, den Namen der Domäne und – falls bekannt – IP-Adresse(n). Hier ein Beispiel für eine iterativ beantwortete DNS-Anfrage 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.