Philipp Trommlers Blog

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.

Kuchendiagramm, das die Verteilung der DNS-Anfragen, die von meiner
Pi-hole-Installation behandelt worden sind, zeigt: Ungefähr ein Viertel ist
geblockt worden, ein weiteres aus dem Cache beantwortet und die zweite Hälfte
ist an die Upstream-DNS-Server weitergeleitet
worden.
Meine Pi-hole-Installation hält die Hälfte meiner DNS-Anfragen innerhalb meines Heimnetzwerks, entweder durch Blocken oder durch Nutzung des Caches.

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!

Beiträge von Blogs, denen ich folge

Blue Oak Guide to Copyleft
via /dev/lawyer, November 4, 2019

Blue Oak Council recently published a new short guide to copyleft, complete with lists of copyleft licenses grouped into four functional “families”, as a webpage and as machine-readable data files. The Council has been able to update some of its own sampl…

Introducing the replo
via BASHing data, November 1, 2019

Character replacements by computers can be reversible, reconstructable or researchable

An old-school shell hack on a line printer
via Drew DeVault's Blog, October 30, 2019

It’s been too long since I last did a good hack, for no practical reason other than great hack value. In my case, these often amount to a nostalgia for an age of computing I wasn’t present for. In a recent bid to capture more of this nostalgia, I recently pi…

Generiert mit openring