-
Notifications
You must be signed in to change notification settings - Fork 14
More exposition on motivation and use cases. #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
c163d5f
30620bc
eb54b90
5536c16
b316b30
baff340
278c71e
ab3112c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -104,76 +104,82 @@ contributor: | |||||||||
|
|
||||||||||
| --- abstract | ||||||||||
|
|
||||||||||
| This document extends DELEG record, and SVCB records pointed to by DELEG record, as defined in {{?I-D.draft-dnsop-deleg}}, with ability to specify transport protocols and authentication parameters supported by name servers. | ||||||||||
| This document extends the DNS DELEG record, and SVCB records pointed to by the DELEG record, as defined in {{?I-D.draft-dnsop-deleg}}, with the ability to specify transport protocols and authentication parameters supported by nameservers. | ||||||||||
|
|
||||||||||
| --- middle | ||||||||||
|
|
||||||||||
| # Introduction | ||||||||||
|
|
||||||||||
| The new delegation mechanism based on DELEG record type allows to specify attributes a resolver can use when talking to a delegated authority. This document introduces parameters specific to different transport mechanism than the default udp/53 protocol. | ||||||||||
| The new Domain Name System delegation mechanism based on the DELEG record type allows an authoritative nameserver to specify attributes a resolver can use when talking to another delegated authority. This document introduces parameters specific to different transport mechanisms than the default DNS protocol transports of udp and tcp to port 53. | ||||||||||
|
|
||||||||||
| Legacy DNS resolvers unaware of DELEG mechanism would continue to use the NS and DS records, while resolvers that understand DELEG and its associated parameters can efficiently switch to new transports. | ||||||||||
| Legacy DNS resolvers that are unaware of the DELEG mechanism would continue to use the NS and DS records, while resolvers that understand DELEG and its associated parameters can efficiently switch to new transports. | ||||||||||
|
|
||||||||||
| ## Terminology | ||||||||||
|
|
||||||||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||||||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||||||||
| "OPTIONAL" in this document are to be interpreted as described in \\ | ||||||||||
| "OPTIONAL" in this document are to be interpreted as described in | ||||||||||
| BCP 14 {{?RFC2119}} {{?RFC8174}} when, and only when, they appear in | ||||||||||
| all capitals, as shown here. | ||||||||||
|
|
||||||||||
| Terminology regarding the Domain Name System comes from {{?BCP219}}, with addition terms defined here: | ||||||||||
|
|
||||||||||
| * [tbd] | ||||||||||
| * transport parameters The set of attributes that define how to reach the nameserver specified in a ServiceMode DELEG record. | ||||||||||
| * [tbd] | ||||||||||
|
|
||||||||||
| ## Introductory Examples | ||||||||||
|
|
||||||||||
| To introduce DELEG record with DNS-over-TLS {{?RFC7858}}, this example shows a possible response from an authoritative in the authority section of the DNS response when delegating to another nameserver. | ||||||||||
|
|
||||||||||
| To use a DELEG record to point a resolver to an authority that supports DNS-over-TLS {{?RFC7858}}, this example shows a possible response from an authoritative server in the Authority section of the DNS response: | ||||||||||
|
|
||||||||||
| example.com. 86400 IN DELEG 1 ns2.example.com. ( | ||||||||||
| example.com. 86400 IN DELEG 1 ns2.example.com. ( | ||||||||||
| alpn=dot | ||||||||||
| tlsa="2 0 1 ABC..." | ||||||||||
| ipv4hint=192.0.2.54 | ||||||||||
| ipv6hint=2001:db8:2423::3 ) | ||||||||||
| example.com. 86400 IN NS ns1.example.com. | ||||||||||
| ns1.example.com. 86400 IN A 192.0.2.1 | ||||||||||
| ns1.example.com 86400 IN AAAA 2001:DB8::1 | ||||||||||
| example.com. 86400 IN NS ns1.example.com. | ||||||||||
|
|
||||||||||
| In this example, the authoritative nameserver is delegating using DNS-over-TLS. | ||||||||||
| Like in SVCB, DELEG also offer the ability to use the AliasMode delegation. The example below shows an example where example.com is being delegated with a DELEG AliasMode record which can then be further resolved using standard SVCB to locate the actual parameters. | ||||||||||
| The alpn attribute specifies DNS-over-TLS, with the tlsa attribute | ||||||||||
| providing the necessary cryptographic material to establish the | ||||||||||
| connection. The ipv4hint and ipv6hint serves the traditional role of | ||||||||||
| glue, since the ns2 server lives in the example.com zone. | ||||||||||
|
|
||||||||||
| example.com. 86400 IN DELEG 0 config2.example.net. | ||||||||||
| example.com. 86400 IN NS ns1.example.net. | ||||||||||
| The Additional section would continue to serve glue records for the | ||||||||||
| nameservers within example.com as well, for the benefit of legacy | ||||||||||
| resolvers. Note that these could potentially be the same addresses as | ||||||||||
| are used in the hints of a DELEG record; NS and DELEG are orthogonal. | ||||||||||
|
|
||||||||||
| The example.net authoritative server may return the following SVCB records in response to a query as directed by the above records. | ||||||||||
| ns1.example.com. 86400 IN A 192.0.2.1 | ||||||||||
| ns1.example.com 86400 IN AAAA 2001:DB8::1 | ||||||||||
|
|
||||||||||
| config2.example.net 3600 IN SVCB ns2.example.net. ( | ||||||||||
| alpn=dot | ||||||||||
| tlsa="2 0 1 ABC..." | ||||||||||
| ipv4hint=192.0.2.54 | ||||||||||
| ipv6hint=2001:db8:2423::3 ) | ||||||||||
| As with SVCB, DELEG also offer the ability to use AliasMode for a | ||||||||||
| delegation. The example below shows that example.com is | ||||||||||
| being delegated with a DELEG AliasMode record which can then be | ||||||||||
| further resolved using SVCB to locate the actual parameters. | ||||||||||
|
|
||||||||||
| The above records indicate to the client that the actual configuration for the example.com zone can be found at config2.example.net. | ||||||||||
| example.com. 86400 IN DELEG 0 config2.example.net. | ||||||||||
| example.com. 86400 IN NS ns1.example.net. | ||||||||||
|
|
||||||||||
| Later sections of this document will go into more detail on the resolution process using these records. | ||||||||||
| The example.net authoritative server's SVCB record could look like this: | ||||||||||
|
|
||||||||||
| ## Goal of the DELEG record | ||||||||||
| config2.example.net 3600 IN SVCB ns2.example.net. ( | ||||||||||
| alpn=dot | ||||||||||
| tlsa="2 0 1 ABC..." | ||||||||||
| ipv4hint=192.0.2.54 | ||||||||||
| ipv6hint=2001:db8:2423::3 ) | ||||||||||
|
|
||||||||||
| The primary goal of transport specification in DELEG records is to provide zone owners a way to signal to new clients how to connect to servers serving a child domain that can coexist with NS records in the same zone, and do not break software that does not support new transports. | ||||||||||
| This document defines in detail the resolution process using these records. | ||||||||||
|
|
||||||||||
| ### SvcParams | ||||||||||
| ## SvcParams | ||||||||||
|
|
||||||||||
| All SvcParamKeys for the "dns" scheme {{?9461}} apply as specified. These are the "transport parameters", describing how to reach an endpoint. | ||||||||||
| All SvcParamKeys for the "dns" scheme from SVCB-DNS {{?RFC9461}} apply as specified. These are the "transport parameters", attributes describing how to reach an endpoint. | ||||||||||
|
|
||||||||||
| The "alpn" transport parameter is OPTIONAL to include (unlike in SVCB-DNS, where it is generally required). If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn". | ||||||||||
| The "alpn" transport parameter is OPTIONAL to include, unlike in SVCB-DNS, where it is generally required. If the "alpn" SvcParamKey is omitted, the only available transport is presumed to be unencrypted DNS over UDP/TCP port 53. Endpoints can indicate that insecure transport is not available by specifying "mandatory=alpn". [Why do we not require do53 to be explicit?] | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are you arguing that Do53 should be opt-in instead of opt-out? We can certainly structure it that way; the difference seems pretty superficial. I appreciate the current approach as an application of Occam's Razor, but it's possible that "mandatory=alpn" is too obscure or is stretching the "mandatory" semantics too far.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, I am arguing that if you are using a DELEG record, it should be explicit when you want do53 with it. I don't want really anything assumed. It doesn't have to be in this draft initially though, since I can argue my case on the list. (If all you wanted was Legacy DNS then just NS records.)
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| When TargetName is below the zone cut, DELEG ServiceMode records MUST include "ipv4hint" or "ipv6hint" SvcParamKeys. These keys provide the address glue, which enables the initial connection to this endpoint. | ||||||||||
|
|
||||||||||
| The following additional DNS SVCB parameters are defined for the DELEG and SVCB ServiceModes. | ||||||||||
| The following additional SVCB-DNS parameters are defined for the DELEG and SVCB ServiceModes. | ||||||||||
|
|
||||||||||
| #### "tlsa" | ||||||||||
| ### tlsa | ||||||||||
|
|
||||||||||
| The "tlsa" SvcParamKey is a transport parameter representing a TLSA RRset {{?RFC6698}} to be used when connecting to TargetName using a TLS-based transport. If present, this SvcParam SHOULD match the TLSA records whose base domain ({{?RFC6698, Section 3}}) is TargetName. Due to bootstrapping concerns, this SvcParamKey has been added to the DELEG record as the TLSA records might only be resolveable after the initial connection to the delegated nameserver was established. When this field is not present, certificate validation should be performed by either DANE or by traditional TLS certification validation using trusted root certification authorities. | ||||||||||
|
|
||||||||||
|
|
@@ -186,8 +192,8 @@ To avoid a circular dependency, "tlsa" MUST appear in any DELEG record that is u | |||||||||
| Resolvers that support TLS-based transports MUST adopt one of the following behaviors: | ||||||||||
|
|
||||||||||
| 1. Use DANE for authentication, and treat any endpoints lacking DANE support as incompatible. | ||||||||||
| 1. Use PKI for authentication, and treat any DANE-only endpoint as incompatible. In this behavior, compatibility with `tlsa=disabled` endpoints is REQUIRED. | ||||||||||
| 1. Support both DANE and PKI for authentication, preferring DANE if it is available for each endpoint. | ||||||||||
| 2. Use PKI for authentication, and treat any DANE-only endpoint as incompatible. In this behavior, compatibility with `tlsa=disabled` endpoints is REQUIRED. | ||||||||||
| 3. Support both DANE and PKI for authentication, preferring DANE if it is available for each endpoint. | ||||||||||
vttale marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||||||
|
|
||||||||||
| This SvcParamKey MAY be used in any SVCB context where TLSA usage is defined. | ||||||||||
|
|
||||||||||
|
|
@@ -200,6 +206,9 @@ alpn=doq tlsa="..." mandatory=alpn | |||||||||
| ;; services. All resolvers can access it, but only resolvers with | ||||||||||
| ;; DANE support will use DoQ. | ||||||||||
| alpn=doq tlsa="..." | ||||||||||
| [... how does this signal that it also offers do53? Is the though that it is | ||||||||||
| because only this draft specifies alpn and the core draft doesn't (currently) | ||||||||||
| have a method to explicitly signal do53? Maybe it should... ] | ||||||||||
|
Comment on lines
+209
to
+211
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This server supports Do53 because it is not explicitly disclaimed by
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Okay, right, see above. I think we should require signalling do53 to be explicit.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| ;; The server is authenticatable via PKI. If TLSA records exist at | ||||||||||
| ;; the SVCB-DANE owner names, it is also authenticatable via DANE. | ||||||||||
|
|
@@ -212,31 +221,33 @@ alpn=doq tlsa=disabled mandatory=alpn | |||||||||
| ~~~ | ||||||||||
| {: title="tlsa SvcParam Examples for DELEG"} | ||||||||||
|
|
||||||||||
| ## Deployment Considerations | ||||||||||
| ## Resolution procedure | ||||||||||
|
|
||||||||||
| The DELEG and SVCB records intends to replace the NS record while also adding additional functionality in order to support additional transports for the DNS. Below are discussions of considerations for deployment. | ||||||||||
| As specified in {{?I-D.draft-dnsop-deleg}}, the ServiceMode DELEG records provide a weak signal from the operator about which transport mechanisms they would most prefer clients to use, but it is not mandatory that resolvers try the delegated servers in priority order. It might not even be possible for a resolver to do, such as if the highest priority record specifies an alpn that the resolver does not implement, but a lower priority record has an alpn that it can use. | ||||||||||
fl1ger marked this conversation as resolved.
Show resolved
Hide resolved
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't understand this line. Each ServiceMode record documents the supported transports for a particular endpoint, and the SvcPriority documents the recommended trial order. Incompatible endpoints are skipped. Of course clients are free to reorder them based on additional heuristics. This is all covered in RFC 9460.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What don't you understand then? It's just making it clear in this document as well. Do you think this statement is inconsistent with that, or should just be shorter in drawing attention to it?
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK. If this is just meant to be highlighting some relevant aspects of RFC 9460, then it should say so.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will do. I'll be working on some more editing tomorrow and will add the explicit reference. |
||||||||||
|
|
||||||||||
| ### Availability | ||||||||||
| Thus, as with authority server selection for NS records, a resolver is free to use its own policy implementation to determine which servers to continue to use for resolution. | ||||||||||
|
|
||||||||||
| If a zone operator removes all NS records before DELEG and SVCB records are implemented by all clients, the availability of their zones will be impacted for the clients that are using non-supporting resolvers. In some cases, this may be a desired quality, but should be noted by zone owners and operators. | ||||||||||
| If a connection error occurs when a resolver attempts to access a nameserver delegated to by a DELEG or SVCB record, such as with a certificate mismatch or by being unreachable, the resolver SHOULD attempt to connect to the other nameservers in the DELEG/SVCB RRset to until either exhausting the list or the resolver's policy indicates that they should treat the resolution as failed. | ||||||||||
|
|
||||||||||
| # Privacy Considerations | ||||||||||
| Operators MAY return SERVFAIL when all attempts to use the DELEG/SVCB resolution process have failed. This might have privacy benefits, especially if the DELEG records only offer encrypted transports. More permissive resolvers can fall back to using the legacy DNS resolution process via NS records. | ||||||||||
|
|
||||||||||
| All of the information handled or transmitted by this protocol is public information published in the DNS. | ||||||||||
| ## Deployment Considerations | ||||||||||
|
|
||||||||||
| # Security Considerations | ||||||||||
| DELEG and SVCB records are intended to be the best method for modern resolvers to use delegation information for zones. | ||||||||||
|
|
||||||||||
| TODO: Fill this section out | ||||||||||
| Realistically, however, legacy resolvers will continue to exist on the Internet for a long time to come. If a zone operator removes all NS records, the availability of their zones will be impacted for the clients that are using non-supporting resolvers. In some cases, this may be a desired quality, but should be noted by zone owners and operators. | ||||||||||
|
Comment on lines
+236
to
+238
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why is this in the transport draft? This topic seems like it should go in the main DELEG draft.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed. It was here because it was the document I was working on first on the airplane, and I was addressing "fill this section out" with relevant thoughts.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK, please delete this section. |
||||||||||
|
|
||||||||||
| ## Resolution procedure | ||||||||||
| # Privacy Considerations | ||||||||||
|
|
||||||||||
| TODO: Define how resolver selects which server connect to, especially when faced with selection of multiple transports. I's probably resolver's policy decision, but it should be said explicitly. | ||||||||||
| All of the information transmitted by this protocol is public information published in the DNS. | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think queries are meant to be "published" in the DNS.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I also thought the sentence as a little awkward, but was working with some prior text. I agree regarding queries. This sentence could maybe be improved with "transmitted by authoritative servers", but the section needs work anyway.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
|
|
||||||||||
| # Security Considerations | ||||||||||
|
|
||||||||||
| ### Connection Failures | ||||||||||
| No new security risks are introduced by this specification. [Too bold to say?] | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sure, maybe we aren't making anything worse (although I worry about DNS Water Torture-like attacks), but security and privacy considerations still need to cover how the protocol can fail to achieve the intended improvements. In this case, we need to talk about how TLS is authenticated, especially in unsigned zones. (Related: #5)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sounds good. I wasn't really pushing for that sentence so much as putting a starting point that would draw out the "you were wrong on the Internet, and let me tell you why ..." brainstorming. |
||||||||||
|
|
||||||||||
| When a resolver attempts to access nameserver delegated by a DELEG or SVCB record, if a connection error occurs, such as a certificate mismatch or unreachable server, the resolver SHOULD attempt to connect to the other nameservers delegated to until either exhausting the list or the resolver's policy indicates that they should treat the resolution as failed. | ||||||||||
| The primary security considerations of DNS operators and domain owners are whether they should enable more secure transports for their domains, and how they want resolution to be handled if the secure transport is not available. | ||||||||||
|
|
||||||||||
| The failure action when failing to resolve a name with DELEG/SVCB due to connection errors is dependent on the resolver operators policies. For resolvers which strongly favor privacy, the operators may wish to return a SERVFAIL when the DELEG/SVCB resolution process completes without successfully contacting a delegated nameserver(s) while opportunistic privacy resolvers may wish to attempt resolution using any NS records that may be present. | ||||||||||
| Similarly, resolvers should be considering whether they will use secure transport mechanisms, and if so how strongly they want to enforce their usage. | ||||||||||
|
|
||||||||||
| # IANA Considerations | ||||||||||
|
|
||||||||||
|
|
||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is intriguing but I don't quite believe it. DELEG is in the parent zone, and is only retrieved by an explicit query (QTYPE=DELEG). Sure, the parent should serve glue records alongside an NS record Answer, but why should it serve glue records alongside a DELEG Answer?
There's another wrinkle here though: SVCB recommends putting A+AAAA records for TargetName in the Additional section if they are in the same zone, to avoid a followup query. If we apply that to DELEG, it could mean adding A+AAAA records for "ns2.example.com" (in the above example). However, this would be redundant with the IP hints, and it would also be logically different: those A+AAAA records are locally available but they aren't part of this zone.
Bottom line: we should do IP glue or IP hints, but not both. Overall, my preference would be to stick with hints and get rid of the whole concept of glue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's not really a settled matter. I still think, pending testing to confirm that for the vast majority of the resolver base, that the real deployment win here is to serve NS, DS and DELEG together for any delegation and NOT require an explicit query for them. We're trying to make the whole business of finding modern auths more efficient, not add more queries.
And I really, really don't think we should be adding addresses for the DELEG names to the Additional section, because something that understands what DELEG is at all should be using the hints.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like this is not settled, and is also not relevant to the transport draft. Please remove it or move it to the other draft.
BTW, using QTYPE=DELEG doesn't add queries. It just replaces the "arbitrary" QTYPE in QNAME minimization with a meaningful one. Non-DELEG servers should treat it as an unknown QTYPE and return the NS (and glue) in a delegation response.