rfc9704v2.txt | rfc9704.txt | |||
---|---|---|---|---|
Internet Engineering Task Force (IETF) T. Reddy.K | Internet Engineering Task Force (IETF) T. Reddy.K | |||
Request for Comments: 9704 Nokia | Request for Comments: 9704 Nokia | |||
Category: Standards Track D. Wing | Category: Standards Track D. Wing | |||
ISSN: 2070-1721 Citrix | ISSN: 2070-1721 Citrix | |||
K. Smith | K. Smith | |||
Vodafone | Vodafone | |||
B. Schwartz | B. Schwartz | |||
Meta | Meta | |||
December 2024 | January 2025 | |||
Establishing Local DNS Authority in Validated Split-Horizon Environments | Establishing Local DNS Authority in Validated Split-Horizon Environments | |||
Abstract | Abstract | |||
When split-horizon DNS is deployed by a network, certain domain names | When split-horizon DNS is deployed by a network, certain domain names | |||
can be resolved authoritatively by a network-provided DNS resolver. | can be resolved authoritatively by a network-provided DNS resolver. | |||
DNS clients that are not configured to use this resolver by default | DNS clients that are not configured to use this resolver by default | |||
can use it for these specific domains only. This specification | can use it for these specific domains only. This specification | |||
defines a mechanism for domain owners to inform DNS clients about | defines a mechanism for domain owners to inform DNS clients about | |||
skipping to change at line 40 ¶ | skipping to change at line 40 ¶ | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
Internet Engineering Steering Group (IESG). Further information on | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | Internet Standards is available in Section 2 of RFC 7841. | |||
Information about the current status of this document, any errata, | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | and how to provide feedback on it may be obtained at | |||
https://www.rfc-editor.org/info/rfc9704. | https://www.rfc-editor.org/info/rfc9704. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Revised BSD License text as described in Section 4.e of the | include Revised BSD License text as described in Section 4.e of the | |||
Trust Legal Provisions and are provided without warranty as described | Trust Legal Provisions and are provided without warranty as described | |||
skipping to change at line 262 ¶ | skipping to change at line 262 ¶ | |||
zone). To claim the entire parent zone, the claimed subdomain | zone). To claim the entire parent zone, the claimed subdomain | |||
will be represented as an asterisk symbol ("*"). | will be represented as an asterisk symbol ("*"). | |||
* A ZONEMD Hash Algorithm (Section 5.3 of [RFC8976]). For | * A ZONEMD Hash Algorithm (Section 5.3 of [RFC8976]). For | |||
interoperability purposes, implementations MUST support the | interoperability purposes, implementations MUST support the | |||
"mandatory to implement" hash algorithms defined in Section 2.2.3 | "mandatory to implement" hash algorithms defined in Section 2.2.3 | |||
of [RFC8976]. | of [RFC8976]. | |||
* A high-entropy salt, up to 255 octets. | * A high-entropy salt, up to 255 octets. | |||
If the local encrypted resolver is identified by name (e.g., DNR), | If the local encrypted resolver is identified by name (e.g., using | |||
that identifying name MUST be the name used in any corresponding | DNR), that identifying name MUST be the name used in any | |||
authorization claim. Otherwise (e.g., DDR using IP addresses), the | corresponding authorization claim. Otherwise (e.g., DDR using IP | |||
resolver MUST present a validatable certificate containing a | addresses), the resolver MUST present a validatable certificate | |||
subjectAltName that matches the authorization claim using the | containing a subjectAltName that matches the authorization claim | |||
validation techniques for matching as described in [RFC9525]. | using the validation techniques for matching as described in | |||
[RFC9525]. | ||||
The network then provides each authorization claim to the parent zone | The network then provides each authorization claim to the parent zone | |||
operator. If the contents are approved, the parent zone operator | operator. If the contents are approved, the parent zone operator | |||
computes a "Verification Token" according to the following procedure: | computes a "Verification Token" according to the following procedure: | |||
1. Convert all subdomains into canonical form and sort them in | 1. Convert all subdomains into canonical form and sort them in | |||
canonical order (Section 6 of [RFC4034]). | canonical order (Section 6 of [RFC4034]). | |||
2. Replace the suffix corresponding to the parent zone with a zero | 2. Replace the suffix corresponding to the parent zone with a zero | |||
octet. | octet. | |||
skipping to change at line 525 ¶ | skipping to change at line 526 ¶ | |||
Figure 1: Example Use of "ds=..." | Figure 1: Example Use of "ds=..." | |||
8. Example Split-Horizon DNS Configuration | 8. Example Split-Horizon DNS Configuration | |||
Consider an organization that operates "example.com" and runs a | Consider an organization that operates "example.com" and runs a | |||
different version of its global domain on its internal network. | different version of its global domain on its internal network. | |||
First, the host and network both need to support one of the discovery | First, the host and network both need to support one of the discovery | |||
mechanisms described in Section 5. Figure 2 shows discovery using | mechanisms described in Section 5. Figure 2 shows discovery using | |||
DNR and PvD information. | information from the DNR and the PvD. | |||
Validation is then performed using either an external resolver | Validation is then performed using either an external resolver | |||
(Section 8.1) or DNSSEC (Section 8.2). | (Section 8.1) or DNSSEC (Section 8.2). | |||
*Steps 1-2*: The client determines the network's DNS server | *Steps 1-2*: The client determines the network's DNS server | |||
(dns.example.net) and PvD information (pvd.example.com) using DNR | (dns.example.net) and PvD ID (pvd.example.com) using DNR and one | |||
[RFC9463] and PvDs [RFC8801], using one of the following: DNR | of the following: DNR Router Solicitation, DHCPv4, or DHCPv6. | |||
Router Solicitation, DHCPv4, or DHCPv6. | ||||
*Steps 3-5*: The client connects to dns.example.net using an | *Steps 3-5*: The client connects to dns.example.net using an | |||
encrypted transport as indicated in DNR [RFC9463], authenticating | encrypted transport as indicated in DNR [RFC9463], authenticating | |||
the server to its name using TLS (Section 8 of [RFC8310]), and | the server to its name using TLS (Section 8 of [RFC8310]), and | |||
sends it a query for the address of pvd.example.com. | sends it a query for the address of pvd.example.com. | |||
*Steps 6-7*: The client connects to the PvD server, validates its | *Steps 6-7*: The client connects to the PvD server, validates its | |||
certificate, and retrieves the PvD JSON information indicated by | certificate, and retrieves the PvD Additional Information | |||
the associated PvD. The PvD contains: | indicated by the associated PvD. The JSON object contains: | |||
{ | { | |||
"identifier": "pvd.example.com", | "identifier": "pvd.example.com", | |||
"expires": "2025-05-23T06:00:00Z", | "expires": "2025-05-23T06:00:00Z", | |||
"prefixes": ["2001:db8:1::/48", "2001:db8:4::/48"], | "prefixes": ["2001:db8:1::/48", "2001:db8:4::/48"], | |||
"splitDnsClaims": [{ | "splitDnsClaims": [{ | |||
"resolver": "dns.example.net", | "resolver": "dns.example.net", | |||
"parent": "example.com", | "parent": "example.com", | |||
"subdomains": ["*"], | "subdomains": ["*"], | |||
"algorithm": "SHA384", | "algorithm": "SHA384", | |||
skipping to change at line 750 ¶ | skipping to change at line 750 ¶ | |||
updated, the following procedures can be used: | updated, the following procedures can be used: | |||
1. DHCP reconfiguration can be initiated by a DHCP server that has | 1. DHCP reconfiguration can be initiated by a DHCP server that has | |||
previously communicated with a DHCP client and negotiated for the | previously communicated with a DHCP client and negotiated for the | |||
DHCP client to listen for Reconfigure messages, to prompt the | DHCP client to listen for Reconfigure messages, to prompt the | |||
DHCP client to dynamically request the updated authorization | DHCP client to dynamically request the updated authorization | |||
claim. This process avoids the need for the client to wait for | claim. This process avoids the need for the client to wait for | |||
its current lease to complete and request a new one, enabling the | its current lease to complete and request a new one, enabling the | |||
lease renewal to be driven by the DHCP server. | lease renewal to be driven by the DHCP server. | |||
2. The sequence number in the RA PvD option will be incremented, | 2. The sequence number in the RA PvD Option will be incremented, | |||
requiring clients to fetch PvD Additional Information from the | requiring clients to fetch PvD Additional Information from the | |||
HTTPS server due to the updated sequence number in the new RA | HTTPS server due to the updated sequence number in the new RA | |||
(Section 4.1 of [RFC8801]). | (Section 4.1 of [RFC8801]). | |||
3. The old Verification Record needs to be maintained until the DHCP | 3. The old Verification Record needs to be maintained until the DHCP | |||
lease or PvD Additional Information expires. | lease or PvD Additional Information expires. | |||
12. Security Considerations | 12. Security Considerations | |||
The ADNs of authorized local encrypted resolvers are revealed in the | The ADNs of authorized local encrypted resolvers are revealed in the | |||
End of changes. 7 change blocks. | ||||
15 lines changed or deleted | 15 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |