Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > N

named.conf(4)

BIND 9.3
HP-UX 11i Version 3: February 2007
» 

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index

NAME

named.conf — configuration file for Internet domain name server

SYNOPSIS

/etc/named.conf

DESCRIPTION

named.conf is the configuration file for the named name server daemon. The default path name is /etc/named.conf.

BIND 9 configuration is broadly similar to BIND 8.x. However, there are a few new areas of configuration, such as views. BIND 8.x configuration files should work with few alterations in BIND 9.3, although more complex configurations need to be reviewed to see if they can be more efficiently implemented using the new features implemented in BIND 9.3. BIND 4.9.7 configuration files can be converted to the BIND 9.3 format using the shell script, /usr/bin/named-bootconf.sh.

Syntax Rules

In the syntax descriptions in this manpage, the following typographic rules apply:

literal

Characters in this font should be entered as is.

variable

Characters in this font should be replaced with appropriate values.

( )

Parentheses are metacharacters that enclose required content. (The brace characters ({ }) are used in the configuration syntax as block delimiters.)

[ ]

Brackets are metacharacters that enclose optional content.

|

Bars within parentheses and brackets are metacharacters that separate alternatives.

token ... [ ]... ( )...

Trailing ellipses are metacharacters that indicate that the previous token, parenthesized item, or bracketed item may be repeated.

Configuration File Elements

The following configuration elements are used in the BIND 9.3 configuration file grammar:

acl_name

The name of an address_match_list as defined by an acl statement.

address_match_list

A list of one or more ip_addr, ip_prefix, key_id, or acl_name elements.

dialup_option

One of yes, no, notify, notify-passive, refresh, or passive. When used in a zone, notify-passive, refresh, and passive are restricted to slave and stub zones.

domain_name

A quoted string that is used as a DNS name; for example, "my.test.domain" .

dotted_decimal

One or more integers valued 0 through 255 separated only by periods (.), such as 123, 45.67, or 89.123.45.67.

ip4_addr

An IPv4 address with exactly four elements in dotted_decimal notation.

ip6_addr

An IPv6 address, such as fe80::200:f8ff:fe01:9742.

ip_addr

An ip4_addr or ip6_addr.

ip_port

An IP port number. This is limited to 0 through 65535, with values below 1024 typically restricted to root-owned processes. In some cases, an asterisk (*) character can be used as a placeholder to select a random high-numbered port.

ip_prefix

An IP network specified as an ip_addr, followed by a slash (/) and then the number of bits in the netmask. Trailing zero elements in ip_addr may be omitted. For example, 127/8 is the network 127.0.0.0 with netmask 255.0.0.0 and 1.2.3.0/28 is the network 1.2.3.0 with netmask 255.255.255.240.

key_id

A domain_name representing the name of a shared key, to be used for transaction security.

key_list

A list of one or more key_ids, separated by semicolons and ending with a semicolon.

number

A nonnegative 32-bit unsigned integer (that is, a number between 0 and 4294967295, inclusive). Its acceptable value might further be limited by the context in which it is used.

path_name

A quoted string that is used as a path name, such as "zones/master/my.test.domain" .

size_spec

One of the following:

number

A decimal number, optionally be followed by a scaling factor: K or k for kilobytes, M or m for megabytes, and G or g for gigabytes, which scale by 1024, 1024*1024, and 1024*1024*1024 respectively. The value must be representable as a 64-bit unsigned integer (0 to 18446744073709551615, inclusive).

default

Uses the limit that was in force when the server was started.

unlimited

Requests unlimited use, or the maximum available amount. This is the best way to set a really large number.

yes_or_no

Either yes or no. The words true and false and the numbers 1 and 0 are also accepted, respectively.

Address Match List Syntax

An address_match_list has the format:

address_match_list_element ; [ address_match_list_element ; ]...

An address_match_list_element has the format:

[ ! ] ( ip_addr | ip_prefix | key key_id | acl_name | { address_match_list } )

Address Match List Definition and Usage

Address match lists are primarily used to determine access control for various server operations. They are also used to define priorities for querying other name servers and to set the addresses on which named will listen for queries. The elements which constitute an address match list may be any of the following:

  • An IP address (IPv4 or IPv6).

  • An IP prefix (in the /-notation).

  • A key ID, as defined by the key statement.

  • The name of an address match list previously defined with an acl statement.

  • A nested address match list enclosed in braces.

    Elements can be negated with a leading exclamation mark (!). The match list names of any, none, localhost, and localnets are predefined. For more information on these match list names, refer to The acl Statement section. The addition of the key clause made the name of this syntactic element something of a misnomer, since security keys can be used to validate access without regard to a host or network address. However, the term address match list is still being used.

    When a given IP address or prefix is compared to an address match list, the list is traversed in order until an element matches. The interpretation of a match depends on whether the list is being used for access control, defining listen-on ports and whether the element was negated. When used as an access control list, a nonnegated match allows access and a negated match denies access. If there is no match, access is denied.

    The clauses allow-notify, allow-query, allow-transfer, allow-update, allow-update-forwarding, and blackhole, which can be specified in the options and/or zone statements use the address match lists. Similarly, the listen-on option causes the server not to accept queries on any of the machine's addresses which do not match the list.

    Because of the first-match aspect of the algorithm, an element that defines a subset of another element in the list should come before the broader element, regardless of whether either is negated. For example, in 1.2.3/24; ! 1.2.3.13; the 1.2.3.13 element is of no use because the algorithm will match any lookup for 1.2.3.13 to the 1.2.3/24 element. Using ! 1.2.3.13; 1.2.3/24 fixes that problem by having 1.2.3.13 blocked by the negation but all other 1.2.3.* hosts fall through.

Comment Syntax

Comments in the BIND 9.3 configuration file can be written in the following styles:

C:

/* comment */

C++:

// to end of line

UNIX:

# to end of line

Note: Unlike a zone file, you cannot use a semicolon (;) character to start a comment in the BIND 9.3 configuration file. The semicolon indicates the end of a configuration statement.

CONFIGURATION FILE GRAMMAR

A BIND 9.3 configuration file consists of statements and comments. Statements end with a semicolon. Statements and comments are the only elements that can appear without enclosing braces. Many statements contain a block of substatements, which is terminated with a semicolon. The following statements are supported:

acl

Defines a named IP address matching list, for access control and other uses.

controls

Declares control channels to be used by the rndc utility.

include

Includes a file.

key

Specifies key information for use in authentication and authorization using TSIG.

logging

Specifies what data the server logs, and where the log messages are sent.

lwres

Configures the name server to also act as a lightweight resolver server.

masters

Defines a masters list for inclusion in masters clauses of stub and slave zone statements

options

Controls global server configuration options and sets defaults for other statements.

