Setting up DNS Server on Ubuntu: A Step-by-Step Guide

Setting up a DNS Server on Ubuntu can improve your network performance and security by providing faster and more reliable access to domain names and reducing the reliance on third-party DNS servers.

Ubuntu provides an easy-to-use DNS server called BIND (Berkeley Internet Name Domain) that can be installed and configured in just a few steps. With BIND, you have full control over your DNS server, including the ability to create your own domain names and set up custom DNS zones for your network.

Whether you’re setting up a local DNS server for your home network or configuring a DNS server for your business, this guide will walk you through the step-by-step process of Installing, Configuring, and Securing a DNS Server on Ubuntu using BIND. With this guide, you can be up and running with your own DNS server in no time.

Setting Up DNS Server on Ubuntu

In this section, we’ll discuss how to set up a DNS Server on Ubuntu. DNS (Domain Name System) allows us to convert domain names like “” into IP addresses like “”. This is essential in accessing websites, emails, and other online resources.


Before we begin, make sure you have the following requirements:

  • An Ubuntu system with sudo privileges
  • Basic knowledge of the Linux command line
  • Access to the internet

Step 1: Installing Bind9

The first step in setting up a DNS Server on Ubuntu is to install Bind9, which is the most widely used DNS server software. You can install it by running the following command:

sudo apt update
sudo apt install bind9 -y

Step 2: Configuring Bind9

Once you have installed Bind9, you need to configure it according to your network requirements. The main configuration file for Bind9 is “/etc/bind/named.conf.options”, which contains all the global options for the DNS server.

You can specify your own network information by editing the file “/etc/bind/named.conf.local”. This file is used to define the zones which your DNS server should know about. You should also create the forward and reverse zone files for your respective domains.

Step 3: Testing the DNS Server

After configuring Bind9, it’s important to test whether the server is working correctly. You can use the “nslookup” command to test the DNS server’s functionality.


This should return the IP address of your domain name “”. If you encounter any errors, you can check the Bind9 logs located at “/var/log/syslog“.

Configuring DNS on Ubuntu

Configuring DNS on Ubuntu is an important task for anyone looking to set up a DNS server. DNS (Domain Name System) is a critical component of the internet infrastructure, allowing domain names to be translated into IP addresses. This is essential for connecting to websites and services hosted on servers across the globe.

To set up a DNS server on Ubuntu, there are several steps that need to be followed:

  1. Install BIND9: BIND9 is the most commonly used DNS server software on Ubuntu. It can be installed using the following command:
    sudo apt install bind9
  2. Configure the named.conf.options file: This file contains options for the BIND9 server, such as how it handles requests and forwards queries to other DNS servers. The file can be modified using a text editor like nano or vim:
    sudo nano /etc/bind/named.conf.options
  3. Configure the named.conf.local file: This file contains your DNS server configuration, such as the domains and IP addresses you want to serve. Again, this file can be edited with a text editor:
    sudo nano /etc/bind/named.conf.local
  4. Create zone files: Zone files contain DNS records for each domain you are hosting on your server. These files need to be created for each domain, in the directory /etc/bind/zones/. For example, to create a zone file for
    sudo nano /etc/bind/zones/

    This file will contain DNS records for, such as A records for the domain and its subdomains.

  5. Restart the BIND9 service: After making changes to the server configuration or zone files, the BIND9 service needs to be restarted:
    sudo service bind9 restart

Once these steps have been completed, your DNS server should be up and running, ready to serve DNS requests from clients across the internet.

Adding DNS Records on Ubuntu

Configuring a DNS server on Ubuntu is not complete without adding DNS records. DNS records contain crucial information about your domain, such as which IP address is associated with it. In this section, we will discuss how to add DNS records on Ubuntu.

A Record

The Address Record (A record) is one of the fundamental DNS record types. An A record maps a domain name to an IP address. To add an A record for a domain, use the following command:

sudo nano /etc/bind/

Here, “” is the zone you want to add the record for. Add the following entry:

www IN A

This example entry creates a host “www” with IP for the “” domain. Save and exit the file.

MX Record

Mail eXchanger (MX) records specify which mail servers are responsible for receiving email for a domain. To add an MX record to your domain, create a new file named “db.mail” in the “/etc/bind/” directory with the following content:

$TTL 86400 IN MX 10
mail IN A

This example sets up an MX record for the “” domain with mail routing to a host named “mail” with IP address

CNAME Record

CNAME (Canonical name) records are used to map one domain name to another. To add a CNAME record, edit the “” file and add the following entry:


Here, we have created a CNAME record for “ftp” to map to “”.

With these basic DNS records, you can successfully host and manage your domain using the DNS Server on Ubuntu.

Testing DNS Server on Ubuntu

In this section, we will demonstrate how to test your DNS server on Ubuntu.

  1. Testing the DNS server locally: To test your DNS server, it’s best to start by running a few local checks. First, check if your server is listening on port 53, where DNS requests usually come in. You can do this by running the command sudo netstat -tulpn | grep :53. If this command returns an output, it means your DNS server is up and running.

Next, try to resolve a domain name on your local computer using the nslookup command. For example, if you want to resolve the domain name, type nslookup If the output shows the correct IP address for the domain, it means your DNS server is working correctly.

  1. Testing the DNS server from a remote computer: To test if your DNS server is accessible from other devices on your network, try to resolve a domain name using a different computer or device. You can do this by specifying the IP address of your DNS server as the DNS server in the network settings of the device you want to test. Once the DNS server is set up, try to resolve a domain name using nslookup or your web browser. If the domain resolves correctly, it means your DNS server is working as expected.
  2. Testing DNS resolution for different record types and domains: To fully test your DNS server’s functionality, it’s also important to check its ability to resolve different record types and domains. You can use online tools like dig and host to check if your DNS server can resolve different types of records, such as A, MX, and CNAME records, for various domains. You can also run functional tests by setting up a local DNS zone with different types of records and testing its resolution from different devices.

Troubleshooting DNS Server on Ubuntu

If you’re experiencing issues with your DNS Server on Ubuntu, don’t worry, there are a few common problems that can be easily resolved.

1. Verify DNS Configuration

Check your DNS configuration file to ensure it’s set up correctly. The configuration file is located at /etc/bind/named.conf.options. Make sure that the file has the necessary options and that they are correctly configured.

2. Check the DNS Service Status

Check the DNS service status to make sure it is running. To do this, use the following command:

systemctl status bind9

If the service is not running, use the following command to start it:

systemctl start bind9

3. Check for Firewall or Networking Issues

Firewalls can sometimes block DNS requests, which will prevent your DNS server from functioning correctly. Ensure that your firewall is configured to allow DNS traffic.

Additionally, networking issues can also cause problems with your DNS server. Check your network configuration file to ensure that it has the correct settings.

4. Check DNS Logs

Checking the DNS logs can provide helpful information to troubleshoot issues you might be experiencing. The logs are stored in /var/log/syslog. Look for any errors in the log files that might indicate issues with your DNS setup.


In conclusion, setting up a DNS server on Ubuntu can seem daunting at first, but with the right guidance, it’s a relatively simple process. We hope this guide has been useful in explaining how to install, configure, and manage your own DNS server.

Having a DNS server on Ubuntu provides various benefits, including faster web browsing, centralized management of DNS records, and increased security. With your own DNS server, you can easily create custom domain names for your local network, giving you more control over how your web traffic is resolved. Additionally, you can use your DNS server to block unwanted websites and protect your network from potential threats.

We highly recommend carefully following the steps outlined in this guide and familiarizing yourself with the different configuration options available to you. Remember to regularly monitor your DNS server to ensure it’s working correctly and to make any necessary changes to your DNS records.

Thank you for reading our guide on setting up a DNS server on Ubuntu. If you have any questions or comments, please feel free to leave them below.

Marshall Anthony is a professional Linux DevOps writer with a passion for technology and innovation. With over 8 years of experience in the industry, he has become a go-to expert for anyone looking to learn more about Linux.

Related Posts