<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-wkumari-dnsop-localroot-bcp-00" category="bcp" consensus="true" submissionType="IETF" updates="RFC8806" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.0 -->
  <front>
    <title>Making LocalRoot a Best Current Practice</title>
    <seriesInfo name="Internet-Draft" value="draft-wkumari-dnsop-localroot-bcp-00"/>
    <author fullname="Warren Kumari">
      <organization>Google, Inc.</organization>
      <address>
        <email>warren@kumari.net</email>
      </address>
    </author>
    <author fullname="Wes Hardaker">
      <organization>USC/ISI</organization>
      <address>
        <email>ietf@hardakers.net</email>
      </address>
    </author>
    <author initials="J." surname="Reid" fullname="Jim Reid">
      <organization>RTFM llp</organization>
      <address>
        <postal>
          <street>St Andrews House</street>
          <city>382 Hillington Road, Glasgow Scotland</city>
          <code>G51 4BL</code>
          <country>UK</country>
        </postal>
        <email>jim@rfc1035.com</email>
      </address>
    </author>
    <author initials="G." surname="Huston" fullname="Geoff Huston">
      <organization>APNIC</organization>
      <address>
        <postal>
          <street>6 Cordelia St</street>
          <city>South Brisbane</city>
          <code>QLD 4101</code>
          <country>Australia</country>
        </postal>
        <email>gih@apnic.net</email>
      </address>
    </author>
    <date year="2025" month="August" day="29"/>
    <area>Operations and Management</area>
    <workgroup>Domain Name System Operations</workgroup>
    <keyword>DNS</keyword>
    <keyword>DNSSEC</keyword>
    <keyword>zone cut</keyword>
    <keyword>delegation</keyword>
    <keyword>referral</keyword>
    <abstract>
      <?line 86?>

<t>RFC 8806 (often called "LocalRoot") defines a mechanism whereby a
recursive resolver can fetch the contents of an entire zone and place this
information into the resolver's cache.</t>
      <t>This has several benefits, including increased reliability, increased
performance, improved privacy, and decreased or mitigating the effect of some
types of DoS attacks.</t>
      <t>While the majority of DNS resolver implementations natively support RFC 8806,
it remains tricky to configure and maintain. This document recommends that DNS
resolver software simplify this configuration, and further suggests that configuration becomes the default.</t>
      <t>This document updates Section 2 of RFC8806 by relaxing the requirement that
implementations <bcp14>MUST</bcp14> run an authoritative service.</t>
      <t>/* Ed (WK): Open questions / ToDo / Notes (to be removed before publication):</t>
      <ol spacing="normal" type="1"><li>
          <t>I started writing this as rfc8806-bis, but as I did so I realized
that it is likely better as a standalone document.</t>
        </li>
        <li>
          <t>DONE - Add Zone Checksum</t>
        </li>
        <li>
          <t>DONE - Look up BIND and Unbound support.</t>
        </li>
        <li>
          <t>This document recommends ("Operation Considerations") using HTTP. Need to discuss the bootstrapping issue, and load balancing.</t>
        </li>
        <li>
          <t>Security Considerations - flesh this out. I think that it just contains descriptions of the benefits from RFC8806, but I suspect there will be some other concerns too.</t>
        </li>
      </ol>
      <t>*/</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://wkumari.github.io/draft-wkumari-dnsop-localroot-bcp/draft-wkumari-dnsop-localroot-bcp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-wkumari-dnsop-localroot-bcp/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Domain Name System Operations Working Group mailing list (<eref target="mailto:dnsop@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dnsop/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dnsop/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/https://github.com/wkumari/draft-wkumari-dnsop-localroot-bcp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 119?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="RFC8806"/> provides "a method for the operator of a recursive
resolver to have a complete root zone locally, and to hide queries
for the root zone from outsiders.  The basic idea is to create an up-to-date
root zone service on the same host as the recursive server,
and use that service when the recursive resolver looks up root
information."</t>
      <t>While <xref target="RFC8806"/> behavior can be achieved by "manually" configuring software
that acts as a secondary server for the root-zone (see <xref target="RFC8806"/> Section
B.1. Example Configuration: BIND 9.12 and Section B.2 Example Configuration:
Unbound 1.8), most resolver implementations now support simpler, and more
robust, configuration mechanisms to enable this support. For example, ISC BIND
9.14 and above supports "mirror" zones, Unbound 1.9 supports "auth-zone", and
Knot Resolver uses its "prefill" module to load the root zone information. See
Appendix A for configuration details. In addition to providing simpler configuration of the LocalRoot mechanism, these mechanisms support "falling back" to querying the root-servers directly if they are unable to fetch the entire root zone.</t>
    </section>
    <section anchor="definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="making-rfc8806-behavior-be-a-best-current-practice">
      <name>Making RFC8806 behavior be a Best Current Practice</name>
      <t><xref target="RFC8806"/> is an Informational document that describes a mechanism that
