Wie messe ich die DNS-Cache-Effizienz / zwischengespeicherte Elemente?

16

Ich habe dnsmasqeinen Nur-Cache-DNS-Server auf einem Debian-Server konfiguriert und er funktioniert gut (ich sehe verbesserte DNS-Antwortzeiten über dig).

Ich würde jedoch gerne verstehen, was dnsmasqzu einem bestimmten Zeitpunkt im Cache ist, damit ich anfangen kann, über die Effizienz (dh die Trefferquote) nachzudenken, die ich erziele.

Ich habe mich auf den dnsmasqManualseiten und im Web umgesehen und kann zu keinem Zeitpunkt feststellen, wie ich sehe, was zwischengespeichert wird (im Gegensatz zu den Leases, die beispielsweise in einer Datei dnsmasq.lease gespeichert sind).

Befindet sich der dnsmasqDNS-Cache nur im Speicher? Oder muss ich ein paar Logfiles mungieren?

binärfrost
quelle

Antworten:

22

Ich habe keinen Zugriff auf, dnsmasqaber laut diesem Thread mit dem Titel: dnsmasq ist es Caching? Sie können das Signal USR1 an den dnsmasqProzess senden , wodurch die Statistiken in das Systemprotokoll geschrieben werden.

$ sudo pkill -USR1 dnsmasq

Dann konsultieren Sie die Systemprotokolle:

$ sudo tail /var/log/syslog
Jan 21 13:37:57 dnsmasq[29469]: time 1232566677
Jan 21 13:37:57 dnsmasq[29469]: cache size 150, 0/475 cache insertions re-used unexpired cache entries.
Jan 21 13:37:57 dnsmasq[29469]: queries forwarded 392, queries answered locally 16
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.222.222#53: queries sent 206, retried or failed 12
Jan 21 13:37:57 dnsmasq[29469]: server 208.67.220.220#53: queries sent 210, retried or failed 6

HINWEIS: Ich glaube, dass dnsmasqder Cache im RAM bleibt.

Wenn Sie den Cache sichern möchten, müssen Sie den -qSchalter beim dnsmasqAufrufen aktivieren . Dies wird in der dnsmasqManpage erwähnt:

   -d, --no-daemon
        Debug mode: don't fork to the background, don't write a pid file, 
        don't change user id, generate a complete cache dump  on
        receipt on SIGUSR1, log to stderr as well as syslog, don't fork new 
        processes to handle TCP queries. Note that this option is for use in 
        debugging only, to stop dnsmasq daemonising in production, use -k.

   -q, --log-queries
        Log the results of DNS queries handled by dnsmasq. Enable a full 
        cache dump on receipt of SIGUSR1.
slm
quelle
1
Danke, das scheint zu funktionieren und erzeugt eine Ausgabe ähnlich der folgenden: 20. Oktober 08:39:17 dnsmasq [4846]: Zeit 1413790757 20. Oktober 08:39:17 dnsmasq [4846]: Cache-Größe 4096, 0/59976 Cache-Einfügungen verwendete nicht abgelaufene Cache-Einträge. 20. Oktober 08:39:17 dnsmasq [4846]: Weitergeleitete Anfragen 13376, lokal beantwortete Anfragen 1326 Ich schätze, die Gesamtzahl der Cachetreffer beträgt: 1326/14702, was ungefähr 9% entspricht. Je länger ich es laufen lasse und je mehr Sites der gleichen Sites ich besuche, desto mehr schleicht sich das an.
BinaryFrost
Auf OpenWRT basierende Router verwenden logread | tail.
Brian,
1
@binaryfrost Irgendeine Idee bezüglich der Speichernutzung pro zwischengespeicherter DNS-Adresse? Lassen Sie uns sagen, wenn ich 500.000 Cache-Größe habe, werden vollständige Datensätze, wie viel Speicher voraussichtlich verwendet werden?
Satch_boogie
Systeme, die systemd verwenden, haben / var / log / syslog nicht und ich kann nach der Ausgabe von SIGUSR1 keine Einträge für dnsmasq finden journalctl. Gibt es eine Möglichkeit, explizit anzugeben, wo dnsmasq die Datensätze sichern soll?
Sergiy Kolodyazhnyy
2

Eine andere Möglichkeit, diese Informationen von der Manpage abzurufen:

Die Cachestatistiken sind auch im DNS als Antwort auf Fragen der Klasse CHAOS und Typ TXT in der Domänenbindung verfügbar. Die Domainnamen sind cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind und servers.bind. Ein Beispielbefehl, um dies mit dem Dienstprogramm dig abzufragen, wäre

   dig +short chaos txt cachesize.bind
   dig +short chaos txt hits.bind
   dig +short chaos txt misses.bind

Wenn Sie auf Ihrem System eine Systemauflösung haben, müssen Sie den Server direkt abfragen mit:

   dig +short chaos txt hits.bind @serverIP
NeroP
quelle