4.3 Setting Up a BIND Configuration File
Now that
we've created the zone data files, a name server must be
instructed to read each of the files. For BIND, the mechanism for
pointing the server to its zone data files is the configuration file.
Up to this point, we've been discussing files whose data and
format are described in the DNS specifications. The configuration
file, though, is specific to BIND and is not defined in the DNS RFCs.
The BIND configuration file syntax changed
significantly between Version 4 and Version 8. Mercifully, it
didn't change at all between BIND 8 and BIND 9. We'll
first show you the BIND 4 syntax, and then the equivalent BIND 8 and
9 syntax. You'll have to check the named manual page to find out which you need
to use. If you already have a BIND 4 configuration file, you can
convert it to a BIND 8 or 9 configuration file by running the program
named-bootconf,
which is distributed with the BIND source code. In BIND 8, the
program is in
src/bin/named-bootconf.
In BIND 9, it's in
contrib/named-bootconf.
In BIND 4, comments in the configuration file are
the same as in the zone data files—they start with a
semicolon and stop at the end of the
line:
; This is a comment
In BIND 8 and 9, you can use any of three styles of comments:
C-style, C++-style, or shell-style:
/* This is a C-style comment */
// This is a C++-style comment
# This is a shell-style comment
Don't use a BIND 4-style comment in a BIND 8 or 9 configuration
file—it won't work. The semicolon ends a configuration
statement instead of starting a comment.
Usually, configuration files contain a line indicating the directory
in which the zone data files are located. The name
server changes its directory to this location before reading the zone
data files. This allows the filenames to be specified relative to the
current directory instead of as full pathnames. Here's how a
BIND 4 directory line looks:
directory /var/named
Here's how a BIND 8 or 9 directory line looks:
options {
directory "/var/named";
// Place additional options here.
};
 |
Only one options statement is allowed in the
configuration file, so any additional options mentioned later in this
book must be added along with the directory
option.
|
|
On a primary master server, the
configuration file contains one line for each zone data file to be
read. For BIND 4, this line comprises three fields—the word
primary (starting in the first
column), the domain name of the zone, and the filename:
primary movie.edu db.movie.edu
primary 249.249.192.in-addr.arpa db.192.249.249
primary 253.253.192.in-addr.arpa db.192.253.253
primary 0.0.127.in-addr.arpa db.127.0.0
For BIND 8 or 9, the line starts with the keyword
zone followed by the domain name and the
class (in stands for Internet). The type
master is the same as the BIND 4
primary. The last field is the filename:
zone "movie.edu" in {
type master;
file "db.movie";
};
Earlier in this chapter, we mentioned that if we omitted the class
field from a resource record, the name server would determine the
right class to use from the configuration file. The
in in the zone statement sets
that class to the Internet class. The in is also
the default for a BIND 8 or 9 zone statement, so
you can leave out the field entirely for Internet class zones. Since
the BIND 4 syntax doesn't have a place to specify the class of
a zone, the default is in for BIND 4, too.
Here is the BIND 4 configuration file line to read the root hints
file:
cache . db.cache
and the equivalent BIND 8 or 9 configuration file line:
zone "." in {
type hint;
file "db.cache";
};
As mentioned earlier, this file is not for general cache data. It
contains only the root name server hints.
By default, BIND 4 expects the configuration file to be named
/etc/named.boot, but it can be
changed with a command-line option. BIND 8 and 9 expect the
configuration file to be named
/etc/named.conf
instead of /etc/named.boot. The zone data files
for our example are in the directory /var/named.
Which directory you use doesn't really matter. Just avoid
putting the directory in the root filesystem if the root filesystem
is short on space, and make sure that the filesystem the directory is
in is mounted before the name server starts. Here is the complete
BIND 4 /etc/named.boot file:
; BIND configuration file
directory /var/named
primary movie.edu db.movie.edu
primary 249.249.192.in-addr.arpa db.192.249.249
primary 253.253.192.in-addr.arpa db.192.253.253
primary 0.0.127.in-addr.arpa db.127.0.0
cache . db.cache
Here is the complete BIND 8 or 9 /etc/named.conf
file:
// BIND configuration file
options {
directory "/var/named";
// Place additional options here.
};
zone "movie.edu" in {
type master;
file "db.movie.edu";
};
zone "249.249.192.in-addr.arpa" in {
type master;
file "db.192.249.249";
};
zone "253.253.192.in-addr.arpa" in {
type master;
file "db.192.253.253";
};
zone "0.0.127.in-addr.arpa" in {
type master;
file "db.127.0.0";
};
zone "." in {
type hint;
file "db.cache";
};
|