AAAA: IPv6 address record
One name → one IPv6 address. Same role as A, for IPv6. AAAA is pronounced "quad-A," and the name has four A's because the address it holds is four times the size of an IPv4 address (32 → 128 bits).
In one line:
neal.example.isitdns.net. AAAA 2001:db8::7
└── this name ──────────┘ └type┘ └── lives at this IPv6 address| Type number | 28 |
| RFC | 3596 |
| RDATA | A single IPv6 address (128 bits) |
| Reverse counterpart | PTR in .ip6.arpa |
What it holds#
A 128-bit IPv6 address. On the wire the RDATA is the raw 128 bits in network byte order (RFC 3596 §2.2); zone files and tool output render it in the canonical text form of RFC 5952 (lowercase hex, leading zeros dropped, longest zero run collapsed to ::):
2001:db8::1
2001:db8::1is the IPv6 address this name points to: the same idea as an A record, with a bigger address.
As with A, a name can have multiple AAAA records. Clients use whichever combination of A + AAAA they prefer (Happy Eyeballs: the client queries both record types but gives IPv6 a head start. If the A answer arrives first, the client still waits ~50ms for the AAAA (the Resolution Delay), then the IPv6 connection attempt starts first; IPv4 only begins if IPv6 has not succeeded after ~250ms, per RFC 8305 §§3 and 5).
When to use it#
- Always, on any name that has IPv6 connectivity. Lots of clients prefer IPv6 by default. Whether you have usable IPv6 depends entirely on the ISP: some delegate a generous prefix (several /64s via DHCPv6-PD), some hand out a single /64, and some offer none at all. RFC 6177 recommends end sites get significantly more than a single /64 (a site implies multiple subnets) but deliberately declines to name one size for every site; /48 and /56 are both common in practice.
- At the zone apex: same as A, valid choice for the bare name.
- For dual-stack endpoints: define both A and AAAA. Clients pick the winner.
When not to use it#
- Don't publish AAAA pointing to addresses that aren't actually reachable. Clients that "have IPv6" will try AAAA first; if it's broken they fall back to A after a delay, hurting startup latency. (This is a real, well-documented failure mode: the "broken IPv6" problem.)
- For aliasing: use CNAME.
dig example#
Asks example.isitdns.net for its IPv6 address.
dig @1.1.1.1 example.isitdns.net AAAANOERRORThe server had no complaint about the question.
qrThis message is the answer coming back, not the question going out.
rdYou asked this server to go and find the answer for you.
raThis server says it is willing to go and find answers for you.
adThis server says it checked the signatures, and they held up.
AAAAYou asked for the IPv6 address this name points at.
300How many seconds this answer can be reused before asking again. From a cache it is the time left, so it counts down.
Query timeHow long this one lookup took, start to finish.
good: NOERROR, one AAAA record, 2001:db8::1
bad: NOERROR with no answer, which means the name has no IPv6 address
The learning zone uses a documentation address (RFC 3849) for illustration; the address is not routable.
dig @1.1.1.1 example.isitdns.net AAAA +short2001:db8::1nslookup -type=AAAA example.isitdns.net 1.1.1.1Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
Name: example.isitdns.net
Address: 2001:db8::1The Non-authoritative answer: header is normal here: 1.1.1.1 is a recursive resolver relaying the zone's data, not one of the zone's authoritative servers, so the aa flag is not set.
Watch both at once with dig +short:
dig @1.1.1.1 example.isitdns.net A +short
dig @1.1.1.1 example.isitdns.net AAAA +short192.0.2.1
2001:db8::1nslookup -type=A example.isitdns.net 1.1.1.1
nslookup -type=AAAA example.isitdns.net 1.1.1.1Non-authoritative answer:
Name: example.isitdns.net
Address: 192.0.2.1
Non-authoritative answer:
Name: example.isitdns.net
Address: 2001:db8::1(Each nslookup run also prints the Server: / Address: header shown earlier; it is trimmed here.)
See it live: isitdns.net/#dig?name=example.isitdns.net&qtype=AAAA
Defined by: RFC 3596 §2.2 (AAAA RDATA format)
DoH query (HTTPS)#
DoH is DNS-over-HTTPS. The JSON API (a Cloudflare/Google extension, not part of RFC 8484) is the easiest to inspect:
curl -s -H 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=example.isitdns.net&type=AAAA' \
| jq .Answer[
{
"name": "example.isitdns.net",
"type": 28,
"TTL": 300,
"data": "2001:db8::1"
}
]"AD": true in the full response means the resolver validated the DNSSEC chain for this answer (RFC 4035 §3.2.3); you are trusting 1.1.1.1's validation rather than doing your own.
nslookupcannot do DoH/DoT/DoQ, usedigorcurlinstead. On Windows 11,Resolve-DnsNameuses the system-configured DoH resolver when the OS is set up for encrypted DNS; it does not accept a-DnsOverHttpsparameter or let you specify an arbitrary DoH endpoint. To probe a specific DoH service, use thecurlexamples above (or a third-party tool likekdig).
dig +https(wire-format DoH via dig) requires dig 9.18 or later. Use thecurlform above if your system dig is older.
Gotchas#
- Record type and transport are independent. An AAAA record does not mean the DNS query travels over IPv6. An IPv4-only client can fetch AAAA records (this page's
digexamples do exactly that when run from an IPv4 host), and resolvers routinely serve A records over IPv6 transport. The record describes the target address family, not the lookup's. - Happy Eyeballs masks broken AAAA. Apps that "feel slow" sometimes have a broken AAAA: IPv6 gets the first connection attempt; if it does not complete within the ~250ms Connection Attempt Delay (RFC 8305 §5), IPv4 kicks off and the client takes whichever succeeds first. A consistently losing IPv6 path means every connection pays that delay. Use
digfor both records and verify reachability withping -6(ping6on older systems) before publishing. - Reverse zones for IPv6 are painful. See the ip6.arpa breakdown: 32 single-character labels per address.
- EDNS / response size. A response carrying multiple AAAA records can exceed the classic 512-byte UDP limit faster than A. EDNS0 raises the limit; if EDNS is stripped en route, large responses get truncated and clients retry over TCP (
tc=1flag). See wireshark-dns-filters for EDNS capture filters. - Proxied records. When a managed DNS provider proxies a record, querying AAAA returns the provider's anycast IPv6 addresses, not what you configured in your zone.