draft-ietf-add-ddr-02.txt | draft-ietf-add-ddr-03.txt | |||
---|---|---|---|---|
ADD T. Pauly | ADD T. Pauly | |||
Internet-Draft E. Kinnear | Internet-Draft E. Kinnear | |||
Intended status: Standards Track Apple Inc. | Intended status: Standards Track Apple Inc. | |||
Expires: 9 January 2022 C.A. Wood | Expires: 4 April 2022 C.A. Wood | |||
Cloudflare | Cloudflare | |||
P. McManus | P. McManus | |||
Fastly | Fastly | |||
T. Jensen | T. Jensen | |||
Microsoft | Microsoft | |||
8 July 2021 | 1 October 2021 | |||
Discovery of Designated Resolvers | Discovery of Designated Resolvers | |||
draft-ietf-add-ddr-02 | draft-ietf-add-ddr-03 | |||
Abstract | Abstract | |||
This document defines Discovery of Designated Resolvers (DDR), a | This document defines Discovery of Designated Resolvers (DDR), a | |||
mechanism for DNS clients to use DNS records to discover a resolver's | mechanism for DNS clients to use DNS records to discover a resolver's | |||
encrypted DNS configuration. This mechanism can be used to move from | encrypted DNS configuration. This mechanism can be used to move from | |||
unencrypted DNS to encrypted DNS when only the IP address of a | unencrypted DNS to encrypted DNS when only the IP address of a | |||
resolver is known. It can also be used to discover support for | resolver is known. This mechanism is designed to be limited to cases | |||
encrypted DNS protocols when the name of an encrypted resolver is | where unencrypted resolvers and their designated resolvers are | |||
known. This mechanism is designed to be limited to cases where | operated by the same entity or cooperating entities. It can also be | |||
unencrypted resolvers and their designated resolvers are operated by | used to discover support for encrypted DNS protocols when the name of | |||
the same entity or cooperating entities. | an encrypted resolver is known. | |||
Discussion Venues | Discussion Venues | |||
This note is to be removed before publishing as an RFC. | This note is to be removed before publishing as an RFC. | |||
Discussion of this document takes place on the Adaptive DNS Discovery | Discussion of this document takes place on the Adaptive DNS Discovery | |||
Working Group mailing list (add@ietf.org), which is archived at | Working Group mailing list (add@ietf.org), which is archived at | |||
https://mailarchive.ietf.org/arch/browse/add/. | https://mailarchive.ietf.org/arch/browse/add/. | |||
Source for this draft and an issue tracker can be found at | Source for this draft and an issue tracker can be found at | |||
skipping to change at page 2, line 10 ¶ | skipping to change at page 2, line 10 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 9 January 2022. | This Internet-Draft will expire on 4 April 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
skipping to change at page 2, line 33 ¶ | skipping to change at page 2, line 33 ¶ | |||
as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Specification of Requirements . . . . . . . . . . . . . . 3 | 1.1. Specification of Requirements . . . . . . . . . . . . . . 3 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. DNS Service Binding Records . . . . . . . . . . . . . . . . . 4 | 3. DNS Service Binding Records . . . . . . . . . . . . . . . . . 4 | |||
4. Discovery Using Resolver IP Addresses . . . . . . . . . . . . 5 | 4. Discovery Using Resolver IP Addresses . . . . . . . . . . . . 5 | |||
4.1. Authenticated Discovery . . . . . . . . . . . . . . . . . 6 | 4.1. Use of Designated Resolvers . . . . . . . . . . . . . . . 6 | |||
4.2. Opportunistic Discovery . . . . . . . . . . . . . . . . . 6 | 4.2. Authenticated Discovery . . . . . . . . . . . . . . . . . 6 | |||
4.3. Opportunistic Discovery . . . . . . . . . . . . . . . . . 7 | ||||
5. Discovery Using Resolver Names . . . . . . . . . . . . . . . 7 | 5. Discovery Using Resolver Names . . . . . . . . . . . . . . . 7 | |||
6. Deployment Considerations . . . . . . . . . . . . . . . . . . 7 | 6. Deployment Considerations . . . . . . . . . . . . . . . . . . 8 | |||
6.1. Caching Forwarders . . . . . . . . . . . . . . . . . . . 8 | 6.1. Caching Forwarders . . . . . . . . . . . . . . . . . . . 8 | |||
6.2. Certificate Management . . . . . . . . . . . . . . . . . 8 | 6.2. Certificate Management . . . . . . . . . . . . . . . . . 9 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
8.1. Special Use Domain Name "resolver.arpa" . . . . . . . . . 9 | 8.1. Special Use Domain Name "resolver.arpa" . . . . . . . . . 10 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . 9 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 10 | 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
Appendix A. Rationale for using SVCB records . . . . . . . . . . 11 | Appendix A. Rationale for using SVCB records . . . . . . . . . . 12 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
1. Introduction | 1. Introduction | |||
When DNS clients wish to use encrypted DNS protocols such as DNS- | When DNS clients wish to use encrypted DNS protocols such as DNS- | |||
over-TLS (DoT) [RFC7858] or DNS-over-HTTPS (DoH) [RFC8484], they | over-TLS (DoT) [RFC7858] or DNS-over-HTTPS (DoH) [RFC8484], they | |||
require additional information beyond the IP address of the DNS | require additional information beyond the IP address of the DNS | |||
server, such as the resolver's hostname, non-standard ports, or URL | server, such as the resolver's hostname, non-standard ports, or URL | |||
paths. However, common configuration mechanisms only provide the | paths. However, common configuration mechanisms only provide the | |||
resolver's IP address during configuration. Such mechanisms include | resolver's IP address during configuration. Such mechanisms include | |||
network provisioning protocols like DHCP [RFC2132] and IPv6 Router | network provisioning protocols like DHCP [RFC2132] and IPv6 Router | |||
skipping to change at page 4, line 25 ¶ | skipping to change at page 4, line 25 ¶ | |||
3. DNS Service Binding Records | 3. DNS Service Binding Records | |||
DNS resolvers can advertise one or more Designated Resolvers that may | DNS resolvers can advertise one or more Designated Resolvers that may | |||
offer support over encrypted channels and are controlled by the same | offer support over encrypted channels and are controlled by the same | |||
entity. | entity. | |||
When a client discovers Designated Resolvers, it learns information | When a client discovers Designated Resolvers, it learns information | |||
such as the supported protocols, ports, and server name to use in | such as the supported protocols, ports, and server name to use in | |||
certificate validation. This information is provided in Service | certificate validation. This information is provided in Service | |||
Binding (SVCB) records for DNS Servers, defined by | Binding (SVCB) records for DNS Servers. The formatting of these | |||
[I-D.schwartz-svcb-dns]. | records, including the DNS-unique parameters such as "dohpath", are | |||
defined by [I-D.ietf-add-svcb-dns]. | ||||
The following is an example of an SVCB record describing a DoH server | The following is an example of an SVCB record describing a DoH server | |||
discovered by querying for "_dns.example.net": | discovered by querying for _dns.example.net: | |||
_dns.example.net 7200 IN SVCB 1 . ( | _dns.example.net 7200 IN SVCB 1 . ( | |||
alpn=h2 dohpath=/dns-query{?dns} ) | alpn=h2 dohpath=/dns-query{?dns} ) | |||
The following is an example of an SVCB record describing a DoT server | The following is an example of an SVCB record describing a DoT server | |||
discovered by querying for "_dns.example.net": | discovered by querying for _dns.example.net: | |||
_dns.example.net 7200 IN SVCB 1 dot.example.net ( | _dns.example.net 7200 IN SVCB 1 dot.example.net ( | |||
alpn=dot port=8530 ) | alpn=dot port=8530 ) | |||
If multiple Designated Resolvers are available, using one or more | If multiple Designated Resolvers are available, using one or more | |||
encrypted DNS protocols, the resolver deployment can indicate a | encrypted DNS protocols, the resolver deployment can indicate a | |||
preference using the priority fields in each SVCB record | preference using the priority fields in each SVCB record | |||
[I-D.ietf-dnsop-svcb-https]. | [I-D.ietf-dnsop-svcb-https]. | |||
To avoid name lookup deadlock, Designated Resolvers SHOULD follow the | To avoid name lookup deadlock, Designated Resolvers SHOULD follow the | |||
guidance in Section 10 of [RFC8484] regarding the avoidance of DNS- | guidance in Section 10 of [RFC8484] regarding the avoidance of DNS- | |||
based references that block the completion of the TLS handshake. | based references that block the completion of the TLS handshake. | |||
This document focuses on discovering DoH and DoT Designated | This document focuses on discovering DoH and DoT Designated | |||
Resolvers. Other protocols can also use the format defined by | Resolvers. Other protocols can also use the format defined by | |||
[I-D.schwartz-svcb-dns]. However, if any protocol does not involve | [I-D.ietf-add-svcb-dns]. However, if any protocol does not involve | |||
some form of certificate validation, new validation mechanisms will | some form of certificate validation, new validation mechanisms will | |||
need to be defined to support validating designation as defined in | need to be defined to support validating designation as defined in | |||
Section 4.1. | Section 4.2. | |||
4. Discovery Using Resolver IP Addresses | 4. Discovery Using Resolver IP Addresses | |||
When a DNS client is configured with an Unencrypted Resolver IP | When a DNS client is configured with an Unencrypted Resolver IP | |||
address, it SHOULD query the resolver for SVCB records for | address, it SHOULD query the resolver for SVCB records for | |||
"dns://resolver.arpa" before making other queries. Specifically, the | "dns://resolver.arpa" before making other queries. Specifically, the | |||
client issues a query for "_dns.resolver.arpa" with the SVCB resource | client issues a query for _dns.resolver.arpa with the SVCB resource | |||
record type (64) [I-D.ietf-dnsop-svcb-https]. | record type (64) [I-D.ietf-dnsop-svcb-https]. | |||
Because this query is for an SUDN, which no entity can claim | Because this query is for an SUDN, which no entity can claim | |||
ownership over, the SVCB response MUST NOT use the "." value for the | ownership over, the SVCB response MUST NOT use the "." value for the | |||
SvcDomainName. Instead, the domain name used for DoT or used to | TargetName. Instead, the domain name used for DoT or used to | |||
construct the DoH template MUST be provided. | construct the DoH template MUST be provided. | |||
The following is an example of an SVCB record describing a DoH server | The following is an example of an SVCB record describing a DoH server | |||
discovered by querying for "_dns.resolver.arpa": | discovered by querying for _dns.resolver.arpa: | |||
_dns.resolver.arpa 7200 IN SVCB 1 doh.example.net ( | _dns.resolver.arpa 7200 IN SVCB 1 doh.example.net ( | |||
alpn=h2 dohpath=/dns-query{?dns} ) | alpn=h2 dohpath=/dns-query{?dns} ) | |||
The following is an example of an SVCB record describing a DoT server | The following is an example of an SVCB record describing a DoT server | |||
discovered by querying for "_dns.resolver.arpa": | discovered by querying for _dns.resolver.arpa: | |||
_dns.resolver.arpa 7200 IN SVCB 1 dot.example.net ( | _dns.resolver.arpa 7200 IN SVCB 1 dot.example.net ( | |||
alpn=dot port=8530 ) | alpn=dot port=8530 ) | |||
If the recursive resolver that receives this query has one or more | If the recursive resolver that receives this query has one or more | |||
Designated Resolvers, it will return the corresponding SVCB records. | Designated Resolvers, it will return the corresponding SVCB records. | |||
When responding to these special queries for "dns://resolver.arpa", | When responding to these special queries for "dns://resolver.arpa", | |||
the recursive resolver SHOULD include the A and AAAA records for the | the recursive resolver SHOULD include the A and AAAA records for the | |||
name of the Designated Resolver in the Additional Answers section. | name of the Designated Resolver in the Additional Answers section. | |||
This will allow the DNS client to make queries over an encrypted | This will allow the DNS client to make queries over an encrypted | |||
skipping to change at page 6, line 5 ¶ | skipping to change at page 6, line 5 ¶ | |||
[I-D.ietf-dnsop-svcb-https]. If no A/AAAA records or SVCB IP address | [I-D.ietf-dnsop-svcb-https]. If no A/AAAA records or SVCB IP address | |||
hints are included, clients will be forced to delay use of the | hints are included, clients will be forced to delay use of the | |||
Encrypted Resolver until an additional DNS lookup for the A and AAAA | Encrypted Resolver until an additional DNS lookup for the A and AAAA | |||
records can be made to the Unencrypted Resolver (or some other | records can be made to the Unencrypted Resolver (or some other | |||
resolver the DNS client has been configured to use). | resolver the DNS client has been configured to use). | |||
If the recursive resolver that receives this query has no Designated | If the recursive resolver that receives this query has no Designated | |||
Resolvers, it SHOULD return NODATA for queries to the "resolver.arpa" | Resolvers, it SHOULD return NODATA for queries to the "resolver.arpa" | |||
SUDN. | SUDN. | |||
4.1. Authenticated Discovery | 4.1. Use of Designated Resolvers | |||
When a client discovers Designated Resolvers from an Unencrypted | ||||
Resolver IP address, it can choose to use these Designated Resolvers | ||||
either automatically, or based on some other policy, heuristic, or | ||||
user choice. | ||||
This document defines two preferred methods to automatically use | ||||
Designated Resolvers: | ||||
* Authenticated Discovery Section 4.2, for when a TLS certificate | ||||
can be used to validate the resolver's identity. | ||||
* Opportunistic Discovery Section 4.3, for when a resolver is | ||||
accessed using a non-public IP address. | ||||
A client MAY additionally use a discovered Designated Resolver | ||||
without either of these methods, based on implementation-specific | ||||
policy or user input. Details of such policy are out of scope of | ||||
this document. Clients SHOULD NOT automatically use a Designated | ||||
Resolver without some sort of validation, such as the two methods | ||||
defined in this document or a future mechanism. | ||||
4.2. Authenticated Discovery | ||||
Authenticated Discovery is a mechanism that allows automatic use of a | ||||
Designated Resolver that supports DNS encryption that performs a TLS | ||||
handshake. | ||||
In order to be considered an authenticated Designated Resolver, the | In order to be considered an authenticated Designated Resolver, the | |||
TLS certificate presented by the Encrypted Resolver MUST contain both | TLS certificate presented by the Designated Resolver MUST contain | |||
the domain name (from the SVCB answer) and the IP address of the | both the domain name (from the SVCB answer) and the IP address of the | |||
designating Unencrypted Resolver within the SubjectAlternativeName | designating Unencrypted Resolver within the SubjectAlternativeName | |||
certificate field. The client MUST check the SubjectAlternativeName | certificate field. The client MUST check the SubjectAlternativeName | |||
field for both the Unencrypted Resolver's IP address and the | field for both the Unencrypted Resolver's IP address and the | |||
advertised name of the Designated Resolver. If the certificate can | advertised name of the Designated Resolver. If the certificate can | |||
be validated, the client SHOULD use the discovered Designated | be validated, the client SHOULD use the discovered Designated | |||
Resolver for any cases in which it would have otherwise used the | Resolver for any cases in which it would have otherwise used the | |||
Unencrypted Resolver. If the Designated Resolver has a different IP | Unencrypted Resolver. If the Designated Resolver has a different IP | |||
address than the Unencrypted Resolver and the TLS certificate does | address than the Unencrypted Resolver and the TLS certificate does | |||
not cover the Unencrypted Resolver address, the client MUST NOT use | not cover the Unencrypted Resolver address, the client MUST NOT | |||
the discovered Encrypted Resolver. Additionally, the client SHOULD | automatically use the discovered Designated Resolver. Additionally, | |||
suppress any further queries for Designated Resolvers using this | the client SHOULD suppress any further queries for Designated | |||
Unencrypted Resolver for the length of time indicated by the SVCB | Resolvers using this Unencrypted Resolver for the length of time | |||
record's Time to Live (TTL). | indicated by the SVCB record's Time to Live (TTL). | |||
If the Designated Resolver and the Unencrypted Resolver share an IP | If the Designated Resolver and the Unencrypted Resolver share an IP | |||
address, clients MAY choose to opportunistically use the Encrypted | address, clients MAY choose to opportunistically use the Designated | |||
Resolver even without this certificate check (Section 4.2). | Resolver even without this certificate check (Section 4.3). | |||
If resolving the name of an Encrypted Resolver from an SVCB record | If resolving the name of a Designated Resolver from an SVCB record | |||
yields an IP address that was not presented in the Additional Answers | yields an IP address that was not presented in the Additional Answers | |||
section or ipv4hint or ipv6hint fields of the original SVCB query, | section or ipv4hint or ipv6hint fields of the original SVCB query, | |||
the connection made to that IP address MUST pass the same TLS | the connection made to that IP address MUST pass the same TLS | |||
certificate checks before being allowed to replace a previously known | certificate checks before being allowed to replace a previously known | |||
and validated IP address for the same Encrypted Resolver name. | and validated IP address for the same Designated Resolver name. | |||
4.2. Opportunistic Discovery | 4.3. Opportunistic Discovery | |||
There are situations where authenticated discovery of encrypted DNS | There are situations where authenticated discovery of encrypted DNS | |||
configuration over unencrypted DNS is not possible. This includes | configuration over unencrypted DNS is not possible. This includes | |||
Unencrypted Resolvers on non-public IP addresses such as those | Unencrypted Resolvers on non-public IP addresses such as those | |||
defined in [RFC1918] whose identity cannot be confirmed using TLS | defined in [RFC1918] whose identity cannot be confirmed using TLS | |||
certificates. | certificates. | |||
Opportunistic Privacy is defined for DoT in Section 4.1 of [RFC7858] | Opportunistic Privacy is defined for DoT in Section 4.1 of [RFC7858] | |||
as a mode in which clients do not validate the name of the resolver | as a mode in which clients do not validate the name of the resolver | |||
presented in the certificate. A client MAY use information from the | presented in the certificate. A client MAY use information from the | |||
skipping to change at page 7, line 21 ¶ | skipping to change at page 8, line 6 ¶ | |||
protocol (such as DHCP or IPv6 Router Advertisements) provides a name | protocol (such as DHCP or IPv6 Router Advertisements) provides a name | |||
for an Encrypted Resolver alongside the resolver IP address. | for an Encrypted Resolver alongside the resolver IP address. | |||
For these cases, the client simply sends a DNS SVCB query using the | For these cases, the client simply sends a DNS SVCB query using the | |||
known name of the resolver. This query can be issued to the named | known name of the resolver. This query can be issued to the named | |||
Encrypted Resolver itself or to any other resolver. Unlike the case | Encrypted Resolver itself or to any other resolver. Unlike the case | |||
of bootstrapping from an Unencrypted Resolver (Section 4), these | of bootstrapping from an Unencrypted Resolver (Section 4), these | |||
records SHOULD be available in the public DNS. | records SHOULD be available in the public DNS. | |||
For example, if the client already knows about a DoT server | For example, if the client already knows about a DoT server | |||
"resolver.example.com", it can issue an SVCB query for | resolver.example.com, it can issue an SVCB query for | |||
"_dns.resolver.example.com" to discover if there are other encrypted | _dns.resolver.example.com to discover if there are other encrypted | |||
DNS protocols available. In the following example, the SVCB answers | DNS protocols available. In the following example, the SVCB answers | |||
indicate that "resolver.example.com" supports both DoH and DoT, and | indicate that resolver.example.com supports both DoH and DoT, and | |||
that the DoH server indicates a higher priority than the DoT server. | that the DoH server indicates a higher priority than the DoT server. | |||
_dns.resolver.example.com 7200 IN SVCB 1 . ( | _dns.resolver.example.com 7200 IN SVCB 1 . ( | |||
alpn=h2 dohpath=/dns-query{?dns} ) | alpn=h2 dohpath=/dns-query{?dns} ) | |||
_dns.resolver.example.com 7200 IN SVCB 2 . ( | _dns.resolver.example.com 7200 IN SVCB 2 . ( | |||
alpn=dot ) | alpn=dot ) | |||
Often, the various supported encrypted DNS protocols will be | Often, the various supported encrypted DNS protocols will be | |||
accessible using the same hostname. In the example above, both DoH | accessible using the same hostname. In the example above, both DoH | |||
and DoT use the name "resolver.example.com" for their TLS | and DoT use the name resolver.example.com for their TLS certificates. | |||
certificates. If a deployment uses a different hostname for one | If a deployment uses a different hostname for one protocol, but still | |||
protocol, but still wants clients to treat both DNS servers as | wants clients to treat both DNS servers as designated, the TLS | |||
designated, the TLS certificates MUST include both names in the | certificates MUST include both names in the SubjectAlternativeName | |||
SubjectAlternativeName fields. Note that this name verification is | fields. Note that this name verification is not related to the DNS | |||
not related to the DNS resolver that provided the SVCB answer. | resolver that provided the SVCB answer. | |||
For example, being able to discover a Designated Resolver for a known | For example, being able to discover a Designated Resolver for a known | |||
Encrypted Resolver is useful when a client has a DoT configuration | Encrypted Resolver is useful when a client has a DoT configuration | |||
for "foo.resolver.example.com" but is on a network that blocks DoT | for foo.resolver.example.com but is on a network that blocks DoT | |||
traffic. The client can still send a query to any other accessible | traffic. The client can still send a query to any other accessible | |||
resolver (either the local network resolver or an accessible DoH | resolver (either the local network resolver or an accessible DoH | |||
server) to discover if there is a designated DoH server for | server) to discover if there is a designated DoH server for | |||
"foo.resolver.example.com". | foo.resolver.example.com. | |||
6. Deployment Considerations | 6. Deployment Considerations | |||
Resolver deployments that support DDR are advised to consider the | Resolver deployments that support DDR are advised to consider the | |||
following points. | following points. | |||
6.1. Caching Forwarders | 6.1. Caching Forwarders | |||
A DNS forwarder SHOULD NOT forward queries for "resolver.arpa" | A DNS forwarder SHOULD NOT forward queries for "resolver.arpa" | |||
upstream. This prevents a client from receiving an SVCB record that | upstream. This prevents a client from receiving an SVCB record that | |||
skipping to change at page 8, line 32 ¶ | skipping to change at page 9, line 19 ¶ | |||
6.2. Certificate Management | 6.2. Certificate Management | |||
Resolver owners that support authenticated discovery will need to | Resolver owners that support authenticated discovery will need to | |||
list valid referring IP addresses in their TLS certificates. This | list valid referring IP addresses in their TLS certificates. This | |||
may pose challenges for resolvers with a large number of referring IP | may pose challenges for resolvers with a large number of referring IP | |||
addresses. | addresses. | |||
7. Security Considerations | 7. Security Considerations | |||
Since client can receive DNS SVCB answers over unencrypted DNS, on- | Since clients can receive DNS SVCB answers over unencrypted DNS, on- | |||
path attackers can prevent successful discovery by dropping SVCB | path attackers can prevent successful discovery by dropping SVCB | |||
packets. Clients should be aware that it might not be possible to | packets. Clients should be aware that it might not be possible to | |||
distinguish between resolvers that do not have any Designated | distinguish between resolvers that do not have any Designated | |||
Resolver and such an active attack. | Resolver and such an active attack. To limit the impact of discovery | |||
queries being dropped either maliciously or unintentionally, clients | ||||
can re-send their SVCB queries periodically. | ||||
While the IP address of the Unencrypted Resolver is often provisioned | While the IP address of the Unencrypted Resolver is often provisioned | |||
over insecure mechanisms, it can also be provisioned securely, such | over insecure mechanisms, it can also be provisioned securely, such | |||
as via manual configuration, a VPN, or on a network with protections | as via manual configuration, a VPN, or on a network with protections | |||
like RA guard [RFC6105]. An attacker might try to direct Encrypted | like RA guard [RFC6105]. An attacker might try to direct Encrypted | |||
DNS traffic to itself by causing the client to think that a | DNS traffic to itself by causing the client to think that a | |||
discovered Designated Resolver uses a different IP address from the | discovered Designated Resolver uses a different IP address from the | |||
Unencrypted Resolver. Such an Encrypted Resolver might have a valid | Unencrypted Resolver. Such a Designated Resolver might have a valid | |||
certificate, but be operated by an attacker that is trying to observe | certificate, but be operated by an attacker that is trying to observe | |||
or modify user queries without the knowledge of the client or | or modify user queries without the knowledge of the client or | |||
network. | network. | |||
If the IP address of a Designated Resolver differs from that of an | If the IP address of a Designated Resolver differs from that of an | |||
Unencrypted Resolver, clients MUST validate that the IP address of | Unencrypted Resolver, clients applying Authenicated Discovery | |||
the Unencrypted Resolver is covered by the SubjectAlternativeName of | (Section 4.2) MUST validate that the IP address of the Unencrypted | |||
the Encrypted Resolver's TLS certificate (Section 4.1). | Resolver is covered by the SubjectAlternativeName of the Designated | |||
Resolver's TLS certificate. | ||||
Opportunistic use of Encrypted Resolvers MUST be limited to cases | Clients using Opportunistic Discovery (Section 4.3) MUST be limited | |||
where the Unencrypted Resolver and Designated Resolver have the same | to cases where the Unencrypted Resolver and Designated Resolver have | |||
IP address (Section 4.2). | the same IP address. | |||
The constraints on validation of Designated Resolvers specified here | ||||
apply specifically to the automatic discovery mechanisms defined in | ||||
this document, which are referred to as Authenticated Discovery and | ||||
Opportunistic Discovery. Clients MAY use some other mechanism to | ||||
validate and use Designated Resolvers discovered using the DNS SVCB | ||||
record. However, use of such an alternate mechanism needs to take | ||||
into account the attack scenarios detailed here. | ||||
8. IANA Considerations | 8. IANA Considerations | |||
8.1. Special Use Domain Name "resolver.arpa" | 8.1. Special Use Domain Name "resolver.arpa" | |||
This document calls for the creation of the "resolver.arpa" SUDN. | This document calls for the creation of the "resolver.arpa" SUDN. | |||
This will allow resolvers to respond to queries directed at | This will allow resolvers to respond to queries directed at | |||
themselves rather than a specific domain name. While this document | themselves rather than a specific domain name. While this document | |||
uses "resolver.arpa" to return SVCB records indicating designated | uses "resolver.arpa" to return SVCB records indicating designated | |||
encrypted capability, the name is generic enough to allow future | encrypted capability, the name is generic enough to allow future | |||
skipping to change at page 9, line 32 ¶ | skipping to change at page 10, line 36 ¶ | |||
querying client is not interested in an answer from the authoritative | querying client is not interested in an answer from the authoritative | |||
"arpa" name servers. The intent of the SUDN is to allow clients to | "arpa" name servers. The intent of the SUDN is to allow clients to | |||
communicate with the Unencrypted Resolver much like "ipv4only.arpa" | communicate with the Unencrypted Resolver much like "ipv4only.arpa" | |||
allows for client-to-middlebox communication. For more context, see | allows for client-to-middlebox communication. For more context, see | |||
the rationale behind "ipv4only.arpa" in [RFC8880]. | the rationale behind "ipv4only.arpa" in [RFC8880]. | |||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[I-D.ietf-add-svcb-dns] | ||||
Schwartz, B., "Service Binding Mapping for DNS Servers", | ||||
Work in Progress, Internet-Draft, draft-ietf-add-svcb-dns- | ||||
00, 1 October 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-add- | ||||
svcb-dns-00>. | ||||
[I-D.ietf-dnsop-svcb-https] | [I-D.ietf-dnsop-svcb-https] | |||
Schwartz, B., Bishop, M., and E. Nygren, "Service binding | Schwartz, B., Bishop, M., and E. Nygren, "Service binding | |||
and parameter specification via the DNS (DNS SVCB and | and parameter specification via the DNS (DNS SVCB and | |||
HTTPS RRs)", Work in Progress, Internet-Draft, draft-ietf- | HTTPS RRs)", Work in Progress, Internet-Draft, draft-ietf- | |||
dnsop-svcb-https-06, 16 June 2021, | dnsop-svcb-https-07, 5 August 2021, | |||
<https://www.ietf.org/archive/id/draft-ietf-dnsop-svcb- | <https://datatracker.ietf.org/doc/html/draft-ietf-dnsop- | |||
https-06.txt>. | svcb-https-07>. | |||
[I-D.ietf-tls-esni] | ||||
Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS | ||||
Encrypted Client Hello", Work in Progress, Internet-Draft, | ||||
draft-ietf-tls-esni-12, 7 July 2021, | ||||
<https://www.ietf.org/archive/id/draft-ietf-tls-esni- | ||||
12.txt>. | ||||
[I-D.schwartz-svcb-dns] | ||||
Schwartz, B., "Service Binding Mapping for DNS Servers", | ||||
Work in Progress, Internet-Draft, draft-schwartz-svcb-dns- | ||||
03, 19 April 2021, <https://www.ietf.org/archive/id/draft- | ||||
schwartz-svcb-dns-03.txt>. | ||||
[RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. | [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. | |||
J., and E. Lear, "Address Allocation for Private | J., and E. Lear, "Address Allocation for Private | |||
Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, | Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, | |||
February 1996, <https://www.rfc-editor.org/info/rfc1918>. | February 1996, <https://www.rfc-editor.org/rfc/rfc1918>. | |||
[RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | [RFC7858] Hu, Z., Zhu, L., Heidemann, J., Mankin, A., Wessels, D., | |||
and P. Hoffman, "Specification for DNS over Transport | and P. Hoffman, "Specification for DNS over Transport | |||
Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | Layer Security (TLS)", RFC 7858, DOI 10.17487/RFC7858, May | |||
2016, <https://www.rfc-editor.org/info/rfc7858>. | 2016, <https://www.rfc-editor.org/rfc/rfc7858>. | |||
[RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS | [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS | |||
(DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, | (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, | |||
<https://www.rfc-editor.org/info/rfc8484>. | <https://www.rfc-editor.org/rfc/rfc8484>. | |||
9.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-tls-esni] | ||||
Rescorla, E., Oku, K., Sullivan, N., and C. A. Wood, "TLS | ||||
Encrypted Client Hello", Work in Progress, Internet-Draft, | ||||
draft-ietf-tls-esni-13, 12 August 2021, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-tls- | ||||
esni-13>. | ||||
[I-D.schinazi-httpbis-doh-preference-hints] | [I-D.schinazi-httpbis-doh-preference-hints] | |||
Schinazi, D., Sullivan, N., and J. Kipp, "DoH Preference | Schinazi, D., Sullivan, N., and J. Kipp, "DoH Preference | |||
Hints for HTTP", Work in Progress, Internet-Draft, draft- | Hints for HTTP", Work in Progress, Internet-Draft, draft- | |||
schinazi-httpbis-doh-preference-hints-02, 13 July 2020, | schinazi-httpbis-doh-preference-hints-02, 13 July 2020, | |||
<https://www.ietf.org/archive/id/draft-schinazi-httpbis- | <https://datatracker.ietf.org/doc/html/draft-schinazi- | |||
doh-preference-hints-02.txt>. | httpbis-doh-preference-hints-02>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/rfc/rfc2119>. | |||
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor | |||
Extensions", RFC 2132, DOI 10.17487/RFC2132, March 1997, | Extensions", RFC 2132, DOI 10.17487/RFC2132, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2132>. | <https://www.rfc-editor.org/rfc/rfc2132>. | |||
[RFC5507] IAB, Faltstrom, P., Ed., Austein, R., Ed., and P. Koch, | [RFC5507] IAB, Faltstrom, P., Ed., Austein, R., Ed., and P. Koch, | |||
Ed., "Design Choices When Expanding the DNS", RFC 5507, | Ed., "Design Choices When Expanding the DNS", RFC 5507, | |||
DOI 10.17487/RFC5507, April 2009, | DOI 10.17487/RFC5507, April 2009, | |||
<https://www.rfc-editor.org/info/rfc5507>. | <https://www.rfc-editor.org/rfc/rfc5507>. | |||
[RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | [RFC6105] Levy-Abegnoli, E., Van de Velde, G., Popoviciu, C., and J. | |||
Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | Mohacsi, "IPv6 Router Advertisement Guard", RFC 6105, | |||
DOI 10.17487/RFC6105, February 2011, | DOI 10.17487/RFC6105, February 2011, | |||
<https://www.rfc-editor.org/info/rfc6105>. | <https://www.rfc-editor.org/rfc/rfc6105>. | |||
[RFC8106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | [RFC8106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli, | |||
"IPv6 Router Advertisement Options for DNS Configuration", | "IPv6 Router Advertisement Options for DNS Configuration", | |||
RFC 8106, DOI 10.17487/RFC8106, March 2017, | RFC 8106, DOI 10.17487/RFC8106, March 2017, | |||
<https://www.rfc-editor.org/info/rfc8106>. | <https://www.rfc-editor.org/rfc/rfc8106>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | |||
[RFC8880] Cheshire, S. and D. Schinazi, "Special Use Domain Name | [RFC8880] Cheshire, S. and D. Schinazi, "Special Use Domain Name | |||
'ipv4only.arpa'", RFC 8880, DOI 10.17487/RFC8880, August | 'ipv4only.arpa'", RFC 8880, DOI 10.17487/RFC8880, August | |||
2020, <https://www.rfc-editor.org/info/rfc8880>. | 2020, <https://www.rfc-editor.org/rfc/rfc8880>. | |||
Appendix A. Rationale for using SVCB records | Appendix A. Rationale for using SVCB records | |||
This mechanism uses SVCB/HTTPS resource records | This mechanism uses SVCB/HTTPS resource records | |||
[I-D.ietf-dnsop-svcb-https] to communicate that a given domain | [I-D.ietf-dnsop-svcb-https] to communicate that a given domain | |||
designates a particular Designated Resolver for clients to use in | designates a particular Designated Resolver for clients to use in | |||
place of an Unencrypted Resolver (using a SUDN) or another Encrypted | place of an Unencrypted Resolver (using a SUDN) or another Encrypted | |||
Resolver (using its domain name). | Resolver (using its domain name). | |||
There are various other proposals for how to provide similar | There are various other proposals for how to provide similar | |||
End of changes. 48 change blocks. | ||||
92 lines changed or deleted | 133 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |