How To Setup a BIND DNS Server

BIND (Berkeley Internet Name Domain) is one of the most widely used DNS server software solutions. It provides authoritative name resolution, caching, and forwarding functionalities. This guide explains how to install and configure a BIND DNS server step by step.

Prerequisites

Before proceeding, ensure you have:

Step 1: Install BIND

On Ubuntu/Debian:

sudo apt update && sudo apt install bind9 -y

On CentOS:

sudo yum install bind bind-utils -y

Step 2: Configure the BIND DNS Server

The primary configuration file for BIND is /etc/bind/named.conf (Ubuntu/Debian) or /etc/named.conf (CentOS).

Define the Zone File

Edit the configuration file to add a new DNS zone:

zone "example.com" IN {
    type master;
    file "/etc/bind/zones/example.com.db";
};

Step 3: Create the Zone File

Create a zone file at /etc/bind/zones/example.com.db:

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
        2024010101  ; Serial number
        3600        ; Refresh
        900         ; Retry
        1209600     ; Expire
        86400       ; Minimum TTL
)

    IN  NS  ns1.example.com.
ns1 IN  A   192.0.2.1
www IN  A   192.0.2.2
mail IN MX 10 mail.example.com.

Step 4: Adjust Permissions & Restart BIND

Ensure the zone file has the correct ownership:

sudo chown bind:bind /etc/bind/zones/example.com.db

Restart BIND to apply changes:

sudo systemctl restart bind9

Verify BIND is running:

systemctl status bind9

Step 5: Test Your DNS Server

To test locally:

dig @localhost example.com

To test externally:

dig @192.0.2.1 example.com

Conclusion

Setting up a BIND DNS server allows you to manage your own domain name resolution, ensuring better control and customization. Regular monitoring and security best practices will keep your server stable and secure.