it-swarm.com.de

DNS-Caching unter Linux

Ich bin verwirrt über DNS-Caching. Ich schreibe einen kleinen Forward-Proxy-Server und möchte den DNS-Cache des Betriebssystems auf einem Linux-System verwenden.

Wenn ich das richtig verstehe, gibt es DNS-Caching auf Browserebene. Dann gibt es DNS-Caching auf Betriebssystemebene (Windows hat es. Ich bin nicht sicher, ob Linux-Distributionen es standardmäßig haben).

Wie verwendet ein Browser/Proxy-Server das DNS-Caching des Betriebssystems? Ich versuche herauszufinden, ob ich mich beim DNS-Caching auf Linux verlassen kann, anstatt es in meinem Proxy selbst zu tun.

Vielen Dank

50
agent.smith

Unter Linux (und wahrscheinlich unter den meisten Unix-Betriebssystemen) gibt es kein DNS-Caching auf Betriebssystemebene, es sei denn, nscd ist installiert und wird ausgeführt. Selbst dann ist die DNS-Caching-Funktion von nscd standardmäßig deaktiviert, zumindest in Debian, weil es ist kaputt . Das praktische Ergebnis ist, dass Ihr Linux-System sehr wahrscheinlich kein DNS-Caching auf Betriebssystemebene ausführt.

Sie könnten Ihren eigenen Cache in Ihre Anwendung implementieren (wie sie es für Squid getan haben, laut diegows 's Kommentar), aber ich würde dagegen empfehlen. Es ist eine Menge Arbeit, es ist einfach, es falsch zu verstehen (nscd hat es falsch verstanden !!!), es ist wahrscheinlich nicht so einfach zu optimieren wie ein dedizierter DNS-Cache und es dupliziert Funktionen, die bereits außerhalb Ihrer Anwendung existieren.

Wenn ein Endbenutzer, der Ihre Software verwendet, DNS-Caching benötigt, weil die DNS-Abfragelast groß genug ist, um ein Problem zu sein, oder die RTT zum externen DNS-Server lang genug ist, um ein Problem zu sein, kann er einen DNS-Caching-Server installieren, z. ngebunden Auf demselben Computer wie Ihre Anwendung, konfiguriert zum Zwischenspeichern von Antworten und Weiterleiten von Fehlern an die regulären DNS-Resolver.

74
Celada

Hier sind zwei weitere Softwarepakete, die für das DNS-Caching unter Linux verwendet werden können:

  • dnsmasq
  • bind

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 entweder die dns=dnsmasq Option in /etc/NetworkManager/NetworkManager.conf oder Sie können Ihre Verbindungseinstellungen auf Automatisch (nur Adresse) ändern und dann ein Skript in der /etc/NetworkManager/dispatcher.d Verzeichnis, um den DHCP-Nameserver abzurufen, legen Sie ihn als DNS-Weiterleitungsserver in Ihrer DNS-Cache-Software fest und lösen Sie dann ein erneutes Laden der Konfiguration aus.

22
Zan Lynx

Sie haben hier ein Beispiel für DNS-Caching in Debian mit dnsmasq.

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.

Benchmarktest 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}'

Benchmarktest mit lokal zwischengespeichertem DNS:

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}'
9
Tk421

Firefox enthält einen DNS-Cache. So deaktivieren Sie den DNS-Cache:

  1. Öffnen Sie Ihren Browser
  2. Geben Sie about: config in die Adressleiste ein
  3. Klicken Sie mit der rechten Maustaste auf die Liste der Eigenschaften und wählen Sie im Kontextmenü Neu> Ganzzahl
  4. Geben Sie 'network.dnsCacheExpiration' als Präferenznamen und 0 als Ganzzahlwert ein

Wenn deaktiviert, verwendet Firefox den vom Betriebssystem bereitgestellten DNS-Cache.

2
Focus Linux