в одном восходящем dnsmasq (D1), у меня есть:
log-queries
dns-loop-detect
server=/mydomain.net/192.168.200.1
в другом dnsmasq (D2), у меня:
log-queries
dns-loop-detect
domain=mydomain.net
...
Когда я копаю test.mydomain.net A
работает нормально. Однако, если я сделаю dig test.mydomain.net AAAA
, B перенаправит запрос обратно на D1, поскольку я не настраивал ipv6. Затем происходит цикл запросов отскока запросов между D1 и D2. Я думал, что dns-loop-detect предотвратит этот цикл, но это не так. Я знал, что могу поместить local = / mydomain.net / в D2, чтобы предотвратить это. Но какова тогда цель dns-loop-detect? Какой цикл он должен обнаруживать и останавливать?
Этот алгоритм обнаружения петель просто отправляет простой запрос всем восходящим каналам, не ограничиваясь конкретным доменом (включая rDNS). Если этот зонд возвращается, идентификатор сервера, упомянутый в этом зонде, помечается как цикл (т. е. пропускается при проверке пригодного для использования восходящего потока).
Наиболее очевидный цикл, который он предназначен и может остановить, — это когда какая-то автоматизация, связанная с resolvconf, передает dnsmasq все известные DNS-серверы, включая сам dnsmasq в роли локального кэширующего преобразователя.
Причина отправки запросов только в вышестоящие потоки, действительные для любого домена, заключается просто в том, что тест представляет собой запрос на имя test
— dnsmasq не отправляет такой запрос в вышестоящий поток, явно не настроенный для обработки имена.