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

FreeBSD Manual Pages

  
 
  

home | help
UNBOUND-ANCHOR(8)		    Unbound		     UNBOUND-ANCHOR(8)

NAME
       unbound-anchor -	Unbound	1.25.0 anchor utility.

SYNOPSIS
       unbound-anchor [opts]

DESCRIPTION
       unbound-anchor  performs	 setup	or update of the root trust anchor for
       DNSSEC validation.  The program	fetches	 the  trust  anchor  with  the
       method  from RFC	7958 when regular RFC 5011 update fails	to bring it up
       to date.	 It can	be run from the	commandline, or	run as part of startup
       scripts before you start	the unbound(8) DNS server.

       Note that if  you  want	to  use	 RFC  5011  with  Unbound  (i.e.,  the
       auto-trust-anchor-file  option) so that trust anchor information	is au-
       tomatically tracked by Unbound during operation,	the user that  Unbound
       runs  under  (by	 default 'unbound') must have write permissions	to the
       file and	the directory  the  file  lives	 in  (for  creating  temporary
       files).	 In  this  case	you would probably want	to run this program as
       the designated Unbound user.

       Suggested usage:

	  # in the init	scripts.
	  # provide or update the root anchor (if necessary)
	  unbound-anchor -a "/usr/local/etc/unbound/root.key"

	  # Please note	usage of this root anchor is at	your own risk
	  # and	under the terms	of our LICENSE (see source).
	  #
	  # start validating resolver
	  # the	unbound.conf contains:
	  # auto-trust-anchor-file: "/usr/local/etc/unbound/root.key"
	  unbound -c unbound.conf

       This tool provides builtin default contents for	the  root  anchor  and
       root update certificate files.

       It  tests  if  the root anchor file works, and if not, and an update is
       possible, attempts to update the	root anchor using the root update cer-
       tificate.  It performs a	https fetch of root-anchors.xml	and checks the
       results (RFC 7958); if all checks are successful, it updates  the  root
       anchor file.  Otherwise the root	anchor file is unchanged.  It performs
       RFC 5011	tracking if the	DNSSEC information available via the DNS makes
       that possible.

       It  does	 not  perform  an update if the	certificate is expired,	if the
       network is down or other	errors occur.

       The available options are:

       -a <file>
	      The root anchor key file,	that is	read in	and written out.   De-
	      fault  is	/usr/local/etc/unbound/root.key.  If the file does not
	      exist, or	is empty, a builtin root key is	written	to it.

       -c <file>
	      The root update certificate file,	that is	read in.   Default  is
	      /usr/local/etc/unbound/icannbundle.pem.	If  the	 file does not
	      exist, or	is empty, a builtin certificate	is used.

       -l     List the builtin root key	and builtin root update	certificate on
	      stdout.

       -u <name>
	      The server name, it connects to https://name.   Specify  without
	      https://	prefix.	  The default is "data.iana.org".  It connects
	      to the port specified with -P.  You can pass an IPv4 address  or
	      IPv6 address (no brackets) if you	want.

       -S     Do not use SNI for the HTTPS connection.	Default	is to use SNI.

       -b <address>
	      The source address to bind to for	domain resolution and contact-
	      ing  the server on https.	 May be	either an IPv4 address or IPv6
	      address (no brackets).

       -x <path>
	      The pathname to the root-anchors.xml file	on the server.	(forms
	      URL with -u).  The default is /root-anchors/root-anchors.xml.

       -s <path>
	      The pathname to the root-anchors.p7s file	on the server.	(forms
	      URL with -u).  The  default  is  /root-anchors/root-anchors.p7s.
	      This  file  has to be a PKCS7 signature over the xml file, using
	      the pem file (-c)	as trust anchor.

       -n <name>
	      The emailAddress for the Subject	of  the	 signer's  certificate
	      from the p7s signature file.  Only signatures from this name are
	      allowed.	 The  default is dnssec@iana.org.  If you pass "" then
	      the emailAddress is not checked.

       -4     Use IPv4 for domain resolution  and  contacting  the  server  on
	      https.  Default is to use	IPv4 and IPv6 where appropriate.

       -6     Use  IPv6	 for  domain  resolution  and contacting the server on
	      https.  Default is to use	IPv4 and IPv6 where appropriate.

       -f <resolv.conf>
	      Use the given resolv.conf	file.  Not enabled by default, but you
	      could try	to pass	/etc/resolv.conf on some systems.  It contains
	      the IP addresses of the recursive	nameservers to use.   However,
	      since  this  tool	could be used to bootstrap that	very recursive
	      nameserver, it would not be useful (since	that server is not  up
	      yet,  since  we  are bootstrapping it).  It could	be useful in a
	      situation	where you know an upstream cache is deployed (and run-
	      ning) and	in captive portal situations.

       -r <root.hints>
	      Use the given root.hints file (same syntax as the	BIND  and  Un-
	      bound  root  hints file) to bootstrap domain resolution.	By de-
	      fault a list of builtin root hints is used.  unbound-anchor goes
	      to the network itself for	these roots, to	resolve	the server (-u
	      option) and to check the root DNSKEY records.  It	does  so,  be-
	      cause  the  tool	when  used for bootstrapping the recursive re-
	      solver, cannot use that recursive	resolver itself	because	it  is
	      bootstrapping that server.

       -R     Allow fallback from -f <resolv.conf> file	to direct root servers
	      query.   It  allows  you to prefer local resolvers, but fallback
	      automatically to direct root query if they do not	respond	or  do
	      not support DNSSEC.

       -v     More  verbose.   Once  prints  informational  messages, multiple
	      times may	enable large debug amounts (such as full  certificates
	      or byte-dumps of downloaded files).  By default it prints	almost
	      nothing.	 It  also prints nothing on errors by default; in that
	      case the original	root anchor file is simply  left  undisturbed,
	      so that a	recursive server can start right after it.

       -C <unbound.conf>
	      Debug  option  to	 read <unbound.conf> into the resolver process
	      used.

       -P <port>
	      Set the port number to use for the https	connection.   The  de-
	      fault is 443.

       -F     Debug  option  to	 force update of the root anchor through down-
	      loading the xml file and verifying it with the certificate.   By
	      default  it  first  tries	to update by contacting	the DNS, which
	      uses much	less bandwidth,	is much	faster (200 msec not  2	 sec),
	      and  is nicer to the deployed infrastructure.  With this option,
	      it still attempts	to do so (and may  verbosely  tell  you),  but
	      then  ignores  the  result  and  goes on to use the xml fallback
	      method.

       -h     Show the version and commandline option help.

