rfc9462v2.txt | rfc9462.txt | |||
---|---|---|---|---|
skipping to change at line 164 ¶ | skipping to change at line 164 ¶ | |||
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 and ports. This information is | such as the supported protocols and ports. This information is | |||
provided in ServiceMode SVCB records for DNS servers, although | provided in ServiceMode SVCB records for DNS servers, although | |||
AliasMode SVCB records can be used to direct clients to the needed | AliasMode SVCB records can be used to direct clients to the needed | |||
ServiceMode SVCB record per [RFC9460]. The formatting of these | ServiceMode SVCB record per [RFC9460]. The formatting of these | |||
records, including the DNS-unique parameters such as "dohpath", are | records, including the DNS-unique parameters such as "dohpath", are | |||
defined by [RFC9461]. | defined by [RFC9461]. | |||
The following is an example of an SVCB record describing a DoH server | The following is an example of a 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 example.net. ( | _dns.example.net. 7200 IN SVCB 1 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 a 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 ) | |||
The following is an example of an SVCB record describing a DoQ server | The following is an example of a SVCB record describing a DoQ server | |||
discovered by querying for _dns.example.net: | discovered by querying for _dns.example.net: | |||
_dns.example.net. 7200 IN SVCB 1 doq.example.net ( | _dns.example.net. 7200 IN SVCB 1 doq.example.net ( | |||
alpn=doq port=8530 ) | alpn=doq 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 [RFC9460]. | preference using the priority fields in each SVCB record [RFC9460]. | |||
If the client encounters a mandatory parameter in an SVCB record it | If the client encounters a mandatory parameter in a SVCB record it | |||
does not understand, it MUST NOT use that record to discover a | does not understand, it MUST NOT use that record to discover a | |||
Designated Resolver, in accordance with Section 8 of [RFC9460]. The | Designated Resolver, in accordance with Section 8 of [RFC9460]. The | |||
client can still use other records in the same response if the client | client can still use other records in the same response if the client | |||
can understand all of their mandatory parameters. This allows future | can understand all of their mandatory parameters. This allows future | |||
encrypted deployments to simultaneously support protocols even if a | encrypted deployments to simultaneously support protocols even if a | |||
given client is not aware of all those protocols. For example, if | given client is not aware of all those protocols. For example, if | |||
the Unencrypted DNS Resolver returns three SVCB records -- one for | the Unencrypted DNS Resolver returns three SVCB records -- one for | |||
DoH, one for DoT, and one for a yet-to-exist protocol -- a client | DoH, one for DoT, and one for a yet-to-exist protocol -- a client | |||
that only supports DoH and DoT should be able to use those records | that only supports DoH and DoT should be able to use those records | |||
while safely ignoring the third record. | while safely ignoring the third record. | |||
skipping to change at line 230 ¶ | skipping to change at line 230 ¶ | |||
record type (64) [RFC9460]. | record type (64) [RFC9460]. | |||
Responses to the SVCB query for the "resolver.arpa" SUDN describe | Responses to the SVCB query for the "resolver.arpa" SUDN describe | |||
Designated Resolvers. To ensure that different Designated Resolver | Designated Resolvers. To ensure that different Designated Resolver | |||
configurations can be correctly distinguished and associated with A | configurations can be correctly distinguished and associated with A | |||
and AAAA records for the resolver, ServiceMode SVCB responses to | and AAAA records for the resolver, ServiceMode SVCB responses to | |||
these queries MUST NOT use the "." or "resolver.arpa" value for the | these queries MUST NOT use the "." or "resolver.arpa" value for the | |||
TargetName. Similarly, clients MUST NOT perform A or AAAA queries | TargetName. Similarly, clients MUST NOT perform A or AAAA queries | |||
for "resolver.arpa". | for "resolver.arpa". | |||
The following is an example of an SVCB record describing a DoH server | The following is an example of a 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 a 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 ) | |||
The following is an example of an SVCB record describing a DoQ server | The following is an example of a SVCB record describing a DoQ server | |||
discovered by querying for _dns.resolver.arpa.: | discovered by querying for _dns.resolver.arpa.: | |||
_dns.resolver.arpa. 7200 IN SVCB 1 doq.example.net ( | _dns.resolver.arpa. 7200 IN SVCB 1 doq.example.net ( | |||
alpn=doq port=8530 ) | alpn=doq 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 "resolver.arpa", the | When responding to these special queries for "resolver.arpa", the | |||
recursive resolver SHOULD include the A and AAAA records for the name | recursive resolver SHOULD include the A and AAAA records for the name | |||
of the Designated Resolver in the Additional Answers section. This | of the Designated Resolver in the Additional Answers section. This | |||
skipping to change at line 419 ¶ | skipping to change at line 419 ¶ | |||
Encrypted DNS Resolver itself or to any other resolver. Unlike the | Encrypted DNS Resolver itself or to any other resolver. Unlike the | |||
case of bootstrapping from an Unencrypted DNS Resolver (Section 4), | case of bootstrapping from an Unencrypted DNS Resolver (Section 4), | |||
these records SHOULD be available in the public DNS if the same | these records SHOULD be available in the public DNS if the same | |||
domain name's A or AAAA records are available in the public DNS to | domain name's A or AAAA records are available in the public DNS to | |||
allow using any resolver to discover another resolver's Designated | allow using any resolver to discover another resolver's Designated | |||
Resolvers. When the name can only be resolved in private namespaces, | Resolvers. When the name can only be resolved in private namespaces, | |||
these records SHOULD be available to the same audience as the A and | these records SHOULD be available to the same audience as the A and | |||
AAAA records. | AAAA records. | |||
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 a 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 that | indicate that resolver.example.com supports both DoH and DoT and that | |||
the DoH server indicates a higher priority than the DoT server. | the DoH server indicates a higher priority than the DoT server. | |||
_dns.resolver.example.com. 7200 IN SVCB 1 resolver.example.com. ( | _dns.resolver.example.com. 7200 IN SVCB 1 resolver.example.com. ( | |||
alpn=h2 dohpath=/dns-query{?dns} ) | alpn=h2 dohpath=/dns-query{?dns} ) | |||
_dns.resolver.example.com. 7200 IN SVCB 2 resolver.example.com. ( | _dns.resolver.example.com. 7200 IN SVCB 2 resolver.example.com. ( | |||
alpn=dot ) | alpn=dot ) | |||
skipping to change at line 460 ¶ | skipping to change at line 460 ¶ | |||
server for foo.resolver.example.com. | server for 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" (or | A DNS forwarder SHOULD NOT forward queries for "resolver.arpa" (or | |||
any subdomains) upstream. This prevents a client from receiving an | any subdomains) upstream. This prevents a client from receiving a | |||
SVCB record that will fail to authenticate because the forwarder's IP | SVCB record that will fail to authenticate because the forwarder's IP | |||
address is not in the SubjectAltName (SAN) field of the upstream | address is not in the SubjectAltName (SAN) field of the upstream | |||
resolver's Designated Resolver's TLS certificate. A DNS forwarder | resolver's Designated Resolver's TLS certificate. A DNS forwarder | |||
that already acts as a completely transparent forwarder MAY choose to | that already acts as a completely transparent forwarder MAY choose to | |||
forward these queries when the operator expects that this does not | forward these queries when the operator expects that this does not | |||
apply, because the operator either knows that the upstream resolver | apply, because the operator either knows that the upstream resolver | |||
does have the forwarder's IP address in its TLS certificate's SAN | does have the forwarder's IP address in its TLS certificate's SAN | |||
field or expects clients to validate the connection via some future | field or expects clients to validate the connection via some future | |||
mechanism. | mechanism. | |||
skipping to change at line 520 ¶ | skipping to change at line 520 ¶ | |||
directly through DHCP [RFC2132] [RFC8415] and through IPv6 RA options | directly through DHCP [RFC2132] [RFC8415] and through IPv6 RA options | |||
[RFC8106]. When such indications are present, clients can suppress | [RFC8106]. When such indications are present, clients can suppress | |||
queries for "resolver.arpa" to the unencrypted DNS server indicated | queries for "resolver.arpa" to the unencrypted DNS server indicated | |||
by the network over DHCP or RAs, and the DNR indications SHOULD take | by the network over DHCP or RAs, and the DNR indications SHOULD take | |||
precedence over those discovered using "resolver.arpa" for the same | precedence over those discovered using "resolver.arpa" for the same | |||
resolver if there is a conflict, since DNR is considered a more | resolver if there is a conflict, since DNR is considered a more | |||
reliable source. | reliable source. | |||
The Designated Resolver information in DNR might not contain a full | The Designated Resolver information in DNR might not contain a full | |||
set of SvcParams needed to connect to an Encrypted DNS Resolver. In | set of SvcParams needed to connect to an Encrypted DNS Resolver. In | |||
such a case, the client can use an SVCB query using a resolver name, | such a case, the client can use a SVCB query using a resolver name, | |||
as described in Section 5, to the Authentication Domain Name (ADN). | as described in Section 5, to the Authentication Domain Name (ADN). | |||
7. Security Considerations | 7. Security Considerations | |||
Since clients 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 | |||
queries or answers and thus can prevent clients from switching to | queries or answers and thus can prevent clients from switching to | |||
using encrypted DNS. Clients should be aware that it might not be | using encrypted DNS. Clients should be aware that it might not be | |||
possible to distinguish between resolvers that do not have any | possible to distinguish between resolvers that do not have any | |||
Designated Resolver and such an active attack. To limit the impact | Designated Resolver and such an active attack. To limit the impact | |||
End of changes. 10 change blocks. | ||||
10 lines changed or deleted | 10 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |