Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Configuring DNS

Introduction

Domain Name System (DNS) is a hierarchical and decentralized naming system for computers, services, or other resources connected to the Internet or a private network. It translates human-friendly domain names to IP addresses. Configuring DNS involves setting up a DNS server, configuring DNS zones, and ensuring proper resolution of domain names.

Prerequisites

Before configuring DNS, ensure you have the following:

  • A Linux server (preferably running a distribution like Ubuntu or CentOS)
  • Root or sudo access to the server
  • Basic understanding of networking and domain names

Step 1: Installing BIND9

BIND9 is the most widely used DNS server software. To install BIND9 on a Linux server, use the following commands:

sudo apt-get update
sudo apt-get install bind9

For CentOS, use:

sudo yum install bind bind-utils

Step 2: Configuring the DNS Server

After installing BIND9, configure it by editing the main configuration file located at /etc/bind/named.conf (on Ubuntu) or /etc/named.conf (on CentOS).

Open the configuration file and add your DNS zones. For example, to configure a forward lookup zone for example.com:

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

Create the zone file /etc/bind/db.example.com with the following content:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
    2023010101 ; Serial
    3600 ; Refresh
    1800 ; Retry
    604800 ; Expire
    86400 ); Minimum TTL
;
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.1
www IN A 192.168.1.2

Step 3: Configuring Reverse Lookup Zone

A reverse lookup zone allows DNS to resolve an IP address to a domain name. Configure it by adding the zone to the main configuration file:

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "/etc/bind/db.192.168.1";
};

Create the reverse zone file /etc/bind/db.192.168.1 with the following content:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
    2023010101 ; Serial
    3600 ; Refresh
    1800 ; Retry
    604800 ; Expire
    86400 ); Minimum TTL
;
@ IN NS ns1.example.com.
1 IN PTR ns1.example.com.
2 IN PTR www.example.com.

Step 4: Testing the Configuration

After configuring the DNS server, restart BIND9 to apply the changes:

sudo systemctl restart bind9

Test the DNS server using the dig command:

dig @localhost example.com
; <<>> DiG 9.10.3-P4-Ubuntu <<>> @localhost example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45678
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 86400 IN A 192.168.1.2
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Jan 01 12:00:00 UTC 2023
;; MSG SIZE rcvd: 44

Conclusion

Configuring DNS on a Linux server involves installing BIND9, setting up forward and reverse lookup zones, and verifying the configuration. Properly configured DNS can significantly improve network efficiency and reliability.