NAMED.CONF(5)

NAME
named.conf - configuration file for **named**

SYNOPSIS

named.conf

DESCRIPTION

named.conf is the configuration file for named.

For complete documentation about the configuration statements, please refer to the Configuration Reference section in the BIND 9 Administrator Reference Manual.

Statements are enclosed in braces and terminated with a semi-colon. Clauses in the statements are also semi-colon terminated. The usual comment styles are supported:

C style: /* */

C++ style: // to end of line

Unix style: # to end of line

        acl <string> { <address_match_element>; ... }; // may occur multiple times

        controls {
        	inet ( <ipv4_address> | <ipv6_address> | * ) [ port ( <integer> | * ) ] allow { <address_match_element>; ... } [ keys { <string>; ... } ] [ read-only <boolean> ]; // may occur multiple times
        	unix <quoted_string> perm <integer> owner <integer> group <integer> [ keys { <string>; ... } ] [ read-only <boolean> ]; // may occur multiple times
        }; // may occur multiple times

        dlz <string> {
        	database <string>;
        	search <boolean>;
        }; // may occur multiple times

        dnssec-policy <string> {
        	dnskey-ttl <duration>;
        	keys { ( csk | ksk | zsk ) [ ( key-directory ) ] lifetime <duration_or_unlimited> algorithm <string> [ <integer> ]; ... };
        	max-zone-ttl <duration>;
        	nsec3param [ iterations <integer> ] [ optout <boolean> ] [ salt-length <integer> ];
        	parent-ds-ttl <duration>;
        	parent-propagation-delay <duration>;
        	parent-registration-delay <duration>; // obsolete
        	publish-safety <duration>;
        	purge-keys <duration>;
        	retire-safety <duration>;
        	signatures-refresh <duration>;
        	signatures-validity <duration>;
        	signatures-validity-dnskey <duration>;
        	zone-propagation-delay <duration>;
        }; // may occur multiple times

        dyndb <string> <quoted_string> { <unspecified-text> }; // may occur multiple times

        http <string> {
        	endpoints { <quoted_string>; ... };
        	listener-clients <integer>;
        	streams-per-connection <integer>;
        }; // may occur multiple times

        key <string> {
        	algorithm <string>;
        	secret <string>;
        }; // may occur multiple times

        logging {
        	category <string> { <string>; ... }; // may occur multiple times
        	channel <string> {
        		buffered <boolean>;
        		file <quoted_string> [ versions ( unlimited | <integer> ) ] [ size <size> ] [ suffix ( increment | timestamp ) ];
        		null;
        		print-category <boolean>;
        		print-severity <boolean>;
        		print-time ( iso8601 | iso8601-utc | local | <boolean> );
        		severity <log_severity>;
        		stderr;
        		syslog [ <syslog_facility> ];
        	}; // may occur multiple times
        };

        managed-keys { <string> ( static-key | initial-key | static-ds | initial-ds ) <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times, deprecated

        options {
        	allow-new-zones <boolean>;
        	allow-notify { <address_match_element>; ... };
        	allow-query { <address_match_element>; ... };
        	allow-query-cache { <address_match_element>; ... };
        	allow-query-cache-on { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	allow-recursion { <address_match_element>; ... };
        	allow-recursion-on { <address_match_element>; ... };
        	allow-transfer [ port <integer> ] [ transport <string> ] { <address_match_element>; ... };
        	allow-update { <address_match_element>; ... };
        	allow-update-forwarding { <address_match_element>; ... };
        	also-notify [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	alt-transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	alt-transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	answer-cookie <boolean>;
        	attach-cache <string>;
        	auth-nxdomain <boolean>;
        	auto-dnssec ( allow | maintain | off ); // deprecated
        	automatic-interface-scan <boolean>;
        	avoid-v4-udp-ports { <portrange>; ... };
        	avoid-v6-udp-ports { <portrange>; ... };
        	bindkeys-file <quoted_string>;
        	blackhole { <address_match_element>; ... };
        	catalog-zones { zone <string> [ default-primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [ zone-directory <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval <duration> ]; ... };
        	check-dup-records ( fail | warn | ignore );
        	check-integrity <boolean>;
        	check-mx ( fail | warn | ignore );
        	check-mx-cname ( fail | warn | ignore );
        	check-names ( primary | master | secondary | slave | response ) ( fail | warn | ignore ); // may occur multiple times
        	check-sibling <boolean>;
        	check-spf ( warn | ignore );
        	check-srv-cname ( fail | warn | ignore );
        	check-wildcard <boolean>;
        	clients-per-query <integer>;
        	cookie-algorithm ( aes | siphash24 );
        	cookie-secret <string>; // may occur multiple times
        	coresize ( default | unlimited | <sizeval> ); // deprecated
        	datasize ( default | unlimited | <sizeval> ); // deprecated
        	deny-answer-addresses { <address_match_element>; ... } [ except-from { <string>; ... } ];
        	deny-answer-aliases { <string>; ... } [ except-from { <string>; ... } ];
        	dialup ( notify | notify-passive | passive | refresh | <boolean> );
        	directory <quoted_string>;
        	disable-algorithms <string> { <string>; ... }; // may occur multiple times
        	disable-ds-digests <string> { <string>; ... }; // may occur multiple times
        	disable-empty-zone <string>; // may occur multiple times
        	dns64 <netprefix> {
        		break-dnssec <boolean>;
        		clients { <address_match_element>; ... };
        		exclude { <address_match_element>; ... };
        		mapped { <address_match_element>; ... };
        		recursive-only <boolean>;
        		suffix <ipv6_address>;
        	}; // may occur multiple times
        	dns64-contact <string>;
        	dns64-server <string>;
        	dnskey-sig-validity <integer>;
        	dnsrps-enable <boolean>; // not configured
        	dnsrps-options { <unspecified-text> }; // not configured
        	dnssec-accept-expired <boolean>;
        	dnssec-dnskey-kskonly <boolean>;
        	dnssec-loadkeys-interval <integer>;
        	dnssec-must-be-secure <string> <boolean>; // may occur multiple times
        	dnssec-policy <string>;
        	dnssec-secure-to-insecure <boolean>;
        	dnssec-update-mode ( maintain | no-resign );
        	dnssec-validation ( yes | no | auto );
        	dnstap { ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; ... }; // not configured
        	dnstap-identity ( <quoted_string> | none | hostname ); // not configured
        	dnstap-output ( file | unix ) <quoted_string> [ size ( unlimited | <size> ) ] [ versions ( unlimited | <integer> ) ] [ suffix ( increment | timestamp ) ]; // not configured
        	dnstap-version ( <quoted_string> | none ); // not configured
        	dscp <integer>; // obsolete
        	dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ); ... };
        	dump-file <quoted_string>;
        	edns-udp-size <integer>;
        	empty-contact <string>;
        	empty-server <string>;
        	empty-zones-enable <boolean>;
        	fetch-quota-params <integer> <fixedpoint> <fixedpoint> <fixedpoint>;
        	fetches-per-server <integer> [ ( drop | fail ) ];
        	fetches-per-zone <integer> [ ( drop | fail ) ];
        	files ( default | unlimited | <sizeval> ); // deprecated
        	flush-zones-on-shutdown <boolean>;
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	fstrm-set-buffer-hint <integer>; // not configured
        	fstrm-set-flush-timeout <integer>; // not configured
        	fstrm-set-input-queue-size <integer>; // not configured
        	fstrm-set-output-notify-threshold <integer>; // not configured
        	fstrm-set-output-queue-model ( mpsc | spsc ); // not configured
        	fstrm-set-output-queue-size <integer>; // not configured
        	fstrm-set-reopen-interval <duration>; // not configured
        	geoip-directory ( <quoted_string> | none );
        	glue-cache <boolean>; // deprecated
        	heartbeat-interval <integer>;
        	hostname ( <quoted_string> | none );
        	http-listener-clients <integer>;
        	http-port <integer>;
        	http-streams-per-connection <integer>;
        	https-port <integer>;
        	interface-interval <duration>;
        	ipv4only-contact <string>;
        	ipv4only-enable <boolean>;
        	ipv4only-server <string>;
        	ixfr-from-differences ( primary | master | secondary | slave | <boolean> );
        	keep-response-order { <address_match_element>; ... };
        	key-directory <quoted_string>;
        	lame-ttl <duration>;
        	listen-on [ port <integer> ] [ tls <string> ] [ http <string> ] { <address_match_element>; ... }; // may occur multiple times
        	listen-on-v6 [ port <integer> ] [ tls <string> ] [ http <string> ] { <address_match_element>; ... }; // may occur multiple times
        	lmdb-mapsize <sizeval>;
        	lock-file ( <quoted_string> | none );
        	managed-keys-directory <quoted_string>;
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	match-mapped-addresses <boolean>;
        	max-cache-size ( default | unlimited | <sizeval> | <percentage> );
        	max-cache-ttl <duration>;
        	max-clients-per-query <integer>;
        	max-ixfr-ratio ( unlimited | <percentage> );
        	max-journal-size ( default | unlimited | <sizeval> );
        	max-ncache-ttl <duration>;
        	max-records <integer>;
        	max-recursion-depth <integer>;
        	max-recursion-queries <integer>;
        	max-refresh-time <integer>;
        	max-retry-time <integer>;
        	max-rsa-exponent-size <integer>;
        	max-stale-ttl <duration>;
        	max-transfer-idle-in <integer>;
        	max-transfer-idle-out <integer>;
        	max-transfer-time-in <integer>;
        	max-transfer-time-out <integer>;
        	max-udp-size <integer>;
        	max-zone-ttl ( unlimited | <duration> );
        	memstatistics <boolean>;
        	memstatistics-file <quoted_string>;
        	message-compression <boolean>;
        	min-cache-ttl <duration>;
        	min-ncache-ttl <duration>;
        	min-refresh-time <integer>;
        	min-retry-time <integer>;
        	minimal-any <boolean>;
        	minimal-responses ( no-auth | no-auth-recursive | <boolean> );
        	multi-master <boolean>;
        	new-zones-directory <quoted_string>;
        	no-case-compress { <address_match_element>; ... };
        	nocookie-udp-size <integer>;
        	notify ( explicit | master-only | primary-only | <boolean> );
        	notify-delay <integer>;
        	notify-rate <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	notify-to-soa <boolean>;
        	nsec3-test-zone <boolean>; // test only
        	nta-lifetime <duration>;
        	nta-recheck <duration>;
        	nxdomain-redirect <string>;
        	parental-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	parental-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	pid-file ( <quoted_string> | none );
        	port <integer>;
        	preferred-glue <string>;
        	prefetch <integer> [ <integer> ];
        	provide-ixfr <boolean>;
        	qname-minimization ( strict | relaxed | disabled | off );
        	query-source ( ( [ address ] ( <ipv4_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv4_address> | * ) ] port ( <integer> | * ) ) );
        	query-source-v6 ( ( [ address ] ( <ipv6_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv6_address> | * ) ] port ( <integer> | * ) ) );
        	querylog <boolean>;
        	random-device ( <quoted_string> | none ); // obsolete
        	rate-limit {
        		all-per-second <integer>;
        		errors-per-second <integer>;
        		exempt-clients { <address_match_element>; ... };
        		ipv4-prefix-length <integer>;
        		ipv6-prefix-length <integer>;
        		log-only <boolean>;
        		max-table-size <integer>;
        		min-table-size <integer>;
        		nodata-per-second <integer>;
        		nxdomains-per-second <integer>;
        		qps-scale <integer>;
        		referrals-per-second <integer>;
        		responses-per-second <integer>;
        		slip <integer>;
        		window <integer>;
        	};
        	recursing-file <quoted_string>;
        	recursion <boolean>;
        	recursive-clients <integer>;
        	request-expire <boolean>;
        	request-ixfr <boolean>;
        	request-nsid <boolean>;
        	require-server-cookie <boolean>;
        	reserved-sockets <integer>; // deprecated
        	resolver-nonbackoff-tries <integer>;
        	resolver-query-timeout <integer>;
        	resolver-retry-interval <integer>;
        	response-padding { <address_match_element>; ... } block-size <integer>;
        	response-policy { zone <string> [ add-soa <boolean> ] [ log <boolean> ] [ max-policy-ttl <duration> ] [ min-update-interval <duration> ] [ policy ( cname | disabled | drop | given | no-op | nodata | nxdomain | passthru | tcp-only <quoted_string> ) ] [ recursive-only <boolean> ] [ nsip-enable <boolean> ] [ nsdname-enable <boolean> ]; ... } [ add-soa <boolean> ] [ break-dnssec <boolean> ] [ max-policy-ttl <duration> ] [ min-update-interval <duration> ] [ min-ns-dots <integer> ] [ nsip-wait-recurse <boolean> ] [ nsdname-wait-recurse <boolean> ] [ qname-wait-recurse <boolean> ] [ recursive-only <boolean> ] [ nsip-enable <boolean> ] [ nsdname-enable <boolean> ] [ dnsrps-enable <boolean> ] [ dnsrps-options { <unspecified-text> } ];
        	reuseport <boolean>;
        	root-delegation-only [ exclude { <string>; ... } ];
        	root-key-sentinel <boolean>;
        	rrset-order { [ class <string> ] [ type <string> ] [ name <quoted_string> ] <string> <string>; ... };
        	secroots-file <quoted_string>;
        	send-cookie <boolean>;
        	serial-query-rate <integer>;
        	serial-update-method ( date | increment | unixtime );
        	server-id ( <quoted_string> | none | hostname );
        	servfail-ttl <duration>;
        	session-keyalg <string>;
        	session-keyfile ( <quoted_string> | none );
        	session-keyname <string>;
        	sig-signing-nodes <integer>;
        	sig-signing-signatures <integer>;
        	sig-signing-type <integer>;
        	sig-validity-interval <integer> [ <integer> ];
        	sortlist { <address_match_element>; ... };
        	stacksize ( default | unlimited | <sizeval> ); // deprecated
        	stale-answer-client-timeout ( disabled | off | <integer> );
        	stale-answer-enable <boolean>;
        	stale-answer-ttl <duration>;
        	stale-cache-enable <boolean>;
        	stale-refresh-time <duration>;
        	startup-notify-rate <integer>;
        	statistics-file <quoted_string>;
        	suppress-initial-notify <boolean>; // obsolete
        	synth-from-dnssec <boolean>;
        	tcp-advertised-timeout <integer>;
        	tcp-clients <integer>;
        	tcp-idle-timeout <integer>;
        	tcp-initial-timeout <integer>;
        	tcp-keepalive-timeout <integer>;
        	tcp-listen-queue <integer>;
        	tcp-receive-buffer <integer>;
        	tcp-send-buffer <integer>;
        	tkey-dhkey <quoted_string> <integer>;
        	tkey-domain <quoted_string>;
        	tkey-gssapi-credential <quoted_string>;
        	tkey-gssapi-keytab <quoted_string>;
        	tls-port <integer>;
        	transfer-format ( many-answers | one-answer );
        	transfer-message-size <integer>;
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	transfers-in <integer>;
        	transfers-out <integer>;
        	transfers-per-ns <integer>;
        	trust-anchor-telemetry <boolean>; // experimental
        	try-tcp-refresh <boolean>;
        	udp-receive-buffer <integer>;
        	udp-send-buffer <integer>;
        	update-check-ksk <boolean>;
        	update-quota <integer>;
        	use-alt-transfer-source <boolean>; // deprecated
        	use-v4-udp-ports { <portrange>; ... };
        	use-v6-udp-ports { <portrange>; ... };
        	v6-bias <integer>;
        	validate-except { <string>; ... };
        	version ( <quoted_string> | none );
        	zero-no-soa-ttl <boolean>;
        	zero-no-soa-ttl-cache <boolean>;
        	zone-statistics ( full | terse | none | <boolean> );
        };

        parental-agents <string> [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... }; // may occur multiple times

        plugin ( query ) <string> [ { <unspecified-text> } ]; // may occur multiple times

        primaries <string> [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... }; // may occur multiple times

        server <netprefix> {
        	bogus <boolean>;
        	edns <boolean>;
        	edns-udp-size <integer>;
        	edns-version <integer>;
        	keys <server_key>;
        	max-udp-size <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	padding <integer>;
        	provide-ixfr <boolean>;
        	query-source ( ( [ address ] ( <ipv4_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv4_address> | * ) ] port ( <integer> | * ) ) );
        	query-source-v6 ( ( [ address ] ( <ipv6_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv6_address> | * ) ] port ( <integer> | * ) ) );
        	request-expire <boolean>;
        	request-ixfr <boolean>;
        	request-nsid <boolean>;
        	send-cookie <boolean>;
        	tcp-keepalive <boolean>;
        	tcp-only <boolean>;
        	transfer-format ( many-answers | one-answer );
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	transfers <integer>;
        }; // may occur multiple times

        statistics-channels {
        	inet ( <ipv4_address> | <ipv6_address> | * ) [ port ( <integer> | * ) ] [ allow { <address_match_element>; ... } ]; // may occur multiple times
        }; // may occur multiple times

        tls <string> {
        	ca-file <quoted_string>;
        	cert-file <quoted_string>;
        	ciphers <string>;
        	dhparam-file <quoted_string>;
        	key-file <quoted_string>;
        	prefer-server-ciphers <boolean>;
        	protocols { <string>; ... };
        	remote-hostname <quoted_string>;
        	session-tickets <boolean>;
        }; // may occur multiple times

        trust-anchors { <string> ( static-key | initial-key | static-ds | initial-ds ) <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times

        trusted-keys { <string> <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times, deprecated

        view <string> [ <class> ] {
        	allow-new-zones <boolean>;
        	allow-notify { <address_match_element>; ... };
        	allow-query { <address_match_element>; ... };
        	allow-query-cache { <address_match_element>; ... };
        	allow-query-cache-on { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	allow-recursion { <address_match_element>; ... };
        	allow-recursion-on { <address_match_element>; ... };
        	allow-transfer [ port <integer> ] [ transport <string> ] { <address_match_element>; ... };
        	allow-update { <address_match_element>; ... };
        	allow-update-forwarding { <address_match_element>; ... };
        	also-notify [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	alt-transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	alt-transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	attach-cache <string>;
        	auth-nxdomain <boolean>;
        	auto-dnssec ( allow | maintain | off ); // deprecated
        	catalog-zones { zone <string> [ default-primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... } ] [ zone-directory <quoted_string> ] [ in-memory <boolean> ] [ min-update-interval <duration> ]; ... };
        	check-dup-records ( fail | warn | ignore );
        	check-integrity <boolean>;
        	check-mx ( fail | warn | ignore );
        	check-mx-cname ( fail | warn | ignore );
        	check-names ( primary | master | secondary | slave | response ) ( fail | warn | ignore ); // may occur multiple times
        	check-sibling <boolean>;
        	check-spf ( warn | ignore );
        	check-srv-cname ( fail | warn | ignore );
        	check-wildcard <boolean>;
        	clients-per-query <integer>;
        	deny-answer-addresses { <address_match_element>; ... } [ except-from { <string>; ... } ];
        	deny-answer-aliases { <string>; ... } [ except-from { <string>; ... } ];
        	dialup ( notify | notify-passive | passive | refresh | <boolean> );
        	disable-algorithms <string> { <string>; ... }; // may occur multiple times
        	disable-ds-digests <string> { <string>; ... }; // may occur multiple times
        	disable-empty-zone <string>; // may occur multiple times
        	dlz <string> {
        		database <string>;
        		search <boolean>;
        	}; // may occur multiple times
        	dns64 <netprefix> {
        		break-dnssec <boolean>;
        		clients { <address_match_element>; ... };
        		exclude { <address_match_element>; ... };
        		mapped { <address_match_element>; ... };
        		recursive-only <boolean>;
        		suffix <ipv6_address>;
        	}; // may occur multiple times
        	dns64-contact <string>;
        	dns64-server <string>;
        	dnskey-sig-validity <integer>;
        	dnsrps-enable <boolean>; // not configured
        	dnsrps-options { <unspecified-text> }; // not configured
        	dnssec-accept-expired <boolean>;
        	dnssec-dnskey-kskonly <boolean>;
        	dnssec-loadkeys-interval <integer>;
        	dnssec-must-be-secure <string> <boolean>; // may occur multiple times
        	dnssec-policy <string>;
        	dnssec-secure-to-insecure <boolean>;
        	dnssec-update-mode ( maintain | no-resign );
        	dnssec-validation ( yes | no | auto );
        	dnstap { ( all | auth | client | forwarder | resolver | update ) [ ( query | response ) ]; ... }; // not configured
        	dual-stack-servers [ port <integer> ] { ( <quoted_string> [ port <integer> ] | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ); ... };
        	dyndb <string> <quoted_string> { <unspecified-text> }; // may occur multiple times
        	edns-udp-size <integer>;
        	empty-contact <string>;
        	empty-server <string>;
        	empty-zones-enable <boolean>;
        	fetch-quota-params <integer> <fixedpoint> <fixedpoint> <fixedpoint>;
        	fetches-per-server <integer> [ ( drop | fail ) ];
        	fetches-per-zone <integer> [ ( drop | fail ) ];
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	glue-cache <boolean>; // deprecated
        	ipv4only-contact <string>;
        	ipv4only-enable <boolean>;
        	ipv4only-server <string>;
        	ixfr-from-differences ( primary | master | secondary | slave | <boolean> );
        	key <string> {
        		algorithm <string>;
        		secret <string>;
        	}; // may occur multiple times
        	key-directory <quoted_string>;
        	lame-ttl <duration>;
        	lmdb-mapsize <sizeval>;
        	managed-keys { <string> ( static-key | initial-key | static-ds | initial-ds ) <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times, deprecated
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	match-clients { <address_match_element>; ... };
        	match-destinations { <address_match_element>; ... };
        	match-recursive-only <boolean>;
        	max-cache-size ( default | unlimited | <sizeval> | <percentage> );
        	max-cache-ttl <duration>;
        	max-clients-per-query <integer>;
        	max-ixfr-ratio ( unlimited | <percentage> );
        	max-journal-size ( default | unlimited | <sizeval> );
        	max-ncache-ttl <duration>;
        	max-records <integer>;
        	max-recursion-depth <integer>;
        	max-recursion-queries <integer>;
        	max-refresh-time <integer>;
        	max-retry-time <integer>;
        	max-stale-ttl <duration>;
        	max-transfer-idle-in <integer>;
        	max-transfer-idle-out <integer>;
        	max-transfer-time-in <integer>;
        	max-transfer-time-out <integer>;
        	max-udp-size <integer>;
        	max-zone-ttl ( unlimited | <duration> );
        	message-compression <boolean>;
        	min-cache-ttl <duration>;
        	min-ncache-ttl <duration>;
        	min-refresh-time <integer>;
        	min-retry-time <integer>;
        	minimal-any <boolean>;
        	minimal-responses ( no-auth | no-auth-recursive | <boolean> );
        	multi-master <boolean>;
        	new-zones-directory <quoted_string>;
        	no-case-compress { <address_match_element>; ... };
        	nocookie-udp-size <integer>;
        	notify ( explicit | master-only | primary-only | <boolean> );
        	notify-delay <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	notify-to-soa <boolean>;
        	nsec3-test-zone <boolean>; // test only
        	nta-lifetime <duration>;
        	nta-recheck <duration>;
        	nxdomain-redirect <string>;
        	parental-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	parental-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	plugin ( query ) <string> [ { <unspecified-text> } ]; // may occur multiple times
        	preferred-glue <string>;
        	prefetch <integer> [ <integer> ];
        	provide-ixfr <boolean>;
        	qname-minimization ( strict | relaxed | disabled | off );
        	query-source ( ( [ address ] ( <ipv4_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv4_address> | * ) ] port ( <integer> | * ) ) );
        	query-source-v6 ( ( [ address ] ( <ipv6_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv6_address> | * ) ] port ( <integer> | * ) ) );
        	rate-limit {
        		all-per-second <integer>;
        		errors-per-second <integer>;
        		exempt-clients { <address_match_element>; ... };
        		ipv4-prefix-length <integer>;
        		ipv6-prefix-length <integer>;
        		log-only <boolean>;
        		max-table-size <integer>;
        		min-table-size <integer>;
        		nodata-per-second <integer>;
        		nxdomains-per-second <integer>;
        		qps-scale <integer>;
        		referrals-per-second <integer>;
        		responses-per-second <integer>;
        		slip <integer>;
        		window <integer>;
        	};
        	recursion <boolean>;
        	request-expire <boolean>;
        	request-ixfr <boolean>;
        	request-nsid <boolean>;
        	require-server-cookie <boolean>;
        	resolver-nonbackoff-tries <integer>;
        	resolver-query-timeout <integer>;
        	resolver-retry-interval <integer>;
        	response-padding { <address_match_element>; ... } block-size <integer>;
        	response-policy { zone <string> [ add-soa <boolean> ] [ log <boolean> ] [ max-policy-ttl <duration> ] [ min-update-interval <duration> ] [ policy ( cname | disabled | drop | given | no-op | nodata | nxdomain | passthru | tcp-only <quoted_string> ) ] [ recursive-only <boolean> ] [ nsip-enable <boolean> ] [ nsdname-enable <boolean> ]; ... } [ add-soa <boolean> ] [ break-dnssec <boolean> ] [ max-policy-ttl <duration> ] [ min-update-interval <duration> ] [ min-ns-dots <integer> ] [ nsip-wait-recurse <boolean> ] [ nsdname-wait-recurse <boolean> ] [ qname-wait-recurse <boolean> ] [ recursive-only <boolean> ] [ nsip-enable <boolean> ] [ nsdname-enable <boolean> ] [ dnsrps-enable <boolean> ] [ dnsrps-options { <unspecified-text> } ];
        	root-delegation-only [ exclude { <string>; ... } ];
        	root-key-sentinel <boolean>;
        	rrset-order { [ class <string> ] [ type <string> ] [ name <quoted_string> ] <string> <string>; ... };
        	send-cookie <boolean>;
        	serial-update-method ( date | increment | unixtime );
        	server <netprefix> {
        		bogus <boolean>;
        		edns <boolean>;
        		edns-udp-size <integer>;
        		edns-version <integer>;
        		keys <server_key>;
        		max-udp-size <integer>;
        		notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        		notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        		padding <integer>;
        		provide-ixfr <boolean>;
        		query-source ( ( [ address ] ( <ipv4_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv4_address> | * ) ] port ( <integer> | * ) ) );
        		query-source-v6 ( ( [ address ] ( <ipv6_address> | * ) [ port ( <integer> | * ) ] ) | ( [ [ address ] ( <ipv6_address> | * ) ] port ( <integer> | * ) ) );
        		request-expire <boolean>;
        		request-ixfr <boolean>;
        		request-nsid <boolean>;
        		send-cookie <boolean>;
        		tcp-keepalive <boolean>;
        		tcp-only <boolean>;
        		transfer-format ( many-answers | one-answer );
        		transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        		transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        		transfers <integer>;
        	}; // may occur multiple times
        	servfail-ttl <duration>;
        	sig-signing-nodes <integer>;
        	sig-signing-signatures <integer>;
        	sig-signing-type <integer>;
        	sig-validity-interval <integer> [ <integer> ];
        	sortlist { <address_match_element>; ... };
        	stale-answer-client-timeout ( disabled | off | <integer> );
        	stale-answer-enable <boolean>;
        	stale-answer-ttl <duration>;
        	stale-cache-enable <boolean>;
        	stale-refresh-time <duration>;
        	suppress-initial-notify <boolean>; // obsolete
        	synth-from-dnssec <boolean>;
        	transfer-format ( many-answers | one-answer );
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	trust-anchor-telemetry <boolean>; // experimental
        	trust-anchors { <string> ( static-key | initial-key | static-ds | initial-ds ) <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times
        	trusted-keys { <string> <integer> <integer> <integer> <quoted_string>; ... }; // may occur multiple times, deprecated
        	try-tcp-refresh <boolean>;
        	update-check-ksk <boolean>;
        	use-alt-transfer-source <boolean>; // deprecated
        	v6-bias <integer>;
        	validate-except { <string>; ... };
        	zero-no-soa-ttl <boolean>;
        	zero-no-soa-ttl-cache <boolean>;
        	zone-statistics ( full | terse | none | <boolean> );
        }; // may occur multiple times

Any of these zone statements can also be set inside the view statement.

        zone <string> [ <class> ] {
        	type primary;
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	allow-transfer [ port <integer> ] [ transport <string> ] { <address_match_element>; ... };
        	allow-update { <address_match_element>; ... };
        	also-notify [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	alt-transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	alt-transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	auto-dnssec ( allow | maintain | off ); // deprecated
        	check-dup-records ( fail | warn | ignore );
        	check-integrity <boolean>;
        	check-mx ( fail | warn | ignore );
        	check-mx-cname ( fail | warn | ignore );
        	check-names ( fail | warn | ignore );
        	check-sibling <boolean>;
        	check-spf ( warn | ignore );
        	check-srv-cname ( fail | warn | ignore );
        	check-wildcard <boolean>;
        	database <string>;
        	dialup ( notify | notify-passive | passive | refresh | <boolean> );
        	dlz <string>;
        	dnskey-sig-validity <integer>;
        	dnssec-dnskey-kskonly <boolean>;
        	dnssec-loadkeys-interval <integer>;
        	dnssec-policy <string>;
        	dnssec-secure-to-insecure <boolean>;
        	dnssec-update-mode ( maintain | no-resign );
        	file <quoted_string>;
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	inline-signing <boolean>;
        	ixfr-from-differences <boolean>;
        	journal <quoted_string>;
        	key-directory <quoted_string>;
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	max-ixfr-ratio ( unlimited | <percentage> );
        	max-journal-size ( default | unlimited | <sizeval> );
        	max-records <integer>;
        	max-transfer-idle-out <integer>;
        	max-transfer-time-out <integer>;
        	max-zone-ttl ( unlimited | <duration> );
        	notify ( explicit | master-only | primary-only | <boolean> );
        	notify-delay <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	notify-to-soa <boolean>;
        	nsec3-test-zone <boolean>; // test only
        	parental-agents [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	parental-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	parental-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	serial-update-method ( date | increment | unixtime );
        	sig-signing-nodes <integer>;
        	sig-signing-signatures <integer>;
        	sig-signing-type <integer>;
        	sig-validity-interval <integer> [ <integer> ];
        	update-check-ksk <boolean>;
        	update-policy ( local | { ( deny | grant ) <string> ( 6to4-self | external | krb5-self | krb5-selfsub | krb5-subdomain | krb5-subdomain-self-rhs | ms-self | ms-selfsub | ms-subdomain | ms-subdomain-self-rhs | name | self | selfsub | selfwild | subdomain | tcp-self | wildcard | zonesub ) [ <string> ] <rrtypelist>; ... } );
        	zero-no-soa-ttl <boolean>;
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type secondary;
        	allow-notify { <address_match_element>; ... };
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	allow-transfer [ port <integer> ] [ transport <string> ] { <address_match_element>; ... };
        	allow-update-forwarding { <address_match_element>; ... };
        	also-notify [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	alt-transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	alt-transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	auto-dnssec ( allow | maintain | off ); // deprecated
        	check-names ( fail | warn | ignore );
        	database <string>;
        	dialup ( notify | notify-passive | passive | refresh | <boolean> );
        	dlz <string>;
        	dnskey-sig-validity <integer>;
        	dnssec-dnskey-kskonly <boolean>;
        	dnssec-loadkeys-interval <integer>;
        	dnssec-policy <string>;
        	dnssec-update-mode ( maintain | no-resign );
        	file <quoted_string>;
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	inline-signing <boolean>;
        	ixfr-from-differences <boolean>;
        	journal <quoted_string>;
        	key-directory <quoted_string>;
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	max-ixfr-ratio ( unlimited | <percentage> );
        	max-journal-size ( default | unlimited | <sizeval> );
        	max-records <integer>;
        	max-refresh-time <integer>;
        	max-retry-time <integer>;
        	max-transfer-idle-in <integer>;
        	max-transfer-idle-out <integer>;
        	max-transfer-time-in <integer>;
        	max-transfer-time-out <integer>;
        	min-refresh-time <integer>;
        	min-retry-time <integer>;
        	multi-master <boolean>;
        	notify ( explicit | master-only | primary-only | <boolean> );
        	notify-delay <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	notify-to-soa <boolean>;
        	nsec3-test-zone <boolean>; // test only
        	parental-agents [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	parental-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	parental-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	request-expire <boolean>;
        	request-ixfr <boolean>;
        	sig-signing-nodes <integer>;
        	sig-signing-signatures <integer>;
        	sig-signing-type <integer>;
        	sig-validity-interval <integer> [ <integer> ];
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	try-tcp-refresh <boolean>;
        	update-check-ksk <boolean>;
        	use-alt-transfer-source <boolean>; // deprecated
        	zero-no-soa-ttl <boolean>;
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type mirror;
        	allow-notify { <address_match_element>; ... };
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	allow-transfer [ port <integer> ] [ transport <string> ] { <address_match_element>; ... };
        	allow-update-forwarding { <address_match_element>; ... };
        	also-notify [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	alt-transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	alt-transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ]; // deprecated
        	check-names ( fail | warn | ignore );
        	database <string>;
        	file <quoted_string>;
        	ixfr-from-differences <boolean>;
        	journal <quoted_string>;
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	max-ixfr-ratio ( unlimited | <percentage> );
        	max-journal-size ( default | unlimited | <sizeval> );
        	max-records <integer>;
        	max-refresh-time <integer>;
        	max-retry-time <integer>;
        	max-transfer-idle-in <integer>;
        	max-transfer-idle-out <integer>;
        	max-transfer-time-in <integer>;
        	max-transfer-time-out <integer>;
        	min-refresh-time <integer>;
        	min-retry-time <integer>;
        	multi-master <boolean>;
        	notify ( explicit | master-only | primary-only | <boolean> );
        	notify-delay <integer>;
        	notify-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	notify-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	request-expire <boolean>;
        	request-ixfr <boolean>;
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	try-tcp-refresh <boolean>;
        	use-alt-transfer-source <boolean>; // deprecated
        	zero-no-soa-ttl <boolean>;
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type forward;
        	delegation-only <boolean>;
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        };

        zone <string> [ <class> ] {
        	type hint;
        	check-names ( fail | warn | ignore );
        	delegation-only <boolean>;
        	file <quoted_string>;
        };

        zone <string> [ <class> ] {
        	type redirect;
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	dlz <string>;
        	file <quoted_string>;
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	max-records <integer>;
        	max-zone-ttl ( unlimited | <duration> );
        	primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type static-stub;
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	max-records <integer>;
        	server-addresses { ( <ipv4_address> | <ipv6_address> ); ... };
        	server-names { <string>; ... };
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type stub;
        	allow-query { <address_match_element>; ... };
        	allow-query-on { <address_match_element>; ... };
        	check-names ( fail | warn | ignore );
        	database <string>;
        	delegation-only <boolean>;
        	dialup ( notify | notify-passive | passive | refresh | <boolean> );
        	file <quoted_string>;
        	forward ( first | only );
        	forwarders [ port <integer> ]  { ( <ipv4_address> | <ipv6_address> ) [ port <integer> ]; ... };
        	masterfile-format ( raw | text );
        	masterfile-style ( full | relative );
        	max-records <integer>;
        	max-refresh-time <integer>;
        	max-retry-time <integer>;
        	max-transfer-idle-in <integer>;
        	max-transfer-time-in <integer>;
        	min-refresh-time <integer>;
        	min-retry-time <integer>;
        	multi-master <boolean>;
        	primaries [ port <integer> ]  { ( <remote-servers> | <ipv4_address> [ port <integer> ] | <ipv6_address> [ port <integer> ] ) [ key <string> ] [ tls <string> ]; ... };
        	transfer-source ( <ipv4_address> | * ) [ port ( <integer> | * ) ];
        	transfer-source-v6 ( <ipv6_address> | * ) [ port ( <integer> | * ) ];
        	use-alt-transfer-source <boolean>; // deprecated
        	zone-statistics ( full | terse | none | <boolean> );
        };

        zone <string> [ <class> ] {
        	type delegation-only;
        };

        zone <string> [ <class> ] {
        	in-view <string>;
        };

FILES

/etc/bind/named.conf

SEE ALSO

named(8), named-checkconf(8), rndc(8), rndc-confgen(8), tsig-keygen(8), BIND 9 Administrator Reference Manual.

AUTHOR
Internet Systems Consortium

COPYRIGHT
2023, Internet Systems Consortium