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>.

CautionCaution
 

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:

include "/etc/rndc.key";

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>";
};

CautionCaution
 

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:

Occasionally, it may be necessary to override the default settings in the /etc/rndc.conf file. The following options are available:

Additional information about these options can be found in the rndc man page.