Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
KNOT.CONF(5)			   Knot	DNS			  KNOT.CONF(5)

NAME
       knot.conf - Knot	DNS configuration file

DESCRIPTION
       Configuration files for Knot DNS	use simplified YAML format. Simplified
       means that not all of the features are supported.

       For  the	description of configuration items, we have to declare a mean-
       ing of the following symbols:

        INT  Integer

        STR  Textual string

        HEXSTR	 Hexadecimal string (with 0x prefix)

        BOOL  Boolean value (on/off or	true/false)

        TIME  Number of seconds, an integer with a possible  time  multiplier
	 suffix	 (s ~ 1, m ~ 60, h ~ 3600, d ~ 24 * 3600, w ~ 7	* 24 * 3600, M
	 ~ 30 *	24 * 3600, y ~ 365 * 24	* 3600)

        SIZE  Number of bytes,	an integer with	 a  possible  size  multiplier
	 suffix	(B ~ 1,	K ~ 1024, M ~ 1024^2 or	G ~ 1024^3)

        BASE64	 Base64	encoded	string

        ADDR  IPv4 or IPv6 address

        DNAME	Domain name

        ...  Multi-valued item, order of the values is	preserved

        [ ]  Optional value

        |  Choice

       The  configuration consists of several fixed sections and optional mod-
       ule sections. There are 18 fixed	sections (module,  server,  xdp,  con-
       trol,  log,  statistics,	database, keystore, key, remote, remotes, acl,
       submission, dnskey-sync,	policy,	external`,  template,  zone).	Module
       sections	are prefixed with the mod- prefix (e.g.	mod-stats).

       Most of the sections (e.g. zone)	are sequences of settings blocks. Each
       settings	 block begins with a unique identifier,	which can be used as a
       reference from other sections (such an identifier must  be  defined  in
       advance).

       A multi-valued item can be specified either as a	YAML sequence:

	  address: [10.0.0.1, 10.0.0.2]

       or as more single-valued	items each on an extra line:

	  address: 10.0.0.1
	  address: 10.0.0.2

       If  an  item  value  contains spaces or other special characters, it is
       necessary to enclose such a value within	double quotes "	".

       If not specified	otherwise, an item representing	a file or a  directory
       path  may be defined either as an absolute path (starting with /), or a
       path relative to	the same directory as the default value	of the item.

COMMENTS
       A comment begins	with a # character and is ignored  during  processing.
       Also  each  configuration  section or sequence block allows a permanent
       comment using the comment item which is stored in the server beside the
       configuration.

INCLUDING CONFIGURATION
       Another configuration file or files, matching a	pattern,  can  be  in-
       cluded at the top level in the current file.

	  include: STR

   include
       A  path or a matching pattern specifying	one or more files that are in-
       cluded at the place of the include option position  in  the  configura-
       tion.   If  the path is not absolute, then it is	considered to be rela-
       tive to the current file. The pattern can be an arbitrary string	 meet-
       ing  POSIX  glob	 requirements,	e.g.  dir/*.conf.  Matching  files are
       processed in sorted order.

       Default:	not set

CLEARING CONFIGURATION SECTIONS
       It's possible to	clear specified	configuration sections at given	phases
       of the configuration parsing.

	  clear: STR

   clear
       A matching pattern specifying configuration sections that  are  cleared
       when this item is parsed. This allows overriding	of existing configura-
       tion  in	the configuration database when	including a configuration file
       or ensures that some configuration wasn't  specified  in	 previous  in-
       cludes.

       NOTE:
	  For  the  pattern  matching the POSIX	function fnmatch() is used. On
	  Linux, the GNU extension FNM_EXTMATCH	is enabled, which  allows  ex-
	  tended pattern matching.  Examples:

	   clear: zone	 Clears	the zone section.

	   clear: mod-*  Clears all module sections.

	   clear: "[!z]*"  Clears all sections	not beginning with letter z.

	   clear:  !(zone)   (GNU  only)  Clears all sections except the zone
	    one.

	   clear: @(zone|template)  (GNU only)	Clears the zone	 and  template
	    sections.

       Default:	not set

MODULE SECTION
       Dynamic modules loading configuration.

       NOTE:
	  If  configured  with	non-empty --with-moduledir=path	parameter, all
	  shared modules in this directory will	be automatically loaded.

	  module:
	    - id: STR
	      file: STR

   id
       A module	identifier in the form of the mod- prefix and module name suf-
       fix.

   file
       A path to a shared library file with the	module implementation.

       WARNING:
	  If the path is not absolute, the library is searched in the  set  of
	  system directories. See man dlopen for more details.

       Default:	     ${libdir}/knot/modules-${version}/module_name.so	   (or
       ${path}/module_name.so if configured with --with-moduledir=path)

SERVER SECTION
       General options related to the server.

	  server:
	      identity:	[STR]
	      version: [STR]
	      nsid: [STR|HEXSTR]
	      rundir: STR
	      user: STR[:STR]
	      pidfile: STR
	      udp-workers: INT
	      tcp-workers: INT
	      background-workers: INT
	      async-start: BOOL
	      tcp-idle-timeout:	TIME
	      tcp-io-timeout: INT
	      tcp-remote-io-timeout: INT
	      tcp-max-clients: INT
	      tcp-reuseport: BOOL
	      tcp-fastopen: BOOL
	      quic-max-clients:	INT
	      quic-outbuf-max-size: SIZE
	      quic-idle-close-timeout: TIME
	      remote-pool-limit: INT
	      remote-pool-timeout: TIME
	      remote-retry-delay: INT
	      socket-affinity: BOOL
	      udp-max-payload: SIZE
	      udp-max-payload-ipv4: SIZE
	      udp-max-payload-ipv6: SIZE
	      key-file:	STR
	      cert-file: STR
	      ca-file: STR ...
	      edns-client-subnet: BOOL
	      answer-rotation: BOOL
	      automatic-acl: BOOL
	      proxy-allowlist: ADDR[/INT] | ADDR-ADDR ...
	      dbus-event: none | running | zone-updated	| external-verify | ksk-submission | dnssec-invalid ...
	      dbus-init-delay: TIME
	      listen: ADDR[@INT] | STR ...
	      listen-quic: ADDR[@INT] ...
	      listen-tls: ADDR[@INT] ...

       CAUTION:
	  When you change configuration	parameters dynamically or via configu-
	  ration file reload, some parameters in the  Server  section  require
	  restarting  the Knot server so that the changes take effect. See be-
	  low for the details.

   identity
       An identity of the server returned in the response to the query for TXT
       record id.server. or hostname.bind. in the CHAOS	class (RFC 4892).  Set
       to an empty value to disable.

       Default:	FQDN hostname

   version
       A version of the	server software	returned in the	response to the	 query
       for TXT record version.server. or version.bind. in the CHAOS class (RFC
       4892). Set to an	empty value to disable.

       Default:	server version

   nsid
       A  DNS name server identifier (RFC 5001). Set to	an empty value to dis-
       able.

       Default:	FQDN hostname at the moment of the daemon start

   rundir
       A path for storing run-time data	(PID  file,  unix  sockets,  etc.).  A
       non-absolute path is relative to	the knotd startup directory.

       Depending  on  the  usage  of  this  parameter,	its change may require
       restart of the Knot server to take effect.

       Default:	${localstatedir}/run/knot (configured with --with-rundir=path)

   user
       A system	user with an optional system group  (user:group)  under	 which
       the server is run after starting	and binding to interfaces. Linux capa-
       bilities	are employed if	supported.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	root:root

   pidfile
       A PID file location.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	rundir/knot.pid

   udp-workers
       A number	of UDP workers (threads) used to process incoming queries over
       UDP.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	equal to the number of online CPUs

   tcp-workers
       A number	of TCP workers (threads) used to process incoming queries over
       TCP.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	 equal to the number of	online CPUs, default value is at least
       10

   background-workers
       A number	of workers (threads) used  to  execute	background  operations
       (zone loading, zone updates, etc.).

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	equal to the number of online CPUs, default value is  at  most
       10

   async-start
       If  enabled,  server doesn't wait for the zones to be loaded and	starts
       responding immediately with SERVFAIL answers until the zone loads.

       Default:	off

   tcp-idle-timeout
       Maximum idle time (in seconds) between requests on an inbound TCP  con-
       nection.	 It means if there is no activity on an	inbound	TCP connection
       during this limit, the connection is closed by the server.

       Minimum:	1

       Default:	10

   tcp-io-timeout
       Maximum	time (in milliseconds) to receive or send one DNS message over
       an inbound TCP connection. It means this	limit applies  to  normal  DNS
       queries	and  replies,  incoming	DDNS, and outgoing zone	transfers. The
       timeout is measured since some data is already available	 for  process-
       ing.  Set to 0 for infinity.

       Default:	500 (milliseconds)

       CAUTION:
	  In  order to reduce the risk of Slow Loris attacks, it's recommended
	  setting this limit as	low as possible	on public servers.

   tcp-remote-io-timeout
       Maximum time (in	milliseconds) to receive or send one DNS message  over
       an  outbound TCP/QUIC/TLS connection which has already been established
       to a configured remote server.  It means	this limit applies to incoming
       zone transfers, sending NOTIFY, DDNS forwarding,	and DS check or	 push.
       This  timeout includes the time needed for a network round-trip and for
       a query processing by the remote.  Set to 0 for infinity.

       Default:	5000 (milliseconds)

   tcp-reuseport
       If enabled, each	TCP worker listens on its own socket and the OS	kernel
       socket load balancing is	 employed  using  SO_REUSEPORT	(or  SO_REUSE-
       PORT_LB	on  FreeBSD). Due to the lack of one shared socket, the	server
       can offer higher	response rate processing over  TCP.  However,  in  the
       case  of	 time-consuming	 requests (e.g.	zone transfers of a TLD	zone),
       enabled reuseport may result in delayed or not being  responded	client
       requests. So it is advisable to use this	option on secondary servers.

       NOTE:
	  This option is ignored for UNIX sockets.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	off

   tcp-fastopen
       If enabled, use TCP Fast	Open for outbound  TCP	communication  (client
       side):  incoming	 zone  transfers, sending NOTIFY, and DDNS forwarding.
       This mode simplifies TCP	handshake and can result in better  networking
       performance.  TCP Fast Open for inbound TCP communication (server side)
       isn't affected by this configuration as it's enabled  automatically  if
       supported by OS.

       NOTE:
	  The TCP Fast Open support must also be enabled on the	OS level:

	   Linux/macOS: ensure	kernel parameter net.ipv4.tcp_fastopen is 2 or
	    3 for server side, and 1 or	3 for client side.

	   FreeBSD:  ensure kernel parameter net.inet.tcp.fastopen.server_en-
	    able is 1 for server side, and net.inet.tcp.fastopen.client_enable
	    is 1 for client side.

       Default:	off

   quic-max-clients
       A maximum number	of QUIC	clients	connected in parallel.

       See also	quic.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Minimum:	128

       Default:	10000 (ten thousand)

   quic-outbuf-max-size
       Maximum cumulative size of memory used for buffers of unACKed sent mes-
       sages. This limit is per	one UDP	worker.

       NOTE:
	  Set	low   if   little   memory   is	  available   (together	  with
	  quic-max-clients since QUIC connections are  memory-heavy).  Set  to
	  high	value if outgoing zone transfers of big	zone over QUIC are ex-
	  pected.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Minimum:	1M (1 MiB)

       Default:	100M (100 MiB)

   quic-idle-close-timeout
       Time  in	 seconds,  after  which	any idle QUIC connection is gracefully
       closed.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Minimum:	1

       Default:	4

   remote-pool-limit
       If nonzero, the server will keep	up to this number of outgoing TCP con-
       nections	 open for later	use. This is an	optimization to	avoid frequent
       opening of TCP connections to the same remote.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	0

   remote-pool-timeout
       The  timeout  in	 seconds after which the unused	kept-open outgoing TCP
       connections to remote servers are closed.

       Default:	5

   remote-retry-delay
       When a connection attempt times out to some remote address, this	infor-
       mation will be kept for this specified time (in milliseconds) and other
       connections to the same	address	 won't	be  attempted.	This  prevents
       repetitive waiting for timeout on an unreachable	remote.

       Default:	0

   socket-affinity
       If  enabled  and	 if SO_REUSEPORT is available on Linux,	all configured
       network sockets are bound to UDP	and TCP	workers	in order  to  increase
       the  networking	performance.   This  mode isn't	recommended for	setups
       where the number	of network card	queues is lower	than the number	of UDP
       or TCP workers.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	off

   tcp-max-clients
       A  maximum  number of TCP clients connected in parallel,	set this below
       the file	descriptor limit to avoid resource exhaustion.

       NOTE:
	  It is	advisable to adjust the	 maximum  number  of  open  files  per
	  process in your operating system configuration.

       Default:	one half of the	file descriptor	limit for the server process

   udp-max-payload
       Maximum EDNS0 UDP payload size default for both IPv4 and	IPv6.

       Default:	1232

   udp-max-payload-ipv4
       Maximum EDNS0 UDP payload size for IPv4.

       Default:	1232

   udp-max-payload-ipv6
       Maximum EDNS0 UDP payload size for IPv6.

       Default:	1232

   key-file
       Path  to	a server key PEM file which is used for	DNS over QUIC/TLS com-
       munication.  A non-absolute path	of a user specified key	file is	 rela-
       tive to the /usr/local/etc/knot directory.

       Default:	auto-generated key

   cert-file
       Path  to	 a  server  certificate	 PEM  file  which is used for DNS over
       QUIC/TLS	 communication.	  A  non-absolute  path	 is  relative  to  the
       /usr/local/etc/knot directory.

       Default:	one-time in-memory certificate

   ca-file
       Specifies  one  or  more	 paths to load trusted Certificate Authorities
       (CAs) from.  An empty string ("") means	the  systems  default  trusted
       CAs.  The  loaded  CAs  are  used  for remote certificate validation (-
       cert-hostname, cert-hostname, and zone-db-cert-hostname).

       Default:	not set

   edns-client-subnet
       Enable or disable EDNS Client Subnet support. If	enabled, responses  to
       queries containing the EDNS Client Subnet option	always contain a valid
       EDNS Client Subnet option according to RFC 7871.

       Default:	off

   answer-rotation
       Enable or disable sorted-rrset rotation in the answer section of	normal
       replies.	 The rotation shift is simply determined by a query ID.

       Default:	off

   automatic-acl
       If  enabled,  automatic ACL setting of configured remotes is considered
       when evaluating authorized operations.

       Default:	off

   proxy-allowlist
       An ordered list of IP addresses,	network	 subnets,  or  network	ranges
       which  are allowed as a source address of proxied DNS traffic over UDP.
       The supported proxy protocol is haproxy PROXY v2.

       NOTE:
	  TCP is not supported.

       Default:	not set

   dbus-event
       Specification of	server or zone states which emit a D-Bus signal	on the
       system  bus.  The  bus  name  is	 cz.nic.knotd,	the  object  path   is
       /cz/nic/knotd, and the interface	name is	cz.nic.knotd.events.

       Possible	values:

        none  No signal is emitted.

        running  There	are two	possible signals emitted:

	  started  when  the  server is started and all configured zones (in-
	   cluding catalog zones and their members) are	loaded or successfully
	   bootstrapped.

	  stopped when	the server shutdown sequence is	initiated.

        zone-updated  The signal zone_updated is emitted when a zone has been
	 updated; the signal parameters	are zone name and zone SOA serial.

        external-verify - The signal external_verify is emitted when  a  zone
	 is awaiting external validation before	applying the changes; the sig-
	 nal parameter is zone name.

        keys-updated  -  The signal keys_updated is emitted when a DNSSEC key
	 set is	updated; the signal parameter is zone name.

        ksk-submission	 The signal zone_ksk_submission	is emitted if there is
	 a ready KSK present when the zone is signed;  the  signal  parameters
	 are zone name,	KSK keytag, and	KSK KASP id.

        dnssec-invalid	 The signal zone_dnssec_invalid	is emitted when	DNSSEC
	 validation fails, or when ZONEMD verification fails; the signal para-
	 meters	are zone name, and remaining seconds until an RRSIG expires.

       NOTE:
	  This function	requires systemd version at least 221 or libdbus.

       TIP:
	  A   few  sample  script  templates  can  be  found  in  the  project
	  repository.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	none

   dbus-init-delay
       Time in seconds which the server	waits upon D-Bus initialization	to en-
       sure the	D-Bus client is	ready to receive signals.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Minimum:	0

       Default:	1

   listen
       One or more IP addresses	where the server listens for incoming queries.
       Optional	port specification (default is 53) can be appended to each ad-
       dress using @ separator.	Use 0.0.0.0 for	all configured IPv4  addresses
       or  :: for all configured IPv6 addresses. Filesystem path can be	speci-
       fied for	listening on local unix	SOCK_STREAM socket. Non-absolute  path
       (i.e.  not  starting  with /) is	relative to rundir.  Non-local address
       binding is automatically	enabled	if supported by	the operating system.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	not set

   listen-quic
       One  or	more IP	addresses (and optionally ports) where the server lis-
       tens for	incoming queries over QUIC protocol.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	not set

   listen-tls
       One  or	more IP	addresses (and optionally ports) where the server lis-
       tens for	incoming queries over TLS protocol (DoT).

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	not set

XDP SECTION
       Various options related to XDP listening, especially TCP.

	  xdp:
	      listen: STR[@INT]	| ADDR[@INT] ...
	      udp: BOOL
	      tcp: BOOL
	      quic: BOOL
	      quic-port: INT
	      tcp-max-clients: INT
	      tcp-inbuf-max-size: SIZE
	      tcp-outbuf-max-size: SIZE
	      tcp-idle-close-timeout: TIME
	      tcp-idle-reset-timeout: TIME
	      tcp-resend-timeout: TIME
	      route-check: BOOL
	      ring-size: INT
	      busypoll-budget: INT
	      busypoll-timeout:	INT

       CAUTION:
	  When you change configuration	parameters dynamically or via configu-
	  ration  file	reload,	 some  parameters  in  the XDP section require
	  restarting the Knot server so	that the changes take effect.

   listen
       One or more network device names	(e.g. ens786f0)	on which the Mode  XDP
       is  enabled.  Alternatively, an IP address can be used instead of a de-
       vice name, but the server will still listen on all addresses  belonging
       to the same interface!  Optional	port specification (default is 53) can
       be appended to each device name or address using	@ separator.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       CAUTION:
	  If XDP workers only process regular DNS  traffic  over  UDP,	it  is
	  strongly  recommended	 to also listen	on the addresses which are in-
	  tended to offer the DNS service, at least to fulfil the DNS require-
	  ment for working TCP.

       NOTE:
	  Incoming DDNS	over XDP isn't supported.  The server always  responds
	  with SERVFAIL.

       Default:	not set

   udp
       If enabled, DNS over UDP	is processed with XDP workers.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	on

   tcp
       If enabled, DNS over TCP	traffic	is processed with XDP workers.

       The TCP stack limitations:

	   Congestion control is not implemented.

	   Lost packets that do not contain TCP payload may not be resend.

	   Not	optimized for transfers	of non-trivial zones.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	off

   quic
       If enabled, DNS over QUIC is processed with XDP workers.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	off

   quic-port
       DNS over	QUIC will listen on the	interfaces configured by  listen,  but
       on different port, configured by	this option.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	853

   tcp-max-clients
       A maximum number	of TCP clients connected in parallel.

       Minimum:	1024

       Default:	1000000	(one million)

   tcp-inbuf-max-size
       Maximum cumulative size of memory used for buffers of incompletely  re-
       ceived messages.

       Minimum:	1M (1 MiB)

       Default:	100M (100 MiB)

   tcp-outbuf-max-size
       Maximum cumulative size of memory used for buffers of unACKed sent mes-
       sages.

       Minimum:	1M (1 MiB)

       Default:	100M (100 MiB)

   tcp-idle-close-timeout
       Time in seconds,	after which any	idle connection	is gracefully closed.

       Minimum:	1

       Default:	10

   tcp-idle-reset-timeout
       Time in seconds,	after which any	idle connection	is forcibly closed.

       Minimum:	1

       Default:	20

   tcp-resend-timeout
       Resend  outgoing	 data packets (with DNS	response payload) if not ACKed
       before this timeout (in seconds).

       Minimum:	1

       Default:	5

   route-check
       If enabled, routing information from the	operating system is considered
       when processing every incoming DNS packet received over the XDP	inter-
       face:

        If  the  outgoing interface of	the corresponding DNS response differs
	 from the incoming one,	the packet is processed	 normally  by  UDP/TCP
	 workers (XDP isn't used).

        If the	destination address is blackholed, unreachable,	or prohibited,
	 the DNS packet	is dropped without any response.

        The  destination  MAC	address	and possible VLAN tag for the response
	 are taken from	the routing system.

       If disabled, symmetrical	routing	is applied. It means  that  the	 query
       source  MAC address is used as a	response destination MAC address. Pos-
       sible VLAN tag is preserved.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       NOTE:
	  This	mode  requires	forwarding  enabled  on	the loopback interface
	  (sysctl   -w	  net.ipv4.conf.lo.forwarding=1	   and	  sysctl    -w
	  net.ipv6.conf.lo.forwarding=1).   If forwarding is disabled, all in-
	  coming DNS packets are dropped!

	  Only VLAN 802.1Q is supported.

       Default:	off

   ring-size
       Size of RX, FQ, TX, and CQ rings.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       NOTE:
	  This	value  should be at least as high as the configured RX size of
	  the network device in	the XDP	mode.

       Default:	2048

   busypoll-budget
       If set to a positive value, preferred busy polling is enabled with  the
       specified budget.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       NOTE:
	  Preferred busy polling also  requires	 setting  napi_defer_hard_irqs
	  and gro_flush_timeout	for the	appropriate network interface. E.g.:

	      echo 2 | sudo tee	/sys/class/net/<interface>/napi_defer_hard_irqs
	      echo 200000 | sudo tee /sys/class/net/<interface>/gro_flush_timeout

       NOTE:
	  A recommended	value is between 8 and 64.

       Default:	0 (disabled)

   busypoll-timeout
       Timeout	in  microseconds  of  preferrred  busy	polling	 if enabled by
       busypoll-budget.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	20 (20 microseconds)

CONTROL	SECTION
       Configuration of	the server control interface.

	  control:
	      listen: STR ...
	      backlog: INT
	      timeout: TIME

   listen
       A UNIX socket path where	the server listens for control commands.

       Multiple	 sockets  can  be configured for parallel independent use, but
       their number is limited (currently to 4), and some operations might  be
       delayed due to mutexes.

       WARNING:
	  Transaction-like  operations,	such as	conf-begin/set/commit/abort or
	  zone-begin/set/commit/abort,	must  be  performed  using  the	  same
	  socket.

       Change  of  this	 parameter requires restart of the Knot	server to take
       effect.

       Default:	rundir/knot.sock

   backlog
       The control UNIX	socket listen backlog size.

       Change of this parameter	requires restart of the	Knot  server  to  take
       effect.

       Default:	5

   timeout
       Maximum	time (in seconds) the control socket operations	can take.  Set
       to 0 for	infinity.

       Default:	5

LOG SECTION
       Server can be configured	to log to the standard output, standard	 error
       output,	syslog	(or  systemd journal if	systemd	is enabled) or into an
       arbitrary file.

       There are 6 logging severity levels:

        critical  Non-recoverable error resulting in server shutdown.

        error	Recoverable error, action should be taken.

        warning  Warning that might require user action.

        notice	 Server	notice or hint.

        info  Informational message.

        debug	Debug or detailed message.

       In the case of a	missing	log section, warning or	more serious  messages
       will  be	 logged	to both	standard error output and syslog. The info and
       notice messages will be logged to standard output.

	  log:
	    - target: stdout | stderr |	syslog | STR
	      server: critical | error | warning | notice | info | debug
	      control: critical	| error	| warning | notice | info | debug
	      zone: critical | error | warning | notice	| info | debug
	      quic: critical | error | warning | notice	| info | debug
	      any: critical | error | warning |	notice | info |	debug

   target
       A logging output.

       Possible	values:

        stdout	 Standard output.

        stderr	 Standard error	output.

        syslog	 Syslog	or systemd journal.

        file_name  A specific file.

       With syslog target, syslog service is used. However, if	Knot  DNS  has
       been compiled with systemd support and operating	system has been	booted
       with systemd, systemd journal is	used for logging instead of syslog.

       A  file_name may	be specified as	an absolute path or a path relative to
       the knotd startup directory.

   server
       Minimum severity	level for messages related to general operation	of the
       server to be logged.

       Default:	not set

   control
       Minimum severity	level for messages related to  server  control	to  be
       logged.

       Default:	not set

   zone
       Minimum severity	level for messages related to zones to be logged.

       Default:	not set

   quic
       Minimum severity	level for messages related to QUIC to be logged.

       Default:	not set

   any
       Minimum	severity  level	 for  all  message  types,  except quic, to be
       logged.

       Default:	not set

STATISTICS SECTION
       Periodic	server statistics dumping.

	  statistics:
	      timer: TIME
	      file: STR
	      append: BOOL

   timer
       A period	(in seconds) after which all available statistics metrics will
       by written to the file.

       Default:	not set

   file
       A file path of statistics output	in the YAML format.

       Default:	rundir/stats.yaml

   append
       If enabled, the output will be appended to the file instead of file re-
       placement.

       Default:	off

DATABASE SECTION
       Configuration of	databases for zone contents, DNSSEC metadata, or event
       timers.

	  database:
	      storage: STR
	      journal-db: STR
	      journal-db-mode: robust |	asynchronous
	      journal-db-max-size: SIZE
	      kasp-db: STR
	      kasp-db-max-size:	SIZE
	      timer-db:	STR
	      timer-db-max-size: SIZE
	      catalog-db: str
	      catalog-db-max-size: SIZE
	      zone-db-listen: ADDR[@INT] | STR
	      zone-db-tls: BOOL
	      zone-db-cert-key:	BASE64 ...
	      zone-db-cert-hostname: STR ...

   storage
       A data directory	for storing journal,  KASP,  and  timer	 databases.  A
       non-absolute path is relative to	the knotd startup directory.

       Default:	  ${localstatedir}/lib/knot   (configured   with  --with-stor-
       age=path)

   journal-db
       An explicit specification of the	persistent journal database directory.

       Default:	storage/journal

   journal-db-mode
       Specifies journal LMDB backend configuration, which influences  perfor-
       mance and durability.

       Possible	values:

        robust	  The  journal	database disk synchronization ensures database
	 durability but	is generally slower.

        asynchronous  The journal database disk synchronization is  optimized
	 for better performance	at the expense of lower	database durability in
	 the  case  of	a crash. This mode is recommended on secondary servers
	 with many zones.

       Default:	robust

   journal-db-max-size
       The hard	limit for the journal  database	 maximum  size.	 There	is  no
       cleanup	logic  in journal to recover from reaching this	limit. Journal
       simply starts refusing changes across all zones.	Decreasing this	 value
       has no effect if	it is lower than the actual database file size.

       It  is  recommended  to	limit  journal-max-usage  per-zone  instead of
       journal-db-max-size in most cases. Please keep this value  larger  than
       the  sum	of all zones' journal usage limits. See	more details regarding
       journal behaviour.

       NOTE:
	  This value also influences server's usage of virtual memory.

       Default:	20G (20	GiB), or 512M (512 MiB)	for 32-bit

   kasp-db
       An explicit specification of the	KASP database directory.

       Default:	storage/keys

   kasp-db-max-size
       The hard	limit for the KASP database maximum size.

       NOTE:
	  This value also influences server's usage of virtual memory.

       Default:	500M (500 MiB)

   timer-db
       An explicit specification of the	persistent timer database directory.

       Default:	storage/timers

   timer-db-max-size
       The hard	limit for the timer database maximum size.

       NOTE:
	  This value also influences server's usage of virtual memory.

       Default:	100M (100 MiB)

   catalog-db
       An explicit specification of the	zone catalog database directory.  Only
       useful if Catalog zones are enabled.

       Default:	storage/catalog

   catalog-db-max-size
       The hard	limit for the catalog database maximum size.

       NOTE:
	  This value also influences server's usage of virtual memory.

       Default:	20G (20	GiB), or 512M (512 MiB)	for 32-bit

   zone-db-listen
       An  IP  address (and optionally a port) or a UNIX socket	path of	a run-
       ning instance of	a Redis	(or compatible)	database to be used for	 read-
       ing and/or writing zone contents. See zone-db-input and zone-db-output.

       Default:	not set

   zone-db-tls
       If  enabled, TLS	1.3 will be used for communication with	the zone data-
       base.

       Default:	off

   zone-db-cert-key
       An ordered list of up to	4 public key PINs of the zone database's  cer-
       tificate.   If the list is non-empty, communication with	the zone data-
       base is only possible over TLS, and a peer certificate is required. The
       peer certificate's public key must match	one of the specified PINs.

       Default:	not set

   zone-db-cert-hostname
       An ordered list of up to	4 hostnames to be  matched  against  the  zone
       database's  certificate.	 At least one hostname must match for the cer-
       tificate	 to  be	 considered  valid  (see  ca-file).  If	 the  list  is
       non-empty,  communication  with the zone	database is only possible over
       TLS, and	a peer certificate is required.

       Default:	not set

KEYSTORE SECTION
       DNSSEC keystore configuration.

	  keystore:
	    - id: STR
	      backend: pem | pkcs11
	      config: STR
	      ksk-only:	BOOL
	      key-label: BOOL

   id
       A keystore identifier.

   backend
       A key storage backend type.

       Possible	values:

        pem  PEM files.

        pkcs11	 PKCS #11 storage.

       Default:	pem

   config
       A backend specific configuration. A directory with PEM files (the  path
       can  be	specified  as  a  relative path	to kasp-db) or a configuration
       string for PKCS #11 storage (<pkcs11-uri> <module-path>).  The PKCS #11
       URI Scheme is defined in	RFC 7512.

       NOTE:
	  Example configuration	string for PKCS	#11:

	      "pkcs11:token=knot;pin-value=1234	/usr/lib64/pkcs11/libsofthsm2.so"

       Default:	kasp-db/keys

   ksk-only
       Newly generated keys sre	stored in this keystore	only if	they are  KSKs
       or CSKs.	 Zone signing keys will	be stored in subsequent	keystore with-
       out this	option enabled.

       Default:	off

   key-label
       If enabled in combination with the PKCS #11 backend, generated keys are
       labeled in the form <zone_name> KSK|ZSK.

       Default:	off

KEY SECTION
       Shared TSIG keys	used to	authenticate communication with	the server.

	  key:
	    - id: DNAME
	      algorithm: hmac-md5 | hmac-sha1 |	hmac-sha224 | hmac-sha256 | hmac-sha384	| hmac-sha512
	      secret: BASE64

   id
       A key name identifier.

       NOTE:
	  This	value  MUST be exactly the same	as the name of the TSIG	key on
	  the opposite primary/secondary server(s).

   algorithm
       A TSIG key algorithm. See TSIG Algorithm	Numbers.

       Possible	values:

        hmac-md5

        hmac-sha1

        hmac-sha224

        hmac-sha256

        hmac-sha384

        hmac-sha512

       Default:	hmac-sha256

   secret
       Shared key secret.

       Default:	not set

REMOTE SECTION
       Definitions of remote servers for outgoing  connections	(source	 of  a
       zone transfer, target for a notification, etc.).

	  remote:
	    - id: STR
	      address: ADDR[@INT] | STR	...
	      via: ADDR[@INT] ...
	      quic: BOOL
	      tls: BOOL
	      key: key_id
	      cert-key:	BASE64 ...
	      cert-hostname: STR ...
	      block-notify-after-transfer: BOOL
	      no-edns: BOOL
	      automatic-acl: BOOL

   id
       A remote	identifier.

   address
       An  ordered list	of destination IP addresses or UNIX socket paths which
       are used	for communication with the remote  server.  Non-absolute  path
       (i.e. not starting with /) is relative to rundir.  Optional destination
       port  (default  is  53 for UDP/TCP and 853 for QUIC) can	be appended to
       the address using @ separator.  The addresses are tried in sequence un-
       til the remote is reached.

       Default:	not set

       NOTE:
	  If the remote	is contacted and it refuses to perform	requested  ac-
	  tion,	no more	addresses will be tried	for this remote.

   via
       An  ordered  list  of  source IP	addresses which	are used as source ad-
       dresses for communication with the remote. For the N-th remote address,
       the last, but at	most N-th, specified via address of the	same family is
       used.  This option can help if the server listens  on  more  addresses.
       Optional	source port (default is	random)	can be appended	to the address
       using @ separator.

       Default:	not set

       NOTE:
	  For the following configuration:

	      remote:
		- id: example
		  address: [198.51.100.10, 2001:db8::10, 198.51.100.20,	2001:db8::20]
		  via: [198.51.100.1, 198.51.100.2, 2001:db8::1]

	  the (via -> address) mapping is:

	   198.51.100.1 -> 198.51.100.10

	   2001:db8::1	->  2001:db8::10

	   198.51.100.2 -> 198.51.100.20

	   2001:db8::1	-> 2001:db8::20

   quic
       If this option is set, the QUIC protocol	will be	used for outgoing com-
       munication with this remote.

       NOTE:
	  One connection per each remote is opened; remote-pool-limit does not
	  take	effect	for  QUIC. However, fast QUIC handshakes utilizing ob-
	  tained session tickets are used for  reopening  connections  to  re-
	  cently (up to	1 day) queried remotes.

       Default:	off

   tls
       If this option is set, the TLS (DoT) protocol will be used for outgoing
       communication with this remote.

       Default:	off

   key
       A  reference to the TSIG	key which is used to authenticate the communi-
       cation with the remote server.

       Default:	not set

   cert-key
       An ordered list of up to	4 remote certificate public key	PINs.  If  the
       list  is	 non-empty, communication with the remote is only possible via
       QUIC or TLS protocols, and a peer certificate  is  required.  The  peer
       certificate key must match one of the specified PINs.

       A PIN is	a unique identifier that represents the	public key of the peer
       certificate.   It's  a  base64-encoded  SHA-256 hash of the public key.
       This identifier usually remains the same	on a certificate renewal.

       Default:	not set

   cert-hostname
       An ordered list of up to	4 hostnames to match against  peer's  certifi-
       cate.  At  least	 one  must match for successful	certificate validation
       (see ca-file).  If the list is non-empty, communication with the	remote
       is only possible	via QUIC or TLS	protocols, and a peer  certificate  is
       required.

       Default:	not set

   block-notify-after-transfer
       When  incoming  AXFR/IXFR  from this remote (as a primary server), sup-
       press sending NOTIFY messages to	all configured secondary servers.

       Default:	off

   no-edns
       If enabled, no OPT record (EDNS)	is inserted to	outgoing  requests  to
       this  remote server. This mode is necessary for communication with some
       broken DNS implementations (e.g.	Windows	Server 2016).

       Additionally, if	TCP is used for	zone refresh, the SOA  query  and  the
       subsequent  AXFR/IXFR  query do not share the same TCP connection. This
       mode allows  transfers  from  some  broken  DNS	implementations	 (e.g.
       ixfrdist).

       NOTE:
	  This	option effectively disables zone expire	timer updates via EDNS
	  EXPIRE option	specified in RFC 7314.

       Default:	off

   automatic-acl
       If enabled, some	authorized operations for the remote are automatically
       allowed based on	the context:

        Incoming NOTIFY is allowed from the remote if it's  configured	 as  a
	 primary server	for the	zone.

        Outgoing zone transfer	is allowed to the remote if it's configured as
	 a NOTIFY target for the zone.

       Automatic  ACL  rules are evaluated before explicit zone	ACL configura-
       tion.

       NOTE:
	  This functionality requires global activation	via  automatic-acl  in
	  the server section.

       Default:	on

REMOTES	SECTION
       Definitions  of	groups of remote servers. Remote grouping can simplify
       the configuration.

	  remotes:
	    - id: STR
	      remote: remote_id	...

   id
       A remote	group identifier.

   remote
       An ordered list of references to	remote server definitions.

       Default:	not set

ACL SECTION
       Access control list rule	definitions. An	ACL rule is a  description  of
       one  or more authorized actions (zone transfer request, zone change no-
       tification, and dynamic DNS update) which are allowed to	 be  processed
       or  denied.  Queries  which  don't require authorization	are always al-
       lowed.

	  acl:
	    - id: STR
	      address: ADDR[/INT] | ADDR-ADDR |	STR ...
	      key: key_id ...
	      cert-key:	BASE64 ...
	      cert-hostname: STR ...
	      remote: remote_id	| remotes_id ...
	      action: query | notify | transfer	| update ...
	      protocol:	udp | tcp | tls	| quic ...
	      deny: BOOL
	      update-type: STR ...
	      update-owner: key	| zone | name
	      update-owner-match: sub-or-equal | equal | sub | pattern
	      update-owner-name: STR ...

   id
       An ACL rule identifier.

   address
       An ordered list of IP addresses,	absolute UNIX  socket  paths,  network
       subnets,	 or  network ranges. The query's source	address	must match one
       of them.	If this	item is	not set, address match is not required.

       Default:	not set

   key
       An ordered list of references to	TSIG keys. The query must match	one of
       them. If	this item is not set, transaction authentication is not	used.

       Default:	not set

   cert-key
       An ordered list of remote certificate public key	PINs. If the  list  is
       non-empty,  communication  with the remote is only possible via QUIC or
       TLS protocols, and a peer certificate is	required. The peer certificate
       key must	match one of the specified PINs.

       A PIN is	a unique identifier that represents the	public key of the peer
       certificate.  It's a base64-encoded SHA-256 hash	 of  the  public  key.
       This identifier usually remains the same	on a certificate renewal.

       Default:	not set

   cert-hostname
       An  ordered  list  of hostnames to match	against	peer's certificate. At
       least  one  must	 match	for  successful	 certificate  validation  (see
       ca-file).   If  the list	is non-empty, communication with the remote is
       only possible via QUIC or TLS protocols,	and a peer certificate is  re-
       quired.

       Default:	not set

   remote
       An  ordered list	of references remote and remotes. The query must match
       one of the remotes. Specifically, one of	the remote's addresses and re-
       mote's TSIG key if configured must match.

       NOTE:
	  This option cannot be	specified along	 with  the  address,  key,  or
	  protocol option at one ACL item.

       Default:	not set

   action
       An ordered list of allowed, or denied, actions (request types).

       Possible	values:

        query	Allow regular DNS query. As normal queries are always allowed,
	 this action is	only useful in combination with	TSIG key.

        notify	 Allow incoming	notify (NOTIFY).

        transfer  Allow zone transfer (AXFR, IXFR).

        update	 Allow zone updates (DDNS).

       Default:	query

   protocol
       List of allowed protocols.

       Possible	values:

        udp  UDP protocol.

        tcp  TCP protocol.

        tls  TLS protocol.

        quic  QUIC protocol.

       Default:	not set	(any)

   deny
       If  enabled,  instead of	allowing, deny the matching combination	of the
       specified items.

       Default:	off

   update-type
       A list of allowed types of Resource Records in  a  zone	update.	 Every
       record in an update must	match one of the specified types.

       Default:	not set

   update-owner
       This option restricts possible owners of	Resource Records in a zone up-
       date  by	 comparing  them  to either the	TSIG key identity, the current
       zone name, or to	a list of domain names given by	the  update-owner-name
       option.	 The  comparison method	is given by the	update-owner-match op-
       tion.

       Possible	values:

        key  The owner	of each	updated	RR must	match the identity of the TSIG
	 key if	used.

        name  The owner of each updated RR must match at least	 one  name  in
	 the update-owner-name list.

        zone  The owner of each updated RR must match the current zone	name.

       Default:	not set

   update-owner-match
       This option defines how the owners of Resource Records in an update are
       matched to the domain name(s) set by the	update-owner option.

       Possible	values:

        sub-or-equal	The owner of each RR in	an update must either be equal
	 to or be a subdomain of at least one domain name set by update-owner.

        equal	The owner of each updated RR must be equal to at least one do-
	 main name set by update-owner.

        sub  The owner	of each	updated	RR must	be a subdomain	of,  but  MUST
	 NOT be	equal to at least one domain name set by update-owner.

        pattern   The owner of	each updated RR	must match a pattern specified
	 by update-owner. The pattern can be an	arbitrary FQDN or non-FQDN do-
	 main name. If a label consists	of  one	 *  (asterisk)	character,  it
	 matches any label. More asterisk labels can be	specified.

       Default:	sub-or-equal

   update-owner-name
       A list of allowed owners	of RRs in a zone update	used with update-owner
       set to name. Every listed owner name which is not FQDN (i.e. it doesn't
       end  in a dot) is considered as if it was appended with the target zone
       name.  Such a relative owner name specification allows better ACL  rule
       reusability across multiple zones.

       Default:	not set

SUBMISSION SECTION
       Parameters of KSK submission checks.

	  submission:
	    - id: STR
	      parent: remote_id	| remotes_id ...
	      check-interval: TIME
	      timeout: TIME
	      parent-delay: TIME

   id
       A submission identifier.

   parent
       A  list	of references remote and remotes to parent's DNS servers to be
       checked for presence of corresponding DS	records	in  the	 case  of  KSK
       submission.  All	 of them must have a corresponding DS for the rollover
       to continue. If none is specified, the rollover must be pushed  forward
       manually.

       Default:	not set

       TIP:
	  A DNSSEC-validating resolver can be set as a parent.

   check-interval
       Interval	 (in  seconds)	for periodic checks of DS presence on parent's
       DNS servers, in the case	of the KSK submission.

       Default:	1h (1 hour)

   timeout
       After this time period (in seconds) the KSK submission is automatically
       considered successful, even if all the checks were negative or no  par-
       ents are	configured.  Set to 0 for infinity.

       Default:	0

   parent-delay
       After successful	parent DS check, wait for this period (in seconds) be-
       fore continuing the next	key roll-over step. This delay shall cover the
       propagation delay of update in the parent zone.

       Default:	0

DNSKEY-SYNC SECTION
       Parameters of DNSKEY dynamic-update synchronization.

	  dnskey-sync:
	    - id: STR
	      remote: remote_id	| remotes_id ...
	      check-interval: TIME

   id
       A dnskey-sync identifier.

   remote
       A list of references remote and remotes to other	signers	or common mas-
       ter,  which  the	 DDNS updates with DNSKEY/CDNSKEY/CDS records shall be
       sent to.

       Default:	not set

   check-interval
       If the last DNSKEY sync failed or resulted in any change, re-check  the
       consistence after this interval (in seconds) and	re-try if needed.

       Default:	60 (1 minute)

POLICY SECTION
       DNSSEC policy configuration.

	  policy:
	    - id: STR
	      keystore:	keystore_id ...
	      manual: BOOL
	      single-type-signing: BOOL
	      algorithm: rsasha1 | rsasha1-nsec3-sha1 |	rsasha256 | rsasha512 |	ecdsap256sha256	| ecdsap384sha384 | ed25519 | ed448
	      ksk-size:	SIZE
	      zsk-size:	SIZE
	      ksk-shared: BOOL
	      dnskey-ttl: TIME
	      zone-max-ttl: TIME
	      keytag-modulo: INT/INT
	      ksk-lifetime: TIME
	      zsk-lifetime: TIME
	      delete-delay: TIME
	      propagation-delay: TIME
	      rrsig-lifetime: TIME
	      rrsig-refresh: TIME
	      rrsig-pre-refresh: TIME
	      reproducible-signing: BOOL
	      nsec3: BOOL
	      nsec3-iterations:	INT
	      nsec3-opt-out: BOOL
	      nsec3-salt-length: INT
	      nsec3-salt-lifetime: TIME
	      signing-threads: INT
	      ksk-submission: submission_id
	      ds-push: remote_id | remotes_id ...
	      cds-cdnskey-publish: none	| delete-dnssec	| rollover | always | double-ds
	      cds-digest-type: sha256 |	sha384
	      dnskey-management: full |	incremental
	      offline-ksk: BOOL
	      unsafe-operation:	none | no-check-keyset | no-update-dnskey | no-update-nsec | no-update-expired ...

   id
       A policy	identifier.

   keystore
       A reference to a	keystore holding private key material for zones.

       If  multiple  keystores	are  specified,	 private  keys for signing are
       looked up in all	of them. But newly generated keys are  stored  in  the
       first  one (or in the first one without enabled ksk-only	in the case of
       a new ZSK) in the specified order.

       NOTE:
	  If multiple keystores	are configured and a zone  is  being  restored
	  with	the back up feature, all restored private keys are stored into
	  the first referenced keystore.

       NOTE:
	  A configured keystore	called "default" won't be used unless  explic-
	  itly referenced.

       Default:	an imaginary keystore with all default values

   manual
       If enabled, automatic key management is not used.

       Default:	off

   single-type-signing
       If  enabled,  Single-Type  Signing  Scheme is used in the automatic key
       management mode.

       Default:	off (module onlinesign has default on)

   algorithm
       An algorithm of signing keys and	issued signatures.  See	 DNSSEC	 Algo-
       rithm Numbers.

       Possible	values:

        rsasha1

        rsasha1-nsec3-sha1

        rsasha256

        rsasha512

        ecdsap256sha256

        ecdsap384sha384

        ed25519

        ed448

       NOTE:
	  Ed448	 algorithm  is	only available if compiled with	GnuTLS 3.6.12+
	  and Nettle 3.6+.

       Default:	ecdsap256sha256

   ksk-size
       A length	of newly generated KSK or CSK keys.

       Default:	2048 (rsa*), 256 (ecdsap256), 384 (ecdsap384), 256  (ed25519),
       456 (ed448)

   zsk-size
       A length	of newly generated ZSK keys.

       Default:	see default for	ksk-size

   ksk-shared
       If  enabled, all	zones with this	policy assigned	will share one or more
       KSKs.  More KSKs	can be shared during a KSK rollover.

       WARNING:
	  As the shared	KSK set	is bound to the	policy id, renaming the	policy
	  breaks this connection and new shared	KSK set	is  initiated  when  a
	  new KSK is needed.

       Default:	off

   dnskey-ttl
       A TTL value for DNSKEY records added into zone apex.

       NOTE:
	  Has influence	over ZSK key lifetime.

       WARNING:
	  Ensure all DNSKEYs with updated TTL are propagated before any	subse-
	  quent	DNSKEY rollover	starts.

       Default:	zone SOA TTL

   zone-max-ttl
       Declare (override) maximal TTL value among all the records in zone.

       NOTE:
	  It's	generally  recommended to override the maximal TTL computation
	  by setting this explicitly  whenever	possible.  It's	 required  for
	  DNSSEC  Offline KSK and really reasonable when records are generated
	  dynamically (e.g. by a module).

       Default:	computed after zone is loaded

   keytag-modulo
       Specifies that the keytags of any generated keys	shall be congruent  by
       specified modulo.  The option value must	be a string in the format R/M,
       where R < M <= 256 are positive integers. Whenever a DNSSEC key is gen-
       erated,	it  is ensured that keytag % M == R. This prevents keytag con-
       flict in	DNSSEC Offline KSK or DNSSEC multi-signer (and possibly	other)
       setups.

       NOTE:
	  This only applies to newly generated keys when they  are  generated.
	  Keys	from before this option	and keys imported from elsewhere might
	  not fulfill the policy.

       Default:	0/1

   ksk-lifetime
       A period	(in seconds) between KSK generation and	the next rollover ini-
       tiation.

       NOTE:
	  KSK  key  lifetime  is   also	  influenced   by   propagation-delay,
	  dnskey-ttl, and KSK submission delay.

	  Zero (aka infinity) value causes no KSK rollover as a	result.

	  This applies for CSK lifetime	if single-type-signing is enabled.

       Default:	0 (infinity)

   zsk-lifetime
       A period	(in seconds) between ZSK activation and	the next rollover ini-
       tiation.

       NOTE:
	  More	exactly, this period is	measured since a ZSK is	activated, and
	  after	this, a	new ZSK	is generated to	replace	 it  within  following
	  roll-over.

	  As a consequence, in normal operation, this results in the period of
	  ZSK generation being zsk-lifetime + propagation-delay	+ dnskey_ttl.

	  Zero (aka infinity) value causes no ZSK rollover as a	result.

       Default:	30d (30	days)

   delete-delay
       Once  a key (KSK	or ZSK)	is rolled-over and removed from	the zone, keep
       it in the KASP database for at least this period	 (in  seconds)	before
       deleting	 it  completely.  This might be	useful in some troubleshooting
       cases when resurrection is needed.

       Default:	0

   propagation-delay
       An extra	delay added for	each key rollover step.	This  value  (in  sec-
       onds)  should be	high enough to cover propagation of data from the pri-
       mary server to all secondary servers, as	well as	the duration of	 sign-
       ing  routine itself and possible	outages	in signing and propagation in-
       frastructure. In	other words, this delay	should ensure that within this
       period of time after planned change of the key set,  all	 public-facing
       secondaries will	already	serve new DNSKEY RRSet for sure.

       NOTE:
	  Has influence	over ZSK key lifetime.

       Default:	1h (1 hour)

   rrsig-lifetime
       A validity period (in seconds) of newly issued signatures.

       NOTE:
	  The  RRSIG's	signature  inception  time is set to 90	minutes	in the
	  past.	This time period is not	counted	to the signature lifetime.

       Default:	14d (14	days)

   rrsig-refresh
       A period	(in seconds) how long at least before a	 signature  expiration
       the  signature will be refreshed, in order to prevent expired RRSIGs on
       secondary servers or resolvers' caches.

       Default:	0.1 * rrsig-lifetime + propagation-delay + zone-max-ttl

       If dnssec-validation is enabled:

       Default:	1d (1 day)

   rrsig-pre-refresh
       A period	(in seconds) how long at most before a signature refresh  time
       the  signature might be refreshed, in order to refresh RRSIGs in	bigger
       batches on a frequently updated zone (avoid re-sign event too often).

       Default:	1h (1 hour)

   reproducible-signing
       For ECDSA algorithms, generate RRSIG signatures deterministically  (RFC
       6979).	Besides	 better	 theoretical cryptographic security, this mode
       allows significant speed-up of loading  signed  (by  the	 same  method)
       zones. However, the zone	signing	is a bit slower.

       Default:	off

   nsec3
       Specifies if NSEC3 will be used instead of NSEC.

       Default:	off

   nsec3-iterations
       A number	of additional times the	hashing	is performed.

       Default:	0

   nsec3-opt-out
       If  set,	NSEC3 records won't be created for insecure delegations.  This
       speeds up the zone signing and reduces overall zone size.

       WARNING:
	  NSEC3	with the Opt-Out bit set no longer works as a proof of non-ex-
	  istence in this zone.

       Default:	off

   nsec3-salt-length
       A length	of a salt field	in octets, which is appended to	 the  original
       owner name before hashing.

       Default:	0

   nsec3-salt-lifetime
       A validity period (in seconds) of newly issued salt field.

       Zero value means	infinity.

       Special	value  -1 triggers re-salt every time when active ZSK changes.
       This optimizes the number of big	changes	to the zone.

       Default:	30d (30	days)

   signing-threads
       When signing zone or update, use	this number of	threads	 for  parallel
       signing.

       Those are extra threads independent of Background workers.

       NOTE:
	  Some steps of	the DNSSEC signing operation are not parallelized.

       Default:	1 (no extra threads)

   ksk-submission
       A  reference to submission section holding parameters of	KSK submission
       checks.

       Default:	not set

   ds-push
       Optional	references remote and remotes to authoritative DNS  server  of
       the  parent's  zone.  The remote	server must be configured to accept DS
       record updates via DDNS.	Whenever a CDS record in  the  local  zone  is
       changed,	the corresponding DS record is sent as a dynamic update	(DDNS)
       to  the	parent	DNS server. All	previous DS records are	deleted	within
       the DDNS	message.  It's possible	to manage both child and parent	 zones
       by the same Knot	DNS server.

       NOTE:
	  This feature requires	cds-cdnskey-publish not	to be set to none.

       NOTE:
	  The  mentioned  change  to  CDS  record  usually  means  that	 a KSK
	  roll-over is running and the new key being rolled-in is  in  "ready"
	  state	already	for the	period of propagation-delay.

       NOTE:
	  Module Onlinesign doesn't support DS push.

       NOTE:
	  When	turning	 this feature on while a KSK roll-over is already run-
	  ning,	it might not take effect for the already-running roll-over.

       Default:	not set

   dnskey-sync
       A reference to dnskey-sync section holding parameters  of  DNSKEY  syn-
       chronization.

       Default:	not set

   cds-cdnskey-publish
       Controls	if and how shall the CDS and CDNSKEY be	published in the zone.

       Possible	values:

        none  Never publish any CDS or	CDNSKEY	records	in the zone.

        delete-dnssec	 Publish  special  CDS	and CDNSKEY records indicating
	 turning off DNSSEC.

        rollover  Publish CDS and CDNSKEY records for ready and not  yet  ac-
	 tive KSK (submission phase of KSK rollover).

        always	  Always  publish one CDS and one CDNSKEY records for the cur-
	 rent KSK.

        double-ds  Always publish up to two CDS and two CDNSKEY  records  for
	 ready and/or active KSKs.

       NOTE:
	  If  the  zone	 keys are managed manually, the	CDS and	CDNSKEY	rrsets
	  may contain more records depending on	the keys available.

       WARNING:
	  The double-ds	value does not	trigger	 double-DS  roll-over  method.
	  That	method	is  only supported when	performed manually, with unset
	  ksk-submission.

       Default:	rollover

   cds-digest-type
       Specify digest type for published CDS records.

       Possible	values:

        sha256

        sha384

       Default:	sha256

   dnskey-management
       Specify how the DNSKEY, CDNSKEY,	and CDS	RRSets at the  zone  apex  are
       handled when (re-)signing the zone.

       Possible	values:

        full	Upon every zone	(re-)sign, delete all unknown DNSKEY, CDNSKEY,
	 and CDS records and keep just those that are related to the zone keys
	 stored	in the KASP database.

        incremental  Keep unknown DNSKEY, CDNSKEY, and	 CDS  records  in  the
	 zone,	and  modify  server-managed records incrementally by employing
	 changes in the	KASP database.

       NOTE:
	  Prerequisites	for incremental:

	   The	Offline	KSK isn't supported.

	   The	delete-delay is	long enough to cover possible daemon  shutdown
	    (e.g. due to server	maintenance).

	   Avoided manual deletion of keys with keymgr.

	  Otherwise  there  might  remain some DNSKEY records in the zone, be-
	  longing to deleted keys.

       Default:	full

   offline-ksk
       Specifies if Offline KSK	feature	is enabled.

       Default:	off

   unsafe-operation
       Turn off	some DNSSEC safety features.

       Possible	values:

        none  Nothing disabled.

        no-check-keyset  Don't	check active keys in present algorithms.  This
	 may lead to violation of RFC 4035 Section 2.2.

        no-update-dnskey   Don't  maintain/update  DNSKEY,  CDNSKEY,  and CDS
	 records in the	zone apex according to KASP database. Juste leave them
	 as they are in	the zone.

        no-update-nsec	 Don't maintain/update NSEC/NSEC3 chain. Leave all the
	 records as they are in	the zone.

        no-update-expired  Don't update expired RRSIGs.

       Multiple	values may be specified.

       WARNING:
	  This mode is intended	for DNSSEC experts who understand  the	corre-
	  sponding consequences.

       Default:	none

EXTERNAL SECTION
       External	zone validation	configuration.

	  external:
	    - id: STR
	      timeout: TIME
	      dump-new-zone: STR
	      dump-removals: STR
	      dump-additions: STR

   id
       An external section identifier.

   timeout
       If  the	validation  is not confirmed within this time interval in sec-
       onds, it	is considered failed.

       Default:	300

   dump-new-zone
       A path to file where the	new zone contents will be written before wait-
       ing for external	validation.

       Default:	none

   dump-removals
       A path to file where the	records	being removed will be  written	before
       waiting for external validation.

       Default:	none

   dump-additions
       A  path	to  file  where	the records being added	will be	written	before
       waiting for external validation.

       Default:	none

TEMPLATE SECTION
       A template is shareable zone settings, which can	simplify configuration
       by reducing duplicates. A special default template  (with  the  default
       identifier) can be used for global zone configuration or	as an implicit
       configuration if	a zone doesn't have another template specified.

	  template:
	    - id: STR
	      global-module: STR/STR ...
	      #	All zone options (excluding 'template' item)

       NOTE:
	  If  an  item is explicitly specified both in the referenced template
	  and the zone,	the template item value	is overridden by the zone item
	  value.

   id
       A template identifier.

   global-module
       An ordered list of references to	query modules  in  the	form  of  mod-
       ule_name	or module_name/module_id. These	modules	apply to all queries.

       NOTE:
	  This option is only available	in the default template.

       Default:	not set

ZONE SECTION
       Definition of zones served by the server.

	  zone:
	    - domain: DNAME
	      template:	template_id
	      storage: STR
	      file: STR
	      zone-db-input: INT
	      zone-db-output: INT
	      master: remote_id	| remotes_id ...
	      ddns-master: remote_id
	      notify: remote_id	| remotes_id ...
	      notify-delay: TIME
	      update-delay: TIME
	      acl: acl_id ...
	      master-pin-tolerance: TIME
	      provide-ixfr: BOOL
	      semantic-checks: BOOL | soft
	      default-ttl: TIME
	      zonefile-sync: TIME
	      zonefile-load: none | difference | difference-no-serial |	whole
	      zonefile-skip: STR ...
	      journal-content: none | changes |	all
	      journal-max-usage: SIZE
	      journal-max-depth: INT
	      ixfr-benevolent: BOOL
	      ixfr-by-one: BOOL
	      ixfr-from-axfr: BOOL
	      zone-max-size : SIZE
	      adjust-threads: INT
	      external-validation: external_id
	      dnssec-signing: BOOL
	      dnssec-validation: BOOL
	      dnssec-policy: policy_id
	      ds-push: remote_id | remotes_id ...
	      zonemd-verify: BOOL
	      zonemd-generate: none | zonemd-sha384 | zonemd-sha512 | remove
	      serial-policy: increment | unixtime | dateserial
	      serial-modulo: INT/INT | +INT | -INT | INT/INT+INT | INT/INT-INT
	      reverse-generate:	DNAME ...
	      include-from: DNAME ...
	      refresh-min-interval: TIME
	      refresh-max-interval: TIME
	      retry-min-interval: TIME
	      retry-max-interval: TIME
	      expire-min-interval: TIME
	      expire-max-interval: TIME
	      catalog-role: none | interpret | generate	| member
	      catalog-template:	template_id ...
	      catalog-zone: DNAME
	      catalog-group: STR
	      module: STR/STR ...

   domain
       A zone name identifier.

   template
       A reference to a	configuration template.

       Default:	not set	or default (if the template exists)

   storage
       A  data	directory for storing zone files. A non-absolute path is rela-
       tive to the knotd startup directory.

       Default:	 ${localstatedir}/lib/knot   (configured   with	  --with-stor-
       age=path)

   file
       A  path to the zone file. It is also possible to	use the	following for-
       matters:

        %c[N] or %c[N-M]  Means the Nth character or a	sequence of characters
	 beginning from	the Nth	and ending with	the Mth	character of the  tex-
	 tual  zone  name  (see	 %s).  The indexes are counted from 0 from the
	 left. All dots	(including the terminal	one) are  considered.  If  the
	 character is not available, the formatter has no effect.

        %l[N]	Means the Nth label of the textual zone	name (see %s). The in-
	 dex  is counted from 0	from the right (0 ~ TLD).  If the label	is not
	 available, the	formatter has no effect.

        %s  Means the current zone name in the	textual	 representation.   The
	 zone  name  doesn't  include  the terminating dot (the	result for the
	 root zone is the empty	string!).

        %%  Means the % character.

       WARNING:
	  Beware of special characters which are escaped  or  encoded  in  the
	  \DDD form where DDD is corresponding decimal ASCII code.

       Default:	storage/%s.zone

   zone-db-input
       If  set,	 the  zone  is	loaded	from  the  zone	database configured at
       zone-db-listen. The value of this option	specifies  the	zone  instance
       number (from 1 to 8 inclusive) within the database to read from.

       NOTE:
	  With	this  option  enabled,	the textual zone file is never loaded.
	  The zonefile-load setting still applies to handling of the zone con-
	  tents	loaded from the	database, however,  zonefile-load:  whole  and
	  journal-content: changes are recommended (both being the defaults).

       Default:	-1 (disabled)

   zone-db-output
       If  set,	 the  zone  is	stored	to  the	 zone  database	 configured at
       zone-db-listen and updated there	with every change  to  the  zone  con-
       tents.  The  value  of  this  option specifies the zone instance	number
       (from 1 to 8 inclusive) within the database to write to.

       Default:	-1 (disabled)

   master
       An ordered list of  references  remote  and  remotes  to	 zone  primary
       servers (formerly known as master servers).  Empty value	is allowed for
       template	value overriding.

       Default:	not set

   ddns-master
       A reference to a	zone primary master where DDNS messages	should be for-
       warded to. If not specified, the	first master server is used.

       If set to the empty value (""), incoming	DDNS messages aren't forwarded
       but  are	 applied  to the local zone instead, no	matter if it is	a sec-
       ondary server. This is only allowed in combination with	dnssec-signing
       enabled.

       Default:	not set

   notify
       An  ordered  list of references remote and remotes to secondary servers
       to which	NOTIFY message is sent if the zone changes.   Empty  value  is
       allowed for template value overriding.

       Default:	not set

   notify-delay
       A time delay in seconds before an outgoing NOTIFY message is sent. This
       delay  also  defines  the time granularity at which NOTIFY messages are
       sent per	zone.

       Default:	0

   update-delay
       A time delay in seconds before a	change to zone contents	is made	 after
       an  external  trigger  such  as incoming	NOTIFY or DDNS,	or an internal
       trigger from different zone such	as change  to  zone  to	 be  reversed,
       included	from or	a member of generated catalog zone.

       Exception:  zone	 changing  events  triggered  by control socket	(knotc
       zone-* commands)	or by interpreted catalog are  performed  immediately,
       without configured delay.

       Default:	0

   acl
       An  ordered list	of references to ACL rules which can allow or disallow
       zone transfers, updates or incoming notifies.

       Default:	not set

   master-pin-tolerance
       If set to a nonzero value on a secondary, always	request	AXFR/IXFR from
       the same	primary	as the last time,  effectively	pinning	 one  primary.
       Only  when  another  primary is updated and the current one lags	behind
       for the specified amount	of time	(defined by this option	 in  seconds),
       change to the updated primary and force AXFR.

       This  option  is	useful when multiple primaries may have	different zone
       history in their	journals, making it  unsafe  to	 combine  interchanged
       IXFR from different primaries.

       Default:	0 (disabled)

   provide-ixfr
       If disabled, the	server is forced to respond with AXFR to IXFR queries.
       If enabled, IXFR	requests are responded normally.

       Default:	on

   semantic-checks
       Selects if extra	zone semantic checks are used or impacts of the	manda-
       tory checks.

       There  are several mandatory checks which are always enabled and	cannot
       be turned off. An error in a mandatory check causes the zone not	to  be
       loaded.	Most  of the mandatory checks can be weakened by setting soft,
       which allows the	zone to	be loaded even if the check fails.

       If enabled, extra checks	are used. These	checks don't prevent the  zone
       from loading.

       The mandatory checks are	applied	to zone	files, zone transfers, and up-
       dates via control interface. The	extra checks are applied to zone files
       only!

       Mandatory checks:

        Missing SOA record at the zone	apex (RFC 1034)	(*)

        An  extra record exists together with a CNAME record except for RRSIG
	 and NSEC (RFC 1034)

        Multiple CNAME	records	with the same owner exist (RFC 1034)

        DNAME record having a record under it (RFC 6672)

        Multiple DNAME	records	with the same owner exist (RFC 6672)

        NS record exists together with	a DNAME	record (RFC 6672)

        DS record exists at the zone apex (RFC	3658)

       (*) The marked check can't be weakened by  the  soft  mode.  All	 other
       mandatory checks	are subject to the optional soft mode.

       Extra checks:

        Missing NS record at the zone apex

        Missing glue A	or AAAA	record

        Invalid DS or NSEC3PARAM record

        CDS or	CDNSKEY	inconsistency

        All other DNSSEC checks executed during dnssec-validation

       NOTE:
	  The soft mode	allows the refresh event to ignore a CNAME response to
	  a  SOA  query	 (malformed message) and triggers a zone bootstrap in-
	  stead.

       Default:	off

   default-ttl
       The default TTL value if	none is	specified in a zone file or  zone  in-
       sertion using the dynamic configuration.

       WARNING:
	  As  changing	this  value  can  result  in  differently  parsed zone
	  file(s), the corresponding zone SOA serial(s)	should be  incremented
	  before  reloading  or	 committing  the configuration.	Alternatively,
	  setting zonefile-load	to difference-no-serial	ensures	the  resulting
	  zone(s) update is correct.

       Default:	3600

   zonefile-sync
       The  time  in  seconds  after  which the	current	zone in	memory will be
       synced with a zone file on the disk (see	file). The server  will	 serve
       the  latest  zone even after a restart using zone journal, but the zone
       file on the disk	will only be synced after zonefile-sync	time  has  ex-
       pired (or after manual zone flush). This	is applicable when the zone is
       updated	via  IXFR,  DDNS or automatic DNSSEC signing. In order to com-
       pletely disable automatic zone file synchronization, set	the  value  to
       -1. In that case, it is still possible to force a manual	zone flush us-
       ing the -f option.

       NOTE:
	  If you are serving large zones with frequent updates where the imme-
	  diate	sync with a zone file is not desirable,	increase the value.

       Default:	0 (immediate)

   zonefile-load
       Selects how the zone file contents are applied during zone load.

       Possible	values:

        none  The zone	file is	not used at all.

        difference   If the zone contents are already available during	server
	 start or reload, the difference is computed between them and the con-
	 tents of the zone file. This difference is then checked for  semantic
	 errors	and applied to the current zone	contents.

        difference-no-serial	Same  as difference, but the SOA serial	in the
	 zone file is ignored, the server takes	care of	incrementing the  ser-
	 ial automatically.

        whole	Zone contents are loaded from the zone file.

       When  difference	is configured and there	are no zone contents yet (cold
       start and no zone contents in the journal), it behaves the same way  as
       whole.

       Default:	whole

       NOTE:
	  See  Handling	 zone  file, journal, changes, serials for guidance on
	  configuring these and	related	options	to ensure reliable operation.

       WARNING:
	  If zone-db-input is configured,  the	textual	 zone  file  is	 never
	  loaded.  However, this option	still effects on how the zone contents
	  loaded from the database are applied and handled.

   zonefile-skip
       Specifies  resource record types	to be omitted when loading and syncing
       zone files.

       Resource	record types are represented as	strings	(e.g. "DS") and	multi-
       ple types may be	specified. The special string  dnssec  represents  all
       types  usually created by DNSSEC	signing	routines (DNSKEY, RRSIG, NSEC,
       NSEC3, NSEC3PARAM, CDNSKEY, CDS	but not	DS).

       NOTE:
	  This option takes effect while a zone	file is	being read or written,
	  but it does not directly trigger any zone file operation. Therefore,
	  the configured record	types cannot be	expected to disappear from the
	  zone file or running zone immediately	after setting the option.

       Default:	not set

   journal-content
       Selects how the journal shall be	used to	store zone and its changes.

       Possible	values:

        none  The journal is not used at all.

        changes  Zone changes history is stored in journal.

        all  Zone contents and	history	is stored in journal.

       Default:	changes

       WARNING:
	  When this option is changed, the journal still contains data respec-
	  tive to the previous setting.	For example, changing it to none  does
	  not  purge  the  journal. Also, changing it from all to changes does
	  not cause the	deletion of the	zone-in-journal	and the	 behaviour  of
	  the  zone  loading procedure might be	different than expected. It is
	  recommended to consider purging the  journal	when  this  option  is
	  changed.

   journal-max-usage
       Policy how much space in	journal	DB will	the zone's journal occupy.

       NOTE:
	  Journal  DB  may  grow far above the sum of journal-max-usage	across
	  all zones, because of	DB free	space fragmentation.

       Default:	100M (100 MiB)

   journal-max-depth
       Maximum history length of the journal.

       NOTE:
	  Zone-in-journal changeset isn't counted to the limit.

       Minimum:	2

       Default:	20

   ixfr-benevolent
       If enabled, incoming IXFR is applied even when it contains removals  of
       non-existing or additions of existing records.

       Default:	off

   ixfr-by-one
       Within  incoming	IXFR, process only one changeset at a time, not	multi-
       ple together.  This preserves the complete history in the  journal  and
       prevents	 the merging of	changesets when	multiple changesets are	IXFRed
       simultaneously. However,	this does not prevent the  merging  (or	 dele-
       tion)  of  old changesets in the	journal	to save	space, as described in
       journal behaviour.

       This option leads to increased server load when	processing  IXFR,  in-
       cluding network traffic.

       Default:	off

   ixfr-from-axfr
       If  a  primary  sends AXFR-style-IXFR upon an IXFR request, compute the
       difference and process it as an incremental zone	update (e.g. by	 stor-
       ing the changeset in the	journal).

       Default:	off

   zone-max-size
       Maximum	size  of  the  zone.  The size is measured as size of the zone
       records in wire format without compression. The limit is	 enforced  for
       incoming	zone transfers and dynamic updates.

       For  incremental	 transfers  (IXFR),  the effective limit for the total
       size of the records in the transfer is twice the	configured value. How-
       ever the	final size of the zone must satisfy the	configured value.

       Default:	unlimited

   adjust-threads
       Parallelize internal zone adjusting procedures by using specified  num-
       ber  of threads.	This is	useful with huge zones with NSEC3. Speedup ob-
       servable	at server startup and while processing NSEC3 re-salt.

       Default:	1 (no extra threads)

   external-validation
       A reference to external validation section.

       If configured, every change to the zone	(zone  file  update,  incoming
       IXFR/AXFR,  dynamic update, and DNSSEC re-signing, but not changes over
       control socket knotc zone-begin)	is paused just before applying the new
       zone.  At that point, validation	and confirmation is awaited  from  the
       user (or	potentially a user-defined script).

       NOTE:
	  In  the  case	of server shutdown or configuration reload, the	server
	  waits	until all outstanding external validations are either  commit-
	  ted or aborted, or until the timeout elapses.

       In  the	referenced external section, it	is possible to define paths to
       files where the new zone	contents and/or	differences  are  written  (in
       the zone	file format) just before every validation.

       TIP:
	  If  dbus-event  is set to external-verify, a corresponding signal is
	  emitted when the server is awaiting external validation.

       Default:	none

   dnssec-signing
       If enabled, automatic DNSSEC signing for	the zone is turned on.

       Default:	off

   dnssec-validation
       If enabled, the zone contents are validated for being correctly	signed
       (including NSEC/NSEC3 chain) with DNSSEC	signatures every time the zone
       is loaded or changed (including AXFR/IXFR).

       When  the  validation  fails, the zone being loaded or update being ap-
       plied is	cancelled with an error, and  either  none  or	previous  zone
       state is	published.

       List of DNSSEC checks:

        Every zone RRSet is correctly signed by at least one present DNSKEY.

        For  every  RRSIG  there  are at most 3 non-matching DNSKEYs with the
	 same keytag.

        DNSKEY	RRSet is signed	by KSK.

        NSEC(3) RR exists for each name (unless opt-out) with correct bitmap.

        Every NSEC(3) RR is linked to the lexicographically next one.

       The validation is not affected by dnssec-policy	configuration,	except
       for  signing-threads  option, which specifies the number	of threads for
       parallel	validation, and	rrsig-refresh, which defines  minimal  allowed
       remaining RRSIG validity	(otherwise a warning is	logged).

       NOTE:
	  Redundant or garbage NSEC3 records are ignored.

	  This mode is not compatible with dnssec-signing.

       TIP:
	  If  dbus-event  is  set to dnssec-invalid, a corresponding signal is
	  emitted when the validation fails.

       Default:	not set

   dnssec-policy
       A reference to DNSSEC signing policy.

       NOTE:
	  A configured policy called "default" won't be	used unless explicitly
	  referenced.

       Default:	an imaginary policy with all default values

   ds-push
       Per zone	configuration of ds-push. This option overrides	 possible  per
       policy option. Empty value is allowed for template value	overriding.

       Default:	not set

   zonemd-verify
       On each zone load/update, verify	that ZONEMD is present in the zone and
       valid.

       NOTE:
	  Zone digest calculation may take much	time and CPU on	large zones.

       TIP:
	  If  dbus-event  is  set to dnssec-invalid, a corresponding signal is
	  emitted when the verification	fails.

       Default:	off

   zonemd-generate
       On each zone update, calculate ZONEMD and put it	into the zone.

       Possible	values:

        none  No action regarding ZONEMD.

        zonemd-sha384	Generate ZONEMD	using SHA384 algorithm.

        zonemd-sha512	Generate ZONEMD	using SHA512 algorithm.

        remove	 Remove	any ZONEMD from	the zone apex.

       Default:	none

   serial-policy
       Specifies how the zone serial is	updated	after a	dynamic	update or  au-
       tomatic DNSSEC signing. If the serial is	changed	by the dynamic update,
       no change is made.

       Possible	values:

        increment   The  serial  is  incremented  according  to serial	number
	 arithmetic.

        unixtime  The serial is set to	the current unix time.

        dateserial  The 10-digit  serial  (YYYYMMDDnn)	 is  incremented,  the
	 first 8 digits	match the current iso-date.

       NOTE:
	  If  the resulting serial for unixtime	or dateserial is lower than or
	  equal	to the current serial (this happens e.g. when  migrating  from
	  other	 policy	 or  frequent  updates), the serial is incremented in-
	  stead.

	  To avoid user	confusion, use dateserial only if you expect  at  most
	  100 updates per day per zone and unixtime only if you	expect at most
	  one update per second	per zone.

	  Generated catalog zones use unixtime only.

       Default:	increment (unixtime for	generated catalog zones)

   serial-modulo
       The option value	is a string consisting of two parts (with no separator
       between them), each of which is optional.

       The first part specifies	that the zone serials must be congruent	modulo
       the  specified  value.  The format is R/M, where	R < M <= 256 are posi-
       tive integers. Whenever the zone	serial is incremented, it  is  ensured
       that serial % M == R. This can be useful	in the case of multiple	incon-
       sistent	 primaries,  where  distinct  zone  serial  sequences  prevent
       cross-master-IXFR by any	secondary.

       NOTE:
	  Because the zone serial effectively always increments	by  M  instead
	  of  1,  it  is  not  recommended  to use dateserial or even unixtime
	  serial-policy	in the case of rapidly updated zone.

       The second part specifies a numeric shift for the generated  zone  ser-
       ial.  The shift is formatted as a signed	integer, including the sign (+
       or -).  It is mostly useful with	unixtime serial-policy,	where the gen-
       erated zone serial is shifted relative to the Unix time.

       NOTE:
	  In order to ensure the congruent policy, this	option is only allowed
	  with	DNSSEC	signing	enabled	and zonefile-load to be	either differ-
	  ence-no-serial or none.

       Default:	0/1+0

   reverse-generate
       A list of zone names for	which  automatic  generation  of  reverse  PTR
       records	based  on A/AAAA records is enabled. The entire	generated zone
       is automatically	stored in the journal.

       The auto-generated reverse zone is re-generated	whenever  any  of  the
       specified  zones	 is  updated. This includes the	situation when reverse
       generation had failed due to some of the	specified zones	were  not  yet
       loaded or had expired.

       Current limitations:

        Is slow for large zones (even when changing a little).

        Recomputes all	reverse	records	upon any change	in any of the reversed
	 zones.

       In  case	 of  secondary zone (i.e. master is specified) this option im-
       plies  ixfr-from-axfr:	on   and   journal-content:   all,   otherwise
       zonefile-load: difference-no-serial and journal-content:	all.

       Default:	none

   include-from
       A  list	of subzones that should	be flattened into this zone. The flat-
       tening deletes all delegation-related records (including	NS, SOA,  ...)
       from  both  zones and copies all	other records from the subzone to this
       zone.

       In case of secondary zone (i.e. master is specified)  this  option  im-
       plies   ixfr-from-axfr:	 on   and   journal-content:   all,  otherwise
       zonefile-load: difference-no-serial and journal-content:	all.

       Default:	none

   refresh-min-interval
       Forced minimum zone refresh interval (in	 seconds)  to  avoid  flooding
       primary server.

       Minimum:	2

       Default:	2

   refresh-max-interval
       Forced maximum zone refresh interval (in	seconds).

       Default:	not set

   retry-min-interval
       Forced  minimum zone retry interval (in seconds)	to avoid flooding pri-
       mary server.

       Minimum:	1

       Default:	1

   retry-max-interval
       Forced maximum zone retry interval (in seconds).

       Default:	not set

   expire-min-interval
       Forced minimum zone expire interval (in seconds)	to avoid flooding pri-
       mary server.

       Minimum:	3

       Default:	3

   expire-max-interval
       Forced maximum zone expire interval (in seconds).

       Default:	not set

   catalog-role
       Trigger zone catalog feature. Possible values:

        none  Not a catalog zone.

        interpret  A catalog zone which is loaded from	a zone	file  or  XFR,
	 and member zones shall	be configured based on its contents.

        generate   A  catalog	zone whose contents are	generated according to
	 assigned member zones.

        member	 A member zone that is assigned	to one generated catalog zone.

       NOTE:
	  If set to generate, the zonefile-load	option has no effect  since  a
	  zone file is never loaded.

       Default:	none

   catalog-template
       For the catalog member zones, the specified configuration template will
       be applied.

       Multiple	catalog	templates may be defined. The first one	is used	unless
       the  member zone	has the	group property defined,	matching another cata-
       log template.

       NOTE:
	  This option must be set if and only if catalog-role is interpret.

	  Nested catalog zones aren't supported. Therefore  catalog  templates
	  can't	contain	catalog-role set to interpret or generate.

       Default:	not set

   catalog-zone
       Assign this member zone to specified generated catalog zone.

       NOTE:
	  This option must be set if and only if catalog-role is member.

	  The  referenced catalog zone must exist and have catalog-role	set to
	  generate.

       Default:	not set

   catalog-group
       Assign this member zone to specified catalog group (configuration  tem-
       plate).

       NOTE:
	  This option has effect if and	only if	catalog-role is	member.

       Default:	not set

   module
       An  ordered  list  of  references  to query modules in the form of mod-
       ule_name	or module_name/module_id. These	modules	apply only to the cur-
       rent zone queries.

       Default:	not set

AUTHOR
       CZ.NIC, z.s.p.o.	and contributors <https://www.knot-dns.cz/>

COPYRIGHT
       Copyright (C) CZ.NIC, z.s.p.o. and contributors

3.5.0				  2025-09-18			  KNOT.CONF(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=knot.conf&sektion=5&manpath=FreeBSD+Ports+15.0>

home | help