Wenn ein DNS-Server einen Datensatz sucht und dieser fehlt, wird die Tatsache, dass dieser Datensatz fehlt, häufig negativ zwischengespeichert, und es wird eine Weile lang nicht versucht, ihn erneut zu suchen. Ich sehe in der RFC nichts darüber, dass die TTL für negatives Caching sein sollte, also schätze ich, dass es etwas willkürlich ist. Wie lange halten sich diese negativen Aufzeichnungen in der realen Welt?
domain-name-system
Leopd
quelle
quelle
Antworten:
Die TTL für das negative Caching ist nicht beliebig. Es wird aus dem SOA-Datensatz am oberen Rand der Zone entnommen, zu der der angeforderte Datensatz gehört hätte, wenn er existiert hätte. Zum Beispiel:
Der letzte Wert im SOA-Datensatz ("86400") gibt an, wie lange Clients aufgefordert werden, negative Ergebnisse unter "" zwischenzuspeichern
example.org.
.Wenn ein Client dies anfordert
doesnotexist.example.org.
, wird das Ergebnis für 86400 Sekunden zwischengespeichert.quelle
MIN(SOA TTL, SOA.MINIMUM)
nicht einfachSOA.MINIMUM
. (Siehe tools.ietf.org/html/rfc2308#section-5 )Dies hängt von Ihrer genauen Definition einer "negativen Abfrage" ab. In beiden Fällen ist dies jedoch in rfc2308 "Negative Caching von DNS-Abfragen (DNS NCACHE)" dokumentiert :
NXDOMAIN
NXDOMAIN
, wird die Antwort mit einemSOA
Datensatz geliefert, der dieNXDOMAIN
TTL (traditionell alsMINIMUM
Feld bezeichnet) enthält.rfc2308#section-4
SERVFAIL
Wenn die Auflösung nicht erfolgreich ist und zu einer Zeitüberschreitung (
SERVFAIL
) führt , wird sie möglicherweise überhaupt nicht zwischengespeichert und DARF unter keinen Umständen länger als 5 Minuten zwischengespeichert werden.rfc2308#section-7.1
Beachten Sie, dass in der Praxis das Zwischenspeichern solcher Ergebnisse für die gesamten zulässigen 5 Minuten eine gute Möglichkeit darstellt, die Erfahrung eines Clients zu verringern, falls der Cache-Server gelegentlich kurze Verbindungsprobleme aufweist (und es effektiv leicht für eine Denial-of-Service-Verstärkung anfällig macht). Wobei einige Sekunden Ausfallzeit dazu führen würden, dass bestimmte Teile des DNS fünf Minuten lang nicht verfügbar sind.
Vor BIND 9.9.6-S1 (im Jahr 2014 veröffentlicht) wurde offenbar überhaupt
SERVFAIL
nicht zwischengespeichert.a878301
(04.09.2014)Zum Zeitpunkt Ihrer Frage und in allen Versionen von BIND, die vor 2014 veröffentlicht wurden, hat der rekursive BIND-Resolver NICHT gecacht
SERVFAIL
, wenn das oben genannte Commit und die Dokumentation zur ersten Einführung in 9.9.6-S1 angenommen werden sollen .In der neuesten BIND, die Standardeinstellung
servfail-ttl
ist1s
, und die Einstellung zu einer Obergrenze von fest einprogrammiert ist30s
(anstelle der RFC-mandatierten Decke300s
).90174e6
(2015-10-17)Darüber hinaus sind im Folgenden einige bemerkenswerte Zitate zu diesem Thema aufgeführt:
Zusammenfassend kann gesagt werden, dass eine
NXDOMAIN
Antwort wie in derSOA
entsprechenden Zone angegeben zwischengespeichert wird, wohingegenSERVFAIL
es unwahrscheinlich ist, dass sie zwischengespeichert wird, oder, falls zwischengespeichert, höchstens eine zweistellige Anzahl von Sekunden.quelle
Zu diesem Thema gibt es einen RFC: RFC 2308 - Negatives Caching von DNS-Abfragen (DNS NCACHE) .
Der relevante zu lesende Abschnitt lautet 5 - Negative Antworten zwischenspeichern und lautet:
SOA.MINIMUM
Lassen Sie uns zunächst die im RFC beschriebene SOA-TTL identifizieren . Die TTL ist die Zahl vor dem DatensatztypIN
(900
Sekunden im folgenden Beispiel). Während das Minimum das letzte Feld im Datensatz ist (86400
Sekunden im folgenden Beispiel).Schauen wir uns nun einige Beispiele an. Die
serverfault.com
Zone ist veranschaulichend, da sie autorisierende Server von zwei verschiedenen Anbietern enthält, die unterschiedlich konfiguriert sind.Hier finden Sie die maßgeblichen Nameserver für die
serverfault.com
Zone:Überprüfen Sie dann den SOA-Datensatz mit einem aws-Nameserver:
Daraus können wir ersehen, dass die TTL des SOA-Datensatzes
900
Sekunden beträgt, während der negative TTL-Wert86400
Sekunden beträgt . Der SOA-TTL-Wert von900
ist niedriger, daher wird erwartet, dass dieser Wert verwendet wird.Wenn wir nun einen autorisierenden Server nach einer nicht vorhandenen Domäne abfragen, sollten wir eine Antwort ohne Antwort und mit einem SOA-Datensatz im Abschnitt "Authority" erhalten:
Wenn ein rekursiver (Caching-) Resolver diese Antwort erhält, analysiert er den SOA-Datensatz in
AUTHORITY SECTION
und verwendet die TTL dieses Datensatzes, um zu bestimmen, wie lange das negative Ergebnis zwischengespeichert werden soll (in diesem Fall900
Sekunden).Gehen wir nun mit einem Google Nameserver genauso vor:
Sie können sehen, dass die Google-Nameserver unterschiedliche Werte sowohl für die SOA-TTL- als auch für die Negative-TTL-Werte haben. In diesem Fall ist die negative TTL von
300
niedriger als die SOA-TTL von21600
. Daher sollte der Google Server den niedrigeren Wert imAUTHORITY SECTION
SOA-Datensatz verwenden, wenn eineNXDOMAIN
Antwort zurückgegeben wird:Wie erwartet
NXDOMAIN
beträgt die TTL des SOA-Datensatzes in der Antwort300
Sekunden.Das obige Beispiel zeigt auch, wie einfach es ist, unterschiedliche Antworten auf dieselbe Abfrage zu erhalten. Die Antwort, die ein einzelner Caching-Resolver verwendet, ist, welcher autorisierende Nameserver abgefragt wurde.
Bei meinen Tests habe ich auch festgestellt, dass einige rekursive (Caching-) Resolver
AUTHORITY SECTION
für nachfolgende Anforderungen kein mit einem SOA-Datensatz mit einer dekrementierenden TTL zurückgeben, während andere dies tun.Zum Beispiel der Cloudflare-Resolver (beachte den dekrementierenden TTL-Wert):
Während der Standard-Resolver in einer AWS VPC nur bei der ersten Anforderung mit einem Berechtigungsabschnitt antwortet:
Hinweis: Diese Antwort behandelt das Verhalten von
NXDOMAIN
Antworten.Glossar:
quelle