12.4. Using rndc
BIND includes a utility called rndc which allows
command line administration of the named daemon from
the localhost or from a remote host.
In order to prevent unauthorized access to the named
daemon, BIND uses a shared secret key method is used to grant privileges
to hosts. This means an identical key must be present in both
/etc/named.conf and the rndc
configuration file, /etc/rndc.conf
12.4.1. Configuring /etc/named.conf
In order for rndc to connect to a
named service, there must a
controls statement in the BIND server's
/etc/named.conf file.
The controls statement below shown in the following
example allows rndc to connect from the localhost.
controls {
inet 127.0.0.1 allow { localhost; } keys { <key-name>; };
}; |
This statement tells named to listen on the
default TCP port 953 of the loopback address and allow
rndc commands coming from the localhost, if the
proper key is given. The
<key-name> relates
to the key statement, which is also in the
/etc/named.conf file. The next example
illustrates a sample
key statement.
key "<key-name>" {
algorithm hmac-md5;
secret "<key-value>";
}; |
In this case, the <key-value> is a
HMAC-MD5 key. Use the following command to generate HMAC-MD5 keys:
dnssec-keygen -a hmac-md5 -b <bit-length> -n HOST <key-file-name> |
A key with at least a 256-bit length is a good idea. The actual key
that should be placed in the
<key-value> area
can be found in the
<key-file-name>.
| Caution |
---|
| Because /etc/named.conf is world-readable, it
is a good idea to place the key statement in a
separate file readable only by root and then use an
include statement to reference it, as in the
following example:
|
12.4.2. Configuring /etc/rndc.conf
The key is the most important statement in
/etc/rndc.conf.
key "<key-name>" {
algorithm hmac-md5;
secret "<key-value>";
}; |
The <key-name> and
<key-value> should
be exactly the same as their settings in
/etc/named.conf.
To match the keys specified in the target server's
/etc/named.conf, add the following lines to
/etc/rndc.conf.
options {
default-server localhost;
default-key "<key-name>";
}; |
This command sets a global default key. However the
rndc command can also use different keys for
different servers, as in the following example:
server localhost {
key "<key-name>";
}; |
| Caution |
---|
| Make sure that only the root user can read or write to the
/etc/rndc.conf file.
|
12.4.3. Command Line Options
An rndc command takes the following form:
rndc <options> <command> <command-options> |
When executing rndc on a properly configured
localhost, the following commands are available:
halt — Stops the
named service immediately.
querylog — Logs all queries made to
this nameserver.
refresh — Refreshes the nameserver's database.
reload — Reloads the zone files but
keeps all other previously cached responses. This command also
allows changes to zone files without losing all stored name
resolutions.
If changes only affected a specific zone, reload only one zone
by adding the name of the zone after the reload
command.
stats — Dumps the current
named statistics to the
/var/named/named.stats file.
stop — Stops the server gracefully,
saving any dynamic update and Incremental Zone
Transfers (IXFR) data before exiting.
Occasionally, it may be necessary to override the default settings in
the /etc/rndc.conf file. The following options
are available:
-c
<configuration-file>
— Tells rndc to use a configuration file
other than the default /etc/rndc.conf.
-p
<port-number> —
Specifies a port number to use for the rndc
connection other than port 953, the default.
-s
<server> — Tells
rndc to send the command to a server other than
the default-server specified in its
configuration file.
-y
<key-name> —
Specifies a key other than the default-key
option in the /etc/rndc.conf file.
Additional information about these options can be found in the
rndc man page.