| < draft-ietf-dnsop-extended-error-12.txt | draft-ietf-dnsop-extended-error-13.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: April 3, 2020 ISC | Expires: June 20, 2020 ISC | |||
| R. Arends | R. Arends | |||
| ICANN | ICANN | |||
| W. Hardaker | W. Hardaker | |||
| USC/ISI | USC/ISI | |||
| D. Lawrence | D. Lawrence | |||
| Oracle + Dyn | Oracle + Dyn | |||
| October 01, 2019 | December 18, 2019 | |||
| Extended DNS Errors | Extended DNS Errors | |||
| draft-ietf-dnsop-extended-error-12 | draft-ietf-dnsop-extended-error-13 | |||
| 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. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 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 April 3, 2020. | This Internet-Draft will expire on June 20, 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 | (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 | |||
| 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 . . . . . . . . . . . . . . . . . . 4 | 1.1. Requirements notation . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Extended DNS Error EDNS0 option format . . . . . . . . . . . 4 | 2. Extended DNS Error EDNS0 option format . . . . . . . . . . . 4 | |||
| 3. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 5 | 3. Extended DNS Error Processing . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Extended DNS Error Code 0 - Other . . . . . . . . . . . . 5 | 4. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. Extended DNS Error Code 1 - | 4.1. Extended DNS Error Code 0 - Other . . . . . . . . . . . . 5 | |||
| Unsupported DNSKEY Algorithm . . . . . . . . . . . . . . 5 | 4.2. Extended DNS Error Code 1 - | |||
| 3.3. Extended DNS Error Code 2 - Unsupported DS | Unsupported DNSKEY Algorithm . . . . . . . . . . . . . . 6 | |||
| Digest Type . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.3. Extended DNS Error Code 2 - Unsupported DS | |||
| 3.4. Extended DNS Error Code 3 - Stale Answer . . . . . . . . 5 | Digest Type . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.5. Extended DNS Error Code 4 - Forged Answer . . . . . . . . 6 | 4.4. Extended DNS Error Code 3 - Stale Answer . . . . . . . . 6 | |||
| 3.6. Extended DNS Error Code 5 - DNSSEC Indeterminate . . . . 6 | 4.5. Extended DNS Error Code 4 - Forged Answer . . . . . . . . 6 | |||
| 3.7. Extended DNS Error Code 6 - DNSSEC Bogus . . . . . . . . 6 | 4.6. Extended DNS Error Code 5 - DNSSEC Indeterminate . . . . 6 | |||
| 3.8. Extended DNS Error Code 7 - Signature Expired . . . . . . 6 | 4.7. Extended DNS Error Code 6 - DNSSEC Bogus . . . . . . . . 6 | |||
| 3.9. Extended DNS Error Code 8 - Signature Not Yet Valid . . . 6 | 4.8. Extended DNS Error Code 7 - Signature Expired . . . . . . 6 | |||
| 3.10. Extended DNS Error Code 9 - DNSKEY Missing . . . . . . . 6 | 4.9. Extended DNS Error Code 8 - Signature Not Yet Valid . . . 6 | |||
| 3.11. Extended DNS Error Code 10 - RRSIGs Missing . . . . . . . 6 | 4.10. Extended DNS Error Code 9 - DNSKEY Missing . . . . . . . 7 | |||
| 3.12. Extended DNS Error Code 11 - No Zone Key Bit Set . . . . 6 | 4.11. Extended DNS Error Code 10 - RRSIGs Missing . . . . . . . 7 | |||
| 3.13. Extended DNS Error Code 12 - NSEC Missing . . . . . . . . 6 | 4.12. Extended DNS Error Code 11 - No Zone Key Bit Set . . . . 7 | |||
| 3.14. Extended DNS Error Code 13 - Cached Error . . . . . . . . 7 | 4.13. Extended DNS Error Code 12 - NSEC Missing . . . . . . . . 7 | |||
| 3.15. Extended DNS Error Code 14 - Not Ready . . . . . . . . . 7 | 4.14. Extended DNS Error Code 13 - Cached Error . . . . . . . . 7 | |||
| 3.16. Extended DNS Error Code 15 - Blocked . . . . . . . . . . 7 | 4.15. Extended DNS Error Code 14 - Not Ready . . . . . . . . . 7 | |||
| 3.17. Extended DNS Error Code 16 - Censored . . . . . . . . . . 7 | 4.16. Extended DNS Error Code 15 - Blocked . . . . . . . . . . 7 | |||
| 3.18. Extended DNS Error Code 17 - Filtered . . . . . . . . . . 7 | 4.17. Extended DNS Error Code 16 - Censored . . . . . . . . . . 7 | |||
| 3.19. Extended DNS Error Code 18 - Prohibited . . . . . . . . . 7 | 4.18. Extended DNS Error Code 17 - Filtered . . . . . . . . . . 7 | |||
| 3.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer . . . 7 | 4.19. Extended DNS Error Code 18 - Prohibited . . . . . . . . . 8 | |||
| 3.21. Extended DNS Error Code 20 - Not Authoritative . . . . . 8 | 4.20. Extended DNS Error Code 19 - Stale NXDOMAIN Answer . . . 8 | |||
| 3.22. Extended DNS Error Code 21 - Not Supported . . . . . . . 8 | 4.21. Extended DNS Error Code 20 - Not Authoritative . . . . . 8 | |||
| 3.23. Extended DNS Error Code 22 - No Reachable Authority . . . 8 | 4.22. Extended DNS Error Code 21 - Not Supported . . . . . . . 8 | |||
| 3.24. Extended DNS Error Code 23 - Network Error . . . . . . . 8 | 4.23. Extended DNS Error Code 22 - No Reachable Authority . . . 8 | |||
| 3.25. Extended DNS Error Code 24 - Invalid Data . . . . . . . . 8 | 4.24. Extended DNS Error Code 23 - Network Error . . . . . . . 8 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 4.25. Extended DNS Error Code 24 - Invalid Data . . . . . . . . 8 | |||
| 4.1. A New Extended DNS Error Code EDNS Option . . . . . . . . 8 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.2. New Registry Table for Extended DNS Error Codes . . . . . 8 | 5.1. A New Extended DNS Error Code EDNS Option . . . . . . . . 9 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 5.2. New Registry Table for Extended DNS Error Codes . . . . . 9 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 12 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 13 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 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 | |||
| skipping to change at page 4, line 20 ¶ | skipping to change at page 4, line 21 ¶ | |||
| in a DNS message. | 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", "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 DNS Error EDNS0 option format | 2. Extended DNS Error EDNS0 option format | |||
| This draft uses an EDNS0 ([RFC2671]) 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 | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| 0: | OPTION-CODE | | 0: | OPTION-CODE | | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| 2: | OPTION-LENGTH | | 2: | OPTION-LENGTH | | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| skipping to change at page 4, line 43 ¶ | skipping to change at page 4, line 44 ¶ | |||
| 6: / EXTRA-TEXT ... / | 6: / EXTRA-TEXT ... / | |||
| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |||
| Field definition details: | Field definition details: | |||
| o OPTION-CODE, 2-octets/16-bits (defined in [RFC6891]]), for EDE is | o OPTION-CODE, 2-octets/16-bits (defined in [RFC6891]]), for EDE is | |||
| 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 4 plus the length of the EXTRA-TEXT section | 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 4.1. | Errors" registry Section 5.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 taken not to leak private information that an | Care should be taken not to leak private information that an | |||
| observer would not otherwise have access to, such as account | observer would not otherwise have access to, such as account | |||
| numbers. | 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 (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. | |||
| 3. Defined Extended DNS Errors | 3. Extended DNS Error Processing | |||
| When the response grows beyond the requestor's UDP payload size | ||||
| [RFC6891], servers SHOULD truncate messages by dropping EDE options | ||||
| before dropping other data from packets. Implementations SHOULD set | ||||
| the truncation bit when dropping EDE options. | ||||
| When a resolver or forwarder receives an EDE option, whether or not | ||||
| (and how) to pass along EDE information on to their original client | ||||
| is implementation dependent. Implementations MAY choose to not | ||||
| forward information, or they MAY choose to create a new EDE option(s) | ||||
| that conveys the information encoded in the received EDE. When doing | ||||
| so, care should be taken to ensure any information is properly | ||||
| attributed since an EDNS0 option received by the original client will | ||||
| be perceived only to have come from the resolver or forwarder sending | ||||
| it. | ||||
| 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 4.1. The | registered in the "Extended DNS Errors" registry Section 5.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" 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. | |||
| 3.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 a EXTRA-TEXT | |||
| value to augment this error code with additional information. | value to augment this error code with additional information. | |||
| 3.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. | |||
| 3.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. | |||
| 3.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 answer within its time limits and | |||
| decided to answer with 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 communicating | with an error. This is typically caused by problems communicating | |||
| with an authoritative serever, possibly as result of a DoS attack | with an authoritative serever, possibly as result of a DoS attack | |||
| against another network. | against another network. | |||
| 3.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. | |||
| 3.6. Extended DNS Error Code 5 - DNSSEC Indeterminate | 4.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 [RFC4035]. | ended in the Indeterminate state [RFC4035]. | |||
| 3.7. Extended DNS Error Code 6 - DNSSEC Bogus | 4.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. | |||
| 3.8. Extended DNS Error Code 7 - Signature Expired | 4.8. Extended DNS Error Code 7 - Signature Expired | |||
| The resolver attempted to perform DNSSEC validation, but no | The resolver attempted to perform DNSSEC validation, but no | |||
| signatures are presently valid and some (often all) are expired. | signatures are presently valid and some (often all) are expired. | |||
| 3.9. Extended DNS Error Code 8 - Signature Not Yet Valid | 4.9. Extended DNS Error Code 8 - Signature Not Yet Valid | |||
| The resolver attempted to perform DNSSEC validation, but but no | The resolver attempted to perform DNSSEC validation, but but no | |||
| signatures are presently valid and at least some are not yet valid. | signatures are presently valid and at least some are not yet valid. | |||
| 3.10. Extended DNS Error Code 9 - DNSKEY Missing | 4.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. | |||
| 3.11. Extended DNS Error Code 10 - RRSIGs Missing | 4.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. | |||
| 3.12. Extended DNS Error Code 11 - No Zone Key Bit Set | 4.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. | |||
| 3.13. Extended DNS Error Code 12 - NSEC Missing | 4.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. | |||
| 3.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. | |||
| 3.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 is not fully | |||
| functional (yet). | functional (yet). | |||
| 3.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 being directly talked to. | |||
| 3.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 by a security policy imposed upon the server being talked | |||
| to by an external requirement. Note that how the imposed policy is | to by an external requirement. Note that how the imposed policy is | |||
| applied is irrelevant (in-band DNS filtering, court order, etc). | applied is irrelevant (in-band DNS filtering, court order, etc). | |||
| 3.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." | |||
| 3.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 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. | |||
| 3.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 is may be caused, | |||
| for example, by problems communicating with an authoritative server, | for example, by problems communicating with an authoritative server, | |||
| possibly as result of a DoS attack against another network. | possibly as result of a DoS attack against another network. | |||
| 3.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 not configured for recursion) for a domain for which it is | |||
| not authoritative SHOULD include this EDE code in the REFUSED | 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. | |||
| 3.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 as its use has been | |||
| deprecated. | deprecated. | |||
| 3.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 refused to reply). | |||
| 3.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. | |||
| 3.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 | An authoritative server that cannot answer with data for a zone it is | |||
| otherwise configured to support. This may occur because its most | otherwise configured to support. This may occur because its most | |||
| recent zone is too old, or has expired, for example. | recent zone is too old, or has expired, for example. | |||
| 4. IANA Considerations | 5. IANA Considerations | |||
| 4.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 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 ] | |||
| 4.2. New Registry Table for Extended DNS Error Codes | 5.2. New Registry Table for Extended DNS Error Codes | |||
| This document defines a new IANA registry table, where the index | This document defines a new IANA registry table, where the index | |||
| value is the INFO-CODE from the "Extended DNS Error" EDNS option | value is the INFO-CODE from the "Extended DNS Error" EDNS 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 the INFO-CODE index is to be broken into 3 ranges: | space for the INFO-CODE index is to be broken into 2 ranges: | |||
| o 0 - 32767: Expert Review [RFC2434]. | o 0 - 49151: First come, first served. | |||
| o 32768 - 49151: First come, first served. | o 49152 - 65280: 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 3.1 | Reference: Section 4.1 | |||
| INFO-CODE: 1 | INFO-CODE: 1 | |||
| Purpose: Unsupported DNSKEY Algorithm | Purpose: Unsupported DNSKEY Algorithm | |||
| Reference: Section 3.2 | Reference: Section 4.2 | |||
| INFO-CODE: 2 | INFO-CODE: 2 | |||
| Purpose: Unsupported DS Digest Type | Purpose: Unsupported DS Digest Type | |||
| Reference: Section 3.3 | Reference: Section 4.3 | |||
| INFO-CODE: 3 | INFO-CODE: 3 | |||
| Purpose: Stale Answer | Purpose: Stale Answer | |||
| Reference: Section 3.4, [I-D.ietf-dnsop-serve-stale] | Reference: Section 4.4, [I-D.ietf-dnsop-serve-stale] | |||
| INFO-CODE: 4 | INFO-CODE: 4 | |||
| Purpose: Forged Answer | Purpose: Forged Answer | |||
| Reference: Section 3.5 | Reference: Section 4.5 | |||
| INFO-CODE: 5 | INFO-CODE: 5 | |||
| Purpose: DNSSEC Indeterminate | Purpose: DNSSEC Indeterminate | |||
| Reference: Section 3.6 | Reference: Section 4.6 | |||
| INFO-CODE: 6 | INFO-CODE: 6 | |||
| Purpose: DNSSEC Bogus | Purpose: DNSSEC Bogus | |||
| Reference: Section 3.7 | Reference: Section 4.7 | |||
| INFO-CODE: 7 | INFO-CODE: 7 | |||
| Purpose: Signature Expired | Purpose: Signature Expired | |||
| Reference: Section 3.8 | Reference: Section 4.8 | |||
| INFO-CODE: 8 | INFO-CODE: 8 | |||
| Purpose: Signature Not Yet Valid | Purpose: Signature Not Yet Valid | |||
| Reference: Section 3.9 | Reference: Section 4.9 | |||
| INFO-CODE: 9 | INFO-CODE: 9 | |||
| Purpose: DNSKEY Missing | Purpose: DNSKEY Missing | |||
| Reference: Section 3.10 | Reference: Section 4.10 | |||
| INFO-CODE: 10 | INFO-CODE: 10 | |||
| Purpose: RRSIGs Missing | Purpose: RRSIGs Missing | |||
| Reference: Section 3.11 | Reference: Section 4.11 | |||
| INFO-CODE: 11 | INFO-CODE: 11 | |||
| Purpose: No Zone Key Bit Set | Purpose: No Zone Key Bit Set | |||
| Reference: Section 3.12 | Reference: Section 4.12 | |||
| INFO-CODE: 12 | INFO-CODE: 12 | |||
| Purpose: NSEC Missing | Purpose: NSEC Missing | |||
| Reference: Section 3.13 | Reference: Section 4.13 | |||
| INFO-CODE: 13 | INFO-CODE: 13 | |||
| Purpose: Cached Error | Purpose: Cached Error | |||
| Reference: Section 3.14 | Reference: Section 4.14 | |||
| INFO-CODE: 14 | INFO-CODE: 14 | |||
| Purpose: Not Ready. | Purpose: Not Ready. | |||
| Reference: Section 3.15 | Reference: Section 4.15 | |||
| INFO-CODE: 15 | INFO-CODE: 15 | |||
| Purpose: Blocked | Purpose: Blocked | |||
| Reference: Section 3.16 | Reference: Section 4.16 | |||
| INFO-CODE: 16 | INFO-CODE: 16 | |||
| Purpose: Censored | Purpose: Censored | |||
| Reference: Section 3.17 | Reference: Section 4.17 | |||
| INFO-CODE: 17 | INFO-CODE: 17 | |||
| Purpose: Filtered | Purpose: Filtered | |||
| Reference: Section 3.18 | Reference: Section 4.18 | |||
| INFO-CODE: 18 | INFO-CODE: 18 | |||
| Purpose: Prohibited | Purpose: Prohibited | |||
| Reference: Section 3.19 | Reference: Section 4.19 | |||
| INFO-CODE: 19 | INFO-CODE: 19 | |||
| Purpose: Stale NXDomain Answer | Purpose: Stale NXDomain Answer | |||
| Reference: Section 3.20 | Reference: Section 4.20 | |||
| INFO-CODE: 20 | INFO-CODE: 20 | |||
| Purpose: Not Authoritative | Purpose: Not Authoritative | |||
| Reference: Section 3.21 | Reference: Section 4.21 | |||
| INFO-CODE: 21 | INFO-CODE: 21 | |||
| Purpose: Not Supported | Purpose: Not Supported | |||
| Reference: Section 3.22 | Reference: Section 4.22 | |||
| INFO-CODE: 22 | INFO-CODE: 22 | |||
| Purpose: No Reachable Authority | Purpose: No Reachable Authority | |||
| Reference: Section 3.23 | Reference: Section 4.23 | |||
| INFO-CODE: 23 | INFO-CODE: 23 | |||
| Purpose: Network Error | Purpose: Network Error | |||
| Reference: Section 3.24 | Reference: Section 4.24 | |||
| INFO-CODE: 24 | INFO-CODE: 24 | |||
| Purpose: Invalid Data | Purpose: Invalid Data | |||
| Reference: Section 3.25 | Reference: Section 4.25 | |||
| 5. 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 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. | should provide. | |||
| This information is unauthenticated information, and an attacker (e.g | This information is unauthenticated information, and an attacker (e.g | |||
| a 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 [RFC2845] [RFC8094], there are some tradeoffs. As an | mechanisms [RFC2845] [RFC8094], there are some tradeoffs. As an | |||
| example, an attacker who is able to insert the DNSSEC Bogus Extended | example, an attacker who is able to insert the DNSSEC Bogus Extended | |||
| Error into a packet could instead simply reply with a fictitious | Error into a packet could instead simply reply with a fictitious | |||
| address (A or AAAA) record. Note that DNS Response Codes also | address (A or AAAA) record. Note that DNS Response Codes also | |||
| contain no authentication and can be just as easily manipulated. | contain no authentication and can be just as easily manipulated. | |||
| 6. 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... | |||
| 7. References | 8. References | |||
| 7.1. Normative References | 8.1. Normative References | |||
| [I-D.ietf-dnsop-serve-stale] | [I-D.ietf-dnsop-serve-stale] | |||
| Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data | Lawrence, D., Kumari, W., and P. Sood, "Serving Stale Data | |||
| to Improve DNS Resiliency", draft-ietf-dnsop-serve- | to Improve DNS Resiliency", draft-ietf-dnsop-serve- | |||
| stale-08 (work in progress), September 2019. | 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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
| editor.org/info/rfc2119>. | <https://www.rfc-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)", | ||||
| RFC 2671, DOI 10.17487/RFC2671, August 1999, | ||||
| <https://www.rfc-editor.org/info/rfc2671>. | ||||
| [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, <https://www.rfc- | DOI 10.17487/RFC6891, April 2013, | |||
| editor.org/info/rfc6891>. | <https://www.rfc-editor.org/info/rfc6891>. | |||
| 7.2. Informative References | 8.2. Informative References | |||
| [GeoffValidation] | [GeoffValidation] | |||
| IANA, "A quick review of DNSSEC Validation in today's | APNIC, G. H., "A quick review of DNSSEC Validation in | |||
| 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>. | |||
| [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, <https://www.rfc- | DOI 10.17487/RFC8094, February 2017, | |||
| 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 | |||
| Mountain View, CA 94043 | Mountain View, CA 94043 | |||
| US | US | |||
| Email: warren@kumari.net | Email: warren@kumari.net | |||
| End of changes. 77 change blocks. | ||||
| 129 lines changed or deleted | 136 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/ | ||||