server

Sets certain configuration options on a per-server basis.

trusted-keys

Defines trusted DNSSEC keys.

view

Defines a view.

zone

Defines a zone.

The logging and options statements may occur only once per configuration.

The acl Statement

acl Statement Grammar

acl acl-name { address_match_list };

acl Statement Definition and Usage

The acl statement assigns a symbolic name to an address match list. It gets its name from the primary use of address match lists for Access Control Lists (ACLs). Note that an address match list's name must be defined with acl before it can be used elsewhere; no forward references are allowed. The following ACL names are built-in:

any

Matches all hosts.

none

Matches no hosts.

localhost

Matches the IPv4 addresses of all network interfaces on the system.

localnets

Matches any host on an IPv4 network for which the system has an interface.

The localhost and localnets ACLs do not currently support IPv6 (that is, localhost does not match the host's IPv6 addresses, and localnets does not match the host's attached IPv6 networks) due to the lack of a standard method of determining the complete set of local IPv6 addresses for a host.

The controls Statement

controls Statement Grammar

controls { ( inet ( ip_addr | * ) [ port ip_port ] allow { address_match_list } keys { key_list }; )... };

controls Statement Definition and Usage

The controls statement declares control channels to be used by system administrators to control the operation of the local name server. These control channels are used by the rndc utility to send commands to and retrieve non-DNS results from a name server.

An inet control channel is a TCP/IP socket accessible to the Internet, created at the specified ip_port on the specified ip_addr. If no port is specified, port 953 is used by default. * cannot be used for ip_port.

The allow and keys clauses restrict the ability to issue commands over the control channel. Connections to the control channel are permitted based on the address permissions in address_match_list. key members of the address_match_list are ignored, and instead are interpreted independently based on the key_list. Each key_id in the key_list is allowed to be used to authenticate commands and responses given over the control channel by digitally signing each message between the server and a command client. All commands to the control channel must be signed by one of its specified keys to be honored.

If no controls statement is present, named will set up a default control channel listening on the loopback address 127.0.0.1 and its IPv6 counterpart ::1. In this case, and also when the controls statement is present but does not have a keys clause, named will attempt to load the command channel key from the file /etc/rndc.key. To create a rndc.key file, run rndc-confgen -a. The rndc.key feature was implemented to ease the transition of systems from BIND 8, which did not have digital signatures on its command channel messages and thus did not have a keys clause.

Since the rndc.key feature is only intended to allow the backward-compatible usage of BIND 8 configuration files, this feature does not have a high degree of configurability. You cannot easily change the key name or the size of the secret, so you should make an rndc.conf with your own key if you wish to change them. The rndc.key file also has its permissions set such that only the owner of the file (the user that named is running as) can access it. If you desire greater flexibility in allowing other users to access rndc commands, then you need to create an rndc.conf and make it group-readable by a group that contains the users who should have access.

The UNIX control channel type of BIND 8 is not supported in BIND 9.3, and is not expected to be added in future releases. If it is present in the controls statement from a BIND 8 configuration file, it is ignored and a warning is logged.

As a special case, to disable the command channel, use an empty controls statement:

  • controls { };

The include Statement

include Statement Grammar

include filename ;

include Statement Definition and Usage

The include statement inserts the specified file at the point where the include statement is encountered. The include statement facilitates the administration of configuration files by permitting the reading or writing of some things but not others. For example, the statement could include private keys that are readable only by a name server.

The key Statement

key Statement Grammar

key key_id { algorithm algoname ; secret secretstring ; };

key Statement Definition and Usage

The key statement defines a shared secret key for use with TSIG. The key statement can occur at the top level of the configuration file or inside a view statement. Keys defined in top-level key statements can be used in all views. Keys intended for use in a controls statement must be defined at the top level.

key_id

A domain name uniquely identifying the key. Also known as the key name. It can be used in a server statement to sign requests with this key or in address match lists to verify that incoming requests have been signed with a key matching this name, algorithm, and secret.

algoname

A string that specifies a security/authentication algorithm. hmac-md5 is the only algorithm which is currently supported with TSIG authentication.

secretstring

A base-64-encoded secret string to be used by the algorithm.

The logging Statement

logging Statement Grammar

logging { [ channel channel_name { ( file path name [ versions ( number | unlimited ) ] [ size size spec ] | null | stderr | syslog syslog_facility ) ; [ severity ( critical | error | warning | notice | info | debug [ level ] | dynamic ) ; ] [ print-category yes_or_no ; ] [ print-severity yes_or_no ; ] [ print-time yes_or_no ; ] }; ]... [ category category_name { ( channel_name ; )... }; ]... };

The category and channel clauses may be repeated in any order.

logging Statement Definition and Usage

The logging statement configures a wide variety of logging options for the name server. Its channel phrase associates output methods, format options, and severity levels with a name, channel_name, that can be used with the category phrase to select how various classes of messages are logged.

Only one logging statement is used to define any number of channels and categories. If there is no logging statement, the logging configuration defaults to:

logging { category "unmatched" { "null"; }; category "default" { "default_syslog"; "default_debug"; }; };

In BIND 9.3, the logging configuration is established only when the entire configuration file has been parsed. In BIND 8, it was established as soon as the logging statement was parsed. When the server starts up, all logging messages related to syntax errors in the configuration file go to the default channels, or to standard error if the -g option is specified.

The channel Phrase

All log output goes to one or more user-defined or predefined channels. Every channel definition must include a destination clause that says whether messages selected for the channel go to a file, or to a particular syslog facility, or to the standard error stream, or are discarded. It can optionally also limit the message severity level that will be accepted by the channel (the default is info), and whether to include a named-generated time stamp, the category name, and/or severity level (the default is not to include any).

The file destination clause directs the channel to a disk file. It can include limitations on both the file size and the number of versions of the file that are saved each time the file is opened.

If you use the versions log file option, then named will retain that many backup versions of the file by renaming them when opening.

For example, if you choose to keep three old versions of the file lamers.log, then, just before it is opened:

lamers.log.1 is renamed to lamers.log.2 lamers.log.0 is renamed to lamers.log.1 lamers.log is renamed to lamers.log.0

Use versions unlimited; if you do not want to limit the number of versions. If a size option is associated with the log file, then renaming is only done when the file being opened exceeds the indicated size. No backup versions are kept, by default; any existing log file is simply appended.

The size option for file is used to limit log growth. If the file size exceeds the limit, then named will stop writing to the file unless it has a versions option associated with it. If backup versions are kept, the files are rolled as described above and a new file is opened. If there is no versions option, no more data will be written to the log until the log file is removed or truncated (by some external process) to less than the maximum size. The default behavior is not to limit the size of the file.

Example usage of the size and versions options:

