When I run dig @fdaa::3 a myservice.internal, I get an NXDOMAIN response. dig aaaa myservice.internal gives me an IPv6 address, as expected.
Should the DNS server be returning NOERROR instead of NXDOMAIN for A queries? My understanding from some quick reading is that DNS servers should only return NXDOMAIN if there are no records for that resource. (like in this vulnerability)
I noticed this because I’m trying to set fdaa:3 as a resolver for nginx, and I think nginx is be interpreting the NXDOMAIN response for its A query as “this domain doesn’t exist, give up now” and so it’s failing to resolve the domain even though there’s an IPv6 record available.
Huh. TIL. Nice catch! I’ve updated and tested the DNS server; it’s a high-drama ops morning here so it may be later in the day before it gets deployed fleetwide. Thanks for this!
Thank you! I’m pretty slapdash with .internal; for instance, for a few weeks I wasn’t even copying the query record to nxdomain/noerror responses, and dig would grok them and Golang would not. If you spot more things like this, I can fix them quickly.
(Of course, if you use fdaa::3 as your system DNS server, I’m proxying requests to a real DNS server, and the handling of those should not be slapdash. It’s important not to break “real” DNS, but .internal is something less than real.)