We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more →

How To Setup DNS Slave Auto Configuration Using Virtualmin/Webmin on Ubuntu

Posted Jun 17, 2013 49k views DNS Ubuntu


This tutorial will show you how to install Virtualmin/Webmin on an Ubuntu cloud server and how to setup a DNS Master and a DNS Slave server. The setup covers all required steps.

Please note that this setup is for the Ubuntu cloud server, however it could possibly work for other cloud server OS distress.


  1. Requirements
  2. Notes
  3. First steps
  4. Installing the primary server
  5. Installing the secondary server
  6. Configure Cluster and DNS
  7. Pointing the main domain to DigitalOcean's name servers
  8. Other options


  • Two Ubuntu 12.04 LTS (x32/x64) cloud servers
    • Primary server (minimum: 1GB, 1CPU, 30SSD; optimal: up to your needs)
    • Secondary server (minimum: 512MB)
  • Domain name - Set its name servers to DigitalOcean's name servers. (Maybe you can do this after server install because of the technical check.)


Virtualmin is a powerful web hosting control panel. You can manage your virtual domains, mailboxes, and databases. It is based on Webmin, a powerful control panel, which you can manage your server with.

Important: You cannot manage your main domain's DNS as we use DigitalOcean's name servers, so you have to setup your DNS records on the DigitalOcean control panel. If you create a virtual server in Virtualmin, you HAVE TO disable DNS.

First Steps

Let's start. Create two droplets (cloud servers). For the first usage, I recommend the following configurations:

  • Primary server
    • 1GB RAM
    • 1 CPU
    • Ubuntu 12.04 LTS x64
    • server1.example.com
    • Virtualmin
  • Secondary server
    • 512MB RAM
    • 1 CPU
    • Ubuntu 12.04 LTS x64
    • server2.example.com
    • Webmin

If you don't know how to create cloud servers, please refer to this article.

Please note: Virtualmin only works with LTS versions. (For other OS, please check the compatibility here.)

In this tutorial I use the hostname server1.example.com with the IP address and the hostname server2.example.com with the IP address These settings might differ for you, so you have to replace them where appropriate.

Setting up domain DNS (optional)

Now go to the DNS tab in the Control Panel. You will see two PTR records already created. Click on Add Domain. Enter example.com in the Name field, and Select your primary server and click on Create Domain.

Adding domain

You have to create Address records to have server1.example.com and server2.example.com as your server hostnames. Click on Show in the DNS section next to your domain. Click on Add a new A record and enter server1 in the Name field and in the IP address field. Do this for server2 as well.

Optional: You can create Address records to have ns1.example.com and ns2.example.com keeping with the convention of naming name servers nsN.domain.tld.

Adding A records

You don't have to point the domain to DigitalOcean's name servers. You can use your provider's name servers for the main domain. This will be discussed later.

Other notes: This tutorial assumes that you are logged in with root user. If not, please get root permissions, because I omit the sudo:

sudo su

Installing the Primary Server

This server will be our primary DNS and Virtualmin server. The first step is to edit the hosts file:

nano /etc/hosts

Make it look like this:       localhost   server1.example.com        server1 ns1.example.com server2.example.com        server2 ns2.example.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Make sure your system has a fully-qualified domain name:

hostname -f

You should see server1.example.com

Now download the script and install Virtualmin:

wget http://software.virtualmin.com/gpl/scripts/install.sh
chmod +x install.sh

Answer 'y' for the asked question. There sould be no more questions. After the installation you can login here:



Login with root. You will see a Post-Installation Wizard. For now just click next until you see this:

Post-Installation Wizard

Make the settings look like the picture (You can also enter server1.example.com as primary, and server2.example.com as secondary DNS). If you confirmed that DNS has refreshed correctly, you can omit checking the checkbox.

Keep clicking next until the end of wizard.

Installing the Secondary Server

This server will be our secondary DNS and Webmin server

The first step is to edit the hosts file again:

nano /etc/hosts

