Domain DNS Resolution Troubleshooting: Common Causes and Solutions for Website Inaccessibility
"Website won't load" is the most common complaint site owners hear. The error messages vary — the browser says "server not found," requests time out intermittently, or the site works in some regions but not others — yet most of the time the root cause sits in DNS resolution. DNS is the internet's phone book: it translates example.com into the server's IP address. If this step fails, HTTP, HTTPS, and email all fall apart before they even begin.
Reference: Cloudflare's official DNS explainer https://www.cloudflare.com/learning/dns/what-is-dns/
How DNS resolution works
A full resolution typically passes through local caches, a recursive resolver, the root servers, the TLD servers, and finally the authoritative name servers:
- The browser checks its local DNS cache first (browser, OS, and router caches).
- On a cache miss, the request goes to a recursive resolver (usually your ISP's, or a public one like 8.8.8.8).
- The resolver queries the root servers, then the
.comTLD servers, and finally finds the domain's authoritative NS servers. - The authoritative server returns the A/AAAA/CNAME records, and the resolver caches the result until the TTL expires.
Latency, timeouts, or wrong data at any hop show up as "the site won't open." Once you understand this chain, troubleshooting becomes a matter of verifying each link in order.
Common DNS fault types
| Fault type | Symptoms | Common causes |
|---|---|---|
| Domain does not resolve | Browser reports server not found, DNS_PROBE_FINISHED_NXDOMAIN | Record missing, misspelled, or not yet active |
| Resolves to the wrong IP | You land on the wrong site or hit a certificate error | Wrong A record, stale IP left over from a CDN switch |
| Slow resolution | Slow first paint, long spinner | Slow recursive resolver, slow authoritative response |
| Partial regional access | Works on mobile, fails on broadband, or differs abroad | Incomplete propagation, regional resolution policy |
| Intermittent failures | Works sometimes, not others | TTL too short, upstream flapping |
Diagnostic tools
Work through the commands below from nearest to farthest to pin down which hop is failing.
# 1. Basic lookup: confirm the record exists and the value is correct
nslookup example.com
nslookup -type=MX example.com # check mail records
nslookup -type=NS example.com # check authoritative servers
# 2. Skip local cache and query a public DNS to rule out local/ISP caching
dig example.com @8.8.8.8
dig +short example.com A
# 3. WHOIS: confirm the domain status and that the NS records were taken over correctly
whois example.com
# 4. Connectivity checks (rule out a down server)
ping -c 4 example.com
curl -sv https://example.com
- In
digoutput,status: NOERRORmeans success,NXDOMAINmeans the domain does not exist, andSERVFAILmeans the authoritative server is failing. - Online tools like whatsmydns.net query from global vantage points, which is ideal for telling whether it's just "not propagated everywhere yet."
A typical troubleshooting walkthrough
Say a user reports that example.com won't load. Run through this sequence:
- Start with
nslookup example.comon your machine — if it returns NXDOMAIN, check whether the record was actually added and whether the hostname is right (many beginners treatexample.comandwww.example.comas the same thing and only add an A record without thewwwentry). - If your machine can't resolve it but
dig example.com @8.8.8.8can, the problem is local caching or your ISP's resolver — clear the cache or switch DNS. - If both resolve but the site still won't open, use
curl -svandpingto rule out the server and network layer. - If the site loads but email is bouncing, check the MX record and whether SPF/DKIM/DMARC are set up.
Common issues and solutions
| Issue | Solution |
|---|---|
| Records changed but not live yet | New records usually propagate within 5 minutes to an hour; only NS changes take 24-48 hours. Verify ahead of time with dig @new-ns |
| NS records point to the wrong servers | Log into your registrar and point NS to the two name server sets your DNS host provides |
| TTL set too long | Lower TTL to 300 seconds 48 hours before a migration, then raise it back afterward |
| DNSSEC misconfiguration | Check that the DS record matches the public key signature; a mismatch makes the whole domain return SERVFAIL |
| Stale IP after a CDN switch | Confirm the CNAME/A record was updated, then compare old and new addresses with dig +short |
Preventive measures
DNS faults can't be eliminated entirely, but you can slash the odds:
- Use a reliable managed DNS service provider (Cloudflare, Alibaba Cloud DNS, DNSPod, etc.) instead of hosting NS on a single point.
- Keep two or more NS records spread across different networks.
- Keep normal records at a TTL of 600-3600 seconds; don't fiddle with it casually.
- Enable monitoring (UptimeRobot, or a scheduled
digon your own box) so resolution anomalies page you immediately. - Enable DNSSEC for security to block DNS hijacking — but validate the DS record in a staging environment first, or a bad one can make the whole domain unresolvable.
16IDC Takeaway
Domain resolution looks like a small thing, but it's the foundation of site availability. Treat your records like code: snapshot the old values before every change, verify both ends with dig afterward, and run DNSSEC plus resolution monitoring on important domains. That way a fault gets localized to a specific hop within ten minutes instead of a 2 a.m. staring contest with the control panel.