Domain Name System (DNS) configurations are the foundation of internet connectivity, mapping user-friendly hostnames to server IP addresses. In Plesk panel environments, DNS zones are managed dynamically, coordinating with local DNS server daemons (such as BIND or PowerDNS). However, configuration changes, nameserver propagation delays, or local DNS zone conflicts can cause websites and mail routing to go offline. When Plesk DNS fails, visitors are greeted with "Server DNS Address Could Not Be Found" errors, and local updates fail to propagate across global DNS systems.
For systems administrators, troubleshooting DNS issues requires checking local resolver zones, verifying service daemons, and auditing zone files. In this guide, we will analyze Plesk's DNS architecture, diagnose zone synchronization errors, and walk through the SSH commands needed to rebuild DNS records and resolve propagation delays.
1. Plesk DNS Architecture: BIND and PowerDNS
Plesk supports two main DNS server engines: BIND (Berkeley Internet Name Domain) and PowerDNS. BIND is the traditional default engine, storing zone configurations in text files. PowerDNS is a database-driven alternative that stores zone records directly in the Plesk system database, providing fast lookups and high reliability.
When you update a DNS record in Plesk, the control panel writes the change to its database and triggers a sync task to update the local DNS daemon’s zone files. If this synchronization fails (e.g., due to file permission issues or database locks), the local DNS server will continue serving outdated records, resulting in zone conflicts and propagation delays.
2. Step-by-Step DNS Diagnostics via SSH
To troubleshoot DNS issues in Plesk, log into your server via SSH as the root user. Run these diagnostic commands to audit configurations, verify service daemons, and sync zone files.
Step 2.1: Verify Local DNS Service Status
Check if your DNS server daemon is active and running on port 53. Run the appropriate command based on your DNS engine:
systemctl status named # For BIND DNS setups
systemctl status pdns # For PowerDNS setups
If the service is stopped or failing, check the service log files to identify the cause of the failure:
journalctl -u named -n 50 # View recent BIND logs
Step 2.2: Test DNS Resolution Locally
Use the dig command to query your local DNS server directly for a domain (e.g., domain.com), verifying if it resolves correctly locally before testing global propagation:
dig @127.0.0.1 domain.com A
If the query returns a connection timeout or fails, the DNS service is not listening on the loopback interface or is blocked by local firewall configurations. Verify that port 53 is open and listening in your server firewall rules.
Step 2.3: Rebuild and Sync DNS Zones
If your local DNS daemon is running but serving outdated records, use Plesk's CLI utilities to force a complete synchronization and rebuild your DNS zone files:
# Rebuild DNS configurations for all domains
plesk bin dns --rebuild-all
# Sync DNS zones with database records
plesk db "SELECT name FROM domains" | grep -v name | while read dom; do plesk bin dns --sync $dom; done
These commands sync Plesk database records with the DNS daemon's active configuration, updating and resolving zone conflicts.
Step 2.4: Trace Global DNS Propagation
If local resolution is correct but visitors cannot access the site, verify your domain's nameserver delegation. Query the root nameservers using dig to trace the DNS resolution path:
dig domain.com NS +trace
Ensure the delegated nameservers returned match your server's configured nameservers. If they differ, update the nameserver delegation at your domain registrar and allow 24 to 48 hours for global DNS propagation to complete.
3. Plesk DNS Troubleshooting Matrix
| DNS Symptom / Error | Common Root Cause | Resolution Action |
|---|---|---|
| Local zone record mismatch | Plesk database and BIND configuration file sync failure | Run plesk bin dns --rebuild-all to sync records |
| DNS query times out globally | Port 53 (TCP/UDP) blocked in firewall rules | Open port 53 in firewall configurations |
| DNS resolves locally but not globally | Incorrect nameserver delegation at domain registrar | Verify NS delegation with dig +trace; update registrar settings |
Frequently Asked Questions (FAQ)
What is the difference between BIND and PowerDNS in Plesk?
BIND stores DNS zone records in flat text files that must be loaded into memory, which can require reloading when changes are made. PowerDNS stores zone records directly in a database, allowing for dynamic updates without service reloads.
How long does DNS propagation take after updating records in Plesk?
Standard DNS record updates (such as A or CNAME changes) propagate within the time set by the record's TTL (typically 1 to 4 hours). Nameserver delegation changes at the registrar level can take 24 to 48 hours to propagate globally across all DNS resolvers.
Can I configure master/slave DNS synchronization in Plesk?
Yes. Plesk supports master/slave DNS configurations. You can configure Plesk as the master server and set up secondary external DNS servers to automatically transfer zones using AXFR transfer requests when updates are made.