Operations 17 min read

How to Install and Configure a Linux BIND DNS Server Step‑by‑Step

This guide explains the fundamentals of DNS, walks through editing the /etc/hosts file, describes domain name components, details the three types of DNS servers, and provides complete installation, configuration, zone definition, record creation, and troubleshooting steps for a Linux BIND DNS server.

ITPUB
ITPUB
ITPUB
How to Install and Configure a Linux BIND DNS Server Step‑by‑Step

Purpose of DNS and the /etc/hosts file

DNS translates human‑readable hostnames (e.g., www.example.com) into IP addresses, allowing users to remember meaningful names instead of numeric addresses. When a DNS server is unavailable, Linux systems fall back to the local /etc/hosts file, which provides static hostname‑to‑IP mappings. Example entry: 127.0.0.1 google.com. After adding such an entry, a browser that resolves google.com on the same host will display the local web server’s index page instead of the real Google site.

/etc/hosts example
/etc/hosts example

Domain name hierarchy

A Fully Qualified Domain Name (FQDN) consists of a root label (trailing dot), a top‑level domain (TLD) such as com, a second‑level domain (e.g., example), and optional subdomains (e.g., www). The root zone is served by 13 globally distributed root name servers.

DNS server roles

Primary (master) server : Holds authoritative zone files and answers queries for its zones.

Secondary (slave) server : Receives zone data from a primary server via zone transfers, providing redundancy.

Cache server : Caches query results temporarily to reduce load on authoritative servers.

Installing BIND on Linux

For Red Hat‑based distributions: dnf -y install bind For Debian‑based distributions: apt-get install bind9 Start and enable the service so it runs on boot:

systemctl start named
systemctl enable named

Basic BIND configuration

The main configuration file is /etc/named.conf. It contains four primary statement types:

options : Global server settings (e.g., working directory, listen ports).

logging : Defines log channels and categories.

zone : Declares DNS zones (primary, secondary, or cache).

include : Inserts additional configuration files.

Primary zone definition

zone "likegeeks.com" {
    type master;
    file "likegeeks.com.db";
};

Secondary zone definition

zone "likegeeks.com" {
    type slave;
    masters { 192.0.2.1; };
    file "likegeeks.com.db";
};

Cache and hint zones

zone "." IN {
    type hint;
    file "root.hint";
};
zone "localhost" IN {
    type master;
    file "localhost.db";
};
zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "127.0.0.rev";
};

Common DNS record types

SOA (Start of Authority) : Defines zone metadata.

example.com. 86400 IN SOA ns1.example.com. mail.example.com. (
    2023010101 ; serial
    86400      ; refresh
    7200       ; retry
    3600000   ; expire
    86400      ; minimum
)

NS (Name Server) : Lists authoritative name servers for the zone.

example.com. IN NS ns1.example.com.
example.com. IN NS ns2.example.com.

A / AAAA : Maps a hostname to an IPv4 or IPv6 address.

www.example.com. IN A 192.0.2.10
www.example.com. IN AAAA 2001:db8::10

CNAME (Canonical Name) : Creates an alias for another hostname. mail.example.com. IN CNAME www.example.com. PTR (Pointer) : Provides reverse lookup from IP to hostname.

10.2.0.192.in-addr.arpa. IN PTR www.example.com.

MX (Mail Exchange) : Specifies mail server(s) for a domain with priority. example.com. IN MX 10 mail.example.com. TXT : Stores arbitrary text, often used for verification (e.g., SPF, DKIM).

example.com. IN TXT "v=spf1 include:_spf.example.com ~all"

TTL (Time‑to‑Live) configuration

The $TTL directive in /etc/named.conf sets a default cache duration for records. A common value is 14400 seconds (4 hours), after which resolvers must re‑query the server.

Testing and debugging

host : Query DNS records.

host example.com
host 192.0.2.10

whois : Retrieve registration information for a domain. whois example.com rndc : Securely control BIND.

rndc status
rndc reload example.com
rndc reconfig

Log inspection : BIND logs errors to /var/log/messages. Monitor in real time with:

tail -f /var/log/messages

Resolver configuration on clients

Linux clients use /etc/resolv.conf to specify which DNS servers to query. A typical file contains a search domain and one or more nameserver entries:

search example.com
nameserver 192.0.2.53

On Debian‑based systems additional fragments may reside in /etc/resolvconf/resolv.conf.d/. When BIND is running on the same host, point nameserver to 127.0.0.1 to use the local server for resolution.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

networkDNSSystem AdministrationServer ConfigurationBIND
ITPUB
Written by

ITPUB

Official ITPUB account sharing technical insights, community news, and exciting events.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.