channel "an_example_channel" { file "example.log" versions 3 size 20m; print-time yes; print-category yes; };

The syslog destination clause directs the channel to the system log. Its argument is a syslog facility as described in the syslog(3C) manpage. The syslog(3C) manpage also describes how syslog will handle messages sent to this facility. If you have a system which uses a very old version of syslog that uses only two arguments to the openlog() function, then the syslog destination clause is ignored.

The stderr destination clause directs the channel to the server's standard error stream. This is intended for use when the server is running as a foreground process, for example when debugging the configuration.

The null destination clause discards all message sent to the channel, the severity and print-* clauses irrelevant.

The severity clause works like the syslog() priority parameter except that it can also be used if you are writing straight to a file rather than using syslog. Messages that are not at least of the severity level given will not be selected for the channel; messages of higher severity levels will be accepted. If you are using the syslog option, then the syslog.conf priorities will also determine what eventually passes through (see syslogd(1M)).

For example, defining a channel facility and severity as daemon and debug but only logging daemon.warning via syslog.conf will cause messages of severity info and notice to be dropped. If the situation were reversed, with named writing messages of only warning or higher, then syslogd would print all messages it received from the channel.

The server can supply extensive debugging information when it is in debugging mode. If the server's global debug level is greater than zero, then debugging mode will be active. The global debug level is set either by starting the named server with the -d option followed by a positive integer, or by running rndc trace. The global debug level can be set to zero, and debugging mode turned off, by running rndc notrace. All debugging messages in the server have a debug level, and higher debug levels give more detailed output. For example:

channel "specific_debug_level" { file "foo"; severity debug 3; };

In this example, channels that specify a particular debug severity will get debugging output of level 3 or less any time the server is in debugging mode, regardless of the global debugging level. Channels with dynamic severity use the server's global level to determine what messages to print.

If print-time is on, then the date and time will be logged. print-time may be specified for a syslog channel, but that is usually pointless, since syslog also prints the date and time.

If print-category is on, then the category of the message is logged as well.

If print-severity is on, then the severity level of the message will be logged.

The print-* options may be used in any combination, and will always be printed in the order time, category, severity. Here is an example where all three print-* options are on:

  • 28-Feb-2000 15:05:32.863 general: notice: running

    Time:

    28-Feb-2000 15:05:32.863

    Category:

    general

    Severity:

    notice

    Message:

    running

There are four predefined channels that are used for named's default logging, as follows:

