What is a DNS zone ?
A zone is a subset, often a single domain, of the hierarchical DNS. Zone are generally defined inside a single ‘zone’ file, that describe its properties (refresh time, domain expiry, default TTL value, etc…) and all its resource records.
Create a new zone file
Let create a new zone file for brand new domain foobar.com
. Following the BIND naming convention the zone file will be /etc/bind/db.foobar.com.conf
, and look pretty much like this:
; Zone file for foobar.com
$TTL 3600
$ORIGIN foobar.com
@ IN SOA ns1.mydns.com. root.foobar.com. (
2012033101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
43200 ) ; Negative Cache TTL
IN NS ns1.mydns.com.
IN NS ns2.mydns.com.
@ IN A 192.168.0.2
www IN A 192.168.0.2
The NS records indicate that we use two DNS servers for this new zone : ns1.mydns.com
and ns2.mydns.com
. The SOA record specify that ns1.mydns.com
is the start of authority, and give the domain properties. Then we have a couple of classic A records, for the domain and a subdomain. Note here the usage of the @ symbol which is a shorthand for the $ORIGIN
value.
Add the new zone
Now that we have a new zone file, we must modify BIND main setting file, usually /etc/bind/named.conf.local
For the master of the new zone, ns1.mydns.com
here, we add the following block:
zone "foobar.com" {
type master;
file "/etc/bind/db.foobar.com.conf";
};
For slaves, like ns2.mydns.com
, the syntax is a little different:
zone "foobar.com" {
type slave;
file "/etc/bind/db.foobar.com.conf";
masters { ; };
};
Reload BIND configuration
# rndc reload