
em um dnsmasq upstream (D1) eu tenho:
log-queries
dns-loop-detect
server=/mydomain.net/192.168.200.1
em outro dnsmasq (D2) eu tenho:
log-queries
dns-loop-detect
domain=mydomain.net
...
Quando eu dig test.mydomain.net A
funciona bem. No entanto, se eu fizer isso dig test.mydomain.net AAAA
, B encaminhará a solicitação de volta para D1, pois não configurei o ipv6. Em seguida, o loop acontece quando as solicitações saltam entre D1 e D2. Achei que o dns-loop-detect impediria esse loop, mas isso não acontece. Eu sabia que posso colocar local=/mydomain.net/ em D2 para evitar isso. Mas qual é o propósito do dns-loop-detect então? Que tipo de loop ele deve detectar e parar?
Responder1
Esse algoritmo de detecção de loop apenas envia uma sonda simples para todos os upstreamsnãosendo limitado a um domínio específico (incluindo rDNS). Se essa investigação for recebida de volta, o ID do servidor mencionado nessa investigação será marcado como um loop (ou seja, será ignorado ao verificar se há um upstream utilizável).
O loop mais óbvio que ele pretende parar é quando alguma automação relacionada ao resolvconf alimenta o dnsmasq com todos os servidores DNS conhecidos - incluindo o próprio dnsmasq na função de resolvedor de cache local.
A razão por trás do envio apenas dos testes para upstreams válidos para qualquer domínio é simplesmente que o teste é uma consulta para o nome test
- o dnsmasq não envia tal consulta para um upstream expressamente não configurado para lidar com nomes arbitrários.