resolver operators can use to improve the performance, reliability, and privacy
of their resolvers.</t>
      <t>This document:</t>
      <ol spacing="normal" type="1"><li>
          <t>promotes the behavior in <xref target="RFC8806"/> to be a Best Current Practice.</t>
        </li>
        <li>
          <t>RECOMMENDS that resolver implementations provide a simple configuration
option to enable or disable functionality, and</t>
        </li>
        <li>
          <t>RECOMMENDS that resolver implementations enable this behavior by default. and</t>
        </li>
        <li>
          <t>RECOMMENDS that <xref target="RFC8976"/> be used to validate the zone information
before loading it.</t>
        </li>
      </ol>
    </section>
    <section anchor="changes-from-rfc8806">
      <name>Changes from RFC8806</name>
      <t><xref target="RFC8806"/> Section 2 (Requirements) states that:</t>
      <ul empty="true">
        <li>
          <t>The system <bcp14>MUST</bcp14> be able to run an authoritative service for the
root zone on the same host.  The authoritative root service <bcp14>MUST</bcp14>
only respond to queries from the same host.  One way to assure not
responding to queries from other hosts is to run an authoritative
server for the root that responds only on one of the loopback
addresses (that is, an address in the range 127/8 for IPv4 or ::1
in IPv6).  Another method is to have the resolver software also
act as an authoritative server for the root zone, but only for
answering queries from itself.</t>
        </li>
      </ul>
      <t>This document relaxes this requirement. Some resolver implementations achieve
the behavior described in RFC8806 by fetching the zone information and
"prefilling" their cache with this information. As the resulting behavior is
(essentially) indistinguishable from the mechanism defined in RFC8806, this is
viewed as being an acceptable implementation decision.</t>
    </section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>This behavior should apply to all general-purpose recursive resolvers used on
the public Internet.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>In order for the <xref target="RFC8806"/> mechanism to be effective, a resolver must be
able to fetch the contents of the entire root zone. This is currently usually
performed through AXFR (<xref target="RFC5936"/>). In order for AXFR to work, the resolver
must be able to use TCP (which is already required by <xref target="RFC7766"/>).</t>
      <t>Resolvers <bcp14>MAY</bcp14> allow fetching this information via HTTPS.
Where possible, HTTPS should be preferred as it will allow for compression as well as the possibility of using low-cost, well-distributed CDNs to distribute the zone files.</t>
      <t>/* ED (WH): I don't think we can get away without describing how/where to pull this information from at some point.  The ICANN https servers are one source, or should resolver code bases use their own defined CDNs? */</t>
      <t>Resolvers <bcp14>MUST</bcp14> validate the contents of the zone before using it. This
<bcp14>SHOULD</bcp14> be done using the mechanism in <xref target="RFC8976"/>, but <bcp14>MAY</bcp14> be done by validating every signed record in a zone with DNSSEC <xref target="RFC9364"/>.</t>
      <t>/* Ed (WK): We might want to add some more discussions around failure handling,
but, 1:  <xref target="RFC8806"/> already covers much of this and 2: "don't teach your
grandmother to suck eggs" - implementations already handle this, so let's not
try to overspecify or overconstrain what they do.  */</t>
      <t>/* Ed (GH): As the NS records are unsigned the possibility of tampering with
the root zone exists through these unsigned NS records. For this reason ZONEMD
should be strongly recommended, or even <bcp14>MUST</bcp14> be used.*/</t>
      <t>/* Ed (WH): I agree with GH, and said as much in <xref target="LOCALROOTPRIVACY"/> */</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>There are three areas of potential concern  that can be mitigated to some extent
by using this mechanism, coupled with the use of <xref target="RFC8976"/>.</t>
      <t>The first is the potential to insert corrupted referral address records in
response to queries to a root server. The referral addresses provided in a
referral response is not a DNSSEC-signed record in the root zone, and thus there is
the potential for an on-the-wire insertion attack by replacing this part of a
referral response with a different address set. If ZONEMD is used to
authenticate the the local copy of the root zone, such on-the-wire attacks are
not feasible.</t>
      <t>The second is the issue of leak of potentially sensitive information
