How to Setup BIND9 on Ubuntu

How to Setup BIND9 on Ubuntu

Domain Name System is a critical component of every internet-connected infrastructure. It translates human-readable domain names into IP addresses, allowing users to access websites using names like “” instead of numeric IP addresses.

BIND9, or Berkeley Internet Name Domain version 9, is one of the most widely used DNS software. Setting up BIND9 on Ubuntu can enhance your server’s performance and reliability.

In this guide, we’ll walk you through the process of installing and configuring BIND9 on an Ubuntu server.

Let’s get started.

Step 1: Update and Upgrade Your System

Before installing any new software, it’s always a good practice to update and upgrade your system. This ensures that you have the latest security patches and software versions.

sudo apt update
sudo apt upgrade

Step 2: Install BIND9

Once your system is updated, you can install BIND9 using the following command:

sudo apt install bind9 bind9utils bind9-doc

Step 3: Configure BIND9

After installation, navigate to the BIND9 configuration directory:

cd /etc/bind/

Here, you’ll find several configuration files. The primary one is named.conf.

Step 4: Set Up Forward and Reverse Zones

For this tutorial, let’s assume you’re setting up a domain called “”. You’ll need to set up both forward and reverse zones:

  • Forward Zone: Resolves domain names to IP addresses.
  • Reverse Zone: Resolves IP addresses to domain names.
See also  How to Uninstall Redis on Ubuntu

Edit the named.conf.local file:

sudo nano named.conf.local

Add the following for the forward zone:

zone "" {
    type master;
    file "/etc/bind/";

For the reverse zone, assuming your network IP is “192.168.1.x”, add:

zone "" {
    type master;
    file "/etc/bind/db.192";

Step 5: Create Zone Files

Now, you’ll need to create the zone files mentioned in the previous step.

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

Edit the forward zone file:

sudo nano /etc/bind/

Modify the file to match your domain details and IP addresses.

For the reverse zone, edit:

sudo nano /etc/bind/db.192

Again, adjust the file to match your network details.

Step 6: Test BIND9 Configuration

After setting up the zones, test the BIND9 configuration for syntax errors:


If there are no errors, restart BIND9:

sudo systemctl restart bind9

Step 7: Adjust Firewall Settings

If you have UFW (Uncomplicated Firewall) enabled, allow DNS queries:

sudo ufw allow 53/tcp
sudo ufw allow 53/udp

Step 8: Test DNS Server

Finally, test your DNS server:

dig @localhost

You should see your domain’s details in the response.

Step 9: Regular Maintenance and Monitoring

It’s essential to regularly monitor and maintain your BIND9 setup. This includes:

1. Check the BIND9 logs for any unusual activity or errors. This can help in early detection of issues.

sudo tail -f /var/log/syslog | grep named

2. Regularly backup your BIND9 configuration and zone files. This ensures that you can quickly restore your setup in case of failures.

sudo tar -czvf bind9-backup.tar.gz /etc/bind/

3. Ensure that BIND9 is always updated to the latest version to benefit from security patches and new features.

sudo apt update
sudo apt upgrade bind9

Step 10: Harden BIND9 Security

Security is paramount when running a DNS server. Some measures to enhance BIND9 security include:

  • Run BIND9 in a Chroot Environment: This limits BIND9’s access to only its required directories, reducing the potential impact of a security breach.
  • Limit Recursion: Only allow recursion for trusted IP addresses to prevent DNS amplification attacks.
  • Use Rate Limiting: This helps in mitigating DDoS attacks by limiting the number of queries from a single IP in a given timeframe.
See also  How to Uninstall Node.js and npm on Ubuntu

Commands Mentioned

  • sudo apt update – Updates the package list for upgrades.
  • sudo apt install bind9 – Installs BIND9 and related utilities.
  • named-checkconf – Checks BIND9 configuration for syntax errors.
  • dig – Queries DNS servers for information.
  • sudo tail -f /var/log/syslog – Monitors BIND9 logs in real-time.
  • sudo tar -czvf – Creates a compressed backup of BIND9 configurations.
  • sudo apt upgrade bind9 – Updates BIND9 to the latest version.


  1. What is BIND9 used for?

    BIND9 is a widely used DNS software that translates domain names into IP addresses, facilitating internet navigation.

  2. Why is updating the system crucial before installation?

    Updating ensures you have the latest security patches and software versions, minimizing vulnerabilities and compatibility issues.

  3. How do forward and reverse zones differ?

    A forward zone resolves domain names to IP addresses, while a reverse zone resolves IP addresses to domain names.

  4. What is the purpose of the ‘dig’ command?

    ‘dig’ is a tool used to query DNS servers and retrieve domain information, aiding in DNS troubleshooting.

  5. Why is firewall configuration necessary for BIND9?

    Adjusting firewall settings ensures that DNS queries can reach the BIND9 server without being blocked, ensuring seamless domain resolution.

See also  How to Uninstall Cloudflare Origin CA on Ubuntu


BIND9 is a robust and versatile DNS software that, when set up correctly, can significantly enhance your server’s domain resolution capabilities. By following this comprehensive guide, you’ve not only set up BIND9 on Ubuntu but also taken steps to ensure its security and optimal performance.

Regular maintenance, combined with the right hosting solution like the best dedicated servers or best VPS hosting, will ensure your web infrastructure remains resilient, fast, and secure.

Always stay updated with the latest best practices and BIND9 releases to make the most out of your DNS setup.


Leave a Reply

Your email address will not be published. Required fields are marked *