Я попытался настроить dnsmasq для пересылки запросов на разные DNS-серверы в зависимости от домена.
сервер=/a.example.org/192.168.aa
сервер=/b.example.org/bbbb
сервер=/c.example.org/8.8.8.8
Теперь кэширование не работает для a и b. Я всегда получаю полный TTL обратно.
192.168.aa и bbbb — это один и тот же DNS-сервер. bbbb — это авторитетный DNS-сервер для example.org, поэтому 8.8.8.8 пересылает туда запросы.
Когда я смотрю, что делает dnsmasq, я вижу это:
tcpdump -ni любой исходный порт 53, а не dst 127.0.0.1
07:14:45.680354 IP 192.168.aa53 > dnsmasq.36892: 400*- 1/0/1 A xxxx (70)
07:14:45.713410 IP bbbb53 > dnsmasq.50966: 8767*- 1/0/1 A xxxx (70)
07:14:45.770882 IP 8.8.8.8.53 > dnsmasq.35365: 3482 1/0/1 A xxxx (70)07:14:55.850404 IP 192.168.aa53 > dnsmasq.20329: 11717*- 1/0/1 A xxxx (70) 07
:14:55.885077 IP bbbb53 > dnsmasq.39750: 21076*- 1/0/1 A xxxx (70)07:15:05.965831 IP 192.168.aa53 > dnsmasq.21312: 34541*- 1/0/1 A xxxx (70) 07:15
:06.000209 IP bbbb53 > dnsmasq.48898: 28729*- 1/0/1 A xxxx (70)
поэтому dnsmasq кэширует только тот запрос, который прошел через google первым. Что я здесь упускаю? Почему dnsmasq не кэширует запросы к a и b?