Hier sind zwei weitere Softwarepakete, die für das DNS-Caching unter Linux verwendet werden können:
- dnsmasq
- binden
Nachdem Sie die Software für DNS-Weiterleitung und -Caching konfiguriert haben, setzen Sie den DNS-Resolver des Systems in /etc/resolv.conf auf 127.0.0.1.
Wenn Ihr System NetworkManager verwendet, können Sie es entweder mit dns=dnsmasq
versuchen Option in /etc/NetworkManager/NetworkManager.conf
oder Sie können Ihre Verbindungseinstellungen auf Automatisch (nur Adresse) ändern und dann ein Skript im /etc/NetworkManager/dispatcher.d
verwenden Verzeichnis, um den DHCP-Nameserver abzurufen, stellen Sie ihn als DNS-Weiterleitungsserver in Ihrer DNS-Cache-Software ein und lösen Sie dann ein erneutes Laden der Konfiguration aus.
Unter Linux (und wahrscheinlich den meisten Unix) gibt es kein DNS-Caching auf Betriebssystemebene, es sei denn, nscd ist installiert und läuft. Selbst dann ist die DNS-Caching-Funktion von nscd zumindest in Debian standardmäßig deaktiviert, weil sie kaputt ist. Das praktische Ergebnis ist, dass Ihr Linux-System höchstwahrscheinlich kein DNS-Caching auf Betriebssystemebene durchführt.
Sie könnten Ihren eigenen Cache in Ihrer Anwendung implementieren (wie sie es laut diegows Kommentar für Squid getan haben), aber ich würde davon abraten. Es ist eine Menge Arbeit, es ist leicht, etwas falsch zu machen (nscd hat es falsch gemacht!!!), es ist wahrscheinlich nicht so einfach zu optimieren wie ein dedizierter DNS-Cache, und es dupliziert Funktionen, die bereits außerhalb Ihrer Anwendung vorhanden sind.
Wenn ein Endbenutzer, der Ihre Software verwendet, DNS-Caching benötigt, weil die DNS-Abfragelast groß genug ist, um ein Problem darzustellen, oder die RTT zum externen DNS-Server lang genug ist, um ein Problem darzustellen, kann er einen Caching-DNS-Server wie Unbound installieren auf demselben Computer wie Ihre Anwendung, konfiguriert zum Zwischenspeichern von Antworten und Weiterleiten von Fehlern an die regulären DNS-Resolver.
Hier haben Sie ein Beispiel für DNS-Caching in Debian mit dnsmasq:Lokales DNS-Caching, Artikel auf ManageaCloud.
Konfigurationszusammenfassung:
/etc/default/dnsmasq
# Ensure you add this line
DNSMASQ_OPTS="-r /etc/resolv.dnsmasq"
/etc/resolv.dnsmasq
# Your preferred servers
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
/etc/resolv.conf
nameserver 127.0.0.1
Starten Sie dann einfach dnsmasq neu.
Benchmark-Test mit DNS 1.1.1.1:
for i in {1..100}; do time dig slashdot.org @1.1.1.1; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'
Benchmark-Test mit Ihrem lokal zwischenspeichernden DNS-Forwarder (dnsmasq):
for i in {1..100}; do time dig slashdot.org; done 2>&1 | grep ^real | sed -e s/.*m// | awk '{sum += $1} END {print sum / NR}'