• If you are still using CentOS 7.9, it's time to convert to Alma 8 with the free centos2alma tool by Plesk or Plesk Migrator. Please let us know your experiences or concerns in this thread:
    CentOS2Alma discussion

Resolved Slave DNS servers and Plesk - My feedback on using external DNS servers

Denis Gomes Franco

Regular Pleskian
Hey everyone, not sure if I should post this under Resources or another thread - admins, feel free to move this post wherever it's more appropriate.

I would like to just write down my experiences on using external DNS services. It's been quite an adventure and I would like to share it with the community in the hopes this will help someone with the same problems. Some of you may have seen my previous posts while working on these issues. So here is the situation:

I run multiple Plesk servers. I undestand Plesk comes with its own DNS server and I could just point all my domains to each server according to where it's hosted, but that would make maintenance problematic in the long run IMO. So I decided early on that I would try to use an external DNS server, so I could have a single set of NS servers hosting all domains without regards to where it's hosted.

So I found the Digital Ocean DNS extension. Looks promising, but there were some shortcomings:
- Digital Ocean limits the number of domains in your account. Sure, it's free so I can't expect much from them. But I had to repeatedly ask them for a domain raise, which they complied happily. I even asked them about paying for the service, which is only fair, but they refused.
- Sometimes things would get out of sync. I would add some record or update something, and it would not get reflected into Digital Ocean. This would also cause problems with Let's Encrypt since it relies on DNS records. Sometimes I would have to "delete" the domain from DO and then add it again. It worked most of the time but sometimes things would get stuck for no apparent reason.
- The extension is way slow if there are lots of domains (over 100 I guess). It would also make it very slow to update DNS records.

But I stuck with it for quite some time as it was my only option.

For some time I played with Webmin as well. Didn't knew about it, looked very cool: a control panel specifically designed for controlling Linux services - such as BIND! I set up a small server but couldn't make it work or sync the domains correctly, so I gave up on that idea.

Recently I got wind of the Route 53 extension. Looked promising but it is quite expensive: 50c per domain up to 25 domains, then 10c per domain. For a few domains that is rather cheap but when you have hundreds things start to accumulate really fast. But I decided to go with it. Set everything up, white-labeled the thing, created a delegation set and...

Couldn't sync because Amazon limits you to 100 domains. Had to ask for a raise, which they promptly complied. Then I got to sync all my domains.

All is fine and dandy, until it weren't. For some reason new domains werent' syncing to the Route 53 service. After fiddling for a while without a solution I decided to manually add the domain to the Route 53 service. Then I found out that now Plesk cannot sync records, as it was not created in the same delegation set as the previous domains.

More research went underway and I found out that I cannot manipulate delegation sets with the GUI, so I had to install Amazon's CLI tool. Fine... added the domain to the correct delegation set and... still won't sync.

So I decided to brute-force things and asked the extension to delete all my domains and sync them again. Now it worked. But later I would find out about a nasty surprise: Amazon charges you when a domain is *created*, so I was slammed with another bill for my domains.

Anyways, things worked for a while, until they didn't anymore. Argh! Domains stopped syncing again, new entries wouldn't get pushed even though the Route 53 extensions says that all domains were updated when I hit the Mass Update button. Not sure what to do at this point, I don't want to have to create entries manually.

So I decided to give it another go to my own DNS server. Got a tutorial on how to install BIND, did it, installed the Plesk Slave DNS Manager extension, set up keys and RNDC and... it synced the first time, but new domains weren't getting synced. Again. Ugh! I deleted that test server really fast.

Then I decided to give the Webmin idea one more try. Installed it, set up the keys and RNDC and... voilà! Looks like I FINALLY made my idea work as intended. Weird thing is, I did the same steps as before when I tried Webmin for the first time, but this time it worked correctly. Not sure why, but anyway... The Slave DNS extension is syncing records in real time - I still have Route 53 installed on the servers and it is still not syncing new domains.

So that's my journey on setting up some DNS servers, all because I wanted to have a 'white label experience' with NS. And quite much cheaper than Route 53.

Let's just hope that this keeps on working as intended...
 
Also: I looked at some other external DNS services, some quite cheaper than Route 53 even, but the problem was integrating them into Plesk. Most of them didn't have a ready-to-use extension, just one (I think) had a Cpanel module ready to go, and all of them have some kind of API, but I didn't wanted to hire a programmer to create an extension for me.
 
My solution to your initial problem was to have a seperate Plesk server for DNS.
Have Plesk DNS disabled on all the hosting servers.
Install Bind9 on 1 of the other Plesk servers and configure it as a slave server.

I have this setup for years and it has many advantages.
Only recently I ran into a disadvantage regarding Plesk's Wildcard Letsencrypt certificates.
Plesk needs to control DNS for that to manipulate the _acme-challenge.<domain> record.
I solved this by using DNS-delegation for that record.
You would have the same problem in your setup.
 
Last edited:
Hey @mr-wolf, thanks for your input. I tried running BIND only but ran into some minor problems. I thought it would work, people say that it is not very hard to set up a private server.

Anyway, in my setup I have the Plesk servers acting as primary DNS servers but the Slave DNS extension is syncing everything to the main DNS server. I'm quite surprised that the syncing seems to be happening in real time so I don't have issues with Let's Encrypt... for now...
 
The issues regarding with LetsEncrypt are limited to the wildcard certificates only.
You have that issue too, but apparently you're not using wildcard certificates.

The Plesk servers running the website depend on the Plesk DNS extension for those certificates.

Whenever the certificate starts to expire, Plesk creates a new _acme-challenge.<domain> on the DNS of the webserver.
For this you, of course, need to have the Plesk-DNS-Extension running.
But that's not enough, because LetsEncrypt doesn't go to that server. It goes to your centralized DNS-server.
For that you need to use an _acme-challenge.<domain> NS-record to delegate DNS for that specific subdomain.

If you want to use that feature you bump into that same problem.
It's because you, like I, chose to use a single authoritative for all the domains. It doesn't depend on how you implemented that.


If you need to start from scratch it is much cheaper to rent a complete server with Plesk on which you will be running DNS.
If you use rented servers, you should rent that server from another ISP as you want that server to be running on a complete other infrastructure.
Then configure a slave DNS-server on one of the Plesk servers you use for hosting clients.
 
Last edited:
Has this situation improved at all? I really want DNS seperated out from web servers as migrating when the OS goes EOL is a real pain.
 
this is very close to answering my question completely and as much as I want to wait I'm setting-up a new server today.
What I understand is that I only want DNS on 1 Plesk server. The install I'm working on I'm removing Bind9 from the setup.
I'll update my results.
 
Back
Top