DNS Propagation & Troubleshooting
DNS Propagation and Common Issues
After changing DNS records, the changes need to propagate across the global DNS system. Understanding how this works helps you troubleshoot issues faster.
How DNS Propagation Works
When you change a DNS record, the old record is cached by recursive resolvers worldwide. Each record has a TTL that tells resolvers how long to cache it. Propagation is not a push — resolvers simply stop using the old cached record when the TTL expires.
Checking DNS Records
Use dig to query specific nameservers:
# Query your authoritative nameserver directly
dig @ns1.yourdns.com example.com A
# Query Google's public DNS
dig @8.8.8.8 example.com A
# Query Cloudflare's DNS
dig @1.1.1.1 example.com A
# Short format
dig +short example.com A
If your authoritative nameserver shows the new IP but public resolvers show the old one, propagation is still in progress.
Checking Nameservers
dig NS example.com +short
This shows which nameservers are authoritative for your domain. If you recently changed nameservers (e.g., to Cloudflare), this change itself takes up to 48 hours.
Flushing Local DNS Cache
Your local machine caches DNS too. Flush it to see updated records immediately:
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# Windows
ipconfig /flushdns
# Linux (systemd-resolved)
sudo systemd-resolve --flush-caches
Common DNS Issues
| Issue | Symptom | Fix |
|---|---|---|
| High TTL on old record | Old IP still resolves after hours | Lower TTL to 300 before making changes, wait for old TTL to expire |
| Wrong nameservers | Changes not taking effect at all | Update nameservers at your registrar |
| CNAME at root | MX records break, email stops | Use A record at root, CNAME only for subdomains |
| Conflicting records | Intermittent resolution | Remove duplicate A or AAAA records |
Pro Tips
- Lower TTL 24 hours before migration — set TTL to 300 seconds so the old record expires quickly
- Use online propagation checkers — tools like whatsmydns.net show DNS status across multiple global locations
- Test with specific resolvers — different ISPs have different cache behavior