A recursive DNS query is a request in which a name server resolves a domain name on the client's behalf by contacting other authoritative servers as needed, returning either a final answer or an error rather than a referral. The client signals this by setting the RD flag in the DNS message header, and the resolver stores the result according to the record's TTL before returning it with the RA flag set. Because nearly every DNS lookup begins as a recursive query, resolver performance, availability, and security directly impact application reliability, making proper access control and cache management critical to prevent open resolver abuse and ensure consistent lookups across client networks.
So funktioniert eine rekursive Abfrage
Bei einer rekursiven Abfrage setzt der Client das Flag „Recursion Desired“ (RD) im Header der DNS-Nachricht. Der empfangende Server übernimmt, sofern er Rekursion anbietet, die Auflösung des Namens und gibt nur das Endergebnis zurück.
- Der Client sendet die Anfrage: Ein Stub-Resolver auf dem Client sendet eine Anfrage mit gesetztem RD-Flag an seinen konfigurierten rekursiven Resolver.
- Der Resolver überprüft seinen Cache: Der rekursive Resolver sucht nach einer gültigen, im Cache gespeicherten Antwort. Ist eine vorhanden, gibt er diese sofort zurück.
- Der Resolver fragt andere Server ab: Bei einem Cache-Miss sendet der Resolver iterative Abfragen, in der Regel beginnend bei einem Root-Server. Er folgt den Verweisen zu Top-Level-Domain-Servern und anschließend zum autoritativen Server für die Zone.
- Der Resolver speichert das Ergebnis im Cache: Der Resolver speichert die Antwort für die Dauer, die durch die Time-to-Live (TTL) des Eintrags vorgegeben ist.
- Antwort des Resolvers an den Client: Der Resolver gibt die endgültige Antwort oder einen Fehler wie NXDOMAIN oder SERVFAIL zurück, wobei das Flag „Recursion Available“ (RA) gesetzt ist.
Der Client sieht eine Anfrage und eine Antwort, unabhängig davon, wie viele Server der Resolver kontaktiert. Ein Server kann die Rekursion ablehnen; in diesem Fall antwortet er nur anhand seiner eigenen Daten oder gibt eine Weiterleitung oder eine Ablehnung zurück. Server, die ausschließlich als Autoritätsserver fungieren, bieten in der Regel keine Rekursion an.
Häufige Probleme bei rekursiven Abfragen
Ein Resolver, der rekursive Abfragen von beliebigen Quelladressen beantwortet, kann für Reflexions- und Verstärkungsangriffe genutzt werden. Beschränken Sie die Rekursion mithilfe von Zugriffskontrolllisten auf interne Client-Bereiche und stellen Sie sicher, dass der Resolver vom Internet aus nicht erreichbar ist.
Clients erhalten „REFUSED“-Antworten, wenn ihr Subnetz nicht in der Zulassungsliste des Resolvers enthalten ist. Dies tritt häufig auf, wenn ein neues Subnetz bereitgestellt wird und die Zugriffsliste nicht aktualisiert wird.
Nach einem Neustart oder einer Cache-Leerung wird jede Abfrage zu einem Cache-Miss und löst eine vollständige Suche ab der Wurzel aus. Benutzer erleben langsame Ladezeiten, bis sich der Cache wieder aufgewärmt hat.
Wenn ein autoritativer Server für eine Zone nicht erreichbar ist oder unzureichende Delegationen zurückgibt, kann der Resolver die Auflösung nicht abschließen und gibt „SERVFAIL“ zurück. Der Client nimmt lediglich einen Fehler wahr, sodass der Fehler erst durch die Rückverfolgung der iterativen Abfragen auf dem Resolver ermittelt werden kann.
Ein Resolver speichert Antworten so lange, bis die TTL abläuft, sodass ein geänderter Eintrag für manche Clients möglicherweise erst später erscheint. Techniker beobachten nach einer Änderung inkonsistente Ergebnisse zwischen den Resolvern, bis die Caches ablaufen oder geleert werden.