Example Zone File

Seen individually, directives and resource records can be difficult to grasp. However, when placed together in a single file, they become easier to understand.

The following example shows a very basic zone file.

$ORIGIN example.com.
$TTL 86400
@  IN SOA dns1.example.com. hostmaster.example.com. (
   2001062501 ; serial
   21600      ; refresh after 6 hours
   3600       ; retry after 1 hour
   604800     ; expire after 1 week
   86400 )    ; minimum TTL of 1 day
;
;
  IN NS dns1.example.com.
  IN NS dns2.example.com.
dns1  IN A 10.0.1.1
  IN AAAA aaaa:bbbb::1
dns2  IN A 10.0.1.2
  IN AAAA aaaa:bbbb::2
;
;
@  IN MX 10 mail.example.com.
  IN MX 20 mail2.example.com.
mail  IN A 10.0.1.5
  IN AAAA aaaa:bbbb::5
mail2  IN A 10.0.1.6
  IN AAAA aaaa:bbbb::6
;
;
; This sample zone file illustrates sharing the same IP addresses
; for multiple services:
;
services IN A 10.0.1.10
  IN AAAA aaaa:bbbb::10
  IN A 10.0.1.11
  IN AAAA aaaa:bbbb::11
ftp  IN CNAME services.example.com.
www  IN CNAME services.example.com.
;
;

In this example, standard directives and SOA values are used. The authoritative nameservers are set as dns1.example.com and dns2.example.com, which have A records that tie them to 10.0.1.1 and 10.0.1.2, respectively.

The email servers configured with the MX records point to mail and mail2 via A records. Since the mail and mail2 names do not end in a trailing period (.), the $ORIGIN domain is placed after them, expanding them to mail.example.com and mail2.example.com. Through the related A resource records, their IP addresses can be determined.

Services available at the standard names, such as www.example.com (WWW), are pointed at the appropriate servers using a CNAME record.

This zone file would be called into service with a zone statement in the named.conf similar to the following:

zone "example.com" IN {
 type master;
 file "example.com.zone";
 allow-update { none; };
};