Tentei configurar meu dnsmasq para encaminhar solicitações para diferentes servidores DNS dependendo do domínio.
servidor=/a.example.org/192.168.aa
servidor=/b.example.org/bbbb
servidor=/c.example.org/8.8.8.8
Agora, o cache não funciona para a e b. Eu sempre recebo o TTL completo de volta.
192.168.aa e bbbb são o mesmo servidor DNS. bbbb é o servidor DNS autorizado para example.org, portanto 8.8.8.8 encaminha solicitações para lá.
Quando observo o que o dnsmasq está fazendo, vejo o seguinte:
tcpdump -ni qualquer porta src 53 e não 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)
então o dnsmasq armazena em cache apenas a solicitação que passou primeiro pelo Google. O que estou perdendo aqui? Por que o dnsmasq não armazena em cache as solicitações para a e b?