Overview
Welcome to the first of a bunch of DNS articles I will write to help explain the different tasks needed to configure and manage your own DNS server using bind under Linux.
The article assumes you have already installed bind and it is all running. If not, then you will need to setup bind first.
What is a DNS Zone?
Essentially a zone in DNS terms is a collection of a domain with all its subdomains. Typically you will have one zone config file per domain (which including its subdomains) however you can also have multiple domains using a single zone file. If you have multiple domains to a zone file, each of those domains will be configured identically which includes the IP addresses and subdomains each of the entries point to. The zone file tells the DNS server what IP addresses are associated to each of the domains and subdomains. Each record in the zone file can also be configured to be any type of DNS record such as A record, MX record, TXT record, etc.
Editing a zone file
The zone files are located under /etc/bind/ and the zone files generally (but not always) are in the format of db.domain.com.conf. For example, my zone file for darian-brown.com is under:
/etc/bind/db.darian-brown.com.conf
So now we simply edit the zone file using vi or your preferred editor
sudo vi /etc/bind/db.darian-brown.com.conf
Adding a subdomain
In your zone file you will see a couple existing DNS records. You should see a section similar to this where 192.168.0.2 is the IP address on our internal network where these domains point to. The @ symbol simply means the current domain which in our case is darian-brown.com
@ IN A 192.168.0.2
www IN A 192.168.0.2
Now we are going to add a subdomain called blog and point it to a different server. So we add the line after those two entries (or even at the bottom of the file) like so.
@ IN A 192.168.0.2
www IN A 192.168.0.2
blog IN A 192.168.0.10
Now save the file and restart your bind service by running
sudo /etc/init.d/bind9 restart
Testing new subdomain
In order to test your new entry is working, you can dig the new address. See my article on What is Dig and When Should I use it for more information. Dig is a lot more informative and can be extremely useful as you can directly query your DNS server rather than waiting for the DNS to refresh.
An example of how to do would be
dig @ns1.mynameserver.com -t A blog.darian-brown.com
and if the DNS entry was added successfully, you should see a section in the response that is something like
;; ANSWER SECTION:
blog.darian-brown.com. 3600 IN A 192.168.0.2
Alternately you can ping the subdomain using
ping blog.darian-brown.com