Setup Your Own DNS Server on Debian/Ubuntu
This tutorial explains how to setup a DNS server using Bind9 on Debian or Ubuntu. Throughout the article, substitute your-domain-name.com
accordingly. At the end of the tutorial, you will have a functional Ubuntu DNS server.
Install Bind9
apt-get install bind9
Configuration
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 to 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; };
};
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
You're all set. 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.
If you come across problems and need to view errors, you may use the following command.
/etc/init.d/bind9 status