| < draft-ietf-dnsop-extended-error-14.txt | draft-ietf-dnsop-extended-error-15.txt > | |||
|---|---|---|---|---|
| Network Working Group W. Kumari | Network Working Group W. Kumari | |||
| Internet-Draft Google | Internet-Draft Google | |||
| Intended status: Standards Track E. Hunt | Intended status: Standards Track E. Hunt | |||
| Expires: July 18, 2020 ISC | Expires: October 26, 2020 ISC | |||
| R. Arends | R. Arends | |||
| ICANN | ICANN | |||
| W. Hardaker | W. Hardaker | |||
| USC/ISI | USC/ISI | |||
| D. Lawrence | D. Lawrence | |||
| Oracle + Dyn | Oracle + Dyn | |||
| January 15, 2020 | April 24, 2020 | |||
| Extended DNS Errors | Extended DNS Errors | |||
| draft-ietf-dnsop-extended-error-14 | draft-ietf-dnsop-extended-error-15 | |||
| Abstract | Abstract | |||
| This document defines an extensible method to return additional | This document defines an extensible method to return additional | |||
| information about the cause of DNS errors. Though created primarily | information about the cause of DNS errors. Though created primarily | |||
| to extend SERVFAIL to provide additional information about the cause | to extend SERVFAIL to provide additional information about the cause | |||
| of DNS and DNSSEC failures, the Extended DNS Errors option defined in | of DNS and DNSSEC failures, the Extended DNS Errors option defined in | |||
| this document allows all response types to contain extended error | this document allows all response types to contain extended error | |||
| information. Extended DNS Error information does not change the | information. Extended DNS Error information does not change the | |||
| processing of RCODEs. | processing of RCODEs. | |||
| skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
| 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 July 18, 2020. | This Internet-Draft will expire on October 26, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
| skipping to change at page 2, line 51 ¶ | skipping to change at page 2, line 51 ¶ | |||
| 4.18. Extended DNS Error Code 17 - Filtered . . . . . . . . . . 8 | 4.18. Extended DNS Error Code 17 - Filtered . . . . . . . . . . 8 | |||
| 4.19. Extended DNS Error Code 18 - Prohibited . . . . . . . . . 8 | 4.19. Extended DNS Error Code 18 - Prohibited . . . . . . . . . 8 | |||
| 4.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer . . . 8 | 4.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer . . . 8 | |||
| 4.21. Extended DNS Error Code 20 - Not Authoritative . . . . . 8 | 4.21. Extended DNS Error Code 20 - Not Authoritative . . . . . 8 | |||
| 4.22. Extended DNS Error Code 21 - Not Supported . . . . . . . 8 | 4.22. Extended DNS Error Code 21 - Not Supported . . . . . . . 8 | |||
| 4.23. Extended DNS Error Code 22 - No Reachable Authority . . . 8 | 4.23. Extended DNS Error Code 22 - No Reachable Authority . . . 8 | |||
| 4.24. Extended DNS Error Code 23 - Network Error . . . . . . . 8 | 4.24. Extended DNS Error Code 23 - Network Error . . . . . . . 8 | |||
| 4.25. Extended DNS Error Code 24 - Invalid Data . . . . . . . . 9 | 4.25. Extended DNS Error Code 24 - Invalid Data . . . . . . . . 9 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5.1. A New Extended DNS Error Code EDNS Option . . . . . . . . 9 | 5.1. A New Extended DNS Error Code EDNS Option . . . . . . . . 9 | |||
| 5.2. New Registry Table for Extended DNS Error Codes . . . . . 9 | 5.2. New Registry for Extended DNS Error Codes . . . . . . . . 9 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 1. Introduction and background | 1. Introduction and background | |||
| There are many reasons that a DNS query may fail, some of them | There are many reasons that a DNS query may fail, some of them | |||
| transient, some permanent; some can be resolved by querying another | transient, some permanent; some can be resolved by querying another | |||
| server, some are likely best handled by stopping resolution. | server, some are likely best handled by stopping resolution. | |||
| Unfortunately, the error signals that a DNS server can return are | Unfortunately, the error signals that a DNS server can return are | |||
| very limited, and are not very expressive. This means that | very limited, and are not very expressive. This means that | |||
| applications and resolvers often have to "guess" at what the issue is | applications and resolvers often have to "guess" at what the issue is | |||
| - e.g. was the answer marked REFUSED because of a lame delegation, or | - e.g. was the answer marked REFUSED because of a lame delegation, or | |||
| because the nameserver is still starting up and loading zones? Is a | because the nameserver is still starting up and loading zones? Is a | |||
| SERVFAIL a DNSSEC validation issue, or is the nameserver experiencing | SERVFAIL a DNSSEC validation issue, or is the nameserver experiencing | |||
| some other failure? What error messages should be presented to the | some other failure? What error messages should be presented to the | |||
| user or logged under these conditions? | user or logged under these conditions? | |||
| A good example of issues that would benefit by additional error | A good example of issues that would benefit from additional error | |||
| information are errors caused by DNSSEC validation issues. When a | information are errors caused by DNSSEC validation issues. When a | |||
| stub resolver queries a name which is DNSSEC bogus (using a | stub resolver queries a name which is DNSSEC bogus [RFC8499] (using a | |||
| validating resolver), the stub resolver receives only a SERVFAIL in | validating resolver), the stub resolver receives only a SERVFAIL in | |||
| response. Unfortunately, the SERVFAIL Response Code (RCODE) is used | response. Unfortunately, the SERVFAIL Response Code (RCODE) is used | |||
| to signal many sorts of DNS errors, and so the stub resolvers only | to signal many sorts of DNS errors, and so the stub resolvers only | |||
| option is to ask the next configured DNS resolver. The result of | option is to ask the next configured DNS resolver. The result of | |||
| trying the next resolver is one of two outcomes: either the next | trying the next resolver is one of two outcomes: either the next | |||
| resolver also validates, and a SERVFAIL is returned again or the next | resolver also validates, and a SERVFAIL is returned again; or the | |||
| resolver is not a validating resolver, and the user is returned a | next resolver is not a validating resolver, and the user is returned | |||
| potentially harmful result. With an Extended DNS Error (EDE) option | a potentially harmful result. With an Extended DNS Error (EDE) | |||
| enclosed in the response message, the resolver is able to return a | option enclosed in the response message, the resolver is able to | |||
| more descriptive reason as to why any failures happened, or add | return a more descriptive reason as to why any failures happened, or | |||
| additional context to a message containing a NOERROR RCODE. | add additional context to a message containing a NOERROR RCODE. | |||
| This document specifies a mechanism to extend DNS errors to provide | This document specifies a mechanism to extend DNS errors to provide | |||
| additional information about the cause of an error. These extended | additional information about the cause of an error. These extended | |||
| DNS error codes described in this document and can be used by any | DNS error codes are described in this document and can be used by any | |||
| system that sends DNS queries and receives a response containing an | system that sends DNS queries and receives a response containing an | |||
| EDE option. Different codes are useful in different circumstances, | EDE option. Different codes are useful in different circumstances, | |||
| and thus different systems (stub resolvers, recursive resolvers, and | and thus different systems (stub resolvers, recursive resolvers, and | |||
| authoritative resolvers) might receive and use them. | authoritative resolvers) might receive and use them. | |||
| This document does not allow or prohibit any particular extended | This document does not allow or prohibit any particular extended | |||
| error codes and information to be matched with any particular RCODEs. | error codes and information to be matched with any particular RCODEs. | |||
| Some combinations of extended error codes and RCODEs may seem | Some combinations of extended error codes and RCODEs may seem | |||
| nonsensical (such as resolver-specific extended error codes in | nonsensical (such as resolver-specific extended error codes in | |||
| responses from authoritative servers), so systems interpreting the | responses from authoritative servers), so systems interpreting the | |||
| extended error codes MUST NOT assume that a combination will make | extended error codes MUST NOT assume that a combination will make | |||
| sense. Receivers MUST be able to accept EDE codes and EXTRA-TEXT in | sense. Receivers MUST be able to accept EDE codes and EXTRA-TEXT in | |||
| all messages, including those with a NOERROR RCODE. Applications | all messages, including those with a NOERROR RCODE, but need not act | |||
| MUST continue to follow requirements from applicable specs on how to | on them. Applications MUST continue to follow requirements from | |||
| process RCODEs no matter what EDE values is also received. Senders | applicable specifications on how to process RCODEs no matter what EDE | |||
| MAY include more than one EDE option and receivers MUST be able to | values are also received. Senders MAY include more than one EDE | |||
| accept (but not necessarily process or act on) multiple EDE options | option and receivers MUST be able to accept (but not necessarily | |||
| in a DNS message. | process or act on) multiple EDE options in a DNS message. | |||
| 1.1. Requirements notation | 1.1. Requirements notation | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| document are to be interpreted as described in [RFC2119]. | "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. | ||||
| 2. Extended DNS Error EDNS0 option format | 2. Extended DNS Error EDNS0 option format | |||
| This draft uses an EDNS0 ([RFC6891]) option to include Extended DNS | This draft uses an EDNS0 ([RFC6891]) option to include Extended DNS | |||
| Error (EDE) information in DNS messages. The option is structured as | Error (EDE) information in DNS messages. The option is structured as | |||
| follows: | follows: | |||
| 1 1 1 1 1 1 | 1 1 1 1 1 1 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| skipping to change at page 4, line 50 ¶ | skipping to change at page 5, line 5 ¶ | |||
| TBD. [RFC Editor: change TBD to the proper code once assigned by | TBD. [RFC Editor: change TBD to the proper code once assigned by | |||
| IANA.] | IANA.] | |||
| o OPTION-LENGTH, 2-octets/16-bits ((defined in [RFC6891]]) contains | o OPTION-LENGTH, 2-octets/16-bits ((defined in [RFC6891]]) contains | |||
| the length of the payload (everything after OPTION-LENGTH) in | the length of the payload (everything after OPTION-LENGTH) in | |||
| octets and should be 2 plus the length of the EXTRA-TEXT field | octets and should be 2 plus the length of the EXTRA-TEXT field | |||
| (which may be a zero-length string). | (which may be a zero-length string). | |||
| o INFO-CODE, 16-bits, which is the principal contribution of this | o INFO-CODE, 16-bits, which is the principal contribution of this | |||
| document. This 16-bit value, encoded in network (MSB) byte order, | document. This 16-bit value, encoded in network (MSB) byte order, | |||
| provides the additional context for the RESPONSE-CODE of the DNS | provides the additional context for the RESPONSE-CODE of the DNS | |||
| message. The INFO-CODE serves as an index into the "Extended DNS | message. The INFO-CODE serves as an index into the "Extended DNS | |||
| Errors" registry Section 5.1. | Errors" registry defined and created in Section 5.2. | |||
| o EXTRA-TEXT, a variable length, UTF-8 encoded, text field that may | o EXTRA-TEXT, a variable length, UTF-8 encoded, text field that may | |||
| hold additional textual information. Note: EXTRA-TEXT may be zero | hold additional textual information. This information is intended | |||
| octets in length, indicating there is no EXTRA-TEXT included. | for human consumption (not automated parsing). The EXTRA-TEXT | |||
| Care should be taken not to leak private information that an | field may be zero octets in length, indicating that there is no | |||
| observer would not otherwise have access to, such as account | EXTRA-TEXT included. Care should be taken not to include private | |||
| numbers. | information in the EXTRA-TEXT field that an observer would not | |||
| otherwise have access to, such as account numbers. | ||||
| The Extended DNS Error (EDE) option can be included in any response | The Extended DNS Error (EDE) option can be included in any response | |||
| (SERVFAIL, NXDOMAIN, REFUSED, and even NOERROR, etc) to a query that | (SERVFAIL, NXDOMAIN, REFUSED, and even NOERROR, etc) to a query that | |||
| includes OPT Pseudo-RR [RFC6891]. This document includes a set of | includes OPT Pseudo-RR [RFC6891]. This document includes a set of | |||
| initial codepoints (and requests to the IANA to add them to the | initial codepoints, but is extensible via the IANA registry defined | |||
| registry), but is extensible via the IANA registry to allow | and created in Section 5.2. | |||
| additional error and information codes to be defined in the future. | ||||
| 3. Extended DNS Error Processing | 3. Extended DNS Error Processing | |||
| When the response grows beyond the requestor's UDP payload size | When the response grows beyond the requestor's UDP payload size | |||
| [RFC6891], servers SHOULD truncate messages by dropping EDE options | [RFC6891], servers SHOULD truncate messages by dropping EDE options | |||
| before dropping other data from packets. Implementations SHOULD set | before dropping other data from packets. Implementations SHOULD set | |||
| the truncation bit when dropping EDE options. Long EXTRA-TEXT fields | the truncation bit when dropping EDE options. Because long EXTRA- | |||
| may trigger truncation, which is usually undesirable for the | TEXT fields may trigger truncation, which is undesirable given the | |||
| supplemental nature of EDE. Implementers and operators creating EDE | supplemental nature of EDE. Implementers and operators creating EDE | |||
| options SHOULD avoid setting unnecessarily long EXTRA-TEXT contents | options SHOULD avoid lengthy EXTRA-TEXT contents. | |||
| to avoid truncation. | ||||
| When a resolver or forwarder receives an EDE option, whether or not | When a resolver or forwarder receives an EDE option, whether or not | |||
| (and how) to pass along EDE information on to their original client | (and how) to pass along EDE information on to their original client | |||
| is implementation dependent. Implementations MAY choose to not | is implementation dependent. Implementations MAY choose to not | |||
| forward information, or they MAY choose to create a new EDE option(s) | forward information, or they MAY choose to create a new EDE option(s) | |||
| that conveys the information encoded in the received EDE. When doing | that conveys the information encoded in the received EDE. When doing | |||
| so, the source of the error SHOULD be attributed in the EXTRA-TEXT | so, the source of the error SHOULD be attributed in the EXTRA-TEXT | |||
| field, since an EDNS0 option received by the original client will be | field, since an EDNS0 option received by the original client will | |||
| perceived only to have come from the resolver or forwarder sending | appear to have come from the resolver or forwarder sending it. | |||
| it. | ||||
| 4. Defined Extended DNS Errors | 4. Defined Extended DNS Errors | |||
| This document defines some initial EDE codes. The mechanism is | This document defines some initial EDE codes. The mechanism is | |||
| intended to be extensible, and additional code-points can be | intended to be extensible, and additional code-points can be | |||
| registered in the "Extended DNS Errors" registry Section 5.1. The | registered in the "Extended DNS Errors" registry Section 5.2. The | |||
| INFO-CODE from the EDE EDNS option is used to serve as an index into | INFO-CODE from the EDE EDNS option is used to serve as an index into | |||
| the "Extended DNS Error" IANA registry, the initial values for which | the "Extended DNS Error" IANA registry, the initial values for which | |||
| are defined in the following sub-sections. | are defined in the following sub-sections. | |||
| 4.1. Extended DNS Error Code 0 - Other | 4.1. Extended DNS Error Code 0 - Other | |||
| The error in question falls into a category that does not match known | The error in question falls into a category that does not match known | |||
| extended error codes. Implementations SHOULD include a EXTRA-TEXT | extended error codes. Implementations SHOULD include an EXTRA-TEXT | |||
| value to augment this error code with additional information. | value to augment this error code with additional information. | |||
| 4.2. Extended DNS Error Code 1 - Unsupported DNSKEY Algorithm | 4.2. Extended DNS Error Code 1 - Unsupported DNSKEY Algorithm | |||
| The resolver attempted to perform DNSSEC validation, but a DNSKEY | The resolver attempted to perform DNSSEC validation, but a DNSKEY | |||
| RRSET contained only unsupported DNSSEC algorithms. | RRSET contained only unsupported DNSSEC algorithms. | |||
| 4.3. Extended DNS Error Code 2 - Unsupported DS Digest Type | 4.3. Extended DNS Error Code 2 - Unsupported DS Digest Type | |||
| The resolver attempted to perform DNSSEC validation, but a DS RRSET | The resolver attempted to perform DNSSEC validation, but a DS RRSET | |||
| contained only unsupported Digest Types. | contained only unsupported Digest Types. | |||
| 4.4. Extended DNS Error Code 3 - Stale Answer | 4.4. Extended DNS Error Code 3 - Stale Answer | |||
| The resolver was unable to resolve answer within its time limits and | The resolver was unable to resolve the answer within its time limits | |||
| decided to answer with previously cached data instead of answering | and decided to answer with previously cached data instead of | |||
| with an error. This is typically caused by problems communicating | answering with an error. This is typically caused by problems | |||
| with an authoritative serever, possibly as result of a DoS attack | communicating with an authoritative server, possibly as result of a | |||
| against another network. | denial of service (DoS) attack against another network. (See also | |||
| Code 19.) | ||||
| 4.5. Extended DNS Error Code 4 - Forged Answer | 4.5. Extended DNS Error Code 4 - Forged Answer | |||
| For policy reasons (legal obligation, or malware filtering, for | For policy reasons (legal obligation, or malware filtering, for | |||
| instance), an answer was forged. Note that this should be used when | instance), an answer was forged. Note that this should be used when | |||
| an answer is still provided, not when failure codes are returned | an answer is still provided, not when failure codes are returned | |||
| instead. See Blocked(15), Censored (16), and Filtered (17) for use | instead. See Blocked(15), Censored (16), and Filtered (17) for use | |||
| when returning other response codes. | when returning other response codes. | |||
| 4.6. Extended DNS Error Code 5 - DNSSEC Indeterminate | 4.6. Extended DNS Error Code 5 - DNSSEC Indeterminate | |||
| skipping to change at page 7, line 37 ¶ | skipping to change at page 7, line 37 ¶ | |||
| The resolver attempted to perform DNSSEC validation, but the | The resolver attempted to perform DNSSEC validation, but the | |||
| requested data was missing and a covering NSEC or NSEC3 was not | requested data was missing and a covering NSEC or NSEC3 was not | |||
| provided. | provided. | |||
| 4.14. Extended DNS Error Code 13 - Cached Error | 4.14. Extended DNS Error Code 13 - Cached Error | |||
| The resolver is returning the SERVFAIL RCODE from its cache. | The resolver is returning the SERVFAIL RCODE from its cache. | |||
| 4.15. Extended DNS Error Code 14 - Not Ready | 4.15. Extended DNS Error Code 14 - Not Ready | |||
| The server is unable to answer the query as it is not fully | The server is unable to answer the query as it was not fully | |||
| functional (yet). | functional when the query was received. | |||
| 4.16. Extended DNS Error Code 15 - Blocked | 4.16. Extended DNS Error Code 15 - Blocked | |||
| The server is unable to respond to the request because the domain is | The server is unable to respond to the request because the domain is | |||
| blacklisted due to an internal security policy imposed by the | blacklisted due to an internal security policy imposed by the | |||
| operator of the server being directly talked to. | operator of the server resolving or forwarding the query. | |||
| 4.17. Extended DNS Error Code 16 - Censored | 4.17. Extended DNS Error Code 16 - Censored | |||
| The server is unable to respond to the request because the domain is | The server is unable to respond to the request because the domain is | |||
| blacklisted by a security policy imposed upon the server being talked | blacklisted due to an external requirement imposed by an entity other | |||
| to by an external requirement. Note that how the imposed policy is | than the operator of the server resolving or forwarding the query. | |||
| applied is irrelevant (in-band DNS filtering, court order, etc). | Note that how the imposed policy is applied is irrelevant (in-band | |||
| DNS filtering, court order, etc). | ||||
| 4.18. Extended DNS Error Code 17 - Filtered | 4.18. Extended DNS Error Code 17 - Filtered | |||
| The server is unable to respond to the request because the domain is | The server is unable to respond to the request because the domain is | |||
| blacklisted as requested by the client. Functionally, this amounts | blacklisted as requested by the client. Functionally, this amounts | |||
| to "you requested that we filter domains like this one." | to "you requested that we filter domains like this one." | |||
| 4.19. Extended DNS Error Code 18 - Prohibited | 4.19. Extended DNS Error Code 18 - Prohibited | |||
| An authoritative or recursive resolver that receives a query from an | An authoritative server or recursive resolver that receives a query | |||
| "unauthorized" client can annotate its REFUSED message with this | from an "unauthorized" client can annotate its REFUSED message with | |||
| code. Examples of "unauthorized" clients are recursive queries from | this code. Examples of "unauthorized" clients are recursive queries | |||
| IP addresses outside the network, blacklisted IP addresses, local | from IP addresses outside the network, blacklisted IP addresses, | |||
| policy, etc. | local policy, etc. | |||
| 4.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer | 4.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer | |||
| The resolver was unable to resolve an answer within its configured | The resolver was unable to resolve an answer within its configured | |||
| time limits and decided to answer with a previously cached NXDOMAIN | time limits and decided to answer with a previously cached NXDOMAIN | |||
| answer instead of answering with an error. This is may be caused, | answer instead of answering with an error. This may be caused, for | |||
| for example, by problems communicating with an authoritative server, | example, by problems communicating with an authoritative server, | |||
| possibly as result of a DoS attack against another network. | possibly as result of a denial of service (DoS) attack against | |||
| another network. (See also Code 3.) | ||||
| 4.21. Extended DNS Error Code 20 - Not Authoritative | 4.21. Extended DNS Error Code 20 - Not Authoritative | |||
| An authoritative server that receives a query (with the RD bit clear, | An authoritative server that receives a query with the RD bit clear, | |||
| or when not configured for recursion) for a domain for which it is | or when it is not configured for recursion for a domain for which it | |||
| not authoritative SHOULD include this EDE code in the REFUSED | is not authoritative SHOULD include this EDE code in the REFUSED | |||
| response. A resolver that receives a query (with the RD bit clear) | response. A resolver that receives a query with the RD bit clear | |||
| SHOULD include this EDE code in the REFUSED response. | SHOULD include this EDE code in the REFUSED response. | |||
| 4.22. Extended DNS Error Code 21 - Not Supported | 4.22. Extended DNS Error Code 21 - Not Supported | |||
| The requested operation or query is not supported as its use has been | The requested operation or query is not supported. | |||
| deprecated. | ||||
| 4.23. Extended DNS Error Code 22 - No Reachable Authority | 4.23. Extended DNS Error Code 22 - No Reachable Authority | |||
| The resolver could not reach any of the authoritative name servers | The resolver could not reach any of the authoritative name servers | |||
| (or they refused to reply). | (or they potentially refused to reply). | |||
| 4.24. Extended DNS Error Code 23 - Network Error | 4.24. Extended DNS Error Code 23 - Network Error | |||
| An unrecoverable error occurred while communicating with another | An unrecoverable error occurred while communicating with another | |||
| server. | server. | |||
| 4.25. Extended DNS Error Code 24 - Invalid Data | 4.25. Extended DNS Error Code 24 - Invalid Data | |||
| An authoritative server that cannot answer with data for a zone it is | The authoritative server cannot answer with data for a zone it is | |||
| otherwise configured to support. This may occur because its most | otherwise configured to support. Examples of this include its most | |||
| recent zone is too old, or has expired, for example. | recent zone being too old, or having expired. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| 5.1. A New Extended DNS Error Code EDNS Option | 5.1. A New Extended DNS Error Code EDNS Option | |||
| This document defines a new EDNS(0) option, entitled "Extended DNS | This document defines a new EDNS(0) option, entitled "Extended DNS | |||
| Error", assigned a value of TBD from the "DNS EDNS0 Option Codes | Error", assigned a value of TBD from the "DNS EDNS0 Option Codes | |||
| (OPT)" registry [to be removed upon publication: | (OPT)" registry [to be removed upon publication: | |||
| [http://www.iana.org/assignments/dns-parameters/dns- | [http://www.iana.org/assignments/dns-parameters/dns- | |||
| parameters.xhtml#dns-parameters-11] | parameters.xhtml#dns-parameters-11] | |||
| Value Name Status Reference | Value Name Status Reference | |||
| ----- ---------------- ------ ------------------ | ----- ---------------- ------ ------------------ | |||
| TBD Extended DNS Error TBD [ This document ] | TBD Extended DNS Error Standard [ This document ] | |||
| 5.2. New Registry Table for Extended DNS Error Codes | 5.2. New Registry for Extended DNS Error Codes | |||
| This document defines a new IANA registry table, where the index | IANA is requested to create and maintain a new registry table called | |||
| value is the INFO-CODE from the "Extended DNS Error" EDNS option | "Extended DNS Error Codes" on the "Domain Name System (DNS) | |||
| defined in this document. The IANA is requested to create and | Parameters" web page as follows: | |||
| maintain this "Extended DNS Error" codes registry. The code-point | ||||
| space for the INFO-CODE index is to be broken into 2 ranges: | Registry Name: Extended DNS Error Codes | |||
| Registration Procedures: | ||||
| o 0 - 49151: First come, first served. | o 0 - 49151: First come, first served. | |||
| o 49152 - 65280: Private use. | o 49152 - 65280: Private use. | |||
| A starting set of entries, based on the contents of this document, is | Reference: [this document] | |||
| as follows: | ||||
| The Extended DNS Error Codes registry is a table with three columns: | ||||
| INFO-CODE, Purpose, and Reference. The initial contents is as below | ||||
| with [this document] added to each reference given. | ||||
| INFO-CODE: 0 | INFO-CODE: 0 | |||
| Purpose: Other Error | Purpose: Other Error | |||
| Reference: Section 4.1 | Reference: Section 4.1 | |||
| INFO-CODE: 1 | INFO-CODE: 1 | |||
| Purpose: Unsupported DNSKEY Algorithm | Purpose: Unsupported DNSKEY Algorithm | |||
| Reference: Section 4.2 | Reference: Section 4.2 | |||
| INFO-CODE: 2 | INFO-CODE: 2 | |||
| Purpose: Unsupported DS Digest Type | Purpose: Unsupported DS Digest Type | |||
| Reference: Section 4.3 | Reference: Section 4.3 | |||
| INFO-CODE: 3 | INFO-CODE: 3 | |||
| Purpose: Stale Answer | Purpose: Stale Answer | |||
| Reference: Section 4.4, [I-D.ietf-dnsop-serve-stale] | Reference: Section 4.4, [RFC8767] | |||
| INFO-CODE: 4 | INFO-CODE: 4 | |||
| Purpose: Forged Answer | Purpose: Forged Answer | |||
| Reference: Section 4.5 | Reference: Section 4.5 | |||
| INFO-CODE: 5 | INFO-CODE: 5 | |||
| Purpose: DNSSEC Indeterminate | Purpose: DNSSEC Indeterminate | |||
| Reference: Section 4.6 | Reference: Section 4.6 | |||
| INFO-CODE: 6 | INFO-CODE: 6 | |||
| skipping to change at page 11, line 42 ¶ | skipping to change at page 11, line 47 ¶ | |||
| Reference: Section 4.23 | Reference: Section 4.23 | |||
| INFO-CODE: 23 | INFO-CODE: 23 | |||
| Purpose: Network Error | Purpose: Network Error | |||
| Reference: Section 4.24 | Reference: Section 4.24 | |||
| INFO-CODE: 24 | INFO-CODE: 24 | |||
| Purpose: Invalid Data | Purpose: Invalid Data | |||
| Reference: Section 4.25 | Reference: Section 4.25 | |||
| INFO-CODE: 25-65535 | ||||
| Purpose: Unasigned | ||||
| Reference: Section 5.2 | ||||
| 6. Security Considerations | 6. Security Considerations | |||
| Though DNSSEC continues to be deployed, unfortunately a significant | Though DNSSEC continues to be deployed, unfortunately a significant | |||
| number of clients (~11% according to [GeoffValidation]) that receive | number of clients (~11% according to [GeoffValidation]) that receive | |||
| a SERVFAIL from a validating resolver because of a DNSSEC validaion | a SERVFAIL from a validating resolver because of a DNSSEC validation | |||
| issue will simply ask the next (potentially non-validating) resolver | issue will simply ask the next (potentially non-validating) resolver | |||
| in their list, and thus don't get any of the protections which DNSSEC | in their list, and thus don't get the protections which DNSSEC should | |||
| should provide. | provide. | |||
| This information is unauthenticated information, and an attacker (e.g | EDE information is unauthenticated information, unless secured by a | |||
| a MITM or malicious recursive server) could insert an extended error | form of secured DNS transaction such as [RFC2845], [RFC2931] or | |||
| response into already untrusted data -- ideally clients and resolvers | [RFC8094]. An attacker (e.g a MITM or malicious recursive server) | |||
| would not trust any unauthenticated information, but until we live in | could insert an extended error response into untrusted data -- | |||
| an era where all DNS answers are authenticated via DNSSEC or other | although ideally clients and resolvers would not trust any | |||
| mechanisms [RFC2845] [RFC8094], there are some tradeoffs. As an | unauthenticated information. As such, EDE content should be treated | |||
| example, an attacker who is able to insert the DNSSEC Bogus Extended | only as diagnostic information and MUST NOT alter DNS protocol | |||
| Error into a packet could instead simply reply with a fictitious | processing. Until all DNS answers are authenticated via DNSSEC or | |||
| address (A or AAAA) record. Note that DNS Response Codes also | the other mechanisms mentioned above, there are some tradeoffs. As | |||
| contain no authentication and can be just as easily manipulated. | an example, an attacker who is able to insert the DNSSEC Bogus | |||
| Extended Error into a DNS message could instead simply reply with a | ||||
| fictitious address (A or AAAA) record. Note that DNS Response Codes | ||||
| (RCODEs) also contain no authentication and can be just as easily | ||||
| manipulated. | ||||
| By design, EDE potentially exposes additional information DNS | ||||
| resolution processes that may leak information. An example of this | ||||
| is the Prohibited EDE code (18), which may leak the fact that the | ||||
| name is on a blacklist. | ||||
| 7. Acknowledgements | 7. Acknowledgements | |||
| The authors wish to thank Joe Abley, Mark Andrews, Tim April, | The authors wish to thank Joe Abley, Mark Andrews, Tim April, | |||
| Vittorio Bertola, Stephane Bortzmeyer, Vladimir Cunat, Ralph Dolmans, | Vittorio Bertola, Stephane Bortzmeyer, Vladimir Cunat, Ralph Dolmans, | |||
| Peter DeVries, Peter van Dijk, Mats Dufberg, Donald Eastlake, Bob | Peter DeVries, Peter van Dijk, Mats Dufberg, Donald Eastlake, Bob | |||
| Harold, Paul Hoffman, Geoff Huston, Shane Kerr, Edward Lewis, Carlos | Harold, Paul Hoffman, Geoff Huston, Shane Kerr, Edward Lewis, Carlos | |||
| M. Martinez, George Michelson, Eric Orth, Michael Sheldon, Puneet | M. Martinez, George Michelson, Eric Orth, Michael Sheldon, Puneet | |||
| Sood, Petr Spacek, Ondrej Sury, John Todd, Loganaden Velvindron, and | Sood, Petr Spacek, Ondrej Sury, John Todd, Loganaden Velvindron, and | |||
| Paul Vixie. They also vaguely remember discussing this with a number | Paul Vixie. They also vaguely remember discussing this with a number | |||
| of people over the years, but have forgotten who all they were -- if | of people over the years, but have forgotten who all they were -- if | |||
| you were one of them, and are not listed, please let us know and | you were one of them, and are not listed, please let us know and | |||
| we'll acknowledge you. | we'll acknowledge you. | |||
| One author also wants to thank the band "Infected Mushroom" for | One author also wants to thank the band "Infected Mushroom" for | |||
| providing a good background soundtrack (and to see if he can get away | providing a good background soundtrack (and to see if he can get away | |||
| with this in an RFC!) Another author would like to thank the band | with this in an RFC!). Another author would like to thank the band | |||
| "Mushroom Infectors". This was funny at the time we wrote it, but we | "Mushroom Infectors". This was funny at the time we wrote it, but we | |||
| cannot remember why... | cannot remember why... | |||
| 8. References | 8. References | |||
| 8.1. Normative References | 8.1. Normative References | |||
| [I-D.ietf-dnsop-serve-stale] | ||||
| Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data | ||||
| to Improve DNS Resiliency", draft-ietf-dnsop-serve- | ||||
| stale-10 (work in progress), December 2019. | ||||
| [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/info/rfc2119>. | |||
| [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "Protocol Modifications for the DNS Security | Rose, "Protocol Modifications for the DNS Security | |||
| Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005, | Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005, | |||
| <https://www.rfc-editor.org/info/rfc4035>. | <https://www.rfc-editor.org/info/rfc4035>. | |||
| [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms | [RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms | |||
| for DNS (EDNS(0))", STD 75, RFC 6891, | for DNS (EDNS(0))", STD 75, RFC 6891, | |||
| DOI 10.17487/RFC6891, April 2013, | DOI 10.17487/RFC6891, April 2013, | |||
| <https://www.rfc-editor.org/info/rfc6891>. | <https://www.rfc-editor.org/info/rfc6891>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | ||||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | ||||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
| [RFC8499] Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS | ||||
| Terminology", BCP 219, RFC 8499, DOI 10.17487/RFC8499, | ||||
| January 2019, <https://www.rfc-editor.org/info/rfc8499>. | ||||
| [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/info/rfc8767>. | ||||
| 8.2. Informative References | 8.2. Informative References | |||
| [GeoffValidation] | [GeoffValidation] | |||
| APNIC, G. H., "A quick review of DNSSEC Validation in | APNIC, G. H., "A quick review of DNSSEC Validation in | |||
| today's Internet", June 2016, <http://www.potaroo.net/ | today's Internet", June 2016, <http://www.potaroo.net/ | |||
| presentations/2016-06-27-dnssec.pdf>. | presentations/2016-06-27-dnssec.pdf>. | |||
| [RFC2845] Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B. | [RFC2845] Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B. | |||
| Wellington, "Secret Key Transaction Authentication for DNS | Wellington, "Secret Key Transaction Authentication for DNS | |||
| (TSIG)", RFC 2845, DOI 10.17487/RFC2845, May 2000, | (TSIG)", RFC 2845, DOI 10.17487/RFC2845, May 2000, | |||
| <https://www.rfc-editor.org/info/rfc2845>. | <https://www.rfc-editor.org/info/rfc2845>. | |||
| [RFC2931] Eastlake 3rd, D., "DNS Request and Transaction Signatures | ||||
| ( SIG(0)s )", RFC 2931, DOI 10.17487/RFC2931, September | ||||
| 2000, <https://www.rfc-editor.org/info/rfc2931>. | ||||
| [RFC8094] Reddy, T., Wing, D., and P. Patil, "DNS over Datagram | [RFC8094] Reddy, T., Wing, D., and P. Patil, "DNS over Datagram | |||
| Transport Layer Security (DTLS)", RFC 8094, | Transport Layer Security (DTLS)", RFC 8094, | |||
| DOI 10.17487/RFC8094, February 2017, | DOI 10.17487/RFC8094, February 2017, | |||
| <https://www.rfc-editor.org/info/rfc8094>. | <https://www.rfc-editor.org/info/rfc8094>. | |||
| Authors' Addresses | Authors' Addresses | |||
| Warren Kumari | Warren Kumari | |||
| 1600 Amphitheatre Parkway | 1600 Amphitheatre Parkway | |||
| End of changes. 44 change blocks. | ||||
| 103 lines changed or deleted | 134 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/ | ||||