EXIT CODE
       This tool exits with value 1 if the root	anchor was updated  using  the
       certificate or if the builtin root-anchor was used.  It exits with code
       0  if no	update was necessary, if the update was	possible with RFC 5011
       tracking, or if an error	occurred.

       You can check the exit value in this manner:

	  unbound-anchor -a "root.key" || logger "Please check root.key"

       Or something more suitable for your operational environment.

TRUST
       The root	keys and update	certificate included in	this tool are provided
       for convenience and under the terms of our  license  (see  the  LICENSE
       file	    in	       the	  source	distribution	    or
       https://github.com/NLnetLabs/unbound/blob/master/LICENSE	and  might  be
       stale or	not suitable to	your purpose.

       By  running unbound-anchor -l the keys and certificate that are config-
       ured in the code	are printed for	your convenience.

       The built-in configuration can be overridden by providing  a  root-cert
       file and	a rootkey file.

FILES
       /usr/local/etc/unbound/root.key
	      The  root	 anchor	file, updated with 5011	tracking, and read and
	      written to.  The file is created if it does not exist.

       /usr/local/etc/unbound/icannbundle.pem
	      The trusted self-signed certificate that is used to  verify  the
	      downloaded  DNSSEC  root	trust  anchor.	 You  can update it by
	      fetching			       it			  from
	      https://data.iana.org/root-anchors/icannbundle.pem (and validate
	      it).   If	the file does not exist	or is empty, a builtin version
	      is used.

       https://data.iana.org/root-anchors/root-anchors.xml
	      Source for the root key information.

       https://data.iana.org/root-anchors/root-anchors.p7s
	      Signature	on the root key	information.

SEE ALSO
       unbound.conf(5),	unbound(8).

AUTHOR
       Unbound developers are mentioned	in the CREDITS file in	the  distribu-
       tion.

COPYRIGHT
       1999-2026, NLnet	Labs

1.25.0				 Apr 29, 2026		     UNBOUND-ANCHOR(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=unbound-anchor&sektion=8&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help