561 lines
23 KiB
Plaintext
561 lines
23 KiB
Plaintext
|
|
|
|
|
|
|
|
dnsop O. Kolkman
|
|
Internet-Draft 12 May 2026
|
|
Intended status: Informational
|
|
Expires: 13 November 2026
|
|
|
|
|
|
In-tree Hints for DNS Resiliency
|
|
draft-kolkman-in-tree-hints-pre-00
|
|
|
|
Abstract
|
|
|
|
By configuring so called in-tree hints in recursive nameservers and
|
|
by following operational practices, the resiliency against certain
|
|
types of DNS failures increases. We describe the approach, the
|
|
necessary operational practices, and the dilemmas this approach
|
|
introduces.
|
|
|
|
Status of This Memo
|
|
|
|
This Internet-Draft is submitted in full conformance with the
|
|
provisions of BCP 78 and BCP 79.
|
|
|
|
Internet-Drafts are working documents of the Internet Engineering
|
|
Task Force (IETF). Note that other groups may also distribute
|
|
working documents as Internet-Drafts. The list of current Internet-
|
|
Drafts is at https://datatracker.ietf.org/drafts/current/.
|
|
|
|
Internet-Drafts are draft documents valid for a maximum of six months
|
|
and may be updated, replaced, or obsoleted by other documents at any
|
|
time. It is inappropriate to use Internet-Drafts as reference
|
|
material or to cite them other than as "work in progress."
|
|
|
|
This Internet-Draft will expire on 13 November 2026.
|
|
|
|
Copyright Notice
|
|
|
|
Copyright (c) 2026 IETF Trust and the persons identified as the
|
|
document authors. All rights reserved.
|
|
|
|
This document is subject to BCP 78 and the IETF Trust's Legal
|
|
Provisions Relating to IETF Documents (https://trustee.ietf.org/
|
|
license-info) in effect on the date of publication of this document.
|
|
Please review these documents carefully, as they describe your rights
|
|
and restrictions with respect to this document. Code Components
|
|
extracted from this document must include Revised BSD License text as
|
|
described in Section 4.e of the Trust Legal Provisions and are
|
|
provided without warranty as described in the Revised BSD License.
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 1]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
Table of Contents
|
|
|
|
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
|
|
2. The in-tree hints concept . . . . . . . . . . . . . . . . . . 4
|
|
2.1. Recursive nameserver . . . . . . . . . . . . . . . . . . 4
|
|
2.2. Domain Owner . . . . . . . . . . . . . . . . . . . . . . 5
|
|
3. Operational Considerations . . . . . . . . . . . . . . . . . 6
|
|
3.1. Signalling . . . . . . . . . . . . . . . . . . . . . . . 6
|
|
3.2. Achieving true resiliency of services within the
|
|
domain. . . . . . . . . . . . . . . . . . . . . . . . . . 7
|
|
3.3. Serving stale data . . . . . . . . . . . . . . . . . . . 7
|
|
4. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
|
5. Policy Considerations . . . . . . . . . . . . . . . . . . . . 8
|
|
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
|
|
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9
|
|
8. Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
|
9. Appendix: Example configuration in Unbound . . . . . . . . . 9
|
|
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
|
10.1. Normative References . . . . . . . . . . . . . . . . . . 9
|
|
10.2. Informative References . . . . . . . . . . . . . . . . . 10
|
|
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 10
|
|
|
|
1. Introduction
|
|
|
|
|
|
The Domain Name System (DNS) is a remarkably stable and resilient
|
|
system. However, in many environments people are looking on how they
|
|
can remain in control over their own environments and reduce external
|
|
dependencies.
|
|
|
|
This memo documents an operational approach that, with minor support
|
|
of recursive nameserver can offer one of the elements towards greater
|
|
autonomy and resilience of infrastructure dependent on a specific
|
|
domain.
|
|
|
|
In an illustrative scenario, consider an enterprise operating under
|
|
the domain example.net that provides essential services, such as
|
|
logistics, to users on its campus. If the transit connection to the
|
|
broader Internet were to fail, the consequences could be significant.
|
|
Specifically, if the domain data for example.net is not cached within
|
|
the enterprise network, users will experience DNS resolution
|
|
failures. This means they will be unable to access critical services
|
|
because the necessary delegation from the .net top-level domain to
|
|
example.net is unavailable.
|
|
|
|
Moreover, and perhaps more importantly, this approach offers
|
|
protection against various attack vectors that could compromise the
|
|
delegation process. For instance, man-in-the-middle (MITM) attacks
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 2]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
may attempt to alter delegation records, which could lead to denial
|
|
of service, particularly in systems utilizing DNSSEC (Domain Name
|
|
System Security Extensions). Additionally, threats such as DNS
|
|
supply chain attacks or inadvertent errors can result in unauthorized
|
|
changes to the delegation, including DS (Delegation Signer) records.
|
|
Finally, this method may offer some protection if, in an event that
|
|
would be catastrophic for the Internet, geopolitical tensions lead to
|
|
the de-delegation of a countries top-level domain.
|
|
|
|
Our approach is designed for proving resiliency for the Internet's
|
|
naming function and does not bring full resiliency by itself.
|
|
Instead, we this is as a building block for resiliency of critical
|
|
infrastructure or digital autonomy. The approach is complementary to
|
|
serving stale data from a resolvers cache [RFC8767] more on this in
|
|
section Section 3.3.
|
|
|
|
An important requirement of this approach is consistent with the
|
|
architecture, design, and operation of the DNS and the global
|
|
Internet. By following practices herein we avoid namespace
|
|
fragmentation. The approach avoids fundamental protocol changes, in
|
|
particular it avoids alternative roots.
|
|
|
|
We describe what parties that are critically dependent on a specific
|
|
domain and those that serve zones within that domain will need to do
|
|
in order to guarantee continuous operation. For instance, when their
|
|
parent nameservers are not reachable or there is a broken delegation
|
|
from the ancestor domain. Here, 'broken' means that DNS resolver
|
|
receives parental data that is inconsistent with the intent from the
|
|
(child) domain owner, i.e. receiving data that is inconsistent with
|
|
what is published on authoritative servers. Which includes not
|
|
receiving data at all.
|
|
|
|
In section Section 2 we describe the idea and the requirements for a
|
|
recursive DNS server and the requirements of the zone associated
|
|
with. In section Section 3.2 we shortly point to other measures that
|
|
must be taken in combination with this mechanism. In section
|
|
Section 5 we discuss some policy considerations and the dilemmas that
|
|
exist with respect to intentions of the DNS parent and child.
|
|
|
|
This document uses uppercase SHOULD, RECOMMENDED and MUST in the
|
|
meaning defined by [RFC2119]. Their lowercase equivalents do not
|
|
have normative meaning.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 3]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
2. The in-tree hints concept
|
|
|
|
[RFC9499] describes the root hints file "Operators who manage a DNS
|
|
recursive resolver typically need to configure a 'root hints file'.
|
|
This file contains the names and IP addresses of the authoritative
|
|
name servers for the root zone, so the software can bootstrap the DNS
|
|
resolution process. For many pieces of software, this list comes
|
|
built into the software."
|
|
|
|
The in-tree hints borrows this from this idea: by configuring a
|
|
'hints file' for a specific domain one allows oneself to bootstrap
|
|
from that domain down, even if its parents are not available. It
|
|
requires a modification in recursive nameservers and adherence to
|
|
some operational practices.
|
|
|
|
2.1. Recursive nameserver
|
|
|
|
Recursive nameserver software will need to be modified to deal to
|
|
work with in-tree hints.
|
|
|
|
An in-tree hints is configuration for a recursive resolver that
|
|
provides the names and IP addresses of authoritative name servers for
|
|
a specific domain. A recursive name server may be configured for in-
|
|
tree hints for multiple domains.
|
|
|
|
If there are no in-domain nameservers ([RFC9499]) in the NS set for
|
|
the domain then this mechanism MUST not be used. The reason for this
|
|
requirement is that when there is no in-domain nameserver the
|
|
resiliency properties cannot be achieved as there are external name
|
|
dependencies. This requirement can be enforced by the recursive
|
|
nameserver software at the moment of configuration parsing.
|
|
|
|
In-tree hints are only useful if the domain owner follows certain
|
|
practices and MAY only be followed if the domain owner indicates it
|
|
does so. Section Section 3.1 describes the RECOMMENDED way for
|
|
domain name owners to signaling their intent. This is also something
|
|
that the recursive nameserver can check and log.
|
|
|
|
In-tree hints MUST only be used in combination with a trust-anchor.
|
|
i.e. a trusted public DNSSEC key that is associated with the name.
|
|
The trust-anchor MUST be maintained. It SHOULD be maintained by the
|
|
mechanism described in [RFC5011]. Alternatively an appropriate and
|
|
trustworthy off-band mechanism MAY be used. The operator of a
|
|
recursive nameserver must validate that the domain associated with
|
|
the in-tree hints follows the operational practices described in this
|
|
memo. This can be achieved by out-of band mechanisms, or by querying
|
|
the TXT record as described in {#auth}
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 4]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
When a recursive nameserver is configured with an in-tree hint then
|
|
the NS Resource Record set contained in the in-tree hint MUST be used
|
|
during the resolution process. When the NS RRset on the domain's
|
|
authoritative server changes and has been validated using DNSSEC
|
|
against configured key then the in-hints tree configuration SHOULD be
|
|
updated with the changed authoritative NS set. The recursive
|
|
nameserver should honor the TTLs to regular check a change of the
|
|
authoritative DNS RR set. Operators that implement in-tree hints
|
|
SHOULD use tooling, possibly implemented in the recursive nameserver,
|
|
to log and signal inconsistencies between information in the parents
|
|
and the in-tree configuration to the operators of the recursive
|
|
nameserver, these inconsistencies need to be well understood. They
|
|
could be the result of a bonafide redelegation (in which case the
|
|
parental records are likely a sub-set of the authoritative NS RR
|
|
set), the withdrawal of the delegation by the parent, or an error or
|
|
attack.
|
|
|
|
The trust anchor MUST be used for the validation of record within the
|
|
tree-hint's domain even when a parental DS record exists. Nota bene,
|
|
section 5 of [RFC5011] allows for deletion if a superior trust point
|
|
exists - when a trust anchor is part of an in-tree hint that deletion
|
|
with the motivation that a superior trust point exists MUST not
|
|
happen. When a tree-hint exists for a subordinate domain, that trust
|
|
anchor MUST take precedence.
|
|
|
|
Recursive nameservers that implement this mechanism should have a
|
|
fallback mechanism implemented that will eventually allow them to
|
|
reach the in-domain nameserver when other servers in the NS resource
|
|
record set fail.
|
|
|
|
2.2. Domain Owner
|
|
|
|
This section describes the operational practices that the domain
|
|
owner has to follow in order to achieve the resiliency within the
|
|
domain.
|
|
|
|
The domain owner MUST maintain its DNSSEC configuration using the
|
|
mechanism described in [RFC5011].
|
|
|
|
The domain owner MUST have at least one in-domain authoritative
|
|
nameserver in its NS set (e.g. ns.example.com for the example.com
|
|
domain). If that nameserver's name is within a delegated child
|
|
domain, then the nameservers for that delegated domain MUST also have
|
|
at least one in-domain authoritative nameserver. This requirement is
|
|
recursive for further delegation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 5]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
In order to benefit from the resiliency properties provided by this
|
|
mechanism, the domain owner should require that zones within the
|
|
domain all have one in-domain nameserver. Note that delegated
|
|
domains do not have to maintain a trust anchor and can rely on there
|
|
being a chain of trust established using DS records from the trust-
|
|
anchor down.
|
|
|
|
Furthermore, the in-domain nameserver SHOULD be positioned in a
|
|
network that shares connectivity fate with the clients that rely on
|
|
the domain. For instance, in our enterprise example it should be in
|
|
the enterprise campus network. More generally the location is
|
|
subject to a risk based assessment about the likelihood of not being
|
|
able to obtain a network connection to the in-domain nameserver.
|
|
|
|
The domain owner should communicate to its community that it is using
|
|
this method. That communication MAY be out of band. A RECOMMENDED
|
|
in-band signalling mechanism in-band described in section
|
|
Section 3.1.
|
|
|
|
3. Operational Considerations
|
|
|
|
3.1. Signalling
|
|
|
|
It is RECOMMENDED that a domain owner (the owner of <domain>) signals
|
|
to its user community that they are using the mechanism described in
|
|
this memo. Signalling is done by putting a TXT resource record with
|
|
owner name _in-tree.<domain> containing an expiry timestamp in
|
|
[RFC3339] format. The expiry timestamp indicates the date to which
|
|
the owner is committed to follow the instructions in section
|
|
Section 2.2.
|
|
|
|
The recursive nameserver operator should at first opportunity, but
|
|
not longer than 30 days after the expiration, validate if a new
|
|
expiry record has been published by the domain owner. If not they
|
|
SHOULD disable the in-tree hints configuration for the domain.
|
|
|
|
_in-tree.<domain> TXT <expiry timestamp> [OMK: Alternatively we
|
|
create a trivial RR type for this. EXP RR containing a timestamp as
|
|
defined in RFC4034 section-3.1.5 ]
|
|
|
|
Out of band signalling is not in scope for this memo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 6]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
3.2. Achieving true resiliency of services within the domain.
|
|
|
|
This memo describes a method to achieve resiliency of name resolution
|
|
for a community of interest of a particular domain. This is, by far,
|
|
not sufficient to achieve actual resiliency for services that are
|
|
provided within the domain. While further out of scope for this memo
|
|
we like to remind the reader of the following:
|
|
|
|
* The in-domain nameservers should run on IP addresses that can
|
|
reasonably be expected to be reachable by the community of use.
|
|
For example, if a service is critical for on-campus enterprise use
|
|
then the in-domain nameserver should run on the campus network.
|
|
|
|
* Any service provider that offers a service under a certain name
|
|
within the domain should make sure that those services itself can
|
|
be reasonably expected to be reachable by the community of use.
|
|
Any service dependencies should also be local.
|
|
|
|
* In an effort to create local resiliency one should not forget that
|
|
resiliency is also achieved by having no single source of failure.
|
|
Having in-domain nameservers, and having services in reach of the
|
|
community of interest does not mean that one deploys
|
|
infrastructure elsewhere.
|
|
|
|
* Running a local root [RFC8806] may be an additional method to
|
|
create resiliency against certain failure cases, mainly failure to
|
|
connect to DNS root-servers. When resolvers implement the local
|
|
root approach they MUST give prefer the information in the in-tree
|
|
hints file to the delegation information from the root. In other
|
|
words they should treat the local root as any other root server.
|
|
|
|
3.3. Serving stale data
|
|
|
|
In-tree hints are complementary to serving stale data [RFC8767].
|
|
Serving stale data will allow continuity for all zones when their
|
|
authoritative servers are not reachable and the data happens to be in
|
|
the resolvers cache. In-tree hints works for specific domains when
|
|
data does not happen to be available in recursive nameserver caches
|
|
or when the parent's server(s) deliver faulty delegation data.
|
|
|
|
In-tree hints is not scalable in the sense that there is significant
|
|
operational overhead for the domain owner, they have to run in-domain
|
|
nameservers and follow [RFC5011]. Similarly scalability concerns
|
|
exist for recursive nameserver operators as they will have to
|
|
troubleshoot inconsistencies. Serving stale data is highly scalable
|
|
as it only needs one configuration within the recursive nameserver
|
|
and then it applies for all domains.
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 7]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
4. Security Considerations
|
|
|
|
In-tree hints can be used in recursive nameservers in combination
|
|
with protective block-lists and does therefore not debilitate the
|
|
available blocking mechanism available to protect the community of
|
|
users of a recursive nameserver.
|
|
|
|
Mallwares can use their own recursive nameservers configured with in-
|
|
trees for their command and control domains to circumvent de-
|
|
delegation by the parents. However, those recursive nameservers are
|
|
likely under the control of the mallware administrators and the risk
|
|
of disproportional damage for blocking these recursive nameservers
|
|
DNS after it has been established that they are used in command and
|
|
control seems proportionate.
|
|
|
|
This mechanism intends to provide resilience for network failures.
|
|
However, it adds complexity in software and operational procedures,
|
|
thereby increasing the fragility.
|
|
|
|
5. Policy Considerations
|
|
|
|
Inherently the approach described in this memo provides a mechanism
|
|
for a community of users of a domain to overwrite the policies from
|
|
the parent domain. For instance, it allows the community of users to
|
|
continue to use the domain even when e.g. the delegation for that
|
|
domain expires or it has been de-delegated after a court order. At
|
|
the same time, this in-tree approach can be a building block to
|
|
create resilience for a critical infrastructure. It can potentially
|
|
be applied to a country code top-level domain (CCTLD) and its user
|
|
community. While the failure mode at CCTLD level is extremely low,
|
|
this approach may add to confidence in the domain name system as a
|
|
whole in times of international tensions.
|
|
|
|
When an inconsistency exists between what is published in the parent
|
|
and what is used as in-tree-hints there is a fragmentation of the DNS
|
|
namespace. The operators of the recursive nameservers should
|
|
proactively restore the situation to consistency. Note that there is
|
|
no technical enforcement mechanism to aid that restoration, but it is
|
|
expected that if a recursive nameserver operator configures an in-
|
|
tree domain they are part of the community of interest and therefore
|
|
have out of band means to contact the domain administrator. Also
|
|
note that the operators of the domains usually do not have
|
|
communication mechanism that can enforce the use or non-use of in-
|
|
tree hints by recursive nameserver operators.
|
|
|
|
The authority for using or not using in-tree hints is with the
|
|
operator of the recursive nameserver - as a user agent for its
|
|
community. Users have historically been able to overwrite their DNS
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 8]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
configuration. They can use a recursive nameserver that does not use
|
|
in-tree hints for a particular domain and therefore have the ability
|
|
opt-out of the mechanism.
|
|
|
|
6. IANA Considerations
|
|
|
|
No IANA considerations herein.
|
|
|
|
7. Acknowledgements
|
|
|
|
This document is inspired by a conversation about digital autonomy.
|
|
|
|
8. Disclaimer
|
|
|
|
The author is an employee of the Internet Society, this document does
|
|
not necessarily reflect the position of the Internet Society.
|
|
|
|
{olaf: source="olaf"}
|
|
|
|
9. Appendix: Example configuration in Unbound
|
|
|
|
[OMK: this example might be too vendor specific to maintain in an
|
|
RFC]
|
|
|
|
It is relatively trivial to configure this methodology in Unbound.
|
|
[OMK TODO: follow up with Willem for the example config]
|
|
|
|
10. References
|
|
|
|
10.1. Normative References
|
|
|
|
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
|
Requirement Levels", BCP 14, RFC 2119,
|
|
DOI 10.17487/RFC2119, March 1997,
|
|
<https://www.rfc-editor.org/rfc/rfc2119>.
|
|
|
|
[RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet:
|
|
Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002,
|
|
<https://www.rfc-editor.org/rfc/rfc3339>.
|
|
|
|
[RFC5011] StJohns, M., "Automated Updates of DNS Security (DNSSEC)
|
|
Trust Anchors", STD 74, RFC 5011, DOI 10.17487/RFC5011,
|
|
September 2007, <https://www.rfc-editor.org/rfc/rfc5011>.
|
|
|
|
[RFC7344] Kumari, W., Gudmundsson, O., and G. Barwood, "Automating
|
|
DNSSEC Delegation Trust Maintenance", RFC 7344,
|
|
DOI 10.17487/RFC7344, September 2014,
|
|
<https://www.rfc-editor.org/rfc/rfc7344>.
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 9]
|
|
|
|
Internet-Draft in-tree-hints May 2026
|
|
|
|
|
|
10.2. Informative References
|
|
|
|
[E-Gov-Resilience]
|
|
Sommese et al, "Assessing e-Government DNS Resilience",
|
|
IEEE Proceedings of the 2022 International Conference on
|
|
Network and Service Management (CNSM 2022), 2022.
|
|
|
|
[RFC8767] Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data
|
|
to Improve DNS Resiliency", RFC 8767,
|
|
DOI 10.17487/RFC8767, March 2020,
|
|
<https://www.rfc-editor.org/rfc/rfc8767>.
|
|
|
|
[RFC8806] Kumari, W. and P. Hoffman, "Running a Root Server Local to
|
|
a Resolver", RFC 8806, DOI 10.17487/RFC8806, June 2020,
|
|
<https://www.rfc-editor.org/rfc/rfc8806>.
|
|
|
|
[RFC9499] Hoffman, P. and K. Fujiwara, "DNS Terminology", BCP 219,
|
|
RFC 9499, DOI 10.17487/RFC9499, March 2024,
|
|
<https://www.rfc-editor.org/rfc/rfc9499>.
|
|
|
|
Author's Address
|
|
|
|
Olaf Kolkman
|
|
Email: olaf@xolx.nl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kolkman Expires 13 November 2026 [Page 10]
|