that may be contained in the query name used in DNS queries. Most root
servers (except b.root-servers.net) do not currently support queries
over encrypted transports, resulting in query names that are visible
to on-the-wire eavesdroppers, and may also be held in any operational
logs maintained by root server operators. Such concerns may be
mitigated by Query Name Minimization <xref target="RFC9156"/>, but common
implementations of this mechanism appear to only minimize query names
of four or fewer labels, and the uptake rate of query name
minimization appears to be quite low <xref target="QNAMEMIN"/>. Furthermore, even
with Query Name Minimization, queries for non-existent names
(generated from keyword searches and mis-configurations) can cause
additional privacy leaks.  <xref target="RFC8806"/> eliminates the need for the
resolver to perform specific queries to any root nameserver, and
obviates any such consideration of query name leakage
<xref target="LOCALROOTPRIVACY"/>.</t>
      <t>The final issue solved with LocalRoot is that when information is
always available locally, usage of it is no longer subject to DDoS
attacks against the remote servers.  By having the answers effectively
permanently in cache, no queries to the upstream service provider
(such as root servers) are needed since <xref target="RFC8806"/> resolvers
effectively always have a cached set of data that is considered fresh
longer than the typical TTL records within the zone <xref target="CACHEME"/>
        <xref target="LOCALROOTPRIVACY"/>.</t>
      <t>/* Ed (WK): Fill this in. I think that it just contains descriptions of the
benefits from RFC8806, but I'm guessing that there are some other concerns
too... */</t>
      <t>Security requirements associated with the need to verify that the
