도메인에 따라 다른 DNS 서버로 요청을 전달하도록 dnsmasq를 구성하려고 했습니다.
서버=/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는 example.org의 권한 있는 DNS 서버이므로 8.8.8.8은 해당 서버로 요청을 전달합니다.
dnsmasq가 수행하는 작업을 보면 다음과 같은 내용이 표시됩니다.
tcpdump -ni dst가 아닌 모든 src 포트 53 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에 대한 요청을 캐싱하지 않는 이유는 무엇입니까?