How to install and configure DNS on Ubuntu

DNS is a short abbreviation for Domain Name Service which maps the IP and FQDN (Fully Qualified Domain Names) to one another. And by that, the DNS makes it easy to remember the IP. Name servers are the computers that run the DNS.

So in this tutorial, we are going to install and configure DNS on Ubuntu. Through this tutorial, we will use one of the most common programs used for handling the name server on Ubuntu that is BIND (which is an abbreviation for Berkley Internet Naming Daemon).

Install and configure DNS on Ubuntu

 Before starting the installation process, please ensure that your system is updated by executing the next three commands.

Step 1- Update System

sudo apt-get update 

sudo apt-get upgrade 

sudo apt-get dist-upgrade

Step 2 – Install DNS package

Use the following command:

sudo apt-get install bind9

Once you execute the previous command it will suggest some other packages to be installed, press y to confirm downloading and installing those packages.

Step 3 – Install DNS Utilities

Another useful package that will help you a lot in troubleshooting and testing the DNS issues is the dnsutils package that can be installed using the next command.

sudo apt-get install dnsutils

Note that you may find it installed already.

 

Step 4 – DNS Configuration

Usually, you can find the DNS configuration files stored in /etc/bind directory. /etc/bind/named.conf is the master configuration file that contains the DNS options and it’s highly recommended that you should be careful while editing it.

Step 5 – Configuring NameServer

The most used and default configuration is using your server as a caching server. This means that the DNS will get the answer to name queries, cache it and use the answer again when the domain is queried for another time. So, to use your server as a caching nameserver you can follow the next few steps.

Open and edit the /etc/bind/named.conf.options with your favorite editor.

sudo vi /etc/bind/named.conf.options

Add the following block to it, here we have used Google’s DNS.
forwarders {
8.8.8.8;
};

To enable the new configurations you should restart the DNS service.

sudo systemctl restart bind9

To test your query time we can use the dig command which is installed by the dnsutils package.

dig google.com

Step 6 – Primary Master

For a primary master server configuration, the DNS gets the data for a zone from a file stored on its host. Also, the DNS has control for that zone. Now let’s say we have a domain called “example.com” we are going to configure the DNS to be the primary master for that domain.

Forward Zone File

Here in the forward zone, the name will map to the IP.

Step 1. Open and edit the /etc/bind/named.conf file.

sudo vi /etc/bind/named.conf

Ensure that it contains the following lines and NOT commented:

include “/etc/bind/named.conf.options”;
include “/etc/bind/named.conf.local”;
include “/etc/bind/named.conf.default-zones”;

 

 

Step 2. Open and edit the /etc/bind/named.conf.local file to add a DNS zone.

sudo vi /etc/bind/named.conf.local

Add the following block to it:
zone “example.com” {
type master;
file “/etc/bind/db.example.com”;
};

 

Step 3. Create a zone file from the template one.

sudo cp /etc/bind/db.local /etc/bind/db.example.com

Step 4. Now open the new example zone file.

sudo vi /etc/bind/db.example.com

 

Please note that you have to increase the Serial Number every time you make changes to the zone files.

Step 5. Restart DNS Service to apply changes.

sudo systemctl restart bind9

Reverse Zone File

Now to map an IP to a name you have to configure the reverse zone file.

Step 1. Edit the /etc/bind/named.conf.local file.

sudo vi /etc/bind/named.conf.local

Add the following block:
zone “1.168.192.in-addr.arpa” {
type master;
file “/etc/bind/db.192”;
};

Where the 1.168.192 are the first three octets of your network.

Step 2. Create the  /etc/bind/db.192 file from template one.

sudo cp /etc/bind/db.127 /etc/bind/db.192

Step 3. Edit the /etc/bind/db.192 file.

sudo vi /etc/bind/db.192

 

Step 4. Restart DNS Service to apply changes.

Step 7 – Configuration Files Verification

Now and after performing all the previous configurations we need to verify all the configurations are correct.

Step 1. Execute the following commands to check if it will return any errors.

named-checkzone example.com /etc/bind/db.example.com 

named-checkzone 192.168.0.0/32 /etc/bind/db.192 

named-checkconf  /etc/bind/named.conf.local 

named-checkconf  /etc/bind/named.conf

 

Finally, we have installed and configured the DNS server on Ubuntu successfully.