| < draft-ietf-dnsop-extended-error-08.txt | draft-ietf-dnsop-extended-error-09.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: February 10, 2020 ISC | Expires: March 13, 2020 ISC | |||
| R. Arends | R. Arends | |||
| ICANN | ICANN | |||
| W. Hardaker | W. Hardaker | |||
| USC/ISI | USC/ISI | |||
| D. Lawrence | D. Lawrence | |||
| Oracle + Dyn | Oracle + Dyn | |||
| August 09, 2019 | September 10, 2019 | |||
| Extended DNS Errors | Extended DNS Errors | |||
| draft-ietf-dnsop-extended-error-08 | draft-ietf-dnsop-extended-error-09 | |||
| 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. | information. | |||
| skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 February 10, 2020. | This Internet-Draft will expire on March 13, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction and background . . . . . . . . . . . . . . . . . 3 | 1. Introduction and background . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Extended Error EDNS0 option format . . . . . . . . . . . . . 4 | 2. Extended Error EDNS0 option format . . . . . . . . . . . . . 4 | |||
| 3. Use of the Extended DNS Error option . . . . . . . . . . . . 4 | 3. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. The INFO-CODE field . . . . . . . . . . . . . . . . . . . 5 | 3.1. Extended DNS Error Code 0 - Other . . . . . . . . . . . . 5 | |||
| 3.2. The EXTRA-TEXT field . . . . . . . . . . . . . . . . . . 5 | 3.2. Extended DNS Error Code 1 - | |||
| 4. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 5 | ||||
| 4.1. Extended DNS Error Code 0 - Other . . . . . . . . . . . . 5 | ||||
| 4.2. Extended DNS Error Code 1 - | ||||
| Unsupported DNSKEY Algorithm . . . . . . . . . . . . . . 5 | Unsupported DNSKEY Algorithm . . . . . . . . . . . . . . 5 | |||
| 4.3. Extended DNS Error Code 2 - Unsupported | 3.3. Extended DNS Error Code 2 - Unsupported | |||
| DS Algorithm . . . . . . . . . . . . . . . . . . . . . . 5 | DS Algorithm . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4.4. Extended DNS Error Code 3 - Stale Answer . . . . . . . . 5 | 3.4. Extended DNS Error Code 3 - Stale Answer . . . . . . . . 5 | |||
| 4.5. Extended DNS Error Code 4 - Forged Answer . . . . . . . . 6 | 3.5. Extended DNS Error Code 4 - Forged Answer . . . . . . . . 5 | |||
| 4.6. Extended DNS Error Code 5 - DNSSEC Indeterminate . . . . 6 | 3.6. Extended DNS Error Code 5 - DNSSEC Indeterminate . . . . 5 | |||
| 4.7. Extended DNS Error Code 6 - DNSSEC Bogus . . . . . . . . 6 | 3.7. Extended DNS Error Code 6 - DNSSEC Bogus . . . . . . . . 6 | |||
| 4.8. Extended DNS Error Code 7 - Signature Expired . . . . . . 6 | 3.8. Extended DNS Error Code 7 - Signature Expired . . . . . . 6 | |||
| 4.9. Extended DNS Error Code 8 - Signature Not Yet Valid . . . 6 | 3.9. Extended DNS Error Code 8 - Signature Not Yet Valid . . . 6 | |||
| 4.10. Extended DNS Error Code 9 - DNSKEY Missing . . . . . . . 6 | 3.10. Extended DNS Error Code 9 - DNSKEY Missing . . . . . . . 6 | |||
| 4.11. Extended DNS Error Code 10 - RRSIGs Missing . . . . . . . 6 | 3.11. Extended DNS Error Code 10 - RRSIGs Missing . . . . . . . 6 | |||
| 4.12. Extended DNS Error Code 11 - No Zone Key Bit Set . . . . 6 | 3.12. Extended DNS Error Code 11 - No Zone Key Bit Set . . . . 6 | |||
| 4.13. Extended DNS Error Code 12 - NSEC Missing . . . . . . . . 6 | 3.13. Extended DNS Error Code 12 - NSEC Missing . . . . . . . . 6 | |||
| 4.14. Extended DNS Error Code 13 - Cached Error . . . . . . . . 7 | 3.14. Extended DNS Error Code 13 - Cached Error . . . . . . . . 6 | |||
| 4.15. Extended DNS Error Code 14 - Not Ready . . . . . . . . . 7 | 3.15. Extended DNS Error Code 14 - Not Ready . . . . . . . . . 6 | |||
| 4.16. Extended DNS Error Code 15 - Blocked . . . . . . . . . . 7 | 3.16. Extended DNS Error Code 15 - Blocked . . . . . . . . . . 7 | |||
| 4.17. Extended DNS Error Code 16 - Censored . . . . . . . . . . 7 | 3.17. Extended DNS Error Code 16 - Censored . . . . . . . . . . 7 | |||
| 4.18. Extended DNS Error Code 17 - Prohibited . . . . . . . . . 7 | 3.18. Extended DNS Error Code 17 - Prohibited . . . . . . . . . 7 | |||
| 4.19. Extended DNS Error Code 18 - Stale Answer . . . . . . . . 7 | 3.19. Extended DNS Error Code 18 - Filtered . . . . . . . . . . 7 | |||
| 4.20. Extended DNS Error Code 19 - Lame . . . . . . . . . . . . 7 | 3.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer . . . 7 | |||
| 4.21. Extended DNS Error Code 20 - Deprecated . . . . . . . . . 8 | 3.21. Extended DNS Error Code 20 - Lame . . . . . . . . . . . . 7 | |||
| 4.22. Extended DNS Error Code 21 - No Reachable Authority . . . 8 | 3.22. Extended DNS Error Code 21 - Deprecated . . . . . . . . . 8 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 3.23. Extended DNS Error Code 22 - No Reachable Authority . . . 8 | |||
| 5.1. A New Extended Error Code EDNS Option . . . . . . . . . . 8 | 3.24. Extended DNS Error Code 23 - Network Error . . . . . . . 8 | |||
| 5.2. New Double-Index Registry Table for Extended Error Codes 8 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 4.1. A New Extended DNS Error Code EDNS Option . . . . . . . . 8 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 4.2. New Registry Table for Extended DNS Error Codes . . . . . 8 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 11 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 11 | ||||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 12 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 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 | |||
| a bad hair day? | some other failure? | |||
| A good example of issues that would benefit by additional error | A good example of issues that would benefit by 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 DNSSEC bogus name (using a validating | stub resolver queries a name which is DNSSEC bogus (using a | |||
| resolver), the stub resolver receives only a SERVFAIL in response. | validating resolver), the stub resolver receives only a SERVFAIL in | |||
| Unfortunately, SERVFAIL is used to signal many sorts of DNS errors, | response. Unfortunately, the SERVFAIL Response Code (RCODE) is used | |||
| and so the stub resolver simply asks the next configured DNS | to signal many sorts of DNS errors, and so the stub resolvers only | |||
| resolver. The result of trying the next resolver is one of two | option is to ask the next configured DNS resolver. The result of | |||
| outcomes: either the next resolver also validates, a SERVFAIL is | trying the next resolver is one of two outcomes: either the next | |||
| returned again, and the user gets an (largely) incomprehensible error | resolver also validates, and a SERVFAIL is returned again or the next | |||
| message; or the next resolver is not a validating resolver, and the | resolver is not a validating resolver, and the user is returned a | |||
| user is returned a potentially harmful result. | potentially harmful result. With an Extended DNS Error (EDE) option | |||
| enclosed in the response message, the resolver is able to return a | ||||
| more descriptive reason as to why any failures happened, or add | ||||
| additional context to a message containing a NOERROR RCODE. | ||||
| This document specifies a mechanism to extend (or annotate) DNS | This document specifies a mechanism to extend DNS errors to provide | |||
| errors to provide additional information about the cause of the | additional information about the cause of an error. These extended | |||
| error. These extended error codes are specially useful when received | DNS error codes described in this document and can be used by any | |||
| by resolvers, to return to stub resolvers or to downstream resolvers. | system that sends DNS queries and receives a response containing an | |||
| Authoritative servers MAY parse and use them, but most error codes | EDE option.. Different codes are useful in different circumstances, | |||
| would make no sense for them. Authoritative servers may need to | and thus different systems (stub resolvers, recursive resolvers, and | |||
| generate extended error codes though. | authoritative resolvers) might receive and use them. | |||
| This document does not allow or prohibit any particular extended | ||||
| error codes and information be matched with any particular RCODEs. | ||||
| Some combinations of extended error codes and RCODEs may seem | ||||
| nonsensical (such as resolver-specific extended error codes in | ||||
| responses from authoritative servers), so systems interpreting the | ||||
| extended error codes MUST NOT assume that a combination will make | ||||
| sense. Receivers MUST be able to accept EDE codes and EXTRA-TEXT in | ||||
| all messages, including even those with a NOERROR RCODE. | ||||
| 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", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 2. Extended Error EDNS0 option format | 2. Extended Error EDNS0 option format | |||
| This draft uses an EDNS0 ([RFC2671]) option to include Extended DNS | This draft uses an EDNS0 ([RFC2671]) option to include Extended DNS | |||
| skipping to change at page 4, line 32 ¶ | skipping to change at page 4, line 38 ¶ | |||
| Field definition details: | Field definition details: | |||
| o OPTION-CODE, 2 octets (defined in [RFC6891]]), for EDE is TBD. | o OPTION-CODE, 2 octets (defined in [RFC6891]]), for EDE is TBD. | |||
| [RFC Editor: change TBD to the proper code once assigned by IANA.] | [RFC Editor: change TBD to the proper code once assigned by IANA.] | |||
| o OPTION-LENGTH, 2 octets ((defined in [RFC6891]]) contains the | o OPTION-LENGTH, 2 octets ((defined in [RFC6891]]) contains the | |||
| length of the payload (everything after OPTION-LENGTH) in octets | length of the payload (everything after OPTION-LENGTH) in octets | |||
| and should be 4 plus the length of the EXTRA-TEXT section (which | and should be 4 plus the length of the EXTRA-TEXT section (which | |||
| may be a zero-length string). | 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. | document. This 16-bit value, encoded in network (MSB) byte order, | |||
| provides the additional context for the RESPONSE-CODE of the DNS | ||||
| message. The INFO-CODE serves as an index to the "Extended DNS | ||||
| Errors" registry Section 4.1. | ||||
| 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. Note: EXTRA-TEXT may be zero | |||
| octets in length, indicating there is no EXTRA-TEXT included. | octets in length, indicating there is no EXTRA-TEXT included. | |||
| Care should be take not to leak private information that an | ||||
| observer would not otherwise have access to, such as account | ||||
| numbers. | ||||
| 3. Use of the Extended DNS Error option | The Extended DNS Error (EDE) option can be included in any response | |||
| (SERVFAIL, NXDOMAIN, REFUSED, and even NOERROR, etc) to a query that | ||||
| The Extended DNS Error (EDE) is an EDNS option. It can be included | ||||
| in any response (SERVFAIL, NXDOMAIN, REFUSED, 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 (and requests to the IANA to add them to the | |||
| registry), but is extensible via the IANA registry to allow | registry), but is extensible via the IANA registry to allow | |||
| additional error and information codes to be defined in the future. | additional error and information codes to be defined in the future. | |||
| The fields of the Extended DNS Error option are defined further in | 3. Defined Extended DNS Errors | |||
| the following sub-sections. | ||||
| 3.1. The INFO-CODE field | ||||
| This 16-bit value, encoded in network (MSB) byte order, provides the | ||||
| additional context for the RESPONSE-CODE of the DNS message. The | ||||
| INFO-CODE serves as an index to the "Extended DNS Errors" registry | ||||
| Section 5.1. | ||||
| 3.2. The EXTRA-TEXT field | ||||
| The UTF-8-encoded, EXTRA-TEXT field may be zero-length, or may hold | ||||
| additional information useful to network operators. | ||||
| 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 4.1. 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 codes" IANA registry, the initial values for | the "Extended DNS Error" IANA registry, the initial values for which | |||
| which are defined in the following sub-sections. | are defined in the following sub-sections. | |||
| 4.1. Extended DNS Error Code 0 - Other | 3.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 a 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 | 3.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 unknown algorithms. | RRSET contained only unknown algorithms. | |||
| 4.3. Extended DNS Error Code 2 - Unsupported DS Algorithm | 3.3. Extended DNS Error Code 2 - Unsupported DS Algorithm | |||
| The resolver attempted to perform DNSSEC validation, but a DS RRSET | The resolver attempted to perform DNSSEC validation, but a DS RRSET | |||
| contained only unknown algorithms. | contained only unknown algorithms. | |||
| 4.4. Extended DNS Error Code 3 - Stale Answer | 3.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 answer within its time limits and | |||
| decided to answer with a previously cached data instead of answering | decided to answer with previously cached data instead of answering | |||
| with an error. This is typically caused by problems on authoritative | with an error. This is typically caused by problems communicating | |||
| side, possibly as result of a DoS attack. | with an authoritative serever, possibly as result of a DoS attack | |||
| against another network. | ||||
| 4.5. Extended DNS Error Code 4 - Forged Answer | 3.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. | instance), an answer was forged. | |||
| 4.6. Extended DNS Error Code 5 - DNSSEC Indeterminate | 3.6. Extended DNS Error Code 5 - DNSSEC Indeterminate | |||
| The resolver attempted to perform DNSSEC validation, but validation | The resolver attempted to perform DNSSEC validation, but validation | |||
| ended in the Indeterminate state. | ended in the Indeterminate state. | |||
| 4.7. Extended DNS Error Code 6 - DNSSEC Bogus | 3.7. Extended DNS Error Code 6 - DNSSEC Bogus | |||
| The resolver attempted to perform DNSSEC validation, but validation | The resolver attempted to perform DNSSEC validation, but validation | |||
| ended in the Bogus state. | ended in the Bogus state. | |||
| 4.8. Extended DNS Error Code 7 - Signature Expired | 3.8. Extended DNS Error Code 7 - Signature Expired | |||
| The resolver attempted to perform DNSSEC validation, a signature in | The resolver attempted to perform DNSSEC validation, but a signature | |||
| the validation chain was expired. | in the validation chain was expired. | |||
| 4.9. Extended DNS Error Code 8 - Signature Not Yet Valid | 3.9. Extended DNS Error Code 8 - Signature Not Yet Valid | |||
| The resolver attempted to perform DNSSEC validation, but the | The resolver attempted to perform DNSSEC validation, but the | |||
| signatures received were not yet valid. | signatures received were not yet valid. | |||
| 4.10. Extended DNS Error Code 9 - DNSKEY Missing | 3.10. Extended DNS Error Code 9 - DNSKEY Missing | |||
| A DS record existed at a parent, but no supported matching DNSKEY | A DS record existed at a parent, but no supported matching DNSKEY | |||
| record could be found for the child. | record could be found for the child. | |||
| 4.11. Extended DNS Error Code 10 - RRSIGs Missing | 3.11. Extended DNS Error Code 10 - RRSIGs Missing | |||
| The resolver attempted to perform DNSSEC validation, but no RRSIGs | The resolver attempted to perform DNSSEC validation, but no RRSIGs | |||
| could be found for at least one RRset where RRSIGs were expected. | could be found for at least one RRset where RRSIGs were expected. | |||
| 4.12. Extended DNS Error Code 11 - No Zone Key Bit Set | 3.12. Extended DNS Error Code 11 - No Zone Key Bit Set | |||
| The resolver attempted to perform DNSSEC validation, but no Zone Key | The resolver attempted to perform DNSSEC validation, but no Zone Key | |||
| Bit was set in a DNSKEY. | Bit was set in a DNSKEY. | |||
| 4.13. Extended DNS Error Code 12 - NSEC Missing | 3.13. Extended DNS Error Code 12 - NSEC Missing | |||
| 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 | 3.14. Extended DNS Error Code 13 - Cached Error | |||
| The resolver has cached SERVFAIL for this query without additional | The resolver has cached SERVFAIL for this query. | |||
| information. | ||||
| 4.15. Extended DNS Error Code 14 - Not Ready | 3.15. Extended DNS Error Code 14 - Not Ready | |||
| The server is unable to answer the query as it is not fully up and | The server is unable to answer the query as it is not fully | |||
| functional yet. | functional (yet). | |||
| 4.16. Extended DNS Error Code 15 - Blocked | 3.16. Extended DNS Error Code 15 - Blocked | |||
| The resolver attempted to perfom a DNS query but the domain is | The resolver attempted to perfom a DNS query but the domain is | |||
| blacklisted due to a security policy implemented on the server being | blacklisted due to a security policy implemented on the server being | |||
| directly talked to. | directly talked to. | |||
| 4.17. Extended DNS Error Code 16 - Censored | 3.17. Extended DNS Error Code 16 - Censored | |||
| The resolver attempted to perfom a DNS query but the domain was | The resolver attempted to perfom a DNS query but the domain was | |||
| blacklisted by a security policy imposed upon the server being talked | blacklisted by a security policy imposed upon the server being talked | |||
| to. Note that how the imposed policy is applied is irrelevant (in- | to. Note that how the imposed policy is applied is irrelevant (in- | |||
| band DNS somehow, court order, etc). | band DNS filtering, court order, etc). | |||
| 4.18. Extended DNS Error Code 17 - Prohibited | 3.18. Extended DNS Error Code 17 - Prohibited | |||
| An authoritative or recursive resolver that receives a query from an | An authoritative or recursive resolver that receives a query from an | |||
| "unauthorized" client can annotate its REFUSED message with this | "unauthorized" client can annotate its REFUSED message with this | |||
| code. Examples of "unauthorized" clients are recursive queries from | code. Examples of "unauthorized" clients are recursive queries from | |||
| IP addresses outside the network, blacklisted IP addresses, local | IP addresses outside the network, blacklisted IP addresses, local | |||
| policy, etc. | policy, etc. | |||
| 4.19. Extended DNS Error Code 18 - Stale Answer | 3.19. Extended DNS Error Code 18 - Filtered | |||
| The resolver was unable to resolve answer within its time limits and | An authoritative or recursive resolver that receives a query from a | |||
| decided to answer with a previously cached NXDOMAIN answer instead of | client that had requested certain domains be filtered can annotate | |||
| answering with an error. This is typically caused by problems on | its REFUSED message with this code. Functionally, this amounts to | |||
| authoritative side, possibly as result of a DoS attack. | "you requested that we filter domains like this one." | |||
| 4.20. Extended DNS Error Code 19 - Lame | 3.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer | |||
| The resolver was unable to resolve an answer within its configured | ||||
| time limits and decided to answer with a previously cached NXDOMAIN | ||||
| answer instead of answering with an error. This is typically caused | ||||
| by problems communicating with an authoritative serever, possibly as | ||||
| result of a DoS attack against another network. | ||||
| 3.21. Extended DNS Error Code 20 - Lame | ||||
| An authoritative server that receives a query (with the RD bit clear) | An authoritative server that receives a query (with the RD bit clear) | |||
| for a domain for which it is not authoritative SHOULD include this | for a domain for which it is not authoritative SHOULD include this | |||
| EDE code in the SERVFAIL response. A resolver that receives a query | EDE code in the SERVFAIL response. A resolver that receives a query | |||
| (with the RD bit clear) SHOULD include this EDE code in the REFUSED | (with the RD bit clear) SHOULD include this EDE code in the REFUSED | |||
| response. | response. | |||
| 4.21. Extended DNS Error Code 20 - Deprecated | 3.22. Extended DNS Error Code 21 - Deprecated | |||
| The requested operation or query is not supported as its use has been | The requested operation or query is not supported as its use has been | |||
| deprecated. | deprecated. | |||
| 4.22. Extended DNS Error Code 21 - No Reachable Authority | 3.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 refused to reply). | |||
| 5. IANA Considerations | 3.24. Extended DNS Error Code 23 - Network Error | |||
| 5.1. A New Extended Error Code EDNS Option | An unrecoverable error occurred while communicating with another | |||
| server. | ||||
| 4. IANA Considerations | ||||
| 4.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 TBD1 from the "DNS EDNS0 Option Codes | Error", assigned a value of TBD1 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 TBD [ This document ] | |||
| 5.2. New Double-Index Registry Table for Extended Error Codes | 4.2. New Registry Table for Extended DNS Error Codes | |||
| This document defines a new double-index IANA registry table, where | This document defines a new IANA registry table, where the index | |||
| the index value is the INFO-CODE from the Extended DNS Error EDNS | value is the INFO-CODE from the "Extended DNS Error" EDNS option | |||
| option defined in this document. The IANA is requested to create and | defined in this document. The IANA is requested to create and | |||
| maintain this "Extended DNS Error codes" registry. The code-point | maintain this "Extended DNS Error" codes registry. The code-point | |||
| space for each INFO-CODE index is to be broken into 3 ranges: | space for the INFO-CODE index is to be broken into 3 ranges: | |||
| o 0 - 32767: Specification required. | o 0 - 32767: Expert Review [RFC2434]. | |||
| o 32768 - 49151: First come, first served. | o 32768 - 49151: First come, first served. | |||
| o 49152 - 65535: Experimental / Private use | o 49152 - 65535: Experimental / Private use. | |||
| A starting set of entries, based on the contents of this document, is | A starting set of entries, based on the contents of this document, is | |||
| as follows: | as follows: | |||
| INFO-CODE: 0 | INFO-CODE: 0 | |||
| Purpose: Other Error | Purpose: Other Error | |||
| Reference: Section 4.1 | Reference: Section 3.1 | |||
| INFO-CODE: 1 | INFO-CODE: 1 | |||
| Purpose: Unsupported DNSKEY Algorithm | Purpose: Unsupported DNSKEY Algorithm | |||
| Reference: Section 4.2 | Reference: Section 3.2 | |||
| INFO-CODE: 2 | INFO-CODE: 2 | |||
| Purpose: Unsupported DS Algorithm | Purpose: Unsupported DS Algorithm | |||
| Reference: Section 4.3 | Reference: Section 3.3 | |||
| INFO-CODE: 3 | INFO-CODE: 3 | |||
| Purpose: Answering with stale/cached data | Purpose: Stale Answer | |||
| Reference: Section 4.4 | Reference: Section 3.4 | |||
| INFO-CODE: 4 | INFO-CODE: 4 | |||
| Purpose: Forged Answer | Purpose: Forged Answer | |||
| Reference: Section 4.5 | Reference: Section 3.5 | |||
| INFO-CODE: 5 | INFO-CODE: 5 | |||
| Purpose: DNSSEC Indeterminate | Purpose: DNSSEC Indeterminate | |||
| Reference: Section 4.6 | Reference: Section 3.6 | |||
| INFO-CODE: 6 | INFO-CODE: 6 | |||
| Purpose: DNSSEC Bogus | Purpose: DNSSEC Bogus | |||
| Reference: Section 4.7 | Reference: Section 3.7 | |||
| INFO-CODE: 7 | INFO-CODE: 7 | |||
| Purpose: Signature Expired | Purpose: Signature Expired | |||
| Reference: Section 4.8 | Reference: Section 3.8 | |||
| INFO-CODE: 8 | INFO-CODE: 8 | |||
| Purpose: Signature Not Yet Valid | Purpose: Signature Not Yet Valid | |||
| Reference: Section 4.9 | Reference: Section 3.9 | |||
| INFO-CODE: 9 | INFO-CODE: 9 | |||
| Purpose: DNSKEY Missing | Purpose: DNSKEY Missing | |||
| Reference: Section 4.10 | Reference: Section 3.10 | |||
| INFO-CODE: 10 | INFO-CODE: 10 | |||
| Purpose: RRSIGs Missing | Purpose: RRSIGs Missing | |||
| Reference: Section 4.11 | Reference: Section 3.11 | |||
| INFO-CODE: 11 | INFO-CODE: 11 | |||
| Purpose: No Zone Key Bit Set | Purpose: No Zone Key Bit Set | |||
| Reference: Section 4.12 | Reference: Section 3.12 | |||
| INFO-CODE: 12 | INFO-CODE: 12 | |||
| Purpose: No NSEC records could be obtained | Purpose: NSEC Missing | |||
| Reference: Section 4.13 | Reference: Section 3.13 | |||
| INFO-CODE: 13 | INFO-CODE: 13 | |||
| Purpose: The SERVFAIL error comes from the cache | Purpose: Cached Error | |||
| Reference: Section 4.14 | Reference: Section 3.14 | |||
| INFO-CODE: 14 | INFO-CODE: 14 | |||
| Purpose: Not Ready. | Purpose: Not Ready. | |||
| Reference: Section 4.15 | Reference: Section 3.15 | |||
| INFO-CODE: 15 | INFO-CODE: 15 | |||
| Purpose: Blocked | Purpose: Blocked | |||
| Reference: Section 4.16 | Reference: Section 3.16 | |||
| INFO-CODE: 16 | INFO-CODE: 16 | |||
| Purpose: Censored | Purpose: Censored | |||
| Reference: Section 4.17 | Reference: Section 3.17 | |||
| INFO-CODE: 17 | INFO-CODE: 17 | |||
| Purpose: Prohibited | Purpose: Prohibited | |||
| Reference: Section 4.18 | Reference: Section 3.18 | |||
| INFO-CODE: 18 | INFO-CODE: 18 | |||
| Purpose: Answering with stale/cached NXDOMAIN data | Purpose: Filtered | |||
| Reference: Section 4.19 | Reference: Section 3.19 | |||
| INFO-CODE: 19 | INFO-CODE: 19 | |||
| Purpose: Lame | Purpose: Stale NXDomain Answer | |||
| Reference: Section 4.20 | Reference: Section 3.20 | |||
| INFO-CODE: 20 | INFO-CODE: 20 | |||
| Purpose: Deprecated | Purpose: Lame | |||
| Reference: Section 4.21 | Reference: Section 3.21 | |||
| INFO-CODE: 21 | INFO-CODE: 21 | |||
| Purpose: Deprecated | ||||
| Reference: Section 3.22 | ||||
| INFO-CODE: 22 | ||||
| Purpose: No Reachable Authority | Purpose: No Reachable Authority | |||
| Reference: Section 4.21 | Reference: Section 3.23 | |||
| 6. Security Considerations | INFO-CODE: 23 | |||
| Purpose: Network Error | ||||
| Reference: Section 3.24 | ||||
| 5. 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 validaion | |||
| 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 any of the protections which DNSSEC | |||
| should provide. This is very similar to a kid asking his mother if | should provide. | |||
| he can have another cookie. When the mother says "No, it will ruin | ||||
| your dinner!", going off and asking his (more permissive) father and | ||||
| getting a "Yes, sure, have a cookie!". | ||||
| This information is unauthenticated information, and an attacker (e.g | This information is unauthenticated information, and an attacker (e.g | |||
| MITM or malicious recursive server) could insert an extended error | a MITM or malicious recursive server) could insert an extended error | |||
| response into already untrusted data -- ideally clients and resolvers | response into already untrusted data -- ideally clients and resolvers | |||
| would not trust any unauthenticated information, but until we live in | would not trust any unauthenticated information, but until we live in | |||
| an era where all DNS answers are authenticated via DNSSEC or other | an era where all DNS answers are authenticated via DNSSEC or other | |||
| mechanisms, there are some tradeoffs. As an example, an attacker who | mechanisms [RFC2845] [RFC8094], there are some tradeoffs. As an | |||
| is able to insert the DNSSEC Bogus Extended Error into a packet could | example, an attacker who is able to insert the DNSSEC Bogus Extended | |||
| instead simply reply with a fictitious address (A or AAAA) record. | Error into a packet could instead simply reply with a fictitious | |||
| address (A or AAAA) record. | ||||
| 7. Acknowledgements | 6. Acknowledgements | |||
| The authors wish to thank Joe Abley, Mark Andrews, Stephane | The authors wish to thank Joe Abley, Mark Andrews, Vittorio Bertola, | |||
| Bortzmeyer, Vladimir Cunat, Ralph Dolmans, Peter DeVries, Peter van | Stephane Bortzmeyer, Vladimir Cunat, Ralph Dolmans, Peter DeVries, | |||
| Dijk, Donald Eastlake, Bob Harold, Geoff Huston, Shane Kerr, Edward | Peter van Dijk, Donald Eastlake, Bob Harold, Paul Hoffman, Geoff | |||
| Lewis, Carlos M. Martinez, George Michelson, Michael Sheldon, Puneet | Huston, Shane Kerr, Edward Lewis, Carlos M. Martinez, George | |||
| Sood, Petr Spacek, Ondrej Sury, Loganaden Velvindron, and Paul Vixie. | Michelson, Michael Sheldon, Puneet Sood, Petr Spacek, Ondrej Sury, | |||
| They also vaguely remember discussing this with a number of people | Loganaden Velvindron, and Paul Vixie. They also vaguely remember | |||
| over the years, but have forgotten who all they were -- if you were | discussing this with a number of people over the years, but have | |||
| one of them, and are not listed, please let us know and we'll | forgotten who all they were -- if you were one of them, and are not | |||
| acknowledge you. | listed, please let us know and we'll acknowledge you. | |||
| I also want to thank the band "Infected Mushroom" for providing a | One author also wants to thank the band "Infected Mushroom" for | |||
| good background soundtrack (and to see if I can get away with this!) | providing a good background soundtrack (and to see if he can get away | |||
| Another author would like to thank the band "Mushroom Infectors". | with this in an RFC!) Another author would like to thank the band | |||
| This was funny at the time we wrote it, but we cannot remember why... | "Mushroom Infectors". This was funny at the time we wrote it, but we | |||
| cannot remember why... | ||||
| 8. References | 7. References | |||
| 8.1. Normative References | 7.1. Normative References | |||
| [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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", RFC 2434, | ||||
| DOI 10.17487/RFC2434, October 1998, <https://www.rfc- | ||||
| editor.org/info/rfc2434>. | ||||
| [RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", | [RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", | |||
| RFC 2671, DOI 10.17487/RFC2671, August 1999, | RFC 2671, DOI 10.17487/RFC2671, August 1999, | |||
| <https://www.rfc-editor.org/info/rfc2671>. | <https://www.rfc-editor.org/info/rfc2671>. | |||
| [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, <https://www.rfc- | DOI 10.17487/RFC6891, April 2013, <https://www.rfc- | |||
| editor.org/info/rfc6891>. | editor.org/info/rfc6891>. | |||
| 8.2. Informative References | 7.2. Informative References | |||
| [GeoffValidation] | [GeoffValidation] | |||
| IANA, "A quick review of DNSSEC Validation in today's | IANA, "A quick review of DNSSEC Validation in today's | |||
| Internet", June 2016, <http://www.potaroo.net/ | 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>. | |||
| End of changes. 85 change blocks. | ||||
| 182 lines changed or deleted | 205 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/ | ||||