Tiny Bits: DNS TTLs
Oft übersehen, aber dennoch wichtig: Die richtigen Einstellungen für DNS TTLs. tl;dr Länger machen!
Veröffentlicht am (zuletzt geändert am ) von Philipp Trommler. Dieser Beitrag wurde außerdem übersetzt nach: en.
Dieser Blog-Post, den ich über Hacker News gefunden habe, bespricht die Bedeutung der richtigen Wahl für DNS TTLs. Diese Werte sagen jedem, der einen DNS-Server fragt, wie lange ein Eintrag als gültig angesehen werden kann, bevor der Server erneut angefragt werden soll (wie lange der Eintrag gecached werden kann). Die Dauer des Caching hat Auswirkungen auf verschiedene Themen: Der genannte Artikel spricht von Latenz, Datenschutz und Zuverlässigkeit und ich füge außerdem noch Umweltschutz hinzu. Ein ausgelasteter Server hat einen höheren Energieverbrauch als ein leerlaufender (ganz zu schweigen von den zwischengeschalteten Netzwerkgeräten). Das sind mehr als genug Gründe für mich, das Thema ernst zu nehmen.
Der zitierte Artikel schlägt eine TTL von mindestens 40 Minuten (2400
Sekunden) oder – noch besser – einer Stunde (3600 Sekunden) vor, da
letztere theoretisch die Anzahl der notwendigen DNS-Anfragen auf 17 %
reduzieren kann! Natürlich habe ich mich vor diesem Hintergrund dazu
entschieden, meine eigenen Einstellungen zu überprüfen, um sie mit den
vorgeschlagenen in Einklang zu bringen. Mit drill
habe ich folgende aktuelle
Werte für meinen Blog erhalten:
1 | blog.philipp-trommler.me. 1800 IN A 199.188.200.96
|
Autsch! Daneben. 1800 Sekunden sind nur 30 Minuten für eine Domain, die sich wahrscheinlich nie ändern wird. Mal sehen, wie es bei meinem alten Blog aussieht:
1 2 3 4 5 | www.philipp-trommler.me. 1800 IN CNAME ferruck.github.io. ferruck.github.io. 3600 IN A 185.199.111.153 ferruck.github.io. 3600 IN A 185.199.108.153 ferruck.github.io. 3600 IN A 185.199.109.153 ferruck.github.io. 3600 IN A 185.199.110.153 |
Hier werde ich sogar von Github blamiert, das die richtigen Werte gewählt hat. Nun ist der Wert meiner CV-Website wenig überraschend:
1 | cv.philipp-trommler.me. 1800 IN A 199.188.200.96
|
Diese Werte zu setzen ist einfach, normalerweise geht es einfach im Web-Frontend des Domain-Registrars. Das ist es auch, was ich getan habe, und wenn du jetzt meine Domain überprüfst, solltest du überall TTLs von 60 Minuten sehen.
Was kannst du tun? Nun ja, wenn du eine eigene Domain hast, kannst und solltest du es mir gleich tun und eine geeignete TTL wählen. Wenn du "nur" Endanwender bist, hast du hingegen nur wenige Möglichkeiten. Diejenige, die ich gewählt habe, ist Pi-hole. Neben seinen Ad-Blocking-Funktionen, cached es auch DNS-Anfragen und senkt damit die Anzahl der öffentlich beobachtbaren Anfragen, die das Heimnetzwerk verlassen.
Man kann aber auch noch weiter gehen, indem man die Einstellungen von dnsmasq
anpasst, dem DNS-Server, der Pi-hole zugrunde liegt. In einer aktuellen
Pi-hole-Installation kann eine weitere Datei unter /etc/dnsmasq.d/
angelegt
werden, um benutzerdefinierte Einstellungen zu dnsmasq
hinzuzufügen.
Um die minimale TTL für alle Domains, die über Pi-hole angefragt werden, zu
erhöhen, genügt es, min-cache-ttl
anzupassen. Natürlich kann man diesen Wert
einfach auf 2400 stellen, um allen Netzwerkgeräten eine TTL von 40 Minuten für
alle Domains vorzutäuschen. Vorsicht ist jedoch mit Webseiten geboten, die auf
Services wie Cloudflare setzen oder ihre DNS-Einträge für Load-Balancing nutzen,
da diese mit einer so hohen TTL eventuell nicht richtig funktionieren. Aber
schon das Setzen eines Wertes von 300 (fünf Minuten) sollte die Anzahl der
DNS-Anfragen deutlich reduzieren, ohne zu viele Probleme zu verursachen. Der
Inhalt der neu angelegten Konfigurationsdatei ist also folgender:
1 | min-cache-ttl=300
|
Zusätzlich könnte man mit local-ttl
eine TTL für alle blockierten Domains
setzen, würde Pi-hole diesen Wert nicht schon in seiner eigenen
Konfigurationsdatei angeben, denn leider erlaubt dnsmasq
kein Überschreiben
von Konfigurationsvariablen. Daher besteht die einzige Möglichkeit, den Wert zu
ändern, darin, die automatisch generierte Datei /etc/dnsmasq.d/01-pihole.conf
nach jedem Upgrade erneut zu editieren. In diesem Fall kann für local-ttl
ein
sehr hoher Wert gewählt werden, da diese Seiten sowieso nicht besucht werden
sollen. Wird dieser Weg gewählt, sollte allerdings zusätzlich dhcp-ttl
auf
null gesetzt werden, um Einschränkungen beim DHCP zu vermeiden (siehe
dnsmasq(8)
). Zu beachten ist weiterhin, dass es nach dem Whitelisting einer
fälschlicherweise geblockten Domain bis zu local-ttl
Sekunden dauern kann, bis
die Seite auflösbar wird.
Ich hoffe, dass ich ein wenig Interesse für DNS TTLs wecken konnte. Wenn nicht, empfehle ich, den oben genannten Artikel noch einmal zu lesen. Fröhliches Konfigurieren!
Abgelegt unter Tiny Bits. Tags: dns, web, pi-hole.
Willst du diesen Beitrag kommentieren? Schreib mir an blog [at] philipp-trommler [dot] me!