¿Cómo medir la eficiencia de caché DNS / elementos en caché?

16

Me configuré dnsmasqcomo un servidor DNS solo de almacenamiento en caché en un servidor Debian, y está funcionando bien (estoy viendo mejores tiempos de respuesta de DNS a través de la excavación).

Sin embargo, me gustaría entender qué dnsmasqes el almacenamiento en caché en cualquier momento, para poder comenzar a pensar en la eficiencia (es decir, la tasa de aciertos) que estoy logrando.

He echado un vistazo a las páginas de manual y a la web, y no puedo encontrar cómo veo lo que dnsmasqestá almacenando en caché en ningún momento (a diferencia de lo que puede hacer para los arrendamientos, por ejemplo, que se guardan en un archivo dnsmasq.lease).

¿ dnsmasqEl caché DNS se mantiene solo en la memoria? ¿O tengo que hacer un poco de archivo de registro munging?

binaryfrost
fuente

Respuestas:

22

No tengo acceso a, dnsmasqpero de acuerdo con este hilo titulado: dnsmasq ¿está almacenando en caché? puede enviar la señal USR1 al dnsmasqproceso, haciendo que descargue estadísticas en el registro del sistema.

$ sudo pkill -USR1 dnsmasq

Luego consulte los registros del sistema:

$ 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

NOTA: Creo que dnsmasqconserva su caché en la RAM.

Entonces, si desea volcar el caché, deberá habilitar el -qinterruptor cuando dnsmasqse invoque. Esto se menciona en la dnsmasqpágina del manual:

   -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
fuente
1
Gracias, parece funcionar, y produce resultados similares a: 20 de octubre 08:39:17 dnsmasq [4846]: hora 1413790757 20 de octubre 08:39:17 dnsmasq [4846]: tamaño de caché 4096, 0/59976 inserciones de caché re utiliza entradas de caché no expiradas. 20 de octubre 08:39:17 dnsmasq [4846]: consultas reenviadas 13376, consultas respondidas localmente 1326 Así que supongo que el total de accesos a la entrada de caché es: 1326/14702, que es aproximadamente el 9%. Mientras más tiempo lo dejo en funcionamiento y más sitios de los mismos sitios que visito, supongo que eso podría aparecer.
binaryfrost
En el uso de enrutadores basados ​​en OpenWRT logread | tail.
Brian
1
@binaryfrost alguna idea sobre el uso de memoria por la dirección DNS almacenada en caché? supongamos que si tengo un tamaño de 500,000 caché, ¿se registrará la cantidad de memoria que se utilizará?
satch_boogie
Los sistemas que usan systemd no tienen / var / log / syslog, y no puedo encontrar ninguna entrada para dnsmasq después de emitir SIGUSR1 en la journalctlsalida. ¿Hay alguna manera de especificar explícitamente dónde dnsmasq debe volcar los registros?
Sergiy Kolodyazhnyy
2

Otra forma de obtener esta información de la página de manual:

Las estadísticas de caché también están disponibles en el DNS como respuestas a consultas de la clase CHAOS y escriba TXT en el enlace de dominio. Los nombres de dominio son cachesize.bind, insertions.bind, evictions.bind, misses.bind, hits.bind, auth.bind y server.bind. Un comando de ejemplo para consultar esto, usando la utilidad de excavación sería

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

Si tiene algo como systemd-resolve en su sistema, entonces deberá consultar el servidor directamente con:

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