Make it look like this:       localhost server2.example.com        server2 ns2.example.com   server1.example.com        server1 ns1.example.com

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Add the Webmin repositories to sources.list and install Webmin:

echo "deb http://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list
echo "deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list
wget -O - http://www.webmin.com/jcameron-key.asc | apt-key add -
apt-get update
apt-get install -y webmin

Install BIND9 DNS server:

apt-get install bind9

After the installation you can login here:



Configuring Cluster and DNS

Configuring Webmin Server

Go back to the Virtualmin server. Log in with root and go to the Webmin section. Browse Webmin>Webmin Servers Index.

Webmin Servers Index

Click Register a new server.

Enter server2.example.com as the hostname of your slave server.

Select Ubuntu OS as OS type.

Select a Link type of Login via Webmin with username, and enter the authentication details for your root account.

Change Make fast RPC calls? to Yes.

Click Save.

Edit Server

Configuring Secondary DNS

Now go to Servers>BIND DNS Server and click on Cluster Slave Servers.

In the Add server drop-down menu, select your slave server (if it's the only server you've added, you won't have to select it, as it will already be selected).

Set the Create secondary on slave when creating locally? option to Yes.

If you have already created any domains on your Virtualmin server, set the Create all existing master zones on slave? option to Yes.

If you entered ns2.example.com in the Post-Installation Wizard as secondary name server, then change the Name for NS record option to textbox and enter it.

Click Add server and return to the Module Index.

Click Apply Configuration in the right corner.

Cluster Save Server

Setting the Master IP Address (optional)

By default, Virtualmin will use the IP address that the master server's hostname resolves to as the IP that the slaves should contact to transfer records. However, on some systems this IP is, which will not work. If you edited the hosts file at the beginning of the tutorial this should not be a problem, but I'll show you how to solve this.

Go to Servers>BIND DNS Server, and click on Module Config.

In the Cluster slave servers section, find the Default master server IP for remote slave zones field.

Enter the IP address of your master server.

Click Save. Any DNS zones created from now on will use that IP.

Click Apply Configuration in the right corner.

Please note: that it won't update existing DNS zones.

Module Config

Basic Setup of DNS server

There are some more options that you should check. Go to Servers>BIND DNS Server and click on Zone defaults

Set the Default email address to an existing email address (Some technical check requires to set an existing email address).

Set Default nameserver for master domains to ns1.example.com (optional).

Click Apply Configuration in the right corner.

Zone Defaults

Create new DNS zone

Now it's time to test our settings. Click on Create master Zone. Enter your domain name.

Check your settings (By default, the IP address for address records will be the primary server's IP address).

Click Create.

Check your master zone on primary and slave zone on the secondary server.

Create Master Zone

Pointing the Main Domain to DigitalOcean's Name Servers

The most common problem is that in some cases there is a technical check which requires an email address. That email address is set in the DNS zone file, which is hostmaster@domain.tld, postmaster@domain.tld, etc. by default. Some domain providers let you edit this email address, but most of them do not.

You can solve this problem by pointing the domain to DigitalOcean's name servers. Of course you can't do that immediately. After completing this tutorial you have to create a virtual domain in postfix module and create an alias for hostmaster@domain.tld or you can create a virtual server in Virtualmin for domain example.com, which will create these aliases for you, but remember to disable DNS zone.

Other Options

If you want only DNS management, you can install two Webmin instances instead of Virtualmin and Webmin, but this way you have to create DNS records manually. It is the same as Webmin installation above, but you have to do it twice. From Configure Cluster and DNS the steps are the same.

You can use your secondary DNS server for more than one Virtualmin server. In this case the primary DNS server is the virtualmin server, the secondary is the webmin server. This means that you have several Virtualmin servers which are primary DNS servers and you have only one secondary server.

You can use two Virtualmin server as DNS servers. In this case each virtualmin server wil conatin the master zone for the domains added to them. This means that if you create a virtual server in virtualmin1, then virtualmin1 will be the primary DNS server for that domain.

All done!

You have successfully finished this tutorial.


Creative Commons License