AAAA Record Troubleshooting: A Diagnostic Workflow That Actually Works
Most "IPv6 is broken" reports fall into one of a handful of recognizable patterns. Knowing which pattern you're looking at cuts a vague debugging session down to a specific, targeted fix.
Start With a Clear Diagnosis, Not a Guess
"IPv6 doesn't work" is rarely specific enough to actually fix. The underlying cause is almost always one of a small set of well-understood patterns — a genuinely missing AAAA record, a record that exists but points at unreachable infrastructure, a caching artifact making a fresh change look unpropagated, or a Happy-Eyeballs-masked failure that only shows up under specific conditions. This guide works through each pattern in the order you should actually check them.
Pattern 1: The Lookup Returns Nothing
This is the single most common "problem" reported, and it's usually not a problem at all — it means the domain genuinely has no published AAAA record, which is entirely normal for IPv4-only infrastructure. Confirm with a direct check using AAAA Record Lookup; if it returns empty while the same domain's A record resolves fine, that domain is simply IPv4-only right now, by design or by current infrastructure limitation. This only becomes an actual bug if you specifically expected that domain to have IPv6 enabled — in which case the fix is adding the record, not debugging DNS resolution itself.
Pattern 2: The Record Resolves, But the Site Won't Load Over IPv6
This is where real troubleshooting begins, because the DNS layer is confirmed working and the problem sits somewhere in the actual connection path. Work through these in order:
Confirm the Server Is Actually Listening on That Address
A published AAAA record doesn't guarantee the service behind it is bound to and listening on that specific IPv6 address — check the server's own network configuration directly.
Check Firewall and Security Group Rules
Confirm IPv6 traffic on the relevant port is explicitly permitted — many firewalls default IPv6 rules separately from IPv4, and a rule existing for one doesn't imply it exists for the other.
Test From a Genuinely IPv6-Connected Network
Confirm your own testing network actually has working IPv6 connectivity — testing from a network without real IPv6 support will produce a false negative that looks identical to a server-side problem.
Check for CDN/Proxy-Level IPv6 Settings
If the domain sits behind a CDN or reverse proxy, confirm IPv6 support is actually enabled at that layer — many treat it as an explicit opt-in rather than an automatic default.
Pattern 3: A Change Looks Live From One Location, Not Another
This is almost always a caching artifact, not a real inconsistency. Different resolvers around the world cache DNS answers independently, each honoring the TTL of whatever answer they last received. A resolver that queried five minutes before your change will keep serving the old answer until that specific cache entry's TTL expires — meanwhile a resolver that hasn't cached anything yet, or whose cache just expired, will show the new value immediately. This isn't a bug; it's expected, standard DNS caching behavior, and the fix is simply waiting out the previous record's TTL, or lowering TTL in advance next time if you anticipate a change.
Pattern 4: The Site "Works" But You Suspect IPv6 Is Actually Broken
This is the trickiest pattern to catch, because Happy Eyeballs (RFC 8305) is specifically designed to hide exactly this kind of partial failure from end users — it races IPv4 and IPv6 connection attempts in parallel and silently uses whichever succeeds first, falling back to IPv4 within a few hundred milliseconds if IPv6 stalls. A working user experience tells you nothing conclusive about IPv6 health specifically. To actually confirm, force an IPv6-only connection attempt directly — most command-line tools support this — bypassing Happy Eyeballs' automatic fallback entirely to see the IPv6 path's real, unmasked behavior.
| Tool | IPv6-Forced Command |
|---|---|
| curl | curl -6 https://example.com |
| ping (Linux) | ping6 example.com or ping -6 example.com |
| ping (Windows) | ping -6 example.com |
| Browser (manual) | Connect directly to the bracketed IPv6 address, e.g. https://[2606:4700::1111] |
Pattern 5: Reverse DNS or Email Deliverability Problems
If the symptom is specifically outbound mail from an IPv6 address landing in spam or being rejected, the cause is very often a missing or incorrect PTR record under ip6.arpa, rather than anything wrong with the AAAA record itself. Many receiving mail systems treat missing reverse DNS as a meaningful risk signal. Verify with Reverse DNS Lookup, and if it's missing, coordinate with whichever party actually controls your IP block's reverse-zone delegation — often your ISP or hosting provider, not your own DNS management panel.
Diagnostic Decision Table
| Symptom | Most Likely Cause | Next Step |
|---|---|---|
| Lookup returns no AAAA records | Domain is IPv4-only (often expected, not a bug) | Confirm whether IPv6 was actually supposed to be enabled |
| Record resolves, connection fails | Server not listening, or firewall blocking | Check server bind config and IPv6 firewall rules |
| Change appears inconsistent across locations | DNS caching (TTL not yet expired everywhere) | Wait out the previous TTL, or lower TTL before future changes |
| Site works, but IPv6 health uncertain | Happy Eyeballs masking a slow/broken path | Force an IPv6-only connection test to see the real behavior |
| Outbound mail issues on IPv6 | Missing or incorrect PTR record | Verify reverse DNS, coordinate with IP block owner if missing |
Common Mistakes That Slow Down Troubleshooting
| Mistake | Why It Wastes Time |
|---|---|
| Assuming an empty result is always an error | Sends you looking for a "broken" DNS config that was never actually broken |
| Testing from a network without real IPv6 connectivity | Produces a false negative indistinguishable from a genuine server-side failure |
| Trusting a working browser experience as proof IPv6 is healthy | Happy Eyeballs specifically hides this kind of partial failure from the user |
| Not checking TTL before assuming a change failed | A perfectly successful DNS change can still look "not applied" for a caching-driven window |
| Conflating DNS resolution with actual connectivity | They're two separate, independently-failing layers — always check both explicitly |
Related Tools
Start every diagnosis with a live check using AAAA Record Lookup. Confirm global propagation status with DNS Propagation Checker, check reverse DNS with Reverse DNS Lookup, or review the complete record set with DNS Lookup. For background on the record itself, see AAAA Record Explained, and for how dual-stack behavior specifically factors in, read Dual Stack DNS.
FAQ
curl -6 or ping -6, which bypasses the automatic IPv4 fallback entirely.ToolsNovaHub tools are built and independently maintained with a focus on accurate, no-signup network and security utilities. Spotted an error? Let us know.
📋 Related Tools & Guides Comparison
| Resource | Type | Link |
|---|---|---|
| AAAA Record Lookup | Tool | Open Tool → |
| DNS Propagation Checker | Tool | Open Tool → |
| Reverse DNS Lookup | Tool | Open Tool → |
| Dual Stack DNS | Guide | Read Guide → |