draft-ietf-dnsop-extended-error-04.txt | draft-ietf-dnsop-extended-error-05.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 11, 2019 ISC | Expires: September 12, 2019 ISC | |||
R. Arends | R. Arends | |||
ICANN | ICANN | |||
W. Hardaker | W. Hardaker | |||
USC/ISI | USC/ISI | |||
D. Lawrence | D. Lawrence | |||
Oracle + Dyn | Oracle + Dyn | |||
January 07, 2019 | March 11, 2019 | |||
Extended DNS Errors | Extended DNS Errors | |||
draft-ietf-dnsop-extended-error-04 | draft-ietf-dnsop-extended-error-05 | |||
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 July 11, 2019. | This Internet-Draft will expire on September 12, 2019. | |||
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 . . . . . . . . . . . . . 3 | 2. Extended Error EDNS0 option format . . . . . . . . . . . . . 4 | |||
3. Use of the Extended DNS Error option . . . . . . . . . . . . 4 | 3. Use of the Extended DNS Error option . . . . . . . . . . . . 5 | |||
3.1. The R (Retry) flag . . . . . . . . . . . . . . . . . . . 5 | 3.1. The R (Retry) flag . . . . . . . . . . . . . . . . . . . 5 | |||
3.2. The RESPONSE-CODE field . . . . . . . . . . . . . . . . . 5 | 3.2. The RESPONSE-CODE field . . . . . . . . . . . . . . . . . 5 | |||
3.3. The INFO-CODE field . . . . . . . . . . . . . . . . . . . 5 | 3.3. The INFO-CODE field . . . . . . . . . . . . . . . . . . . 6 | |||
3.4. The EXTRA-TEXT field . . . . . . . . . . . . . . . . . . 5 | 3.4. The EXTRA-TEXT field . . . . . . . . . . . . . . . . . . 6 | |||
4. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 5 | 4. Defined Extended DNS Errors . . . . . . . . . . . . . . . . . 6 | |||
4.1. INFO-CODEs for use with RESPONSE-CODE: NOERROR(0) . . . . 6 | 4.1. INFO-CODEs for use with RESPONSE-CODE: NOERROR(0) . . . . 6 | |||
4.1.1. NOERROR Extended DNS Error Code 1 - Unsupported | 4.1.1. NOERROR Extended DNS Error Code 1 - Unsupported | |||
DNSKEY Algorithm . . . . . . . . . . . . . . . . . . 6 | DNSKEY Algorithm . . . . . . . . . . . . . . . . . . 6 | |||
4.1.2. NOERROR Extended DNS Error Code 2 - Unsupported | 4.1.2. NOERROR Extended DNS Error Code 2 - Unsupported | |||
DS Algorithm . . . . . . . . . . . . . . . . . . . . 6 | DS Algorithm . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. INFO-CODEs for use with RESPONSE-CODE: SERVFAIL(2) . . . 6 | 4.1.3. INFO-CODEs for use with RESPONSE-CODE: NOERROR(3) . . 6 | |||
4.2.1. SERVFAIL Extended DNS Error Code 1 - DNSSEC Bogus . . 6 | 4.1.4. NOERROR Extended DNS Error Code 4 - Forged answer . . 7 | |||
4.2.2. SERVFAIL Extended DNS Error Code 2 - DNSSEC | 4.1.5. SERVFAIL Extended DNS Error Code 5 - DNSSEC | |||
Indeterminate . . . . . . . . . . . . . . . . . . . . 6 | Indeterminate . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2.3. SERVFAIL Extended DNS Error Code 3 - Signature | 4.2. INFO-CODEs for use with RESPONSE-CODE: SERVFAIL(2) . . . 7 | |||
Expired . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2.1. SERVFAIL Extended DNS Error Code 1 - DNSSEC Bogus . . 7 | |||
4.2.4. SERVFAIL Extended DNS Error Code 4 - Signature Not | 4.2.2. SERVFAIL Extended DNS Error Code 2 - Signature | |||
Yet Valid . . . . . . . . . . . . . . . . . . . . . . 6 | Expired . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2.5. SERVFAIL Extended DNS Error Code 5 - DNSKEY missing . 6 | 4.2.3. SERVFAIL Extended DNS Error Code 3 - Signature Not | |||
4.2.6. SERVFAIL Extended DNS Error Code 6 - RRSIGs missing . 7 | Yet Valid . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.2.7. SERVFAIL Extended DNS Error Code 7 - No Zone Key Bit | 4.2.4. SERVFAIL Extended DNS Error Code 4 - DNSKEY missing . 7 | |||
Set . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.2.5. SERVFAIL Extended DNS Error Code 5 - RRSIGs missing . 7 | |||
4.3. INFO-CODEs for use with RESPONSE-CODE: REFUSED(5) . . . . 7 | 4.2.6. SERVFAIL Extended DNS Error Code 6 - No Zone Key Bit | |||
4.3.1. REFUSED Extended DNS Error Code 1 - Lame . . . . . . 7 | Set . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.3.2. REFUSED Extended DNS Error Code 2 - Prohibited . . . 7 | 4.2.7. SERVFAIL Extended DNS Error Code 7 - No | |||
4.4. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) . . . 7 | Reachable Authority . . . . . . . . . . . . . . . . . 8 | |||
4.4.1. NXDOMAIN Extended DNS Error Code 1 - Blocked . . . . 7 | 4.2.8. SERVFAIL Extended DNS Error Code 8 - NSEC Missing . . 8 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 4.2.9. SERVFAIL Extended DNS Error Code 9 - Cached Error . . 8 | |||
5.1. new Extended Error Code EDNS Option . . . . . . . . . . . 7 | 4.2.10. SERVFAIL Extended DNS Error Code 10 - Not Ready . . . 8 | |||
5.2. New Extended Error Code EDNS Option . . . . . . . . . . . 8 | 4.3. INFO-CODEs for use with RESPONSE-CODE: NOTIMP(4) . . . . 8 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 4.3.1. NOTIMP Extended DNS Error Code 1 - Deprecated . . . . 8 | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 4.4. INFO-CODEs for use with RESPONSE-CODE: REFUSED(5) . . . . 8 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 4.4.1. REFUSED Extended DNS Error Code 1 - Lame . . . . . . 8 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 10 | 4.4.2. REFUSED Extended DNS Error Code 2 - Prohibited . . . 9 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 10 | 4.5. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) . . . 9 | |||
Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 11 | 4.5.1. NXDOMAIN Extended DNS Error Code 1 - Blocked . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.6. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) . . . 9 | |||
4.6.1. NXDOMAIN Extended DNS Error Code 2 - Censored . . . . 9 | ||||
4.7. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) . . . 9 | ||||
4.7.1. NXDOMAIN Extended DNS Error Code 3 - Stale Answer . . 9 | ||||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | ||||
5.1. A New Extended Error Code EDNS Option . . . . . . . . . . 9 | ||||
5.2. New Double-Index Registry Table for Extended Error Codes 10 | ||||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | ||||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
8.1. Normative References . . . . . . . . . . . . . . . . . . 13 | ||||
8.2. Informative References . . . . . . . . . . . . . . . . . 13 | ||||
Appendix A. Changes / Author Notes. . . . . . . . . . . . . . . 14 | ||||
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 | |||
skipping to change at page 3, line 41 ¶ | skipping to change at page 4, line 7 ¶ | |||
returned again, and the user gets an (largely) incomprehensible error | returned again, and the user gets an (largely) incomprehensible error | |||
message; or the next resolver is not a validating resolver, and the | message; or the next resolver is not a validating resolver, and the | |||
user is returned a potentially harmful result. | user is returned a potentially harmful result. | |||
This document specifies a mechanism to extend (or annotate) DNS | This document specifies a mechanism to extend (or annotate) DNS | |||
errors to provide additional information about the cause of the | errors to provide additional information about the cause of the | |||
error. When properly authenticated, this information can be used by | error. When properly authenticated, this information can be used by | |||
the resolver to make a decision regarding whether or not to retry or | the resolver to make a decision regarding whether or not to retry or | |||
it can be used or by technical users attempting to debug issues. | it can be used or by technical users attempting to debug issues. | |||
These extended error codes are specially useful when received by | ||||
resolvers, to return to stub resolvers or to downstream resolvers. | ||||
Authoritative servers MAY parse and use them, but most error codes | ||||
would make no sense for them. Authoritative servers may need to | ||||
generate extended error codes though. | ||||
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 | |||
Error (EDE) information in DNS messages. The option is structured as | Error (EDE) information in DNS messages. The option is structured as | |||
skipping to change at page 4, line 31 ¶ | skipping to change at page 4, line 51 ¶ | |||
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 The RETRY flag, 1 bit; the RETRY bit (R) indicates a flag defined | o The RETRY flag, 1 bit; the RETRY bit (R) indicates a flag defined | |||
for use in this specification. | for use in this specification. | |||
o The RESERVED bits, 15 bits: these bits are reserved for future | o The RESERVED bits, 15 bits: these bits are reserved for future | |||
use, potentially as additional flags. The RESERVED bits MUST be | use, potentially as additional flags. The RESERVED bits MUST be | |||
set to 0 by the sender and SHOULD be ignored by the receiver. | set to 0 by the sender and MUST be ignored by the receiver. | |||
o RESPONSE-CODE, 4 bits. | o RESPONSE-CODE, 4 bits. | |||
o INFO-CODE, 12-bits. | o INFO-CODE, 12-bits. | |||
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. | hold additional textual information. | |||
3. Use of the Extended DNS Error option | 3. Use of the Extended DNS Error option | |||
The Extended DNS Error (EDE) is an EDNS option. It can be included | The Extended DNS Error (EDE) is an EDNS option. It can be included | |||
in any response (SERVFAIL, NXDOMAIN, REFUSED, etc) to a query that | in any response (SERVFAIL, NXDOMAIN, REFUSED, etc) to a query that | |||
includes an EDNS option. This document includes a set of initial | includes OPT Pseudo-RR [RFC6891]. This document includes a set of | |||
codepoints (and requests to the IANA to add them to the registry), | initial codepoints (and requests to the IANA to add them to the | |||
but is extensible via the IANA registry to allow additional error and | registry), but is extensible via the IANA registry to allow | |||
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 | The fields of the Extended DNS Error option are defined further in | |||
the following sub-sections. | the following sub-sections. | |||
3.1. The R (Retry) flag | 3.1. The R (Retry) flag | |||
The R (Retry) flag provides a hint as to what the receiver may want | The R (Retry) flag provides a hint as to what the receiver may want | |||
to do with this annotated error. Specifically, the R (or Retry) flag | to do with this annotated error. Specifically, the R (or Retry) flag | |||
provides a hint to the receiver that it should retry the query to | provides a hint to the receiver that it should retry the query to | |||
another server. If the R bit is set (1), the sender believes that | another server. If the R bit is set (1), the sender believes that | |||
retrying the query may provide a successful answer next time; if the | retrying the query may provide a successful answer next time; if the | |||
R bit is clear (0), the sender believes that the resolver should not | R bit is clear (0), the sender believes that the resolver should not | |||
ask another server. | ask another server. | |||
The mechanism is specifically designed to be extensible, and so | The mechanism is specifically designed to be extensible, and so | |||
implementations may receive EDE codes that it does not understand. | implementations may receive EDE codes that it does not understand. | |||
The R flag allows implementations to make a decision as to what to do | The R flag allows implementations to make a decision as to what to do | |||
if it receives a response with an unknown code - retry or drop the | if it receives a response with an unknown code - retry or drop the | |||
query. Note that this flag is only a suggestion. Unless a | query. Note that this flag is only a suggestion. Unless a | |||
protective transport mechanism (like TSIG [RFC2845] or TLS [RFC8094]) | protective transport mechanism (like TSIG [RFC2845] or (D)TLS xref | |||
is used, the bit's value could have have been altered by a person-in- | target="RFC7858"/>, [RFC8094]) is used, the bit's value could have | |||
the-middle. Receivers can choose to ignore this hint. See the | have been altered by a person-in-the-middle. Receivers can choose to | |||
security considerations for additional considerations. | ignore this hint. See the security considerations for additional | |||
considerations. | ||||
3.2. The RESPONSE-CODE field | 3.2. The RESPONSE-CODE field | |||
This 4-bit value SHOULD be a copy of the RCODE from the primary DNS | This 4-bit value SHOULD be a copy of the RCODE from the primary DNS | |||
packet. Multiple EDNS0/EDE records may be included in the response. | packet. RESPONSE-CODEs MAY use a different RCODE to provide | |||
When including multiple EDNS0/EDE records in a response in order to | additional or better information. For example, multiple EDNS0/EDE | |||
provide additional error information, other RESPONSE-CODEs MAY use a | records may be included in the response and the supplemental EDNS0/ | |||
different RCODE. | EDE records may wish to include other RESPONSE-CODE values based on | |||
communication results with other DNS servers. | ||||
3.3. The INFO-CODE field | 3.3. The INFO-CODE field | |||
This 12-bit value provides the additional context for the RESPONSE- | This 12-bit value provides the additional context for the RESPONSE- | |||
CODE value. This combination of the RESPONSE-CODE and the INFO-CODE | CODE value. This combination of the RESPONSE-CODE and the INFO-CODE | |||
serve as a joint-index into the IANA "Extended DNS Errors" registry. | serve as a joint-index into the IANA "Extended DNS Errors" registry. | |||
Note to implementers: the combination of the RESPONSE-CODE and INFO- | ||||
CODE fits within a 16-bit field, allowing implementers the choice of | ||||
treating the combination as either two separate values, as defined in | ||||
this document, or as a single 16-bit integer as long as the results | ||||
are deterministic. | ||||
3.4. The EXTRA-TEXT field | 3.4. The EXTRA-TEXT field | |||
The UTF-8-encoded, EXTRA-TEXT field may be zero-length, or may hold | The UTF-8-encoded, EXTRA-TEXT field may be zero-length, or may hold | |||
additional information useful to network operators. | additional information useful to network operators. | |||
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. This document | registered in the "Extended DNS Errors" registry. This document | |||
skipping to change at page 6, line 22 ¶ | skipping to change at page 6, line 47 ¶ | |||
4.1.1. NOERROR Extended DNS Error Code 1 - Unsupported DNSKEY Algorithm | 4.1.1. NOERROR 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. The R flag should be set. | RRSET contained only unknown algorithms. The R flag should be set. | |||
4.1.2. NOERROR Extended DNS Error Code 2 - Unsupported DS Algorithm | 4.1.2. NOERROR 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. The R flag should be set. | contained only unknown algorithms. The R flag should be set. | |||
4.2. INFO-CODEs for use with RESPONSE-CODE: SERVFAIL(2) | 4.1.3. INFO-CODEs for use with RESPONSE-CODE: NOERROR(3) | |||
4.1.3.1. NOERROR Extended DNS Error Code 3 - Stale Answer | ||||
4.2.1. SERVFAIL Extended DNS Error Code 1 - DNSSEC Bogus | The resolver was unable to resolve answer within its time limits and | |||
decided to answer with a previously cached data instead of answering | ||||
with an error. This is typically caused by problems on authoritative | ||||
side, possibly as result of a DoS attack. The R flag should not be | ||||
set, since retrying is likely to create additional load without | ||||
yielding a more fresh answer. | ||||
The resolver attempted to perform DNSSEC validation, but validation | 4.1.4. NOERROR Extended DNS Error Code 4 - Forged answer | |||
ended in the Bogus state. The R flag should not be set. | ||||
4.2.2. SERVFAIL Extended DNS Error Code 2 - DNSSEC Indeterminate | For policy reasons (legal obligation, or malware filtering, for | |||
instance), an answer was forged. The R flag should not be set. | ||||
4.1.5. SERVFAIL 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. The R flag should not be set. | ended in the Indeterminate state. The R flag should not be set. | |||
4.2.3. SERVFAIL Extended DNS Error Code 3 - Signature Expired | 4.2. INFO-CODEs for use with RESPONSE-CODE: SERVFAIL(2) | |||
The resolver attempted to perform DNSSEC validation, but the | 4.2.1. SERVFAIL Extended DNS Error Code 1 - DNSSEC Bogus | |||
signature was expired. The R flag should not be set. | ||||
4.2.4. SERVFAIL Extended DNS Error Code 4 - Signature Not Yet Valid | The resolver attempted to perform DNSSEC validation, but validation | |||
ended in the Bogus state. The R flag should not be set. | ||||
4.2.2. SERVFAIL Extended DNS Error Code 2 - Signature Expired | ||||
The resolver attempted to perform DNSSEC validation, a signature in | ||||
the validation chain was expired. The R flag should not be set. | ||||
4.2.3. SERVFAIL Extended DNS Error Code 3 - 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. The R flag should not be | signatures received were not yet valid. The R flag should not be | |||
set. | set. | |||
4.2.5. SERVFAIL Extended DNS Error Code 5 - DNSKEY missing | 4.2.4. SERVFAIL Extended DNS Error Code 4 - DNSKEY missing | |||
A DS record existed at a parent, but no DNSKEY record could be found | A DS record existed at a parent, but no supported matching DNSKEY | |||
for the child. The R flag should not be set. | record could be found for the child. The R flag should not be set. | |||
4.2.6. SERVFAIL Extended DNS Error Code 6 - RRSIGs missing | 4.2.5. SERVFAIL Extended DNS Error Code 5 - 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.2.7. SERVFAIL Extended DNS Error Code 7 - No Zone Key Bit Set | 4.2.6. SERVFAIL Extended DNS Error Code 6 - 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.3. INFO-CODEs for use with RESPONSE-CODE: REFUSED(5) | 4.2.7. SERVFAIL Extended DNS Error Code 7 - No Reachable Authority | |||
4.3.1. REFUSED Extended DNS Error Code 1 - Lame | The resolver could not reach any of the authoritative name servers | |||
(or they refused to reply). The R flag should be set. | ||||
An authoritative resolver that receives a query (with the RD bit | 4.2.8. SERVFAIL Extended DNS Error Code 8 - NSEC Missing | |||
clear) for a domain for which it is not authoritative SHOULD include | ||||
this EDE code in the REFUSED response. Implementations should set | ||||
the R flag in this case (another nameserver might not be lame). | ||||
4.3.2. REFUSED Extended DNS Error Code 2 - Prohibited | The resolver attempted to perform DNSSEC validation, but the | |||
requested data was missing and a covering NSEC or NSEC3 was not | ||||
provided. The R flag should be set. | ||||
4.2.9. SERVFAIL Extended DNS Error Code 9 - Cached Error | ||||
The resolver has cached SERVFAIL for this query without additional | ||||
information. Th R flag should be set. | ||||
4.2.10. SERVFAIL Extended DNS Error Code 10 - Not Ready | ||||
The server is unable to answer the query as it is not fully up and | ||||
functional yet. | ||||
4.3. INFO-CODEs for use with RESPONSE-CODE: NOTIMP(4) | ||||
4.3.1. NOTIMP Extended DNS Error Code 1 - Deprecated | ||||
The requested operation or query is not supported as its use has been | ||||
deprecated. Implementations should not set the R flag. (Retrying | ||||
request elsewhere is unlikely to yield any other results.) | ||||
4.4. INFO-CODEs for use with RESPONSE-CODE: REFUSED(5) | ||||
4.4.1. REFUSED Extended DNS Error Code 1 - Lame | ||||
An authoritative server that receives a query (with the RD bit clear) | ||||
for a domain for which it is not authoritative SHOULD include this | ||||
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 | ||||
response. Implementations should set the R flag in this case | ||||
(another nameserver or resolver might not be lame). | ||||
4.4.2. REFUSED Extended DNS Error Code 2 - 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. | |||
Implementations SHOULD allow operators to define what to set the R | Implementations SHOULD allow operators to define what to set the R | |||
flag to in this case. | flag to in this case. | |||
4.4. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) | 4.5. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) | |||
4.4.1. NXDOMAIN Extended DNS Error Code 1 - Blocked | 4.5.1. NXDOMAIN Extended DNS Error Code 1 - 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. The R flag should not be set. | blacklisted due to a security policy implemented on the server being | |||
directly talked to. The R flag should be set. | ||||
4.6. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) | ||||
4.6.1. NXDOMAIN Extended DNS Error Code 2 - Censored | ||||
The resolver attempted to perfom a DNS query but the domain was | ||||
blacklisted by a security policy imposed upon the server being talked | ||||
to. Note that how the imposed policy is applied is irrelevant (in- | ||||
band DNS somehow, court order, etc). The R flag should be set. | ||||
4.7. INFO-CODEs for use with RESPONSE-CODE: NXDOMAIN(3) | ||||
4.7.1. NXDOMAIN Extended DNS Error Code 3 - Stale Answer | ||||
The resolver was unable to resolve answer within its time limits and | ||||
decided to answer with a previously cached NXDOMAIN answer instead of | ||||
answering with an error. This is typically caused by problems on | ||||
authoritative side, possibly as result of a DoS attack. The R flag | ||||
should not be set, since retrying is likely to create additional load | ||||
without yielding a more fresh answer. | ||||
5. IANA Considerations | 5. IANA Considerations | |||
5.1. new Extended Error Code EDNS Option | 5.1. A New Extended 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 Extended Error Code EDNS Option | 5.2. New Double-Index Registry Table for Extended Error Codes | |||
This document defines a new double-index IANA registry table, where | This document defines a new double-index IANA registry table, where | |||
the first index value is the RCODE value and the second index value | the first index value is the RCODE value and the second index value | |||
is the INFO-CODE from the Extended DNS Error EDNS option defined in | is the INFO-CODE from the Extended DNS Error EDNS option defined in | |||
this document. The IANA is requested to create and maintain this | this document. The IANA is requested to create and maintain this | |||
"Extended DNS Error codes" registry. The codepoint space for each | "Extended DNS Error codes" registry. The codepoint space for each | |||
INFO-CODE index is to be broken into 3 ranges: | INFO-CODE index is to be broken into 3 ranges: | |||
o 0 - 3583: Specification required. | o 0 - 3583: Specification required. | |||
o 3584 - 3839: First Come First Served. | o 3584 - 3839: First Come First Served. | |||
skipping to change at page 8, line 34 ¶ | skipping to change at page 10, line 34 ¶ | |||
RESPONSE-CODE: 0 (NOERROR) | RESPONSE-CODE: 0 (NOERROR) | |||
INFO-CODE: 1 | INFO-CODE: 1 | |||
Purpose: Unsupported DNSKEY | Purpose: Unsupported DNSKEY | |||
Reference: Section 4.1.1 | Reference: Section 4.1.1 | |||
RESPONSE-CODE: 0 (NOERROR) | RESPONSE-CODE: 0 (NOERROR) | |||
INFO-CODE: 2 | INFO-CODE: 2 | |||
Purpose: Unsupported DS Algorithm | Purpose: Unsupported DS Algorithm | |||
Reference: Section 4.1.2 | Reference: Section 4.1.2 | |||
RESPONSE-CODE: 3 (NOERROR) | ||||
INFO-CODE: 3 | ||||
Purpose: Answering with stale/cached data | ||||
Reference: Section 4.1.3.1 | ||||
RESPONSE-CODE: 0 (NOERROR) | ||||
INFO-CODE: 4 | ||||
Purpose: Forged answer | ||||
Reference: Section 4.1.4 | ||||
RESPONSE-CODE: 0 (NOERROR) | ||||
INFO-CODE: 5 | ||||
Purpose: DNSSEC Indeterminate | ||||
Reference: Section 4.1.5 | ||||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 1 | INFO-CODE: 1 | |||
Purpose: DNSSEC Bogus | Purpose: DNSSEC Bogus | |||
Reference: Section 4.2.1 | Reference: Section 4.2.1 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 2 | INFO-CODE: 2 | |||
Purpose: DNSSEC Indeterminate | Purpose: Signature Expired | |||
Reference: Section 4.2.2 | Reference: Section 4.2.2 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 3 | INFO-CODE: 3 | |||
Purpose: Signature Expired | Purpose: Signature Not Yet Valid | |||
Reference: Section 4.2.3 | Reference: Section 4.2.3 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 4 | INFO-CODE: 4 | |||
Purpose: Signature Not Yet Valid | Purpose: DNSKEY missing | |||
Reference: Section 4.2.4 | Reference: Section 4.2.4 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 5 | INFO-CODE: 5 | |||
Purpose: DNSKEY missing | Purpose: RRSIGs missing | |||
Reference: Section 4.2.5 | Reference: Section 4.2.5 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 6 | INFO-CODE: 6 | |||
Purpose: RRSIGs missing | Purpose: No Zone Key Bit Set | |||
Reference: Section 4.2.6 | Reference: Section 4.2.6 | |||
RESPONSE-CODE: 2 (SERVFAIL) | RESPONSE-CODE: 2 (SERVFAIL) | |||
INFO-CODE: 7 | INFO-CODE: 7 | |||
Purpose: No Zone Key Bit Set | Purpose: No NSEC records could be obtained | |||
Reference: Section 4.2.7 | Reference: Section 4.2.8 | |||
RESPONSE-CODE: 2 (SERVFAIL) | ||||
INFO-CODE: 9 | ||||
Purpose: The SERVFAIL error comes from the cache | ||||
Reference: Section 4.2.9 | ||||
RESPONSE-CODE: 2 (SERVFAIL) | ||||
INFO-CODE: 10 | ||||
Purpose: Not Ready. | ||||
Reference: Section 4.2.10 | ||||
RESPONSE-CODE: 3 (NXDOMAIN) | RESPONSE-CODE: 3 (NXDOMAIN) | |||
INFO-CODE: 1 | INFO-CODE: 1 | |||
Purpose: Blocked | Purpose: Blocked | |||
Reference: Section 4.4.1 | Reference: Section 4.5.1 | |||
RESPONSE-CODE: 3 (NXDOMAIN) | ||||
INFO-CODE: 2 | ||||
Purpose: Censored | ||||
Reference: Section 4.6.1 | ||||
RESPONSE-CODE: 3 (NXDOMAIN) | ||||
INFO-CODE: 3 | ||||
Purpose: Answering with stale/cached NXDOMAIN data | ||||
Reference: Section 4.7.1 | ||||
RESPONSE-CODE: 4 (NOTIMP) | ||||
INFO-CODE: 1 | ||||
Purpose: | ||||
Reference: Section 4.4.2 | ||||
RESPONSE-CODE: 5 (REFUSED) | RESPONSE-CODE: 5 (REFUSED) | |||
INFO-CODE: 1 | INFO-CODE: 1 | |||
Purpose: Lame | Purpose: Lame | |||
Reference: Section 4.3.1 | Reference: Section 4.4.1 | |||
RESPONSE-CODE: 5 (REFUSED) | RESPONSE-CODE: 5 (REFUSED) | |||
INFO-CODE: 2 | INFO-CODE: 2 | |||
Purpose: Prohibited | Purpose: Prohibited | |||
Reference: Section 4.3.2 | Reference: Section 4.4.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 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. This is very similar to a kid asking his mother if | |||
he can have another cookie. When the mother says "No, it will ruin | he can have another cookie. When the mother says "No, it will ruin | |||
skipping to change at page 10, line 15 ¶ | skipping to change at page 13, line 7 ¶ | |||
mechanisms, there are some tradeoffs. As an example, an attacker who | mechanisms, there are some tradeoffs. As an example, an attacker who | |||
is able to insert the DNSSEC Bogus Extended Error into a packet could | is able to insert the DNSSEC Bogus Extended Error into a packet could | |||
instead simply reply with a fictitious address (A or AAAA) record. | instead simply reply with a fictitious address (A or AAAA) record. | |||
The R bit hint and extended error information are informational - | The R bit hint and extended error information are informational - | |||
implementations can choose how much to trust this information and | implementations can choose how much to trust this information and | |||
validating resolvers / stubs may choose to put a different weight on | validating resolvers / stubs may choose to put a different weight on | |||
it. | it. | |||
7. Acknowledgements | 7. Acknowledgements | |||
The authors wish to thank Joe Abley, Mark Andrews, Vladimir Cunat, | The authors wish to thank Joe Abley, Mark Andrews, Stephane | |||
Peter DeVries, Peter van Dijk, Donald Eastlake, Bob Harold, Evan | Bortzmeyer, Vladimir Cunat, Peter DeVries, Peter van Dijk, Donald | |||
Hunt, Geoff Huston, Shane Kerr, Edward Lewis, Carlos M. Martinez, | Eastlake, Bob Harold, Evan Hunt, Geoff Huston, Shane Kerr, Edward | |||
George Michelson, Petr Spacek, Ondrej Sury, Loganaden Velvindron, and | Lewis, Carlos M. Martinez, George Michelson, Michael Sheldon, Petr | |||
Paul Vixie. They also vaguely remember discussing this with a number | Spacek, Ondrej Sury, Loganaden Velvindron, and Paul Vixie. They also | |||
of people over the years, but have forgotten who all they were -- if | vaguely remember discussing this with a number of people over the | |||
you were one of them, and are not listed, please let us know and | years, but have forgotten who all they were -- if you were one of | |||
we'll acknowledge you. | them, and are not listed, please let us know and we'll acknowledge | |||
you. | ||||
I also want to thank the band "Infected Mushroom" for providing a | I also want to thank the band "Infected Mushroom" for providing a | |||
good background soundtrack (and to see if I can get away with this!) | good background soundtrack (and to see if I can get away with this!) | |||
Another author would like to thank the band "Mushroom Infectors". | Another author would like to thank the band "Mushroom Infectors". | |||
This was funny at the time we wrote it, but I cannot remember why... | This was funny at the time we wrote it, but I cannot remember why... | |||
8. References | 8. References | |||
8.1. Normative References | 8.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>. | |||
[RFC6891] Damas, J., Graff, M., and P. Vixie, "Extension Mechanisms | ||||
for DNS (EDNS(0))", STD 75, RFC 6891, | ||||
DOI 10.17487/RFC6891, April 2013, <https://www.rfc- | ||||
editor.org/info/rfc6891>. | ||||
8.2. Informative References | 8.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, | |||
End of changes. 45 change blocks. | ||||
94 lines changed or deleted | 235 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |