
en un dnsmasq ascendente (D1) tengo:
log-queries
dns-loop-detect
server=/mydomain.net/192.168.200.1
en otro dnsmasq (D2) tengo:
log-queries
dns-loop-detect
domain=mydomain.net
...
Cuando dig test.mydomain.net A
lo hago funciona bien. Sin embargo, si lo hago dig test.mydomain.net AAAA
, B reenvía la solicitud a D1 ya que no configuré ipv6. Luego ocurre el bucle y las solicitudes rebotan entre D1 y D2. Pensé que dns-loop-detect evitaría este bucle, pero no es así. Sabía que podía poner local=/mydomain.net/ en D2 para evitar esto. Pero, ¿cuál es entonces el propósito de dns-loop-detect? ¿Qué tipo de bucle se supone que debe detectar y detener?
Respuesta1
Ese algoritmo de detección de bucle simplemente envía una sonda simple a todos los canales ascendentes.noestando limitado a un dominio específico (incluido rDNS). Si se recibe esa sonda, la identificación del servidor mencionada en esa sonda se marca como un bucle (es decir, se omite cuando se busca un flujo ascendente utilizable).
El bucle más obvio que debe detenerse y que puede detener es cuando alguna automatización relacionada con resolvconf alimenta a dnsmasq con todos los servidores DNS conocidos, incluido el propio dnsmasq en su función de solucionador de almacenamiento en caché local.
La razón detrás de enviar solo las sondas a canales ascendentes válidos para cualquier dominio es simplemente que la sonda es una consulta para el nombre test
; dnsmasq no envía dicha consulta a un canal ascendente expresamente no configurado para manejar nombres arbitrarios.