contents of the retrieved root zone are correct were discussed above,
and mitigated by the usage of <xref target="RFC8976"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8806">
          <front>
            <title>Running a Root Server Local to a Resolver</title>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Some DNS recursive resolvers have longer-than-desired round-trip times to the closest DNS root server; those resolvers may have difficulty getting responses from the root servers, such as during a network attack. Some DNS recursive resolver operators want to prevent snooping by third parties of requests sent to DNS root servers. In both cases, resolvers can greatly decrease the round-trip time and prevent observation of requests by serving a copy of the full root zone on the same server, such as on a loopback address or in the resolver software. This document shows how to start and maintain such a copy of the root zone that does not cause problems for other users of the DNS, at the cost of adding some operational fragility for the operator.</t>
              <t>This document obsoletes RFC 7706.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8806"/>
          <seriesInfo name="DOI" value="10.17487/RFC8806"/>
        </reference>
        <reference anchor="RFC8976">
          <front>
            <title>Message Digest for DNS Zones</title>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Barber" initials="P." surname="Barber"/>
            <author fullname="M. Weinberg" initials="M." surname="Weinberg"/>
            <author fullname="W. Kumari" initials="W." surname="Kumari"/>
            <author fullname="W. Hardaker" initials="W." surname="Hardaker"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a protocol and new DNS Resource Record that provides a cryptographic message digest over DNS zone data at rest. The ZONEMD Resource Record conveys the digest data in the zone itself. When used in combination with DNSSEC, ZONEMD allows recipients to verify the zone contents for data integrity and origin authenticity. This provides assurance that received zone data matches published data, regardless of how the zone data has been transmitted and received. When used without DNSSEC, ZONEMD functions as a checksum, guarding only against unintentional changes.</t>
              <t>ZONEMD does not replace DNSSEC: DNSSEC protects individual RRsets (DNS data with fine granularity), whereas ZONEMD protects a zone's data as a whole, whether consumed by authoritative name servers, recursive name servers, or any other applications.</t>
              <t>As specified herein, ZONEMD is impractical for large, dynamic zones due to the time and resources required for digest calculation. However, the ZONEMD record is extensible so that new digest schemes may be added in the future to support large, dynamic zones.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8976"/>
          <seriesInfo name="DOI" value="10.17487/RFC8976"/>
        </reference>
        <reference anchor="RFC9364">
          <front>
            <title>DNS Security Extensions (DNSSEC)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>This document describes the DNS Security Extensions (commonly called "DNSSEC") that are specified in RFCs 4033, 4034, and 4035, as well as a handful of others. One purpose is to introduce all of the RFCs in one place so that the reader can understand the many aspects of DNSSEC. This document does not update any of those RFCs. A second purpose is to state that using DNSSEC for origin authentication of DNS data is the best current practice. A third purpose is to provide a single reference for other documents that want to refer to DNSSEC.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="237"/>
          <seriesInfo name="RFC" value="9364"/>
          <seriesInfo name="DOI" value="10.17487/RFC9364"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5936">
          <front>
            <title>DNS Zone Transfer Protocol (AXFR)</title>
            <author fullname="E. Lewis" initials="E." surname="Lewis"/>
            <author fullname="A. Hoenes" initials="A." role="editor" surname="Hoenes"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The standard means within the Domain Name System protocol for maintaining coherence among a zone's authoritative name servers consists of three mechanisms. Authoritative Transfer (AXFR) is one of the mechanisms and is defined in RFC 1034 and RFC 1035.</t>
              <t>The definition of AXFR has proven insufficient in detail, thereby forcing implementations intended to be compliant to make assumptions, impeding interoperability. Yet today we have a satisfactory set of implementations that do interoperate. This document is a new definition of AXFR -- new in the sense that it records an accurate definition of an interoperable AXFR mechanism. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5936"/>
          <seriesInfo name="DOI" value="10.17487/RFC5936"/>
        </reference>
        <reference anchor="RFC7766">
          <front>
            <title>DNS Transport over TCP - Implementation Requirements</title>
            <author fullname="J. Dickinson" initials="J." surname="Dickinson"/>
            <author fullname="S. Dickinson" initials="S." surname="Dickinson"/>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document specifies the requirement for support of TCP as a transport protocol for DNS implementations and provides guidelines towards DNS-over-TCP performance on par with that of DNS-over-UDP. This document obsoletes RFC 5966 and therefore updates RFC 1035 and RFC 1123.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7766"/>
          <seriesInfo name="DOI" value="10.17487/RFC7766"/>
        </reference>
        <reference anchor="RFC9156">
          <front>
            <title>DNS Query Name Minimisation to Improve Privacy</title>
            <author fullname="S. Bortzmeyer" initials="S." surname="Bortzmeyer"/>
            <author fullname="R. Dolmans" initials="R." surname="Dolmans"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="November" year="2021"/>
            <abstract>
              <t>This document describes a technique called "QNAME minimisation" to improve DNS privacy, where the DNS resolver no longer always sends the full original QNAME and original QTYPE to the upstream name server. This document obsoletes RFC 7816.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9156"/>
          <seriesInfo name="DOI" value="10.17487/RFC9156"/>
        </reference>
        <reference anchor="BIND-MIRROR" target="https://bind9.readthedocs.io/en/stable/reference.html#namedconf-statement-type%20mirror">
          <front>
            <title>BIND 9 Mirror Zones</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="UNBOUND-AUTH-ZONE" target="https://nlnetlabs.nl/documentation/unbound">
          <front>
            <title>Unbound Auth Zone</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="KNOT-PREFILL" target="https://knot-resolver.readthedocs.io/en/stable/modules-prefill.html">
          <front>
            <title>Knot Resolver Prefill</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="QNAMEMIN" target="https://www.potaroo.net/ispcol/2019-08/qmin.html">
          <front>
            <title>DNS Query Privacy</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="LOCALROOTPRIVACY" target="http://ant.isi.edu/~hardaker/papers/2018-02-ndss-analyzing-root-privacy.pdf">
          <front>
            <title>Analyzing and mitigating privacy with the DNS root service</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CACHEME" target="https://ant.isi.edu/~johnh/PAPERS/Moura19b.pdf">
          <front>
            <title>Cache Me If You Can: Effects of DNS Time-to-Live</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 282?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors have discussed this idea with many people, and have likely
forgotten to acknowledge and credit many of them. If we discussed this with
you, and you are not listed, please please let us know and we'll add you.</t>
      <t>The authors would like to thank Vint Cerf, John Crain, Puneet Sood, Robert
Story, Suzanne Woolf.</t>
      <t>In addition, one of the authors would like to once again thank the bands
"Infected Mushroom", "Kraftwerk", and "deadmau5" for providing the soundtrack
to which this was written.</t>
    </section>
    <section numbered="false" anchor="appendix-a-example-configurations">
      <name>Appendix A: Example Configurations</name>
      <t>These examples are provided to show how the LocalRoot mechanism can be
configured in various resolver implementations. They are not intended to be
exhaustive, and may not work with all versions of the software.</t>
      <t>/* Ed (WK): These examples are just to get started. We would appreciate
contributions from the resolver operators.</t>
      <t>Yes, we are fully aware of the circular dependency of trying to resolve e.g
www.internic.net when bootstrapping. More discussion on serving the root zone
over HTTP by IP will be added later. */</t>
      <section numbered="false" anchor="isc-bind-914-and-above">
        <name>ISC BIND 9.14 and above</name>
        <t>See the BIND documentation for <eref target="https://bind9.readthedocs.io/en/stable/reference.html#namedconf-statement-type%20mirror">mirror
