DNS-Caching

aus Wikipedia, der freien Enzyklopadie
Zur Navigation springen Zur Suche springen
DNS-Cache von Windows 7, abgerufen mit ipconfig . Zu sehen sind der Eintrag wikipedia.de , der dazugehorige zustandige Nameserver, sowie der Negativeintrag wipieda.de

DNS-Caching bezeichnet im Domain Name System (DNS) die vorubergehende Zwischenspeicherung von Ergebnissen einer Namensauflosung in einem lokalen Cache . Folgende identische DNS-Anfragen konnen aus dem Cache bedient werden ohne den Nameserver erneut anfragen zu mussen, wodurch die Performance erhoht wird. DNS-Caching stellt einen Kompromiss zwischen dem Aufwand der Namensauflosung, der Geschwindigkeit von Aktualisierungen von Resource Records und der Genauigkeit von Antworten aus dem Cache dar. [1]

DNS-Caching verkurzt den Zeitaufwand von identischen Namensauflosungen, da eine Anfrage aus dem Cache schneller beantwortet werden kann, als erneut beim zustandigen Nameserver anzufragen. Daruber hinaus werden die Nameserver entlastet, da sie insgesamt weniger Anfragen beantworten mussen. DNS-Caching wird in Resolvern verwendet, also den Komponenten, die fur die DNS-Namensauflosung zustandig sind. [2] Es gibt jedoch auch einfache Stub-Resolver, die zugunsten einer Komplexitatsreduktion auf einen Cache verzichten. Teilweise fuhren Anwendungen ebenfalls ein DNS-Caching durch, beispielsweise der Webbrowser Chromium . [3]

Die Zeitdauer, fur die ein Resource Record im Cache hochstens zwischengespeichert werden darf, wird durch dessen TTL -Wert ( englisch time to live ; deutsch Lebenszeit ) bestimmt. Festgelegt wird der TTL-Wert durch den autoritativen Nameserver, der fur die Zone zustandig ist, in dem der Resource Record enthalten ist. Der TTL-Wert ist ein 32 Bit Integer und gibt die Zeitdauer in Sekunden an, [4] wodurch sehr große Werte (mehrere Jahrzehnte) theoretisch moglich sind. Ublich sind Werte im Bereich von einigen Minuten bis hin zu wenigen Tagen. Der Wert ? 0 “ ist moglich und bedeutet, das ein Resource Record nicht im Cache zwischengespeichert werden darf. [4] Der Inhalt des Caches befindet sich ublicherweise nur im fluchtigen Speicher und uberdauert nicht den Neustart der Komponente. Die Moglichkeit eine Zeitdauer von mehreren Wochen oder noch langer einzustellen hat daher kaum praktische Relevanz.

Studien zeigen, dass die TTL-Werte im Internet oft ignoriert werden. [5] [6] Einige Resolver wie zum Beispiel Unbound ermoglichen es, sowohl den maximalen TTL-Wert als auch die minimalen TTL-Wert zu begrenzen. [7]

Negatives Caching

[ Bearbeiten | Quelltext bearbeiten ]

Neben dem Caching von Resource Records ist es auch moglich, negative Antworten zwischenzuspeichern, also das Ergebnis, dass der angefragte Domainname oder Resource Record nicht existiert. Dies wird als negatives Caching bezeichnet und dient wie positives Caching der Einsparung von Ressourcen. [8]

Da einem nicht vorhandenen Domainnamen oder Resource Record kein TTL-Wert zugeordnet ist, muss die maximale Cache-Zeitdauer auf andere Weise ermittelt werden. Hierzu wird das Feld ?MINIMUM“ aus dem SOA Resource Record verwendet, weswegen jede negative Antwort immer den SOA Resource Record enthalt. Ursprunglich hatte das ?MINIMUM“-Feld eine andere Bedeutung, die jedoch fur das negative Caching geandert wurde. [8]

Negatives Caching ist optional auch in Situationen moglich, wo die Namensauflosung aufgrund von Fehlkonfiguration oder Nameserver-Ausfall fehlschlagt. In solchen Situationen ist eine Caching-Zeit von bis zu 5 Minuten erlaubt. [8]

Aggressives Caching

[ Bearbeiten | Quelltext bearbeiten ]

DNSSEC fuhrt einen kryptographischen Nachweis der Nichtexistenz von Domainnamen und Resource Records ein. Dies erfolgt durch einen NSEC oder NSEC3 Resource Record , was die Nichtexistenz nicht nur eines einzelnen Domainnamens, sondern eines ganzen Bereichs zwischen zwei existierenden Domainnamen nachweist. Aus dem Bereich des zwischengespeicherten NSEC oder NSEC3 Resource Record kann ein Resolver daher negative Antworten erzeugen, selbst wenn die Anfrage vorher noch nicht gestellt wurde. Dies wird als aggressives Caching bezeichnet und wurde im Jahr 2017 standardisiert. Aggressives Caching erhoht die Effektivitat von negativem Caching. Dies ist insbesondere nutzlich, wenn viele Anfragen nach nichtexistierenden Domainnamen gestellt werden, beispielsweise bei einem Denial-of-Service-Angriff . [9]

Einzelnachweise

[ Bearbeiten | Quelltext bearbeiten ]
  1. RFC 1034  ? Domain Names ? Concepts and Facilities . November 1987, Abschnitt 2.2 (englisch).
  2. RFC 1035  ? Domain Names ? Implementation and Specification . November 1987, Abschnitt 2.2 (englisch).
  3. textslashplain.com
  4. a b RFC 1035  ? Domain Names ? Implementation and Specification . November 1987, Abschnitt 4.1.3 (englisch).
  5. Jeffrey Pang, Aditya Akella, Anees Shaikh, Balachander Krishnamurthy, Srinivasan Seshan: On the responsiveness of DNS-based network control . Oktober 2004, doi : 10.1145/1028788.1028792 ( wisc.edu [PDF]).
  6. Protick Bhowmick, Mohammad Ishtiaq Ashiq Khan, Casey Deccio, Taejoong Chung: TTL Violation of DNS Resolvers in the Wild . Marz 2023 ( github.io [PDF]).
  7. nlnetlabs.nl
  8. a b c RFC 2308  ? Negative Caching of DNS Queries (DNS NCACHE) . Marz 1998 (englisch).
  9. RFC 8198  ? Aggressive Use of DNSSEC-Validated Cache . Juli 2017 (englisch).