Plesk

Slave DNS Server

This section describes how to integrate Plesk with an external
Linux-based slave DNS server.

The integration can be performed using the Slave DNS Manager
extension available in the Extensions Catalog in the Plesk GUI.

The extension works according to the following algorithm:

  1. It registers a slave server in the extension settings.
  2. The slave server’s IP address is automatically added to the list of
    addresses allowed to transfer domain zones from the Plesk server.
  3. When you create, modify, or delete an active domain zone in Plesk,
    Plesk creates, modifies, or deletes the domain zone in the local DNS
    service.
  4. The script starts and receives the domain name and the command to
    create, modify, or delete a domain zone.
  5. The script initiates the rndc command for each connected slave
    server.
  6. Slave servers synchronize domain zones with the ones on the Plesk
    server.

Note: The following instructions are intended for Debian Linux. The
sequence of steps on other Linux systems is the same; however,
commands, and paths to configuration files might be different.

Note: The server can have only one of the following extensions installed at
a time: Slave DNS Manager, Amazon Route 53, or DigitalOcean DNS. All
of them manage DNS and will conflict if installed together.

To set up a slave DNS server, do the following:

  1. Install BIND.

    apt-get install bind9
    
  2. Allow creating new zones with rndc. In the
    /etc/bind/named.conf.options file, in the options {}
    directive, type allow-new-zones yes;

  3. Specify the IP address from which control instructions should be
    accepted and set BIND to listen on all accessible network interfaces.
    In the /etc/bind/named.conf.local file, type:

    controls {
        inet * port 953 allow { <plesk_ip>; <another_plesk_ip> 127.0.0.1; };
     };
    
  4. Restart the BIND service by issuing the following command:

    invoke-rc.d bind9 restart
    
  5. Be sure to remember the secret key located in the
    /etc/bind/rndc.key file:

    key "rndc-key" {
        algorithm hmac-md5;
        secret "vwOxonI4n4CVRUhKAOAAIA==";
     };
    

That’s it, the slave name server is set up.

Note: If your Plesk server is behind NAT, the slave DNS server(s) must be
outside of it.

After that, install the extension on the Plesk server. In the extension
settings, add the slave server and specify its IP address and the secret
key. The extension will create a configuration file with the slave
server settings for the rndc utility. From now on, Plesk will
automatically transfer all created, modified, and deleted zones to the
slave server by executing the following commands for each slave server:

Creation

/usr/sbin/rndc -c slave.config addzone example.com '{ type slave; file "/var/lib/bind/example.com"; masters { <plesk_ip>; }; };'

Modification

/usr/sbin/rndc -c slave.config refresh example.com

Deletion

/usr/sbin/rndc -c slave.config delzone example.com

Now, when you add a domain in Plesk, a DNS zone is automatically created
on the slave server as well as on the master server.