DNS is one of those ancillary services that can often get overlooked, be it recursive, authoritative forward or reverse.
Assigning a Recursive DNS server (RDNSS):
There are 2 main ways to tell a client what RDNSS to use, stateless DHCPv6 (or with stateful if you want to use DHCP for IPv6 address assignment), or built in to the ICMPv6 Router Advertisements (RA) being sent by a router, a la RFC6106.
Sadly Microsoft and Google(Android) disagree on which of these methods is the best; Microsoft will only use DHCPv6 and Android will only use RAs. The fallout of this means that if you want both types of systems on your IPv6 network, you need to announce your RDNSS via both RAs and DHCPv6. The alternative is to just rely on the RDNSS being handed out via DHCPv4 if you’re dualstacked, obviously not a future proofed solution.
See here for a list of support in other operating systems: https://en.wikipedia.org/wiki/Comparison_of_IPv6_support_in_operating_systems
Resolving AAAA Records:
AAAA or “quad As” are the IPv6 equivalent of the IPv4 A record, used for forward resolution from a domain name to an IP address. They are intrinsic to your use of the internet, without them your client would not know which server to connect to.
Now to dispel one misconception right off the bat, it is not essential that your RDNSS be contactable over IPv6 in order to deliver an AAAA record. Ie. A dual stacked host can use an IPv4 RDNSS and still be able to browse the IPv6 internet.
For anyone starting to deploy IPv6 in a dual stack environment, it’s important to realise that clients will start requesting both an A and an AAAA record for each resolution attempt, which will effectively double the load on your RDNSS infrastructure.
But when should a client start requesting an AAAA record? The easy answer is obvious, when the client has a public IPv6 address, however in reality it’s not quite as simple as that. As we discovered above, different operating systems, and even different clients within said operating systems, behave differently.
We found that Windows (7/8/10) and OSX all start requesting AAAA records as soon as they have an IPv6 address that isn’t a link-local or Teredo address. This means that even if you haven’t enabled IPv6 on the WAN side just yet, you will still see a drastic increase in RDNSS load when you upgrade your CPEs firmware to support IPv6 if they start handing out Unique Local Address (ULA) addresses.
Oddly enough, Android itself and Chrome on any OS do not seem to request AAAA records when only presented with a ULA address. To me this seems broken, as routable networks can be built using only ULA addressing, and thus could quite feasible want forward DNS entries. ie. Just like on an IPv4 LAN using RFC1918.