How to Setup Your Own DNS Server on Debian

In this tutorial i will explains how to setup a DNS server using Bind9 on Debian server. Throughout the article, Replace your-domain-name.com accordingly. At the end of the tutorial, you will have a working Debina DNS server.

PREREQUISITES

  1. A SSH client like putty and basic knowledge to use it
  2. A full working Debian server.
  3. About 30 minutes of your time.
  4. A cup of coffee or tea.

Install Bind9

apt-get install bind9

Bind Configuration

First of all Backup current Bind9 settings.

cp /etc/bind/named.conf.options /etc/bind/named.conf.options.bak

Edit /etc/bind/named.conf.options and replace the content with the following:

options {
directory "/var/cache/bind";
auth-nxdomain no;
listen-on-v6 { any; };
statistics-file "/var/cache/bind/named.stats";
rrset-order {order cyclic;};
allow-transfer { 127.0.0.1; };
};
logging {
channel b_query {
file "/var/log/bind9/query.log" versions 2 size 1m;
print-time yes;
severity info;
};
category queries { b_query; };
};

Now create the log directory for Bind9.

mkdir /var/log/bind9
chown bind:bind /var/log/bind9

Edit /etc/bind/named.conf to configure your domain zone file location. Append the following lines:

zone "your-domain-name.com" {
type master;
file "/etc/bind/zones/your-domain-name.com.db";
};

Create your domain zone file at /etc/bind/zones/your-domain-name.com.db. Insert your DNS records by following this template:

$TTL 86400
@ IN SOA ns1.your-domain-name.com. root.your-domain-name.com. (
2014100801 ; Serial
43200 ; Refresh
3600 ; Retry
1209600 ; Expire
180 ) ; Minimum TTL

; Nameservers
IN NS ns1.your-domain-name.com.
IN NS ns2.your-domain-name.com.
IN NS ns3.your-domain-name.com.

; Root site
IN A 123.456.78.90

; Hostname records
* IN A 123.456.78.90
sub1 IN A 123.456.78.91
sub2 IN A 123.456.78.92

; Aliases
www IN CNAME your-domain-name.com.
webmail IN CNAME ghs.google.com.

; MX records
@ IN MX 1 aspmx.l.google.com.
@ IN MX 3 alt1.aspmx.l.google.com.
@ IN MX 3 alt2.aspmx.l.google.com.
@ IN MX 5 aspmx2.googlemail.com.
@ IN MX 5 aspmx3.googlemail.com.
@ IN MX 5 aspmx4.googlemail.com.
@ IN MX 5 aspmx5.googlemail.com.

; SPF records
@ IN TXT "v=spf1 ip4:199.195.140.194 include:_spf.google.com ~all"

Restart Bind9

/etc/init.d/bind9 restart

This is all you have to do. At this point, you may want to register your DNS server with your domain registrar. After doing that, you can change your existing name server to your own DNS server. Give your opinion below if you experience any issues or to discuss your ideas and experiences.