channel "default_syslog" { syslog daemon; // send to syslog's daemon // facility severity info; // only send priority info // and higher }; channel "default_debug" { file "named.run"; // write to named.run in // the working directory // Note: stderr is used instead // of "named.run" // if the server is started // with the '-f' option. severity dynamic; // log at the server's // current debug level }; channel "default_stderr" { stderr; // writes to stderr severity info; // only send priority info // and higher }; channel "null" { null; // toss anything sent to // this channel };

The default_debug channel has the special property that it only produces output when the server's debug level is nonzero. It normally writes to a file, named.run, in the server's working directory.

For security reasons, when the -u command-line option is used, the named.run file is created only after named has changed to the new UID, and any debug output that is generated while named is starting up and still running as root is discarded. If you need to capture this output, you must run the server with the -g option and redirect standard error to a file.

Once a channel is defined, it cannot be redefined. Thus you cannot alter the built-in channels directly, but you can modify the default logging by pointing categories at channels you have defined.

The category Phrase

Predefined categories allow you to fine-tune what messages you want to log and where you want to log those messages to. If you do not specify a list of channels for a category, then log messages in that category will be sent to the default category instead. If you do not specify a default category, the following category is used:

category "default" { "default_syslog"; "default_debug"; };

For example, if you want to log security events to a file and also want to keep the default logging behavior, you need to specify the following in the logging statement:

channel "my_security_channel" { file "my_security_file"; severity info; }; category "security" { "my_security_channel"; "default_syslog"; "default_debug"; };

To discard all messages in a category, specify the null channel, as in the following:

category "xfer-out" { "null"; }; category "notify" { "null"; };

The following are the available categories and brief descriptions of the types of log information they contain. More categories may be added in future BIND releases.

default

Defines the logging options for categories where no specific configuration has been defined.

general

The catch-all. All unclassified categories belong to this category.

client

Processing of client requests

config

Configuration file parsing and processing.

database

Messages relating to the databases used internally by the name server to store zone and cache data.

delegation-only

Logs queries that have have been forced to NXDOMAIN as the result of a delegation-only zone or a delegation-only in a hint or stub zone declaration.

dispatch

Dispatching of incoming packets to the server modules where they are to be processed.

dnssec

DNSSEC and TSIG protocol processing.

lame-servers

Lame servers are misconfigurations in remote servers, discovered by BIND 9 when trying to query those servers during resolution.

network

Network operations.

notify

The NOTIFY protocol.

queries

Enable query logging.

resolver

DNS resolution, such as recursive lookups performed on behalf of clients by a caching name server.

security

Approval and denial of requests.

unmatched

Messages that named was unable to determine the class of or for which there was no matching view. A one-line summary is also logged to the client category. This category is best sent to a file or stderr; by default, it is sent to the null channel.

update

Dynamic updates

update-security

Approval and denial of update requests.

xfer-in

Zone transfers the server is receiving.

xfer-out

Zone transfers the server is sending.

The lwres Statement

lwres Statement Grammar

lwres { [ listen-on { ( ip_addr [ port ip_port ] ; )... }; ] [ ndots number ; ] [ search { domain_name ; [ domain_name ; ]... }; ] [ view view_name ; ] };

lwres Statement Definition and Usage

The lwres statement configures the name server to also act as a lightweight resolver server. There may be be multiple lwres statements configuring lightweight resolver servers with different properties.

The listen-on statement specifies a list of addresses and ports that a lightweight resolver daemon should accept requests on. If no port is specified, port 921 is used. If this statement is omitted, requests will be accepted on 127.0.0.1, port 921.

The ndots statement is equivalent to the ndots directive in /etc/resolv.conf. It indicates the minimum number of dots in a relative domain name that should result in an exact match lookup before search path elements are appended.

The search statement is equivalent to the search directive in /etc/resolv.conf. It provides a list of domains that are appended to relative names in queries.

The view statement binds this instance of a lightweight resolver daemon to a view in the DNS name space, so that the response will be constructed in the same manner as a normal DNS query matching this view. If this statement is omitted, the default view is used, and if there is no default view, an error is triggered.

The masters Statement

masters Statement Grammar

masters name [ port ip_port ] { ( ( masters_list | ip_addr [ port ip_port ] [ key key ] ) ; )... };

masters Statement Definition and Usage

A masters statement defines a masters list. This allows you to include sets of masters in the masters clauses of multiple stub and slave zone statements. See type slave and type stub in the zone Statement Definition and Usage section.

name

The name of the masters statement.

masters_list

The acl_name of an acl statement that specifies a list of masters.

The options Statement

options Statement Grammar

options { // General Options [ directory path_name ; ] [ disable-algorithms domain { algorithm ; [ algorithm ; ] }; ] [ dnssec-lookaside domain trust-anchor domain ; ] [ dnssec-must-be-secure domain yes_or_no ; ] [ dump-file path_name ; ] [ key-directory path_name ; ] [ memstatistics-file path_name ; ] [ pid-file path_name ; ] [ port ip_port ; ] [ preferred-glue ( A | AAAA | NONE ) ; ] [ random-device path_name ; ] [ root-delegation-only [ exclude { namelist } ] ; ] [ statistics-file path_name ; ] [ tkey-dhkey key_name key_tag ; ] [ tkey-domain domainname ; ] // Boolean Options [ additional-from-auth yes_or_no ; ] [ additional-from-cache yes_or_no ; ] [ auth-nxdomain yes_or_no ; ] [ check-names ( master | slave | response ) ( warn | fail | ignore ) ; ] [ dialup dialup_option ; ] [ dnssec-enable yes_or_no ; ] [ flush-zones-on-shutdown yes_or_no ; ] [ match-mapped-addresses yes_or_no ; ] [ minimal-responses yes_or_no ; ] [ notify ( yes_or_no | explicit ) ; ] [ provide-ixfr yes_or_no ; ] [ querylog yes_or_no ; ] [ recursion yes_or_no ; ] [ request-ixfr yes_or_no ; ] [ zone-statistics yes_or_no ; ] // Access Control Options [ allow-notify { address_match_list }; ] [ allow-query { address_match_list }; ] [ allow-recursion { address_match_list }; ] [ allow-transfer { address_match_list }; ] [ allow-update-forwarding { address_match_list }; ] [ blackhole { address_match_list }; ] // Bad UDP Port List Options [ avoid-v4-udp-ports { port_list }; ] [ avoid-v6-udp-ports { port_list }; ] // Built-In Server Information Zone Options [ hostname hostname_string ; ] [ server-id server_id_string ; ] [ version version_string ; ] // Dual-Stack Server Option [ dual-stack-servers [ port ip_port ] { ( ( domain_name [ port ip_port ] | ip_addr [ port ip_port ] ) ; )... }; ] // Forwarding Options [ forward ( only | first ) ; ] [ forwarders { ( ip_addr [ port ip_port ] ; )... }; ] // Interface Options [ listen-on [ port ip_port ] { address_match_list }; ] [ listen-on-v6 [ port ip_port ] { address_match_list }; ] // Obsolete Option [ allow-v6-synthesis yes_or_no ; ] // Operating System Resource Limit Options [ coresize size_spec ; ] [ datasize size_spec ; ] [ files size_spec ; ] [ stacksize size_spec ; ] // Periodic Task Interval Options [ cleaning-interval number ; ] [ heartbeat-interval number ; ] [ interface-interval number ; ] // Query Address Options [ query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ] ; ] [ query-source-v6 [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ] ; ] // RRset Ordering Option [ rrset-order { order_spec ; [ order_spec ; ]... }; ] // Server Resource Limit Options [ max-cache-size size_spec ; ] [ max-journal-size size_spec ; ] [ recursive-clients number ; ] [ tcp-clients number ; ] [ tcp-listen-queue number ; ] // Sorting Option [ sortlist { address_match_list }; ] // Tuning Options [ edns-udp-size number ; ] [ lame-ttl number ; ] [ max-cache-ttl number ; ] [ max-ncache-ttl number ; ] [ max-refresh-time number ; ] [ max-retry-time number ; ] [ min-refresh-time number ; ] [ min-retry-time number ; ] [ sig-validity-interval number ; ] // Zone Transfer Options [ also-notify { ( ip_addr [ port ip_port ] ; )... }; ] [ alt-transfer-source ( ip4_addr | * ) [ port ip_port ] ; ] [ alt-transfer-source-v6 ( ip6_addr | * ) [ port ip_port ] ; ] [ max-transfer-idle-in number ; ] [ max-transfer-idle-out number ; ] [ max-transfer-time-in number ; ] [ max-transfer-time-out number ; ] [ notify-source ( ip4_addr | * ) [ port ip_port ] ; ] [ notify-source-v6 ( ip6_addr | * ) [ port ip_port ] ; ] [ serial-query-rate number ; ] [ transfer-format ( one-answer | many-answers ) ; ] [ transfer-source ( ip4_addr | * ) [ port ip_port ] ; ] [ transfer-source-v6 ( ip6_addr | * ) [ port ip_port ] ; ] [ transfers-in number ; ] [ transfers-out number ; ] [ transfers-per-ns number ; ] [ use-alt-transfer-source yes_or_no ; ] };

options Statement Definition and Usage

The options statement sets up global options to be used by BIND. This statement may appear only once in a configuration file. If more than one occurrence is found, the first occurrence determines the actual options used, and a warning is generated. If there is no options statement, an options block with each option set to its default will be used.

General Options

directory

The working directory of the server. Any nonabsolute path names in the configuration file will be taken as relative to this directory. The default location for most server output files (for example, named.run) is this directory. If a directory is not specified, the working directory defaults to the directory from which the server was started (.). The directory specified should be an absolute path.

disable-algorithms

Disable the specified DNSSEC algorithms at and below the specified name. Multiple disable-algorithms statements are allowed. Only the most specific is applied.

dnssec-lookaside

When set, dnssec-lookaside provides the validator with an alternate method to validate DNSKEY records at the top of a zone. When a DNSKEY is at or below a domain specified by the deepest dnssec-lookaside, and the normal DNSSEC validation has left the key untrusted, the trust-anchor will be appended to the key name and a DLV record will be looked up to see if it can validate the key. If the DLV record validates a DNSKEY (similar to the way a DS record does it), the DNSKEY RRset is deemed to be trusted.

dnssec-must-be-secure

Specify hierarchies which must be or may not be secure (signed and validated). If yes, named will only accept answers if they are secure. If no, normal DNSSEC validation applies and insecure answers are accepted. The specified domain must be under a trusted key, or dnssec-lookaside must be active.

dump-file

The path name of the file to which the server dumps the database with rndc dumpdb. The default is named_dump.db.

key-directory

The directory where the public and private key files should be found, if it is not the working directory. The specified directory must be an absolute path.

memstatistics-file

The path name of the file to which the server writes the memory usage statistics. The default is named.memstats.

pid-file

The path name of the file in which the server writes its process ID. The default path name is /var/run/named.pid. The pid-file is used by programs that need to send signals to the running name server.

Specifying pid-file none ; disables the use of a PID file; no file is written and any existing file is removed. Note that none is a keyword, not a file name, and therefore is not enclosed in quotation marks.

port

The UDP/TCP port number the server uses for receiving and sending DNS protocol traffic. The default is 53. This option is mainly intended for server testing; a server using a port other than 53 will not be able to communicate with the global DNS.

preferred-glue

If specified, the listed type (A or AAAA) will be emitted before other glue in the additional section of a query response. The default is not to prefer any type (NONE). ("Glue" is a record that is created as part of a delegation.)

random-device

The source of entropy (random data) to be used by the server. Entropy is primarily needed for DNSSEC operations, This option specifies the device (or file) from which to read entropy. If this is a file, operations requiring entropy will fail when the file has been exhausted. The default value is /dev/random (or the equivalent) when present, and none otherwise. The random-device option takes effect during the initial configuration load at server startup time and is ignored on subsequent reloads.

root-delegation-only

Turn on enforcement of delegation-only in top level domains (TLD) and root zones, with an optional exclude list.

Note: Some TLDs are not delegation-only (for example, DE, LV, US and MUSEUM).

options { root-delegation-only exclude { "de"; "lv"; "us"; "museum"; }; };

statistics-file

The path name of the file in which the server appends statistics using rndc stats. The default is named.stats in the server's current directory. The file format is described in The Statistics File section.

tkey-dhkey

The Diffie-Hellman key used by the server to generate shared keys with clients using the Diffie-Hellman mode of TKEY. The server must be able to load the public and private keys from files in the working directory. In most cases, the key_name should be the server's host name. The key_tag is an integer that is part of the key.

tkey-domain

The domain appended to the names of all shared keys generated with TKEY. When a client requests a TKEY exchange, it can specify a preferred name for the key. If the name is present, the name of the shared key will be client_specified_part+tkey_domain. Otherwise, the name of the shared key will be random_hex_digits+tkey-domain. In most cases, the domain name should be the server's domain name.

Boolean Options

additional-from-auth, additional-from-cache

These options control the behavior of an authoritative server when answering queries which have additional data, or when following CNAME and DNAME chains.

When both of these options are set to yes (the default) and a query is being answered from authoritative data (a zone configured into the server), the additional data section of the reply will be filled in using data from other authoritative zones and from the cache. In some situations this is undesirable, such as when there is concern over the correctness of the cache, or in servers where slave zones may be added and modified by untrusted third parties. Also, avoiding the search for this additional data will speed up server operations at the possible expense of additional queries to resolve what would otherwise be provided in the additional section.

For example, if a query asks for an MX record for host foo.example.com, and the record found is MX 10 mail.example.net, normally the address records (A, A6, and AAAA) for mail.example.net will be provided as well, if known. Set these options to no to disable this behavior.

These options are intended for use in authoritative-only servers, or in authoritative-only views. Attempts to set them to no without also specifying recursion no will cause the server to ignore the options and log a warning message.

Specifying additional-from-cache no actually disables the use of the cache not only for additional data lookups but also when looking up the answer. This is usually the desired behavior in an authoritative-only server where the correctness of the cached data is an issue.

When a name server is nonrecursively queried for a name that is not below the apex of any served zone, it normally answers with an "upwards referral" to the root servers or the servers of some other known parent of the query name. Since the data in an upwards referral comes from the cache, the server will not be able to provide upwards referrals when additional-from-cache no has been specified. Instead, it will respond to such queries with REFUSED. This should not cause any problems since upwards referrals are not required for the resolution process.

auth-nxdomain

If yes, then the AA bit is always set on NXDOMAIN responses, even if the server is not actually authoritative. The default is no. If you are using an old version of BIND, you might need to set this option to yes.

check-names

Restrict the character set and syntax of certain domain names in master files and/or DNS responses received from the network. The default varies according to usage area. For master zones, the default is fail. For slave zones, the default is warn. For answers received from the network (response), the default is ignore.

The rules for legal host names and mail domains are derived from RFC 952 and RFC 821 as modified by RFC 1123.

check-names applies to the owner names of A, AAAA, and MX records. It also applies to the domain names in the rrdata of NS, SOA, and MX, records. It also applies to the rrdata of PTR records where the owner name indicated that it is a reverse lookup of a host name (the owner name ends in IN-ADDR.ARPA, IP6.ARPA, IP6.INT).

dialup

If yes, then the server treats all zones as if they are doing zone transfers across a dial-on-demand dialup link, which can be brought up by traffic originating from this server. This has different effects according to zone type and concentrates the zone maintenance so that it all happens in a short interval, once every heartbeat-interval and hopefully during the one call. It also suppresses some of the normal zone maintenance traffic. The default is no.

The dialup option may also be specified in view and zone statements, in which case, it overrides the global dialup option.

If the zone is a master zone, then the server will send out a NOTIFY request to all the slaves. This will trigger the zone serial number check in the slave (provided it supports NOTIFY), allowing the slave to verify the zone while the connection is active.

If the zone is a slave or stub zone, then the server will suppress the regular "zone up to date" (refresh) queries and only perform them when the heartbeat-interval expires in addition to sending NOTIFY requests.

Finer control can be achieved by using notify, which only sends NOTIFY messages; notify-passive, which sends NOTIFY messages and suppresses the normal refresh queries; refresh, which suppresses normal refresh processing and sends refresh queries when the heartbeat-interval expires; and passive, which just disables normal refresh processing.

dnssec-enable

Enable DNSSEC support in named. Unless set to yes, named behaves as if it does not support DNSSEC. The default is no.

flush-zones-on-shutdown

If yes, flush any pending zone writes when the name server exits due to receiving a SIGTERM. The default is no, do not flush on SIGTERM.

match-mapped-addresses

If yes, then an IPv4-mapped IPv6 address will match any address match list entries that match the corresponding IPv4 address.

minimal-responses

If yes, the server will only add records to the authority when generating responses and additional data sections when they are required (for example, delegations, negative responses). This may improve the performance of the server. The default is no.

notify

If yes (the default), DNS NOTIFY messages are sent when a zone for which the server is authoritative, changes. The messages are sent to the servers listed in the zone's NS records (except the master server identified in the SOA MNAME field), and to any servers listed in the also-notify option. If explicit is specified, NOTIFY messages are sent only to servers explicitly listed using also-notify. If no, no NOTIFY messages are sent.

The notify option may also be specified in the zone statement, in which case it overrides the notify specified in the options statement. It needs to be turned off only when the slaves crash.

provide-ixfr

Determines whether the local server, acting as master, will respond with an incremental zone transfer when the given remote server, a slave, requests it. If yes, an incremental transfer will be provided whenever possible. If no, all transfers to the remote server will be nonincremental. If not set in a server statement, the value of the provide-ixfr option in the view or global options statement is used as a default.

querylog

If yes, start query logging when named starts. If no, do not start query logging when named starts. If querylog is not specified, query logging is determined from the presence of the logging category queries.

recursion

If yes and a DNS query requests recursion, then the server will attempt to answer the query. If no and the server does not know the answer, it will return a referral response. The default is yes.

Note that setting recursion to no does not prevent clients from getting data from the server's cache; it only prevents new data from being cached as an effect of client queries. Caching may still occur as an effect of the server's internal operation, such as NOTIFY address lookups.

request-ixfr

Determines whether the local server, acting as a slave, will request incremental zone transfers from the given remote server, a master. If not set in a server statement, the value of the request-ixfr option in the view or global options statement is used as a default.

zone-statistics

If yes, the server will, by default, collect statistical data on all zones in the server. These statistics may be accessed using the rndc stats command, which will dump them to the file listed in the statistics-file option.

Access Control Options

Access to the server can be restricted based on the IP address of the requesting system.

allow-notify

Specifies which hosts are allowed to notify slaves of a zone change in addition to the zone masters. allow-notify may also be specified in the zone statement, in which case it overrides the options allow-notify statement. It is only meaningful for a slave zone. If not specified, the default is to process notify messages only from a zone's master.

allow-query

Specifies which hosts are allowed to ask ordinary questions. allow-query may also be specified in the zone statement, in which case it overrides the options allow-query statement. If not specified, the default is to allow queries from all hosts.

allow-recursion

Specifies which hosts are allowed to make recursive queries through this server. If not specified, the default is to allow recursive queries from all hosts. Note that disallowing recursive queries for a host does not prevent the host from retrieving data that is already in the server's cache.

allow-update-forwarding

Specifies which hosts are allowed to submit Dynamic DNS updates to slave zones to be forwarded to the master. The default is {none;}, which means that no update forwarding will be performed. To enable update forwarding, specify allow-update-forwarding {any;};. Specifying values other than {none;} or {any;} is usually counterproductive, since the responsibility for update access control should rest with the master server, not the slaves.

Note that enabling the update forwarding feature on a slave server may expose master servers relying on insecure IP-address-based access control to attacks.

allow-transfer

Specifies the hosts that are allowed to receive zone transfers from the server. allow-transfer may also be specified in the zone statement, in which case it overrides the options allow-transfer statement. If not specified, the default is to allow transfers from all hosts.

blackhole

Specifies a list of addresses that the server will not accept queries from or use to resolve a query. Queries from these addresses will not be responded to. The default is none.

Bad UDP Port List Options

avoid-v4-udp-ports, avoid-v6-udp-ports

Specify a list of IPv4 and IPv6 UDP ports that will not be used as system assigned source ports for UDP sockets. These lists prevent named from choosing as its random source port a port that is blocked by your firewall. If a query went out with such a source port, the answer would not get by the firewall and the name server would have to query again.

Built-In Server Information Zone Options

The server provides some helpful diagnostic information through a number of built-in zones under the pseudo-top-level-domain bind in the CHAOS class. These zones are part of a built-in view of class CHAOS which is separate from the default view of class IN; therefore, any global server options such as allow-query do not apply the these zones. If you feel the need to disable these zones, use the options below, or hide the built-in CHAOS view by defining an explicit view of class CHAOS that matches all clients.

hostname

The host name the server should report via a query of the name hostname.bind with type TXT, class CHAOS. This defaults to the host name of the machine hosting the name server as found by gethostname() (see gethostname(2)). The primary purpose of such queries is to identify which of a group of anycast servers is actually answering your queries. Specifying hostname none; disables processing of the queries.

server-id

The ID the server should report via a query of the name ID.SERVER with type TXT, class CHAOS. The primary purpose of such queries is to identify which of a group of anycast servers is actually answering your queries. Specifying server-id none; disables processing of the queries. Specifying server-id hostname; causes named to use the host name as found by gethostname(). The default server-id is none.

version

The version the server should report via a query of the name version.bind with type TXT and class CHAOS. The default is the real version number of this server. Specifying version none disables processing of the queries.

Dual-Stack Server Option

Dual-stack servers are used as a last resort to workaround reachability problems due to the lack of support for either IPv4 or IPv6 on the host machine.

dual-stack-servers

Specifies host names or addresses of machines with access to both IPv4 and IPv6 transports. If a host name is used, the server must be able to resolve the name using only the transport it has. If the machine is dual-stacked then the dual-stack-servers have no effect unless access to a transport has been disabled on the command line (for example, with named -4).

Forwarding Options

The forwarding facility can be used to create a large site-wide cache on a few servers, reducing traffic over links to external name servers. It can also be used to allow queries by servers that do not have direct access to the Internet, but wish to look up exterior names anyway. Forwarding occurs only on those queries for which the server is not authoritative and does not have the answer in its cache.

forward

This option is useful only if the forwarders list is not empty. The default value first, causes the server to query the forwarders first, and if that is unable to answer the question, the server will then look for the answer itself. If only is specified, the server will only query the forwarders.

forwarders

Specifies the IP addresses to be used for forwarding. The default is the empty list (no forwarding).

Forwarding can also be configured on a per-domain basis, allowing for the global forwarding options to be overridden in a variety of ways. You can set a particular domain to use different forwarders, or have a different forward only or forward first behavior, or not forward at all; see The Zone Statement section.

Interface Options

The interfaces and ports that the server will answer queries from, may be specified using the listen-on option.

listen-on

The server listens on all interfaces allowed by the address match list. If a port is not specified, port 53 is used.

Multiple listen-on statements are allowed. For example,

listen-on { 5.6.7.8; }; listen-on port 1234 { !1.2.3.4; 1.2/16; };

will enable the name server on port 53 for the IP address 5.6.7.8, and on port 1234 of an address on the machine in net 1.2 that is not 1.2.3.4. If no listen-on is specified, the server will listen on port 53 on all interfaces.

listen-on-v6

Specifies the ports on which the server will listen for incoming queries sent using IPv6.

The server does not bind a separate socket to each IPv6 interface address as it does for IPv4. Instead, it always listens on the IPv6 wildcard address. Therefore, the only values allowed for the address_match_list argument of the listen-on-v6 statement are: {any;} and {none;}.

Multiple listen-on-v6 options can be used to listen on multiple ports:

listen-on-v6 port 53 { any; }; listen-on-v6 port 1234 { any; };

To make the server not to listen on any IPv6 address, use

listen-on-v6 { none; };

If no listen-on-v6 statement is specified, the server will not listen on any IPv6 address.

Obsolete Option

allow-v6-synthesis

This option was introduced for the smooth transition from AAAA to A6 and from "nibble labels" to binary labels. However, since both A6 and binary labels were then deprecated, this option was also deprecated. It is now ignored with some warning messages.

Operating System Resource Limit Options

The server's usage of many system resources can be limited. Scaled values are allowed when specifying resource limits. For example, 1G can be used instead of 1073741824 to specify a limit of one gigabyte. An unlimited size_spec requests unlimited use, or the maximum available amount. default uses the limit that was in force when the server was started.

The following options set operating system resource limits for the name server process. A warning will be issued if an unsupported limit is used.

coresize

The maximum size of a core dump. The default is default.

datasize

The maximum amount of data memory the server may use. The default is default. This is a hard limit on server memory usage. If the server attempts to allocate memory in excess of this limit, the allocation will fail, which may in turn leave the server unable to perform DNS service. Therefore, this option is rarely useful as a way of limiting the amount of memory used by the server, but it can be used to raise an operating system data size limit that is too small by default. If you wish to limit the amount of memory used by the server, use the max-cache-size and recursive-clients options instead; see the Server Resource Limit Options section.

files

The maximum number of files the server may have open concurrently. The default is unlimited.

stacksize

The maximum amount of stack memory the server may use. The default is default.

Periodic Task Interval Options

cleaning-interval

The server will remove expired resource records from the cache every cleaning-interval minutes. The default is 60 minutes. The maximum value is 28 days (40320 minutes). If set to 0, no periodic cleaning will occur.

heartbeat-interval

The server will perform zone maintenance tasks for all zones marked as dialup whenever this interval expires. The default is 60 minutes. The maximum value is 28 days (40320 minutes). Reasonable values are up to 1 day (1440 minutes). If set to 0, no zone maintenance for these zones will occur.

interface-interval

The server will scan the network interface list every interface-interval minutes. The default is 60 minutes. The maximum value is 28 days (40320 minutes). If set to 0, interface scanning will only occur when the configuration file is loaded. After the scan, listeners will be started on any new interfaces (provided they are allowed by the listen-on configuration). Listeners on interfaces that have gone away will be cleaned up.

Query Address Options

If the server is unable to answer a question, it will query other name servers.

query-source

Specifies the address and port used for such queries.

query-source-v6

Specifies the address and port used for queries sent over IPv6.

If address is * or is omitted, a wildcard IP address (INADDR_ANY) is used. If port is * or is omitted, a random unprivileged port will be used. The default address and port are:

query-source address * port * ; query-source-v6 address * port * ;

Note: The address specified in the query-source option is used for both UDP and TCP queries, but the port applies only to UDP queries. TCP queries always use a random unprivileged port.

RRset Ordering Option

When multiple records are returned in an answer, it may be useful to configure the order of the records placed into the response.

The rrset-order option permits the configuration of the ordering of the records in a multiple record response.

order_spec is defined as:

[ class class_name ] [ type type_name ] [ name "domain_name" ] order ordering

  • If no class is specified, the default is ANY. If no type is specified, the default is ANY. If no name is specified, the default is *.

  • The values for ordering are:

    fixed

    Records are returned in the order they are defined in the zone file.

    random

    Records are returned in some random order.

    cyclic

    Records are returned in a round-robin order.

In this example, any responses for type A records in class IN that have host.example.com as a suffix, are always returned in random order. All other records are returned in cyclic order.

rrset-order { class IN type A name "host.example.com" order random; order cyclic; };

If multiple rrset-order statements appear, they are not combined; the last one applies.

Server Resource Limit Options

The following options set limits on the server's resource consumption that are enforced internally by the server rather than the operating system.

max-cache-size

The maximum amount of memory to use for the server's cache, in bytes. When the amount of data in the cache reaches this limit, the server will cause records to expire prematurely so that the limit is not exceeded. In a server with multiple views, the limit applies separately to the cache of each view. The default is unlimited, meaning that records are purged from the cache only when their TTLs expire.

max-journal-size

Sets a maximum size for each journal file. When the journal file approaches the specified size, some of the oldest transactions in the journal will be automatically removed. The default is unlimited.

recursive-clients

The maximum number of simultaneous recursive lookups the server will perform on behalf of clients. The default is 1000. Because each recursing client uses a fair bit of memory, on the order of 20 kilobytes, the value of the recursive-clients option may have to be decreased on hosts with limited memory.

tcp-clients

The maximum number of simultaneous client TCP connections that the server will accept. The default is 100.

tcp-listen-queue

The listen queue depth. The default and minimum is 3. If the kernel supports the accept filter "dataready", this also controls how many TCP connections that will be queued in kernel space waiting for some data before being passed to accept. Values less than 3 are silently raised.

Sorting Option

The response to a DNS query may consist of multiple resource records (RRs) forming a resource records set (RRset). The name server will normally return the RRs within the RRset in an indeterminate order (but see the rrset-reorder statement in the RRset Reordering Option section). The client resolver code should rearrange the RRs as appropriate, that is, using any addresses on the local net in preference to other addresses. However, not all resolvers can do this or are correctly configured. When a client is using a local server, the sorting can be performed in the server, based on the client's address. This only requires configuring the name servers, not all the clients.

The sortlist option takes an address_match_list and interprets it. Each top level statement in the sortlist must itself be an explicit address_match_list with one or two elements. The first element (which may be an IP address, an IP prefix, an ACL name, or a nested address_match_list) of each top level list is checked against the source address of the query until a match is found.

Once the source address of the query has been matched, if the top level statement contains only one element, the actual primitive element that matched the source address is used to select the address in the response to move to the beginning of the response. If the statement is a list of two elements, then the second element is interpreted in a special way. Each top level element is assigned a distance and the address in the response with the minimum distance is moved to the beginning of the response.

In the following example, any queries received from any of the addresses of the host itself will get responses preferring addresses on any of the locally connected networks. Next will be addresses on the 192.168.1/24 network, and after that either the 192.168.2/24 or 192.168.3/24 network with no preference shown between these two networks. Queries received from a host on the 192.168.1/24 network will prefer other addresses on that network to the 192.168.2/24 and 192.168.3/24 networks. Queries received from a host on the 192.168.4/24 or the 192.168.5/24 network will only prefer other addresses on their directly connected networks.

sortlist { { localhost; // IF the local host { localnets; // THEN first fit on the 192.168.1/24; // following nets { 192.168.2/24; 192.168.3/24; }; }; }; { 192.168.1/24; // IF on class C 192.168.1 { 192.168.1/24; // THEN use .1, or .2 or .3 { 192.168.2/24; 192.168.3/24; }; }; }; { 192.168.2/24; // IF on class C 192.168.2 { 192.168.2/24; // THEN use .2, or .1 or .3 { 192.168.1/24; 192.168.3/24; }; }; }; { 192.168.3/24; // IF on class C 192.168.3 { 192.168.3/24; // THEN use .3, or .1 or .2 { 192.168.1/24; 192.168.2/24; }; }; }; { // IF .4 or .5, prefer that net { 192.168.4/24; 192.168.5/24; }; }; };

The following example gives reasonable behavior for the local host and hosts on directly connected networks. It is similar to the behavior of the address sort in BIND 4.9.x. Responses sent to queries from the local host will favor any of the directly connected networks. Responses sent to queries from any other hosts on a directly connected network will prefer addresses on that same network. Responses to other queries will not be sorted.

sortlist { { localhost; localnets; }; { localnets; }; };

Tuning Options

edns-udp-size

Sets the advertised Extended DNS (EDNS) UDP buffer size in bytes. Valid values are 512 to 4096 (values outside this range will be silently adjusted). The default value is 4096. The usual reason for setting edns-udp-size to a nondefault value is to get UDP answers to pass through broken firewalls that block fragmented packets and/or block UDP packets that are greater than 512 bytes.

lame-ttl

Sets the number of seconds to cache a lame server indication. 0 disables caching. (This is not recommended.) The default is 600 (10 minutes). The maximum value is 1800 (30 minutes). (See the lame-servers keyword in The Category Phrase section.)

max-cache-ttl

Sets the maximum time in seconds for which the server will cache ordinary (positive) answers. The default is one week (7 days).

max-ncache-ttl

To reduce network traffic and increase performance, the server stores negative answers. max-ncache-ttl is used to set a maximum retention time for these answers in the server in seconds. The default is 10800 seconds (3 hours). The maximum is 7 days and will be truncated to 7 days if set to a greater value.

max-refresh-time, max-retry-time, min-refresh-time, min-retry-time

These options control the server's behavior on refreshing a zone (querying for SOA changes) or retrying failed transfers. Usually the SOA values for the zone are used, but these values are set by the master, giving slave server administrators little control over their contents.

These options allow the administrator to set a minimum and maximum refresh and retry time either per-zone, per-view, or per-server. These options are valid for master, slave and stub zones, and clamp the SOA refresh and retry times to the specified values.

sig-validity-interval

Specifies the number of days into the future when DNSSEC signatures that were automatically generated as a result of dynamic updates will expire. The default is 30 days. The maximum is 10 years (3660 days). The signature inception time is unconditionally set to one hour before the current time to allow for a limited amount of clock skew.

Zone Transfer Options

BIND has mechanisms in place to facilitate zone transfers and set limits on the amount of load that transfers place on the system. The following options apply to zone transfers.

also-notify

Defines a global list of IP addresses of name servers that are also sent NOTIFY messages whenever a fresh copy of the zone is loaded, in addition to the servers listed in the zone's NS records. This helps to ensure that copies of the zones will quickly converge on stealth servers. If an also-notify list is given in a zone statement, it will override the options also-notify statement. When a zone notify statement is set to no, the IP addresses in the global also-notify list will not be sent NOTIFY messages for that zone. The default is the empty list (no global notification list).

alt-transfer-source

An alternate transfer source if the one listed in transfer-source fails and use-alt-transfer-source is set.

alt-transfer-source-v6

An alternate transfer source if the one listed in transfer-source-v6 fails and use-alt-transfer-source is set.

max-transfer-idle-in

Inbound zone transfers making no progress in this many minutes will be terminated. The default is 60 minutes (1 hour). The maximum value is 28 days (40320 minutes).

max-transfer-idle-out

Outbound zone transfers making no progress in this many minutes will be terminated. The default is 60 minutes (1 hour). The maximum value is 28 days (40320 minutes).

max-transfer-time-in

Inbound zone transfers running longer than this many minutes will be terminated. The default is 120 minutes (2 hours). The maximum value is 28 days (40320 minutes).

max-transfer-time-out

Outbound zone transfers running longer than this many minutes will be terminated. The default is 120 minutes (2 hours). The maximum value is 28 days (40320 minutes).

notify-source

Determines which local source address, and optionally UDP port, will be used to send NOTIFY messages. This address must appear in the slave server's masters zone clause or in an allow-notify clause. This statement sets the notify-source for all zones, but can be overridden on a per-zone or per-view basis by including a notify-source statement within the zone or view statement in the configuration file.

notify-source-v6

The same as notify-source, but applies to NOTIFY messages sent to IPv6 addresses.

serial-query-rate

Slave servers will periodically query master servers to find out if zone serial numbers have changed. Each such query uses a minute amount of the slave server's network bandwidth. To limit the amount of bandwidth used, BIND 9.3 limits the rate at which queries are sent. The value of the serial-query-rate option, an integer, is the maximum number of queries sent per second. The default is 20.

transfer-format

Zone transfers can be sent using two different formats, one-answer and many-answers. The transfer-format option is used on the master server to determine which format it sends. one-answer uses one DNS message per resource record transferred. many-answers packs as many resource records as possible into a message. many-answers is more efficient, but is only supported by relatively new slave servers, such as BIND 9.3, BIND 8.x, and patched versions of BIND 4.9.x. The default is many-answers. transfer-format may be overridden on a per-server basis by using the server statement.

transfer-source

Determines which local address will be bound to IPv4 TCP connections used to fetch zones transferred inbound by the server. It also determines the source IPv4 address, and optionally the UDP port, used for the refresh queries and forwarded dynamic updates. If not set, it defaults to a system-controlled value which will usually be the address of the interface "closest to" the remote end. This address must appear in the remote end's allow-transfer option for the zone being transferred, if one is specified. This statement sets the transfer-source for all zones, but can be overridden on a per-view or per-zone basis by including a transfer-source statement within the view or zone block in the configuration file.

transfer-source-v6

The same as transfer-source, except that zone transfers are performed using IPv6.

transfers-in

The maximum number of concurrently running inbound zone transfers. The default value is 10. The maximum value is 28 days (40320 minutes). Increasing transfers-in may speed up the convergence of slave zones, but it may also increase the load on the local system.

transfers-out

The maximum number of concurrently running outbound zone transfers. Zone transfer requests in excess of the limit will be refused. The default value is 10.

transfers-per-ns

The maximum number of concurrently running inbound zone transfers from a given remote name server. The default value is 2. Increasing transfers-per-ns may speed up the convergence of slave zones, but it also may increase the load on the remote name server. transfers-per-ns may be overridden on a per-server basis by using the transfers phrase of the server statement.

use-alt-transfer-source

Use the alternate transfer sources or not. If views are specified, this defaults to no; otherwise, it defaults to yes (for BIND 8 compatibility).