Your website or email has stopped working after you changed records: what to check.
Contents
- Diagnostic method
- Diagnostic tools
- Command line
- Online tools
- In cPanel
- Problem 1: The domain does not open
- Symptoms
- Diagnosis
- Cause 1.1: The A record is missing
- Cause 1.2: The NS records are wrong
- Cause 1.3: The DNS cache
- Cause 1.4: The domain is not registered or has expired
- Problem 2: Email is not working
- Symptoms
- Diagnosing incoming email
- Diagnosing outgoing email
- Email is going to spam
- Problem 3: A subdomain is not working
- Symptoms
- Diagnosis
- Fix
- Problem 4: Slow DNS resolution
- Symptoms
- Diagnosis
- Causes and fixes
- Problem 5: SERVFAIL error
- Symptoms
- Diagnosis
- Causes and fixes
- Problem 6: A wildcard SSL certificate is not working
- Symptoms
- Diagnosis
- Causes and fixes
- Problem 7: DNS changes are not taking effect
- Symptoms
- Diagnosis
- Causes and fixes
- Problem 8: A CNAME is not working
- Symptoms
- Diagnosis
- Causes and fixes
- Problem 9: CAA is blocking SSL
- Symptoms
- Diagnosis
- Fixes
- Problem 10: External DNS is not syncing
- Symptoms
- Fix
- Problem 11: IPv6 (AAAA) is not working
- Symptoms
- Diagnosis
- Fixes
- Useful diagnostic commands
- A full domain check
- Monitoring DNS changes
- Checking all subdomains
- Diagnostic checklist
- Basic checks
- Email checks
- SSL checks
- Subdomain checks
- After DNS changes
- When to contact support
- Preventing problems
- See also
- External links
This is a practical guide to diagnosing and fixing the most common DNS problems in cPanel.
Diagnostic method
When you have a DNS problem, follow a systematic approach:
- Identify the symptom — what exactly is not working
- Isolate the problem — is it DNS, the web server or something else?
- Gather information — logs and test commands
- Test your hypotheses — from the simple to the complex
- Apply the fix — correct the problem
- Check the result — make sure it works
- Document it — write down the solution for the future
Diagnostic tools
Command line
dig (recommended)
# Basic query
dig example.com
# A specific record type
dig example.com A
dig example.com MX
dig example.com TXT
dig example.com NS
# Short answer (the IP only)
dig example.com +short
# Trace (full path)
dig example.com +trace
# Reverse DNS
dig -x 192.0.2.1
# Query a specific DNS server
dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
dig @ns1.example.com example.com
# All records
dig example.com ANY +noall +answernslookup
# Simple query
nslookup example.com
# A specific type
nslookup -type=mx example.com
nslookup -type=txt example.com
nslookup -type=ns example.com
# Via a specific DNS server
nslookup example.com 8.8.8.8host
# Quick check
host example.com
# Detailed information
host -a example.com
# A specific type
host -t mx example.com
host -t txt example.comOnline tools
- WhatsMyDNS.net — global DNS check
- MXToolbox.com — comprehensive DNS, MX and blocklist checks
- DNSChecker.org — DNS propagation check
- IntoDNS.com — detailed analysis of your DNS configuration
- DNS Lookup Tool — multiple queries
- ViewDNS.info — reverse DNS, DNS history
In cPanel
- Track DNS — check DNS records
- Zone Editor — view and edit the zone
- Email Deliverability — check SPF/DKIM/DMARC
- SSL/TLS Status — check SSL and DNS
Problem 1: The domain does not open
Symptoms
- The browser shows “This site can’t be reached”
- “DNS_PROBE_FINISHED_NXDOMAIN”
- “ERR_NAME_NOT_RESOLVED”
- A timeout when trying to open the website
Diagnosis
# Step 1: Check DNS resolution
dig example.com +short
# If nothing is returned - it is a DNS problem
# If an IP is returned - the problem is not DNSCause 1.1: The A record is missing
Check:
dig example.com A +short
# Empty, or NXDOMAINFix:
- Log in to cPanel → Zone Editor
- Click Manage next to the domain
- Look for the A record for the domain
- If it is missing, add it:
- Name:
@orexample.com. - Type: A
- Address: your server’s IP address
- Name:
- Click Add Record
Also add one for www:
www.example.com. 14400 IN A 192.0.2.1Cause 1.2: The NS records are wrong
Check:
# Check the NS records
dig example.com NS +short
# Compare with the NS at your registrar
whois example.com | grep "Name Server"Fix:
- Log in to your domain registrar’s control panel
- Find the Nameservers / DNS section
- Make sure the NS records point to the right servers
- Typical for cPanel:
ns10.hosting-telecom.uk
ns11.hosting-telecom.uk- Save the changes
- Wait for propagation: 24–48 hours
Cause 1.3: The DNS cache
Check:
# Check via different DNS servers
dig @8.8.8.8 example.com +short # Google DNS
dig @1.1.1.1 example.com +short # Cloudflare DNS
dig @your-isp-dns example.com +short # Your ISPIf Google/Cloudflare show the right IP but your ISP does not, the problem is in your ISP’s cache.
Fix:
# Clear the local DNS cache
# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Linux (systemd)
sudo systemd-resolve --flush-caches
# Linux (nscd)
sudo /etc/init.d/nscd restart
# Browser (Chrome)
# Open: chrome://net-internals/#dns
# Click "Clear host cache"Cause 1.4: The domain is not registered or has expired
Check:
whois example.com | grep -i "expir"
# or
whois example.com | head -20Fix:
- Renew the domain registration with your registrar
- After payment, the domain is restored within 24–72 hours
Problem 2: Email is not working
Symptoms
- You are not receiving incoming email
- Sent messages are not arriving
- “User unknown” errors
- Messages are going to spam
Diagnosing incoming email
Step 1: Check the MX records
# Check MX
dig example.com MX +short
# It should show:
# 0 mail.example.com.If there are no MX records:
- cPanel → Zone Editor → Manage
- Add an MX record:
example.com. 14400 IN MX 0 mail.example.com.- Add an A record for mail:
mail.example.com. 14400 IN A 192.0.2.1Step 2: Check that the mail server is reachable
# Check the ports
telnet mail.example.com 25 # SMTP
telnet mail.example.com 587 # Submission
telnet mail.example.com 993 # IMAPS
telnet mail.example.com 995 # POP3S
# Or with nc
nc -zv mail.example.com 25
nc -zv mail.example.com 993
# If you see "Connection refused" - the server is not listeningIf the ports are closed:
- Contact your hosting provider
- Check your firewall settings
- Make sure the mail server is running
Step 3: Check the email accounts
- cPanel → Email Accounts
- Make sure the account exists
- Check the quota (is the mailbox full?)
Step 4: Check Email Routing
- cPanel → Email Routing
- Select the domain
- Make sure the following is selected:
- Automatically Detect Configuration (recommended)
- or Local Mail Exchanger (if the mail is on this server)
Diagnosing outgoing email
Checking the SPF record
# Check SPF
dig example.com TXT +short | grep spf
# It should look something like:
# "v=spf1 a mx ~all"If SPF is missing:
- cPanel → Zone Editor → Manage
- Add a TXT record:
example.com. 14400 IN TXT "v=spf1 a mx ip4:192.0.2.1 ~all"Tuning SPF:
- ~all — soft fail (recommended)
- -all — hard fail (strict, and may block legitimate email)
- include: — add external services (Gmail, Office 365)
Checking DKIM
# Check DKIM
dig default._domainkey.example.com TXT +shortIf DKIM is missing:
- cPanel → Email Deliverability
- Click Manage next to the domain
- In the DKIM section, click Install the DKIM Keys
- The keys are created automatically
Checking DMARC
# Check DMARC
dig _dmarc.example.com TXT +shortIf DMARC is missing:
- cPanel → Zone Editor → Manage
- Add a TXT record:
_dmarc.example.com. 14400 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"Checking blocklists
Use the MXToolbox Blacklist Check:
- Enter the IP address of your mail server
- Check the blocklists
- If you are listed, submit a removal request
Typical blocklists:
- Spamhaus
- SpamCop
- SORBS
- Barracuda
Email is going to spam
Checklist:
- The SPF record is set up correctly
- DKIM is enabled and working
- A DMARC policy is set
- Reverse DNS (PTR) is set up
- The IP is not on a blocklist
- The From address matches the domain
- No spam words in the subject
- The ratio of text to images is reasonable
- There is a way to unsubscribe
Checking email with Mail Tester:
- Go to Mail-Tester.com
- Send a test message to the address it gives you
- Review the score and recommendations
Problem 3: A subdomain is not working
Symptoms
- blog.example.com does not open
- “DNS_PROBE_FINISHED_NXDOMAIN”
Diagnosis
# Check the subdomain's A record
dig blog.example.com A +short
# If it is empty - the A record is missingFix
- cPanel → Domains
- Make sure the subdomain has been created
- Or create a new one:
- Click Create A New Domain
- Enter:
blog.example.com - Specify the Document Root
- Click Submit
- Check the DNS record:
- Zone Editor → Manage
- Make sure there is an A record:
blog.example.com. 14400 IN A 192.0.2.1Problem 4: Slow DNS resolution
Symptoms
- The website loads slowly
- The first visit is slow, and later ones are fast
- dig shows a large Query time
Diagnosis
# Check the DNS response time
dig example.com | grep "Query time"
# Normal: 10-50ms
# Slow: 100-500ms
# Very slow: >500msCauses and fixes
A high TTL on NS records
Check:
dig example.com NS
# Look at the TTL of the NS recordsFix:
- NS records usually have a TTL of 48–72 hours (this is normal)
- Do not lower the NS TTL unless you need to
Slow DNS servers at your host
Fix:
- Use an external DNS service (Cloudflare, Route 53)
- Switch to managed DNS
DNS servers that are geographically far away
Fix:
- Use DNS with Anycast (Cloudflare, Google Cloud DNS)
- Or a CDN with DNS
Problems on your ISP’s side
Temporary fix: Use public DNS servers:
- Google: 8.8.8.8, 8.8.4.4
- Cloudflare: 1.1.1.1, 1.0.0.1
- Quad9: 9.9.9.9
On Windows:
- Control Panel → Network and Internet
- Network and Sharing Center
- Change adapter settings
- Properties → Internet Protocol Version 4 (TCP/IPv4)
- Use the following DNS server addresses
On macOS:
- System Preferences → Network
- Advanced → DNS
- Add the DNS servers
On Linux: Edit /etc/resolv.conf:
nameserver 1.1.1.1
nameserver 8.8.8.8Problem 5: SERVFAIL error
Symptoms
- dig returns SERVFAIL
- The domain resolves intermittently
Diagnosis
# Check with detailed output
dig example.com
# In the HEADER, look at status: SERVFAILCauses and fixes
DNSSEC is set up incorrectly
Check:
# Check DNSSEC
dig example.com +dnssec
# If it shows SERVFAIL - the problem is DNSSECFix:
- If you do not use DNSSEC, turn it off at your registrar
- If you do use it, check the DS records at your registrar
- cPanel → Zone Editor → Advanced → DNSSEC
- Make sure the DS records match
A circular CNAME dependency
An example of a faulty configuration:
www.example.com. IN CNAME blog.example.com.
blog.example.com. IN CNAME www.example.com.Fix:
- Correct the CNAME chain
- A CNAME must point to an A record, not to another CNAME
A problem with the NS servers
Check:
# Check that the NS servers are reachable
dig @ns10.hosting-telecom.uk example.com
dig @ns11.hosting-telecom.uk example.comIf an NS server is unreachable:
- Get in touch with our support team through the contact form
The SOA record is missing
Check:
dig example.com SOAFix:
- The SOA is created automatically by cPanel
- If it is missing, re-create the zone through WHM (this needs root access)
Problem 6: A wildcard SSL certificate is not working
Symptoms
- SSL works for the main domain
- SSL does not work for subdomains
- A “Certificate name mismatch” error
Diagnosis
# Check the certificate
openssl s_client -connect blog.example.com:443 -servername blog.example.com | openssl x509 -noout -text | grep DNS
# Look at the Subject Alternative NameCauses and fixes
A wildcard A record instead of specific ones
The faulty configuration:
*.example.com. IN A 192.0.2.1AutoSSL cannot validate wildcard domains with the HTTP-01 challenge.
Fix: Create a specific A record for each subdomain:
blog.example.com. 14400 IN A 192.0.2.1
shop.example.com. 14400 IN A 192.0.2.1
api.example.com. 14400 IN A 192.0.2.1You need a wildcard certificate
Fix:
- Buy a wildcard SSL certificate
- Or use the Let’s Encrypt DNS-01 challenge (this needs API access to your DNS)
Problem 7: DNS changes are not taking effect
Symptoms
- You changed the A record, but the website still opens from the old server
- dig shows the old IP
Diagnosis
# Check on different DNS servers
dig @8.8.8.8 example.com +short
dig @1.1.1.1 example.com +short
dig @ns10.hosting-telecom.uk example.com +short
# If ns10.hosting-telecom.uk shows the new IP
# and Google DNS shows the old one, the problem is the TTL/cacheCauses and fixes
The old TTL has not expired yet
Check:
# Check the TTL
dig example.com | grep -A1 "ANSWER SECTION"
# Look at the number after the domain (the TTL in seconds)Fix:
- Wait for the old TTL to expire
- Next time, lower the TTL in advance (48–72 hours beforehand)
Working out how long to wait:
- TTL 14400 = 4 hours
- TTL 3600 = 1 hour
- TTL 300 = 5 minutes
Your ISP’s DNS cache
Fix:
- Use a different DNS server (8.8.8.8, 1.1.1.1)
- Or wait for the cache to expire
- Clear your local DNS cache (see above)
The changes were made in the wrong place
Check:
# Check the NS servers
dig example.com NS +shortMake sure that:
- You are changing DNS on the correct NS servers
- The NS records in the zone match the NS at your registrar
- If the NS differ, make the change in the right place
Propagation has not finished yet
Check with WhatsMyDNS:
- Open WhatsMyDNS.net
- Enter the domain
- Select the record type (A)
- See how far the change has spread around the world
Typically:
- 50% in 2–4 hours
- 90% in 12–24 hours
- 100% in 48–72 hours
Problem 8: A CNAME is not working
Symptoms
- The CNAME record has been created, but does not resolve
- dig shows NXDOMAIN
Diagnosis
# Check the CNAME
dig www.example.com CNAME +short
# Check the chain
dig www.example.com +traceCauses and fixes
A CNAME on the domain root (@)
The problem:
example.com. IN CNAME other-domain.com. # WRONG!Fix: A CNAME cannot be used on the domain root. Use an A record:
example.com. 14400 IN A 192.0.2.1A CNAME conflicts with other records
The problem:
www.example.com. IN A 192.0.2.1
www.example.com. IN CNAME other.com. # CONFLICT!Fix:
- Delete the A record and keep only the CNAME
- Or delete the CNAME and keep the A record
A CNAME points to a domain that does not exist
Check:
# If the CNAME points to target.com
dig target.com A +short
# If it is empty - target.com does not existFix:
- Correct the CNAME to point to the right domain
- Or use an A record directly
A CNAME chain that is too long
The problem:
www.example.com. IN CNAME cdn.example.com.
cdn.example.com. IN CNAME cdn2.example.com.
cdn2.example.com. IN CNAME cdn3.example.com.
... (10+ levels)Fix:
- The maximum is 10–16 levels of CNAME (depending on the resolver)
- Simplify the chain
- Use a direct A record where possible
Problem 9: CAA is blocking SSL
Symptoms
- Let’s Encrypt cannot issue a certificate
- A “CAA records forbid issuance” error
Diagnosis
# Check the CAA records
dig example.com CAA +shortFixes
CAA forbids Let’s Encrypt
Check:
dig example.com CAA
# Look at the issue and issuewild tagsFix:
- cPanel → Zone Editor → Manage
- Find the CAA records
- Add Let’s Encrypt:
example.com. 14400 IN CAA 0 issue "letsencrypt.org"
example.com. 14400 IN CAA 0 issuewild "letsencrypt.org"CAA is set on the parent domain
Check:
# CAA is checked up the tree
dig subdomain.example.com CAA
dig example.com CAAFix:
- Add a CAA record at the level where it is blocking
- Or delete the restrictive CAA records
CAA with an empty value (a total ban)
The problem:
example.com. IN CAA 0 issue ";"This forbids ANY certificate from being issued.
Fix:
- Delete this CAA record
- Or replace it with a permissive one:
example.com. IN CAA 0 issue "letsencrypt.org"Problem 10: External DNS is not syncing
Symptoms
- You use Cloudflare, Route 53 or another DNS service
- Changes in cPanel are not taking effect
Fix
If you use external DNS (not cPanel):
- Do NOT change DNS in the cPanel Zone Editor
- Make all changes in:
- The Cloudflare Dashboard
- The AWS Route 53 Console
- Google Cloud DNS
- And so on
If the NS point to Cloudflare:
- All DNS is managed through Cloudflare
- The cPanel Zone Editor has no effect
Check the NS:
dig example.com NS +shortIf it shows cloudflare.com or awsdns.com, you are using external DNS.
Problem 11: IPv6 (AAAA) is not working
Symptoms
- IPv4 works, IPv6 does not
- Some users cannot open the website
Diagnosis
# Check the AAAA record
dig example.com AAAA +short
# Check reachability over IPv6
ping6 example.com
curl -6 https://example.comFixes
The AAAA record is missing
Fix:
- Find out the server’s IPv6 address
- cPanel → Zone Editor → Manage
- Add an AAAA record:
example.com. 14400 IN AAAA 2001:db8:85a3::8a2e:370:7334IPv6 is turned off on the server
Check:
# SSH to the server
ip -6 addr showFix:
- Get in touch with our support team through the contact form to have IPv6 enabled
The firewall is blocking IPv6
Fix:
- Check the firewall rules for IPv6
- Make sure ports 80/443 are open for IPv6
Useful diagnostic commands
A full domain check
#!/bin/bash
# A script for a full DNS check
DOMAIN="example.com"
echo "=== NS Records ==="
dig $DOMAIN NS +short
echo -e "\n=== A Records ==="
dig $DOMAIN A +short
echo -e "\n=== AAAA Records ==="
dig $DOMAIN AAAA +short
echo -e "\n=== MX Records ==="
dig $DOMAIN MX +short
echo -e "\n=== TXT Records (SPF/DKIM/DMARC) ==="
dig $DOMAIN TXT +short
dig default._domainkey.$DOMAIN TXT +short
dig _dmarc.$DOMAIN TXT +short
echo -e "\n=== CAA Records ==="
dig $DOMAIN CAA +short
echo -e "\n=== Query Time ==="
dig $DOMAIN | grep "Query time"
echo -e "\n=== Trace ==="
dig $DOMAIN +trace | tail -20Monitoring DNS changes
# Monitor propagation every 5 minutes
while true; do
clear
echo "=== $(date) ==="
dig example.com A +short
dig @8.8.8.8 example.com A +short
dig @1.1.1.1 example.com A +short
sleep 300
doneChecking all subdomains
#!/bin/bash
# Check a list of subdomains
DOMAIN="example.com"
SUBDOMAINS=("www" "mail" "ftp" "blog" "shop" "api")
for sub in "${SUBDOMAINS[@]}"; do
echo "=== $sub.$DOMAIN ==="
dig $sub.$DOMAIN A +short
echo ""
doneDiagnostic checklist
Use this checklist when you run into problems:
Basic checks
- The domain is registered and has not expired
- The NS records are correct
- The A record exists and points to the right IP
- The local DNS cache has been cleared
- Checked via different DNS servers (8.8.8.8, 1.1.1.1)
Email checks
- The MX records are set up
- The mail server is reachable (ports 25, 587, 993, 995)
- An SPF record exists
- DKIM is enabled
- DMARC is set up
- The IP is not on a blocklist
- PTR (reverse DNS) is set up
SSL checks
- An A record for the domain exists
- An SSL certificate is installed
- No CAA records are blocking it
- For wildcard SSL, specific A records exist for the subdomains
Subdomain checks
- The subdomain has been created in cPanel
- An A record exists for the subdomain
- The Document Root is correct
- SSL is set up for the subdomain (if needed)
After DNS changes
- The changes were made on the correct NS servers
- The TTL has been taken into account (waiting for the old TTL)
- Checked via WhatsMyDNS.net
- Propagation is being monitored
- Functionality has been checked after full propagation
When to contact support
Get in touch with us through the contact form if:
- The NS servers are unreachable
- You need a PTR record (reverse DNS) set up
- There are problems with ports (25, 80, 443)
- The web server will not start
- You need root access to make changes
- You have DNSSEC problems
- You need IPv6 enabled
- You are migrating between servers
- You are recovering from a hack
Preventing problems
- Document your changes — keep a DNS changelog
- Lower the TTL before making changes — 48–72 hours in advance
- Test before you apply — use the hosts file
- Make backups — export the zone regularly
- Monitor DNS — set up alerts for changes
- Use uptime monitoring — UptimeRobot, Pingdom
- Check the domain’s expiry date — set up reminders
- Watch the blocklists — check your IP regularly
See also
External links
Didn’t find the answer? Ask our support team — we’ll help.