Cache it, if you can! – sagt sich Sysadmin Charly Kühnast, wenn die Latenzen seiner Internetverbindung gefühlt länger als die Regentschaft Napoleons dauern. In der heutigen Kolumne stellt er seine Cache-Lösung für die Namensauflösung vor.
Es bereitet mir stets ein großes Missvergnügen, wenn ich eine Internet-über-Satellit-Strecke nutzen muss. Die Latenz ist echt übel. Als Gegenmittel verabreiche ich Caches, wo es nur geht. Für DNS-Anfragen ist Pdnsd [1] mein Cache der Wahl. Eigentlich alle Vollsortiments-Distributionen haben den schlanken und schnellen Daemon im Regal. Beim Start frühstückt er den Inhalt der »/etc/hosts« -Datei und bunkert ihn in seinem Cache. Dazu gesellen sich alle DNS-Anfragen, die ich tätige.
Der Cache ist per Default 2 MByte groß. Wer eine kilometerlange »/etc/hosts« entlang seiner IT-Landschaft gebaut hat, kann die Cachegröße in der »/etc/pdnsd.conf« anpassen. Die zugehörige Option wohnt im Abschnitt »global« , heißt »perm_cache« und erwartet eine Größe in Bytes, bei mir sind’s »8192« . »perm_cache« heißt die Option übrigens deshalb, weil der Cache nicht nur im RAM liegt, sondern auch auf der Platte. Pdnsd muss den Cache nach einem Neustart also nicht wieder neu aufbauen.
Im Konfigurationsabschnitt »global« finden sich weitere zentrale Einstellungsmöglichkeiten. Besonders wichtig ist:
server_ip = 127.0.0.1;
Sie besagt, dass Pdnsd DNS-Abfragen nur beantwortet, wenn sie vom Localhost kommen. Sollen auch andere Maschinen im selben Netz Pdnsd IP-Fragen stellen dürfen, so ersetze ich die 127.0.0.1 durch das Interface, das ins interne Netz zeigt:
server_ip = eth1;
Mit »min-ttl« und »max-ttl« lege ich fest, wie lange der Cache einen Eintrag minimal bis maximal festhält. Die Defaults – 15 Minuten sowie eine Woche – finde ich sinnvoll und taste sie daher nicht an. Anders der Timeout, er liegt gewöhnlich bei 10 Sekunden, was auf einer üppig genutzten Satellitenstrecke zu wenig ist. Ich verdopple hier gern: »timeout = 20s;« .
Jetzt sag’ schon!
Einen frisch aufgesetzten Pdnsd treibe ich zunächst mit »verbose = 3;« die Verstocktheit aus. (In schwierigen Fällen maximiere ich die Geschwätzigkeit mit »debug = on« .) Hat sich alles eingependelt, kommentiere ich diese Option aus, und Pdnsd geht seinem Handwerk wieder in aller Stille nach.
Als sinnvoll erachte ich auch den Eintrag »status_ctl = on« . Er erlaubt es mir, Pdnsd im laufenden Betrieb mit Hilfe des Tools »pdnsd-ctl« Kommandos zu erteilen. Abbildung 1 zeigt das Kommando
sudo pdnsd-ctl status
in Aktion. Ganz oben steht die Auslastung des Cache, gefolgt vom Überblick über laufende Threads und globale Konfigurationsoptionen. Mit »sudo pdnsd-ctl empty-cache« könnte ich den Cache leeren, was gelegentlich nach DNS-Änderungen nötig ist, wenn ich nicht bis zum Ablauf der TTL warten möchte. Einen Überblick über weitere Kommandos verschafft »sudo pdnsd-ctl help« .
Mein Fazit nach einiger Zeit am Satelliten: Die Schmerzen bei der Arbeit auf latenzverseuchten Leitungen kann auch Pdnsd nicht kurieren, sie aber merklich lindern – und das tut gut. (jk)
Infos






