SECURITY WARNING: Never run commands you don't understand. Always review code before execution. Use at your own risk.
DNS New Added 26 September 2026

DNS: CNAME and other data (CNAME at the zone apex)

A name may hold a CNAME or it may hold other record types, never both, so a CNAME on the zone apex collides with the SOA and NS records that have to live there. The zone then fails to load, and hosted providers report it as an invalid record rather than as an error in the file.

Quick fix

Read the commands before running them. Anything that restarts a service, deletes data or changes permissions should be tried on a non-production system first.

Quick fix
# The loader names the offending record, so start with it
named-checkzone example.com /etc/bind/db.example.com

# Wrong: the apex already carries SOA and NS
# example.com.   IN CNAME  lb.provider.net.

# Right, depending on what the provider offers at the apex
# example.com.   IN ALIAS  lb.provider.net.     (PowerDNS and similar)
# example.com.   IN A      203.0.113.10         (the address itself)
# Route 53 uses an A record with an AliasTarget, Cloudflare flattens the CNAME

# Subdomains are unaffected, only the apex is special
dig www.example.com CNAME +short

# Check nothing already shares the name before adding a CNAME
dig api.example.com ANY +noall +answer

# TXT records for domain verification at the apex are the usual collision
dig example.com TXT +short

How to diagnose DNS errors

DNS errors are best diagnosed by working down the delegation chain: root, TLD, authoritative nameserver, then the record itself. The most common mistake is testing only through your local resolver, which caches both good and bad answers and hides where the failure actually is. NXDOMAIN means the name definitively does not exist; SERVFAIL means the resolver could not get a valid answer, which is usually a DNSSEC or authoritative-server problem, not a typo.

If the quick fix above does not resolve it, work through these steps. They apply to this whole class of error, not just to this one message, which is usually what saves the time.

  1. Query the authoritative nameserver directly, bypassing all caches: dig @ns1.example.com example.com A. If that answers correctly, you have a caching or propagation issue, not a records issue.
  2. Trace the full delegation with dig +trace example.com. This shows exactly which level of the hierarchy stops returning answers.
  3. Distinguish NXDOMAIN from SERVFAIL from timeout. They have three entirely different causes. Check the status: line in dig output.
  4. For SERVFAIL, test with DNSSEC validation disabled: dig +cd example.com. If that succeeds, the problem is a broken DNSSEC chain, often after a key rollover.
  5. Check TTLs before declaring propagation broken. A record with a 24-hour TTL genuinely will not update for resolvers that cached it, and there is no way to force them.

Tools worth reaching for

  • dig +trace
  • dig @authoritative-ns
  • dig +cd (DNSSEC bypass)
  • kdig
  • resolvectl status

Authoritative references

Primary documentation for this error, worth reading before applying any fix in production.

datatracker.ietf.org bind9.readthedocs.io

Related DNS errors

See all 20 DNS errors →

Browse other categories

Something missing or wrong?

This entry is maintained by hand. If the fix is out of date, incomplete, or you have a better one, email a correction and it will be reviewed.