zones</eref>.</t>
        <t>Example configuration using a "mirror" zone:</t>
        <artwork><![CDATA[
zone "." {
    type mirror;
};
]]></artwork>
      </section>
      <section numbered="false" anchor="knot-resolver">
        <name>Knot Resolver</name>
        <t>See the Knot Resolver <eref target="https://knot-resolver.readthedocs.io/en/v5.0.1/modules-prefill.html?highlight=cache%20prefilling">Cache
prefilling</eref>
documentation for more information.</t>
        <t>The following example configuration will prefill the root zone using HTTPS:</t>
        <artwork><![CDATA[
modules.load('prefill')
prefill.config({
      ['.'] = {
              url = 'https://www.internic.net/domain/root.zone',
              interval = 86400  -- seconds
              ca_file = '/etc/pki/tls/certs/ca-bundle.crt', -- optional
      }
})
]]></artwork>
      </section>
      <section numbered="false" anchor="unbound-19-and-above">
        <name>Unbound 1.9 and above</name>
        <t>See the Unbound documentation for <eref target="https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound.conf.html#unbound-conf-auth-url">Authority Zone Options</eref> configuration.</t>
        <t>The following example configuration will prefill the root zone using HTTPS:</t>
        <artwork><![CDATA[
auth-zone:
  name: "."
  url: "https://www.internic.net/domain/root.zone"
  zonefile: "root.zone"
        fallback-enabled: yes
    for-downstream: no
    for-upstream: yes
    zonefile: "root.zone"
  prefetch: yes
]]></artwork>
      </section>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vb6XIbR5L+X09RC8UGyQkcpKwTMz4gkpJo8TJJjdbjcGwU
ugtAm42udlc3IVhBP8s+yz7ZfplV1QcI2o6NGEVQBLrryMrzy8ziYDAQZVKm
eix7Z+o2yeby1EQqvTKmlEq+0baUh1VR6KyUl4WKyiTSPfFETaeFvsOcm4uj
CzmQE/6eqDIxWU9EqtRzU6zHchrlQsQmytQSO8SFmpWD1W21VEUyiDNr8kFK
uxXYbYCxg/19YavpMrEWC5XrHJNOjm/eSvlEqtQabJhksc41/svKXl/2dJyU
pkhUSl9OJm/wyxT4dHXzFmRm1XKqi7F4EoOisYhMZnVmKzuWZVFpgQN8JVSh
Fda9yHXB5FupslieqUzN9ZJ2EStT3M4LU+UYdmSWKsnkOc4jr9e21EvZzOyJ
W73G6HgswJOj82v/6/r4kD79ZjIto6qkz7FO9Zxn0bdCz3RRqFRUOVEK+q7e
Hr56tf9C3OmsAuVS/kUCpHRc630C0STNdzSPnmNaiufM9e8SXc6GppjTC1VE
C7xYlGVux6MRjaNHyZ0ehmEjejCaFmZl9YhXGNHMeVIuqmlrrnswjMxy5KU8
+lOZ00IpHbpsLeTHD/2Cifnzdf58xHBRLtOeEKoqF6YgGWFrKWdVmjr9/KRI
0eUHXoHf4ewqS35j7o7lO2Pmqe7Lkywa8mvtmLried95mjNdbllaW/leFbG6
1cWWlT9eH45Ork/aixLvv1v4Kba9apJBQb4fyiudxPzAbfF9smweYXko0c3b
M5mmOT+xZaE1eHxdykkWF3oFgkxlNb+MkhLW+tWrp/J9kqbQm9Jk8sqouC/f
pcrOzUpeR6ZMYRpuvImx47vnB/LZm1P/pMpKMvmPH9qn+CVZflfMooP9r56T
WnSO8G4o31e2JBPo8OqdNrNZ+1WXV5PL85PD9h7zZPGdyrMkckxqnfWFPIQ1
6jRROHbroNcGKiDfFImdqky3TvTD6ZF8drB/0D3SBKTAOhMlRGaKJei4Y5v0
Rho+vn4ZPr7+6sWzMTktb/wiyWYbE59jTBgi/0We4aZQmZ2xeuD9y5cvmvf8
KjdFKc2dLuTN4aXf5+C5G/TD+eTsWJ4lWQLf6dwKRrw5OT8anJ1cXV1cjflE
wdPTC/ka44sC3pJ2Z9eBAaqYE+OCHU7hbl8P4SHjcqHhxy2Zos5GtlTTVI/Y
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
Pw5Yvxn82CZc9S/pb3BoJB3t/wCoc4gPlTUAAA==

-->

</rfc>
