This commit was manufactured by cvs2git to create branch 'v9_4'.
This commit is contained in:
616
doc/draft/draft-ietf-dnsext-rfc2671bis-edns0-02.txt
Normal file
616
doc/draft/draft-ietf-dnsext-rfc2671bis-edns0-02.txt
Normal file
@@ -0,0 +1,616 @@
|
||||
|
||||
|
||||
|
||||
DNSEXT Working Group M. Graff
|
||||
Internet-Draft P. Vixie
|
||||
Obsoletes: 2671 (if approved) Internet Systems Consortium
|
||||
Intended status: Standards Track July 28, 2009
|
||||
Expires: January 29, 2010
|
||||
|
||||
|
||||
Extension Mechanisms for DNS (EDNS0)
|
||||
draft-ietf-dnsext-rfc2671bis-edns0-02
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This Internet-Draft is submitted to IETF in full conformance with the
|
||||
provisions of BCP 78 and BCP 79.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF), its areas, and its working groups. Note that
|
||||
other groups may also distribute working documents as Internet-
|
||||
Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as "work in progress."
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt.
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
This Internet-Draft will expire on January 29, 2010.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (c) 2009 IETF Trust and the persons identified as the
|
||||
document authors. All rights reserved.
|
||||
|
||||
This document is subject to BCP 78 and the IETF Trust's Legal
|
||||
Provisions Relating to IETF Documents in effect on the date of
|
||||
publication of this document (http://trustee.ietf.org/license-info).
|
||||
Please review these documents carefully, as they describe your rights
|
||||
and restrictions with respect to this document.
|
||||
|
||||
Abstract
|
||||
|
||||
The Domain Name System's wire protocol includes a number of fixed
|
||||
fields whose range has been or soon will be exhausted and does not
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 1]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
allow requestors to advertise their capabilities to responders. This
|
||||
document describes backward compatible mechanisms for allowing the
|
||||
protocol to grow.
|
||||
|
||||
This document updates the EDNS0 specification based on 10 years of
|
||||
operational experience.
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
|
||||
3. EDNS Support Requirement . . . . . . . . . . . . . . . . . . . 3
|
||||
4. Affected Protocol Elements . . . . . . . . . . . . . . . . . . 3
|
||||
4.1. Message Header . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
4.2. Label Types . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||
4.3. UDP Message Size . . . . . . . . . . . . . . . . . . . . . 4
|
||||
5. Extended Label Types . . . . . . . . . . . . . . . . . . . . . 4
|
||||
6. OPT pseudo-RR . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||
6.1. OPT Record Behavior . . . . . . . . . . . . . . . . . . . 4
|
||||
6.2. OPT Record Format . . . . . . . . . . . . . . . . . . . . 5
|
||||
6.3. Requestor's Payload Size . . . . . . . . . . . . . . . . . 6
|
||||
6.4. Responder's Payload Size . . . . . . . . . . . . . . . . . 6
|
||||
6.5. Payload Size Selection . . . . . . . . . . . . . . . . . . 7
|
||||
6.6. Middleware Boxes . . . . . . . . . . . . . . . . . . . . . 7
|
||||
6.7. Extended RCODE . . . . . . . . . . . . . . . . . . . . . . 7
|
||||
6.8. OPT Options Type Allocation Procedure . . . . . . . . . . 8
|
||||
7. Transport Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 9
|
||||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
|
||||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||
11.1. Normative References . . . . . . . . . . . . . . . . . . . 10
|
||||
11.2. Informative References . . . . . . . . . . . . . . . . . . 10
|
||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 2]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
||||
DNS [RFC1035] specifies a Message Format and within such messages
|
||||
there are standard formats for encoding options, errors, and name
|
||||
compression. The maximum allowable size of a DNS Message is fixed.
|
||||
Many of DNS's protocol limits are too small for uses which are or
|
||||
which are desired to become common. There is no way for
|
||||
implementations to advertise their capabilities.
|
||||
|
||||
Unextended agents will not know how to interpret the protocol
|
||||
extensions detailed here. In practice, these clients will be
|
||||
upgraded when they have need of a new feature, and only new features
|
||||
will make use of the extensions. Extended agents must be prepared
|
||||
for behaviour of unextended clients in the face of new protocol
|
||||
elements, and fall back gracefully to unextended DNS. [RFC2671]
|
||||
originally proposed extensions to the basic DNS protocol to overcome
|
||||
these deficiencies. This memo refines that specification and
|
||||
obsoletes [RFC2671].
|
||||
|
||||
|
||||
2. Requirements Language
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [RFC2119].
|
||||
|
||||
|
||||
3. EDNS Support Requirement
|
||||
|
||||
EDNS support is manditory in a modern world. DNSSEC requires EDNS
|
||||
support, and many other featres are made possible only by EDNS
|
||||
support to request or advertise them.
|
||||
|
||||
|
||||
4. Affected Protocol Elements
|
||||
|
||||
4.1. Message Header
|
||||
|
||||
The DNS Message Header's (see , section 4.1.1 [RFC1035]) second full
|
||||
16-bit word is divided into a 4-bit OPCODE, a 4-bit RCODE, and a
|
||||
number of 1-bit flags. The original reserved Z bits have been
|
||||
allocated to various purposes, and most of the RCODE values are now
|
||||
in use. More flags and more possible RCODEs are needed. The OPT
|
||||
pseudo-RR specified below contains subfields that carry a bit field
|
||||
extension of the RCODE field and additional flag bits, respectively.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 3]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
4.2. Label Types
|
||||
|
||||
The first two bits of a wire format domain label are used to denote
|
||||
the type of the label. ,section 4.1.4 [RFC1035] allocates two of the
|
||||
four possible types and reserves the other two. More label types
|
||||
were proposed in [RFC2671] section 3.
|
||||
|
||||
4.3. UDP Message Size
|
||||
|
||||
DNS Messages are limited to 512 octets in size when sent over UDP.
|
||||
While the minimum maximum reassembly buffer size still allows a limit
|
||||
of 512 octets of UDP payload, most of the hosts now connected to the
|
||||
Internet are able to reassemble larger datagrams. Some mechanism
|
||||
must be created to allow requestors to advertise larger buffer sizes
|
||||
to responders. To this end, the OPT pseudo-RR specified below
|
||||
contains a maximum payload size field.
|
||||
|
||||
|
||||
5. Extended Label Types
|
||||
|
||||
The first octet in the on-the-wire representation of a DNS label
|
||||
specifies the label type; the basic DNS specification [RFC1035]
|
||||
dedicates the two most significant bits of that octet for this
|
||||
purpose.
|
||||
|
||||
This document reserves DNS label type 0b01 for use as an indication
|
||||
for Extended Label Types. A specific extended label type is selected
|
||||
by the 6 least significant bits of the first octet. Thus, Extended
|
||||
Label Types are indicated by the values 64-127 (0b01xxxxxx) in the
|
||||
first octet of the label.
|
||||
|
||||
This document does not describe any specific Extended Label Type.
|
||||
|
||||
In practice, Extended Label Types are difficult to use due to support
|
||||
in clients and intermediate gateways. Therefore, the registry of
|
||||
Extended Label Types is requested to be closed. They cause
|
||||
interoperability problems and at present no defined label types are
|
||||
in use.
|
||||
|
||||
|
||||
6. OPT pseudo-RR
|
||||
|
||||
6.1. OPT Record Behavior
|
||||
|
||||
One OPT pseudo-RR (RR type 41) MAY be added to the additional data
|
||||
section of a request. If present in requests, compliant responders
|
||||
which implement EDNS MUST include an OPT record in non-truncated
|
||||
responses, and SHOULD attempt to include them in all responses. An
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 4]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
OPT is called a pseudo-RR because it pertains to a particular
|
||||
transport level message and not to any actual DNS data. OPT RRs MUST
|
||||
NOT be cached, forwarded, or stored in or loaded from master files.
|
||||
The quantity of OPT pseudo-RRs per message MUST be either zero or
|
||||
one, but not greater.
|
||||
|
||||
6.2. OPT Record Format
|
||||
|
||||
An OPT RR has a fixed part and a variable set of options expressed as
|
||||
{attribute, value} pairs. The fixed part holds some DNS meta data
|
||||
and also a small collection of basic extension elements which we
|
||||
expect to be so popular that it would be a waste of wire space to
|
||||
encode them as {attribute, value} pairs.
|
||||
|
||||
The fixed part of an OPT RR is structured as follows:
|
||||
|
||||
+------------+--------------+------------------------------+
|
||||
| Field Name | Field Type | Description |
|
||||
+------------+--------------+------------------------------+
|
||||
| NAME | domain name | empty (root domain) |
|
||||
| TYPE | u_int16_t | OPT |
|
||||
| CLASS | u_int16_t | requestor's UDP payload size |
|
||||
| TTL | u_int32_t | extended RCODE and flags |
|
||||
| RDLEN | u_int16_t | describes RDATA |
|
||||
| RDATA | octet stream | {attribute,value} pairs |
|
||||
+------------+--------------+------------------------------+
|
||||
|
||||
OPT RR Format
|
||||
|
||||
The variable part of an OPT RR is encoded in its RDATA and is
|
||||
structured as zero or more of the following:
|
||||
|
||||
|
||||
+0 (MSB) +1 (LSB)
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
0: | OPTION-CODE |
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
2: | OPTION-LENGTH |
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
4: | |
|
||||
/ OPTION-DATA /
|
||||
/ /
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 5]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
OPTION-CODE
|
||||
Assigned by Expert Review.
|
||||
|
||||
OPTION-LENGTH
|
||||
Size (in octets) of OPTION-DATA.
|
||||
|
||||
OPTION-DATA
|
||||
Varies per OPTION-CODE.
|
||||
|
||||
Order of appearance of option tuples is never relevant. Any option
|
||||
whose meaning is affected by other options is so affected no matter
|
||||
which one comes first in the OPT RDATA.
|
||||
|
||||
Any OPTION-CODE values not understood by a responder or requestor
|
||||
MUST be ignored. Specifications of such options might wish to
|
||||
include some kind of signalled acknowledgement. For example, an
|
||||
option specification might say that if a responder sees option XYZ,
|
||||
it SHOULD include option XYZ in its response.
|
||||
|
||||
6.3. Requestor's Payload Size
|
||||
|
||||
The requestor's UDP payload size (which OPT stores in the RR CLASS
|
||||
field) is the number of octets of the largest UDP payload that can be
|
||||
reassembled and delivered in the requestor's network stack. Note
|
||||
that path MTU, with or without fragmentation, may be smaller than
|
||||
this. Values lower than 512 MUST be treated as equal to 512.
|
||||
|
||||
Note that a 512-octet UDP payload requires a 576-octet IP reassembly
|
||||
buffer. Choosing 1280 for IPv4 over Ethernet would be reasonable.
|
||||
The consequence of choosing too large a value may be an ICMP message
|
||||
from an intermediate gateway, or even a silent drop of the response
|
||||
message.
|
||||
|
||||
The requestor's maximum payload size can change over time, and MUST
|
||||
therefore not be cached for use beyond the transaction in which it is
|
||||
advertised.
|
||||
|
||||
6.4. Responder's Payload Size
|
||||
|
||||
The responder's maximum payload size can change over time, but can be
|
||||
reasonably expected to remain constant between two sequential
|
||||
transactions; for example, a meaningless QUERY to discover a
|
||||
responder's maximum UDP payload size, followed immediately by an
|
||||
UPDATE which takes advantage of this size. (This is considered
|
||||
preferrable to the outright use of TCP for oversized requests, if
|
||||
there is any reason to suspect that the responder implements EDNS,
|
||||
and if a request will not fit in the default 512 payload size limit.)
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 6]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
6.5. Payload Size Selection
|
||||
|
||||
Due to transaction overhead, it is unwise to advertise an
|
||||
architectural limit as a maximum UDP payload size. Just because your
|
||||
stack can reassemble 64KB datagrams, don't assume that you want to
|
||||
spend more than about 4KB of state memory per ongoing transaction.
|
||||
|
||||
A requestor MAY choose to implement a fallback to smaller advertised
|
||||
sizes to work around firewall or other network limitations. A
|
||||
requestor SHOULD choose to use a fallback mechanism which begins with
|
||||
a large size, such as 4096. If that fails, a fallback around the
|
||||
1220 byte range SHOULD be tried, as it has a reasonable chance to fit
|
||||
within a single Ethernet frame. Failing that, a requestor MAY choose
|
||||
a 512 byte packet, which with large answers may cause a TCP retry.
|
||||
|
||||
6.6. Middleware Boxes
|
||||
|
||||
Middleware boxes MUST NOT limit DNS messages over UDP to 512 bytes.
|
||||
|
||||
Middleware boxes which simply forward requests to a recursive
|
||||
resolver MUST NOT modify the OPT record contents in either direction.
|
||||
|
||||
6.7. Extended RCODE
|
||||
|
||||
The extended RCODE and flags (which OPT stores in the RR TTL field)
|
||||
are structured as follows:
|
||||
|
||||
+0 (MSB) +1 (LSB)
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
0: | EXTENDED-RCODE | VERSION |
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
2: | DO| Z |
|
||||
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|
||||
|
||||
EXTENDED-RCODE
|
||||
Forms upper 8 bits of extended 12-bit RCODE. Note that
|
||||
EXTENDED-RCODE value "0" indicates that an unextended RCODE is
|
||||
in use (values "0" through "15").
|
||||
|
||||
VERSION
|
||||
Indicates the implementation level of whoever sets it. Full
|
||||
conformance with this specification is indicated by version
|
||||
``0.'' Requestors are encouraged to set this to the lowest
|
||||
implemented level capable of expressing a transaction, to
|
||||
minimize the responder and network load of discovering the
|
||||
greatest common implementation level between requestor and
|
||||
responder. A requestor's version numbering strategy MAY
|
||||
ideally be a run time configuration option.
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 7]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
If a responder does not implement the VERSION level of the
|
||||
request, then it answers with RCODE=BADVERS. All responses
|
||||
MUST be limited in format to the VERSION level of the request,
|
||||
but the VERSION of each response SHOULD be the highest
|
||||
implementation level of the responder. In this way a requestor
|
||||
will learn the implementation level of a responder as a side
|
||||
effect of every response, including error responses and
|
||||
including RCODE=BADVERS.
|
||||
|
||||
DO
|
||||
DNSSEC OK bit as defined by [RFC3225].
|
||||
|
||||
Z
|
||||
Set to zero by senders and ignored by receivers, unless
|
||||
modified in a subsequent specification.
|
||||
|
||||
6.8. OPT Options Type Allocation Procedure
|
||||
|
||||
Allocations assigned by expert review. TBD
|
||||
|
||||
|
||||
7. Transport Considerations
|
||||
|
||||
The presence of an OPT pseudo-RR in a request should be taken as an
|
||||
indication that the requestor fully implements the given version of
|
||||
EDNS, and can correctly understand any response that conforms to that
|
||||
feature's specification.
|
||||
|
||||
Lack of presence of an OPT record in a request MUST be taken as an
|
||||
indication that the requestor does not implement any part of this
|
||||
specification and that the responder MUST NOT use any protocol
|
||||
extension described here in its response.
|
||||
|
||||
Responders who do not implement these protocol extensions MUST
|
||||
respond with FORMERR messages without any OPT record.
|
||||
|
||||
If there is a problem with processing the OPT record itself, such as
|
||||
an option value that is badly formatted or includes out of range
|
||||
values, a FORMERR MAY be retured. If this occurs the response MUST
|
||||
include an OPT record. This MAY be used to distinguish between
|
||||
servers whcih do not implement EDNS and format errors within EDNS.
|
||||
|
||||
If EDNS is used in a request, and the response arrives with TC set
|
||||
and with no EDNS OPT RR, a requestor SHOULD assume that truncation
|
||||
prevented the OPT RR from being appended by the responder, and
|
||||
further, that EDNS is not used in the response. Correspondingly, an
|
||||
EDNS responder who cannot fit all necessary elements (including an
|
||||
OPT RR) into a response, SHOULD respond with a normal (unextended)
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 8]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
DNS response, possibly setting TC if the response will not fit in the
|
||||
unextended response message's 512-octet size.
|
||||
|
||||
|
||||
8. Security Considerations
|
||||
|
||||
Requestor-side specification of the maximum buffer size may open a
|
||||
new DNS denial of service attack if responders can be made to send
|
||||
messages which are too large for intermediate gateways to forward,
|
||||
thus leading to potential ICMP storms between gateways and
|
||||
responders.
|
||||
|
||||
Announcing very large UDP buffer sizes may result in dropping by
|
||||
firewalls. This could cause retransmissions with no hope of success.
|
||||
Some devices reject fragmented UDP packets.
|
||||
|
||||
Announcing too small UDP buffer sizes may result in fallback to TCP.
|
||||
This is especially important with DNSSEC, where answers are much
|
||||
larger.
|
||||
|
||||
|
||||
9. IANA Considerations
|
||||
|
||||
The IANA has assigned RR type code 41 for OPT.
|
||||
|
||||
[RFC2671] specified a number of IANA sub-registries within "DOMAIN
|
||||
NAME SYSTEM PARAMETERS:" "EDNS Extended Label Type", "EDNS Option
|
||||
Codes", "EDNS Version Numbers", and "Domain System Response Code."
|
||||
IANA is advised to re-parent these subregistries to this document.
|
||||
|
||||
RFC 2671 created an extended label type registry. We request that
|
||||
this registry be closed.
|
||||
|
||||
This document assigns extended label type 0bxx111111 as "Reserved for
|
||||
future extended label types." We request that IANA record this
|
||||
assignment.
|
||||
|
||||
This document assigns option code 65535 to "Reserved for future
|
||||
expansion."
|
||||
|
||||
This document expands the RCODE space from 4 bits to 12 bits. This
|
||||
will allow IANA to assign more than the 16 distinct RCODE values
|
||||
allowed in RFC 1035 [RFC1035].
|
||||
|
||||
This document assigns EDNS Extended RCODE "16" to "BADVERS".
|
||||
|
||||
IESG approval should be required to create new entries in the EDNS
|
||||
Extended Label Type or EDNS Version Number registries, while any
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 9]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
published RFC (including Informational, Experimental, or BCP) should
|
||||
be grounds for allocation of an EDNS Option Code.
|
||||
|
||||
|
||||
10. Acknowledgements
|
||||
|
||||
Paul Mockapetris, Mark Andrews, Robert Elz, Don Lewis, Bob Halley,
|
||||
Donald Eastlake, Rob Austein, Matt Crawford, Randy Bush, and Thomas
|
||||
Narten were each instrumental in creating and refining this
|
||||
specification.
|
||||
|
||||
|
||||
11. References
|
||||
|
||||
11.1. Normative References
|
||||
|
||||
[RFC1035] Mockapetris, P., "Domain names - implementation and
|
||||
specification", STD 13, RFC 1035, November 1987.
|
||||
|
||||
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)",
|
||||
RFC 2671, August 1999.
|
||||
|
||||
[RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC",
|
||||
RFC 3225, December 2001.
|
||||
|
||||
11.2. Informative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Michael Graff
|
||||
Internet Systems Consortium
|
||||
950 Charter Street
|
||||
Redwood City, California 94063
|
||||
US
|
||||
|
||||
Phone: +1 650.423.1304
|
||||
Email: mgraff@isc.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 10]
|
||||
|
||||
Internet-Draft EDNS0 Extensions July 2009
|
||||
|
||||
|
||||
Paul Vixie
|
||||
Internet Systems Consortium
|
||||
950 Charter Street
|
||||
Redwood City, California 94063
|
||||
US
|
||||
|
||||
Phone: +1 650.423.1301
|
||||
Email: vixie@isc.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Graff & Vixie Expires January 29, 2010 [Page 11]
|
||||
|
||||
729
doc/draft/draft-ietf-dnsop-default-local-zones-09.txt
Normal file
729
doc/draft/draft-ietf-dnsop-default-local-zones-09.txt
Normal file
@@ -0,0 +1,729 @@
|
||||
|
||||
|
||||
|
||||
Network Working Group M. Andrews
|
||||
Internet-Draft ISC
|
||||
Intended status: BCP November 19, 2009
|
||||
Expires: May 23, 2010
|
||||
|
||||
|
||||
Locally-served DNS Zones
|
||||
draft-ietf-dnsop-default-local-zones-09
|
||||
|
||||
Abstract
|
||||
|
||||
Experience with the Domain Name System (DNS) has shown that there are
|
||||
a number of DNS zones all iterative resolvers and recursive
|
||||
nameservers should automatically serve, unless configured otherwise.
|
||||
RFC 4193 specifies that this should occur for D.F.IP6.ARPA. This
|
||||
document extends the practice to cover the IN-ADDR.ARPA zones for RFC
|
||||
1918 address space and other well known zones with similar
|
||||
characteristics.
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This Internet-Draft is submitted to IETF in full conformance with the
|
||||
provisions of BCP 78 and BCP 79.
|
||||
|
||||
Internet-Drafts are working documents of the Internet Engineering
|
||||
Task Force (IETF), its areas, and its working groups. Note that
|
||||
other groups may also distribute working documents as Internet-
|
||||
Drafts.
|
||||
|
||||
Internet-Drafts are draft documents valid for a maximum of six months
|
||||
and may be updated, replaced, or obsoleted by other documents at any
|
||||
time. It is inappropriate to use Internet-Drafts as reference
|
||||
material or to cite them other than as "work in progress."
|
||||
|
||||
The list of current Internet-Drafts can be accessed at
|
||||
http://www.ietf.org/ietf/1id-abstracts.txt.
|
||||
|
||||
The list of Internet-Draft Shadow Directories can be accessed at
|
||||
http://www.ietf.org/shadow.html.
|
||||
|
||||
This Internet-Draft will expire on May 23, 2010.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (c) 2009 IETF Trust and the persons identified as the
|
||||
document authors. All rights reserved.
|
||||
|
||||
This document is subject to BCP 78 and the IETF Trust's Legal
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 1]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
Provisions Relating to IETF Documents
|
||||
(http://trustee.ietf.org/license-info) in effect on the date of
|
||||
publication of this document. Please review these documents
|
||||
carefully, as they describe your rights and restrictions with respect
|
||||
to this document. Code Components extracted from this document must
|
||||
include Simplified BSD License text as described in Section 4.e of
|
||||
the Trust Legal Provisions and are provided without warranty as
|
||||
described in the BSD License.
|
||||
|
||||
This document may contain material from IETF Documents or IETF
|
||||
Contributions published or made publicly available before November
|
||||
10, 2008. The person(s) controlling the copyright in some of this
|
||||
material may not have granted the IETF Trust the right to allow
|
||||
modifications of such material outside the IETF Standards Process.
|
||||
Without obtaining an adequate license from the person(s) controlling
|
||||
the copyright in such materials, this document may not be modified
|
||||
outside the IETF Standards Process, and derivative works of it may
|
||||
not be created outside the IETF Standards Process, except to format
|
||||
it for publication as an RFC or to translate it into languages other
|
||||
than English.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 2]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
1.1. Reserved Words . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2. Effects on sites using RFC 1918 addresses. . . . . . . . . . . 4
|
||||
3. Changes to Iterative Resolver Behaviour. . . . . . . . . . . . 4
|
||||
4. Lists Of Zones Covered . . . . . . . . . . . . . . . . . . . . 5
|
||||
4.1. RFC1918 Zones . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
4.2. RFC3330 Zones . . . . . . . . . . . . . . . . . . . . . . 6
|
||||
4.3. Local IPv6 Unicast Addresses . . . . . . . . . . . . . . . 6
|
||||
4.4. IPv6 Locally Assigned Local Addresses . . . . . . . . . . 6
|
||||
4.5. IPv6 Link Local Addresses . . . . . . . . . . . . . . . . 7
|
||||
4.6. IPv6 Example Prefix . . . . . . . . . . . . . . . . . . . 7
|
||||
5. Zones that are Out-Of-Scope . . . . . . . . . . . . . . . . . 7
|
||||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
|
||||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 8
|
||||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 9
|
||||
9.2. Informative References . . . . . . . . . . . . . . . . . . 10
|
||||
Appendix A. Change History [To Be Removed on Publication] . . . . 10
|
||||
A.1. draft-ietf-dnsop-default-local-zones-09.txt . . . . . . . 10
|
||||
A.2. draft-ietf-dnsop-default-local-zones-08.txt . . . . . . . 10
|
||||
A.3. draft-ietf-dnsop-default-local-zones-07.txt . . . . . . . 10
|
||||
A.4. draft-ietf-dnsop-default-local-zones-06.txt . . . . . . . 10
|
||||
A.5. draft-ietf-dnsop-default-local-zones-05.txt . . . . . . . 11
|
||||
A.6. draft-ietf-dnsop-default-local-zones-04.txt . . . . . . . 11
|
||||
A.7. draft-ietf-dnsop-default-local-zones-03.txt . . . . . . . 11
|
||||
A.8. draft-ietf-dnsop-default-local-zones-02.txt . . . . . . . 11
|
||||
A.9. draft-ietf-dnsop-default-local-zones-01.txt . . . . . . . 11
|
||||
A.10. draft-ietf-dnsop-default-local-zones-00.txt . . . . . . . 11
|
||||
A.11. draft-andrews-full-service-resolvers-03.txt . . . . . . . 11
|
||||
A.12. draft-andrews-full-service-resolvers-02.txt . . . . . . . 12
|
||||
Appendix B. Proposed Status [To Be Removed on Publication] . . . 12
|
||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 12
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 3]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
||||
Experience with the Domain Name System (DNS, [RFC1034] and [RFC1035])
|
||||
has shown that there are a number of DNS zones that all iterative
|
||||
resolvers and recursive nameservers SHOULD automatically serve,
|
||||
unless intentionally configured otherwise. These zones include, but
|
||||
are not limited to, the IN-ADDR.ARPA zones for the address space
|
||||
allocated by [RFC1918] and the IP6.ARPA zones for locally assigned
|
||||
unique local IPv6 addresses defined in [RFC4193].
|
||||
|
||||
This recommendation is made because data has shown that significant
|
||||
leakage of queries for these name spaces is occurring, despite
|
||||
instructions to restrict them, and because it has therefore become
|
||||
necessary to deploy sacrificial name servers to protect the immediate
|
||||
parent name servers for these zones from excessive, unintentional,
|
||||
query load [AS112] [I-D.draft-ietf-dnsop-as112-ops]
|
||||
[I-D.draft-ietf-dnsop-as112-under-attack-help-help]. There is every
|
||||
expectation that the query load will continue to increase unless
|
||||
steps are taken as outlined here.
|
||||
|
||||
Additionally, queries from clients behind badly configured firewalls
|
||||
that allow outgoing queries for these name spaces but drop the
|
||||
responses, put a significant load on the root servers (forward but no
|
||||
reverse zones configured). They also cause operational load for the
|
||||
root server operators as they have to reply to enquiries about why
|
||||
the root servers are "attacking" these clients. Changing the default
|
||||
configuration will address all these issues for the zones listed in
|
||||
Section 4.
|
||||
|
||||
[RFC4193] recommends that queries for D.F.IP6.ARPA be handled
|
||||
locally. This document extends the recommendation to cover the IN-
|
||||
ADDR.ARPA zones for [RFC1918] and other well known IN-ADDR.ARPA and
|
||||
IP6.ARPA zones for which queries should not appear on the public
|
||||
Internet.
|
||||
|
||||
It is hoped that by doing this the number of sacrificial servers
|
||||
[AS112] will not have to be increased, and may in time be reduced.
|
||||
|
||||
This recommendation should also help DNS responsiveness for sites
|
||||
which are using [RFC1918] addresses but do not follow the last
|
||||
paragraph in Section 3 of [RFC1918].
|
||||
|
||||
1.1. Reserved Words
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in [RFC2119].
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 4]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
2. Effects on sites using RFC 1918 addresses.
|
||||
|
||||
For most sites using [RFC1918] addresses, the changes here will have
|
||||
little or no detrimental effect. If the site does not already have
|
||||
the reverse tree populated the only effect will be that the name
|
||||
error responses will be generated locally rather than remotely.
|
||||
|
||||
For sites that do have the reverse tree populated, most will either
|
||||
have a local copy of the zones or will be forwarding the queries to
|
||||
servers which have local copies of the zone. Therefore this
|
||||
recommendation will not be relevant.
|
||||
|
||||
The most significant impact will be felt at sites that make use of
|
||||
delegations for [RFC1918] addresses and have populated these zones.
|
||||
These sites will need to override the default configuration expressed
|
||||
in this document to allow resolution to continue. Typically, such
|
||||
sites will be fully disconnected from the Internet and have their own
|
||||
root servers for their own non-Internet DNS tree.
|
||||
|
||||
|
||||
3. Changes to Iterative Resolver Behaviour.
|
||||
|
||||
Unless configured otherwise, an iterative resolver will now return
|
||||
authoritatively (aa=1) name errors (RCODE=3) for queries within the
|
||||
zones in Section 4, with the obvious exception of queries for the
|
||||
zone name itself where SOA, NS and "no data" responses will be
|
||||
returned as appropriate to the query type. One common way to do this
|
||||
all at once is to serve empty (SOA and NS only) zones.
|
||||
|
||||
An implementation of this recommendation MUST provide a mechanism to
|
||||
disable this new behaviour, and SHOULD allow this decision on a zone
|
||||
by zone basis.
|
||||
|
||||
If using empty zones one SHOULD NOT use the same NS and SOA records
|
||||
as used on the public Internet servers as that will make it harder to
|
||||
detect the origin of the responses and thus any leakage to the public
|
||||
Internet servers. This document recommends that the NS record
|
||||
defaults to the name of the zone and the SOA MNAME defaults to the
|
||||
name of the only NS RR's target. The SOA RNAME should default to
|
||||
"nobody.invalid." [RFC2606]. Implementations SHOULD provide a
|
||||
mechanism to set these values. No address records need to be
|
||||
provided for the name server.
|
||||
|
||||
Below is an example of a generic empty zone in master file format.
|
||||
It will produce a negative cache TTL of 3 hours.
|
||||
|
||||
@ 10800 IN SOA @ nobody.invalid. 1 3600 1200 604800 10800
|
||||
@ 10800 IN NS @
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 5]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
The SOA RR is needed to support negative caching [RFC2308] of name
|
||||
error responses and to point clients to the primary master for DNS
|
||||
dynamic updates.
|
||||
|
||||
SOA values of particular importance are the MNAME, the SOA RR's TTL
|
||||
and the negTTL value. Both TTL values SHOULD match. The rest of the
|
||||
SOA timer values MAY be chosen arbitrarily since they are not
|
||||
intended to control any zone transfer activity.
|
||||
|
||||
The NS RR is needed as some UPDATE [RFC2136] clients use NS queries
|
||||
to discover the zone to be updated. Having no address records for
|
||||
the name server is expected to abort UPDATE processing in the client.
|
||||
|
||||
|
||||
4. Lists Of Zones Covered
|
||||
|
||||
The following subsections are intended to seed the IANA registry as
|
||||
requested in the IANA Considerations Section. The zone name is the
|
||||
entity to be registered.
|
||||
|
||||
4.1. RFC1918 Zones
|
||||
|
||||
The following zones correspond to the IPv4 address space reserved in
|
||||
[RFC1918].
|
||||
|
||||
+----------------------+
|
||||
| Zone |
|
||||
+----------------------+
|
||||
| 10.IN-ADDR.ARPA |
|
||||
| 16.172.IN-ADDR.ARPA |
|
||||
| 17.172.IN-ADDR.ARPA |
|
||||
| 18.172.IN-ADDR.ARPA |
|
||||
| 19.172.IN-ADDR.ARPA |
|
||||
| 20.172.IN-ADDR.ARPA |
|
||||
| 21.172.IN-ADDR.ARPA |
|
||||
| 22.172.IN-ADDR.ARPA |
|
||||
| 23.172.IN-ADDR.ARPA |
|
||||
| 24.172.IN-ADDR.ARPA |
|
||||
| 25.172.IN-ADDR.ARPA |
|
||||
| 26.172.IN-ADDR.ARPA |
|
||||
| 27.172.IN-ADDR.ARPA |
|
||||
| 28.172.IN-ADDR.ARPA |
|
||||
| 29.172.IN-ADDR.ARPA |
|
||||
| 30.172.IN-ADDR.ARPA |
|
||||
| 31.172.IN-ADDR.ARPA |
|
||||
| 168.192.IN-ADDR.ARPA |
|
||||
+----------------------+
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 6]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
4.2. RFC3330 Zones
|
||||
|
||||
The following zones correspond to those address ranges from [RFC3330]
|
||||
that are not expected to appear as source or destination addresses on
|
||||
the public Internet and to not have a unique name to associate with.
|
||||
|
||||
The recommendation to serve an empty zone 127.IN-ADDR.ARPA is not a
|
||||
attempt to discourage any practice to provide a PTR RR for
|
||||
1.0.0.127.IN-ADDR.ARPA locally. In fact, a meaningful reverse
|
||||
mapping should exist, but the exact setup is out of the scope of this
|
||||
document. Similar logic applies to the reverse mapping for ::1
|
||||
(Section 4.3). The recommendations made here simply assume no other
|
||||
coverage for these domains exists.
|
||||
|
||||
+------------------------------+------------------------+
|
||||
| Zone | Description |
|
||||
+------------------------------+------------------------+
|
||||
| 0.IN-ADDR.ARPA | IPv4 "THIS" NETWORK |
|
||||
| 127.IN-ADDR.ARPA | IPv4 LOOP-BACK NETWORK |
|
||||
| 254.169.IN-ADDR.ARPA | IPv4 LINK LOCAL |
|
||||
| 2.0.192.IN-ADDR.ARPA | IPv4 TEST NET |
|
||||
| 255.255.255.255.IN-ADDR.ARPA | IPv4 BROADCAST |
|
||||
+------------------------------+------------------------+
|
||||
|
||||
4.3. Local IPv6 Unicast Addresses
|
||||
|
||||
The reverse mappings ([RFC3596], Section 2.5 IP6.ARPA Domain) for the
|
||||
IPv6 Unspecified (::) and Loopback (::1) addresses ([RFC4291],
|
||||
Sections 2.4, 2.5.2 and 2.5.3) are covered by these two zones:
|
||||
|
||||
+-------------------------------------------+
|
||||
| Zone |
|
||||
+-------------------------------------------+
|
||||
| 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\ |
|
||||
| 0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA |
|
||||
| 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.\ |
|
||||
| 0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA |
|
||||
+-------------------------------------------+
|
||||
|
||||
Note: Line breaks and a escapes '\' have been inserted above for
|
||||
readability and to adhere to line width constraints. They are not
|
||||
parts of the zone names.
|
||||
|
||||
4.4. IPv6 Locally Assigned Local Addresses
|
||||
|
||||
Section 4.4 of [RFC4193] already required special treatment of:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 7]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
+--------------+
|
||||
| Zone |
|
||||
+--------------+
|
||||
| D.F.IP6.ARPA |
|
||||
+--------------+
|
||||
|
||||
4.5. IPv6 Link Local Addresses
|
||||
|
||||
IPv6 Link-Local Addresses as of [RFC4291], Section 2.5.6 are covered
|
||||
by four distinct reverse DNS zones:
|
||||
|
||||
+----------------+
|
||||
| Zone |
|
||||
+----------------+
|
||||
| 8.E.F.IP6.ARPA |
|
||||
| 9.E.F.IP6.ARPA |
|
||||
| A.E.F.IP6.ARPA |
|
||||
| B.E.F.IP6.ARPA |
|
||||
+----------------+
|
||||
|
||||
4.6. IPv6 Example Prefix
|
||||
|
||||
IPv6 example prefix [RFC3849].
|
||||
|
||||
+--------------------------+
|
||||
| Zone |
|
||||
+--------------------------+
|
||||
| 8.B.D.0.1.0.0.2.IP6.ARPA |
|
||||
+--------------------------+
|
||||
|
||||
Note: 8.B.D.0.1.0.0.2.IP6.ARPA is not being used as a example here.
|
||||
|
||||
|
||||
5. Zones that are Out-Of-Scope
|
||||
|
||||
IPv6 site-local addresses (deprecated, see [RFC4291] Sections 2.4 and
|
||||
2.5.7), and IPv6 Non-Locally Assigned Local addresses ([RFC4193]) are
|
||||
not covered here.
|
||||
|
||||
It is expected that IPv6 site-local addresses will be self correcting
|
||||
as IPv6 implementations remove support for site-local addresses.
|
||||
However, sacrificial servers for the zones C.E.F.IP6.ARPA through
|
||||
F.E.F.IP6.ARPA may still need to be deployed in the short term if the
|
||||
traffic becomes excessive.
|
||||
|
||||
For IPv6 Non-Locally Assigned Local addresses (L = 0) [RFC4193],
|
||||
there has been no decision made about whether the Regional Internet
|
||||
Registries (RIRs) will provide delegations in this space or not. If
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 8]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
they don't, then C.F.IP6.ARPA will need to be added to the list in
|
||||
Section 4.4. If they do, then registries will need to take steps to
|
||||
ensure that name servers are provided for these addresses.
|
||||
|
||||
This document also ignores IP6.INT. IP6.INT has been wound up with
|
||||
only legacy resolvers now generating reverse queries under IP6.INT
|
||||
[RFC4159].
|
||||
|
||||
This document has also deliberately ignored names immediately under
|
||||
the root domain. While there is a subset of queries to the root name
|
||||
servers which could be addressed using the techniques described here
|
||||
(e.g. .local, .workgroup and IPv4 addresses), there is also a vast
|
||||
amount of traffic that requires a different strategy (e.g. lookups
|
||||
for unqualified hostnames, IPv6 addresses).
|
||||
|
||||
|
||||
6. IANA Considerations
|
||||
|
||||
This document requests that IANA establish a registry of zones which
|
||||
require this default behaviour. The initial contents of this
|
||||
registry are defined in Section 4. Implementors are encouraged to
|
||||
periodically check this registry and adjust their implementations to
|
||||
reflect changes therein.
|
||||
|
||||
This registry can be amended through "IETF Review" as per [RFC5226].
|
||||
|
||||
IANA should co-ordinate with the RIRs to ensure that, as DNSSEC is
|
||||
deployed in the reverse tree, delegations for these zones are made in
|
||||
the manner described in Section 7.
|
||||
|
||||
|
||||
7. Security Considerations
|
||||
|
||||
During the initial deployment phase, particularly where [RFC1918]
|
||||
addresses are in use, there may be some clients that unexpectedly
|
||||
receive a name error rather than a PTR record. This may cause some
|
||||
service disruption until their recursive name server(s) have been re-
|
||||
configured.
|
||||
|
||||
As DNSSEC is deployed within the IN-ADDR.ARPA and IP6.ARPA
|
||||
namespaces, the zones listed above will need to be delegated as
|
||||
insecure delegations, or be within insecure zones. This will allow
|
||||
DNSSEC validation to succeed for queries in these spaces despite not
|
||||
being answered from the delegated servers.
|
||||
|
||||
It is recommended that sites actively using these namespaces secure
|
||||
them using DNSSEC [RFC4035] by publishing and using DNSSEC trust
|
||||
anchors. This will protect the clients from accidental import of
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 9]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
unsigned responses from the Internet.
|
||||
|
||||
|
||||
8. Acknowledgements
|
||||
|
||||
This work was supported by the US National Science Foundation
|
||||
(research grant SCI-0427144) and DNS-OARC.
|
||||
|
||||
|
||||
9. References
|
||||
|
||||
9.1. Normative References
|
||||
|
||||
[RFC1034] Mockapetris, P., "DOMAIN NAMES - CONCEPTS AND FACILITIES",
|
||||
STD 13, RFC 1034, November 1987.
|
||||
|
||||
[RFC1035] Mockapetris, P., "DOMAIN NAMES - IMPLEMENTATION AND
|
||||
SPECIFICATION", STD 13, RFC 1035, November 1987.
|
||||
|
||||
[RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G.,
|
||||
and E. Lear, "Address Allocation for Private Internets",
|
||||
BCP 5, RFC 1918, February 1996.
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[RFC2136] Vixie, P., Thomson, A., Rekhter, Y., and J. Bound,
|
||||
"Dynamic Updates in the Domain Name System (DNS UPDATE)",
|
||||
RFC 2136, April 1997.
|
||||
|
||||
[RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS
|
||||
NCACHE)", RFC 2398, March 1998.
|
||||
|
||||
[RFC2606] Eastlake, D. and A. Panitz, "Reserved Top Level DNS
|
||||
Names", BCP 32, RFC 2606, June 1999.
|
||||
|
||||
[RFC3596] Thomson, S., Huitema, C., Ksinant, V., and M. Souissi,
|
||||
"DNS Extensions to Support IPv6", RFC 3596, October 2003.
|
||||
|
||||
[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
|
||||
Rose, "Protocol Modifications for the DNS Security
|
||||
Extensions", RFC 4035, March 2005.
|
||||
|
||||
[RFC4159] Huston, G., "Deprecation of "ip6.int"", BCP 109, RFC 4159,
|
||||
August 2005.
|
||||
|
||||
[RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
|
||||
Addresses", RFC 4193, October 2005.
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 10]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
[RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
|
||||
Architecture", RFC 4291, February 2006.
|
||||
|
||||
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
|
||||
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
|
||||
October 2008.
|
||||
|
||||
9.2. Informative References
|
||||
|
||||
[AS112] "AS112 Project", <http://www.as112.net/>.
|
||||
|
||||
[I-D.draft-ietf-dnsop-as112-ops]
|
||||
Abley, J. and W. Maton, "AS112 Nameserver Operations",
|
||||
draft-ietf-dnsop-as112-ops-01 (work in progress),
|
||||
November 2007.
|
||||
|
||||
[I-D.draft-ietf-dnsop-as112-under-attack-help-help]
|
||||
Abley, J. and W. Maton, "I'm Being Attacked by
|
||||
PRISONER.IANA.ORG!",
|
||||
draft-ietf-dnsop-as112-under-attack-help-help-01 (work in
|
||||
progress), November 2007.
|
||||
|
||||
[RFC3330] "Special-Use IPv4 Addresses", RFC 3330, September 2002.
|
||||
|
||||
[RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix
|
||||
Reserved for Documentation", RFC 3849, July 2004.
|
||||
|
||||
|
||||
Appendix A. Change History [To Be Removed on Publication]
|
||||
|
||||
A.1. draft-ietf-dnsop-default-local-zones-09.txt
|
||||
|
||||
refresh awaiting writeup
|
||||
|
||||
A.2. draft-ietf-dnsop-default-local-zones-08.txt
|
||||
|
||||
editorial, reference updates
|
||||
|
||||
A.3. draft-ietf-dnsop-default-local-zones-07.txt
|
||||
|
||||
none, expiry prevention
|
||||
|
||||
A.4. draft-ietf-dnsop-default-local-zones-06.txt
|
||||
|
||||
add IPv6 example prefix
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 11]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
A.5. draft-ietf-dnsop-default-local-zones-05.txt
|
||||
|
||||
none, expiry prevention
|
||||
|
||||
A.6. draft-ietf-dnsop-default-local-zones-04.txt
|
||||
|
||||
Centrally Assigned Local addresses -> Non-Locally Assigned Local
|
||||
address
|
||||
|
||||
A.7. draft-ietf-dnsop-default-local-zones-03.txt
|
||||
|
||||
expanded section 4 descriptions
|
||||
|
||||
Added references [RFC2136], [RFC3596],
|
||||
[I-D.draft-ietf-dnsop-as112-ops] and
|
||||
[I-D.draft-ietf-dnsop-as112-under-attack-help-help].
|
||||
|
||||
Revised language.
|
||||
|
||||
A.8. draft-ietf-dnsop-default-local-zones-02.txt
|
||||
|
||||
RNAME now "nobody.invalid."
|
||||
|
||||
Revised language.
|
||||
|
||||
A.9. draft-ietf-dnsop-default-local-zones-01.txt
|
||||
|
||||
Revised impact description.
|
||||
|
||||
Updated to reflect change in IP6.INT status.
|
||||
|
||||
A.10. draft-ietf-dnsop-default-local-zones-00.txt
|
||||
|
||||
Adopted by DNSOP.
|
||||
|
||||
"Author's Note" re-titled "Zones that are Out-Of-Scope"
|
||||
|
||||
Add note that these zone are expected to seed the IANA registry.
|
||||
|
||||
Title changed.
|
||||
|
||||
A.11. draft-andrews-full-service-resolvers-03.txt
|
||||
|
||||
Added "Proposed Status".
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 12]
|
||||
|
||||
Internet-Draft Locally-served DNS Zones November 2009
|
||||
|
||||
|
||||
A.12. draft-andrews-full-service-resolvers-02.txt
|
||||
|
||||
Added 0.IN-ADDR.ARPA.
|
||||
|
||||
|
||||
Appendix B. Proposed Status [To Be Removed on Publication]
|
||||
|
||||
This Internet-Draft is being submitted for eventual publication as an
|
||||
RFC with a proposed status of Best Current Practice.
|
||||
|
||||
|
||||
Author's Address
|
||||
|
||||
Mark P. Andrews
|
||||
Internet Systems Consortium
|
||||
950 Charter Street
|
||||
Redwood City, CA 94063
|
||||
US
|
||||
|
||||
Email: Mark_Andrews@isc.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Andrews Expires May 23, 2010 [Page 13]
|
||||
|
||||
|
||||
507
doc/rfc/rfc3755.txt
Normal file
507
doc/rfc/rfc3755.txt
Normal file
@@ -0,0 +1,507 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group S. Weiler
|
||||
Request for Comments: 3755 SPARTA, Inc.
|
||||
Updates: 3658, 2535 May 2004
|
||||
Category: Standards Track
|
||||
|
||||
|
||||
Legacy Resolver Compatibility for Delegation Signer (DS)
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This document specifies an Internet standards track protocol for the
|
||||
Internet community, and requests discussion and suggestions for
|
||||
improvements. Please refer to the current edition of the "Internet
|
||||
Official Protocol Standards" (STD 1) for the standardization state
|
||||
and status of this protocol. Distribution of this memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2004). All Rights Reserved.
|
||||
|
||||
Abstract
|
||||
|
||||
As the DNS Security (DNSSEC) specifications have evolved, the syntax
|
||||
and semantics of the DNSSEC resource records (RRs) have changed.
|
||||
Many deployed nameservers understand variants of these semantics.
|
||||
Dangerous interactions can occur when a resolver that understands an
|
||||
earlier version of these semantics queries an authoritative server
|
||||
that understands the new delegation signer semantics, including at
|
||||
least one failure scenario that will cause an unsecured zone to be
|
||||
unresolvable. This document changes the type codes and mnemonics of
|
||||
the DNSSEC RRs (SIG, KEY, and NXT) to avoid those interactions.
|
||||
|
||||
1. Introduction
|
||||
|
||||
The DNSSEC protocol has been through many iterations whose syntax and
|
||||
semantics are not completely compatible. This has occurred as part
|
||||
of the ordinary process of proposing a protocol, implementing it,
|
||||
testing it in the increasingly complex and diverse environment of the
|
||||
Internet, and refining the definitions of the initial Proposed
|
||||
Standard. In the case of DNSSEC, the process has been complicated by
|
||||
DNS's criticality and wide deployment and the need to add security
|
||||
while minimizing daily operational complexity.
|
||||
|
||||
A weak area for previous DNS specifications has been lack of detail
|
||||
in specifying resolver behavior, leaving implementors largely on
|
||||
their own to determine many details of resolver function. This,
|
||||
combined with the number of iterations the DNSSEC specifications have
|
||||
been through, has resulted in fielded code with a wide variety of
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 1]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
behaviors. This variety makes it difficult to predict how a protocol
|
||||
change will be handled by all deployed resolvers. The risk that a
|
||||
change will cause unacceptable or even catastrophic failures makes it
|
||||
difficult to design and deploy a protocol change. One strategy for
|
||||
managing that risk is to structure protocol changes so that existing
|
||||
resolvers can completely ignore input that might confuse them or
|
||||
trigger undesirable failure modes.
|
||||
|
||||
This document addresses a specific problem caused by Delegation
|
||||
Signer's (DS) [RFC3658] introduction of new semantics for the NXT RR
|
||||
that are incompatible with the semantics in [RFC2535]. Answers
|
||||
provided by DS-aware servers can trigger an unacceptable failure mode
|
||||
in some resolvers that implement RFC 2535, which provides a great
|
||||
disincentive to sign zones with DS. The changes defined in this
|
||||
document allow for the incremental deployment of DS.
|
||||
|
||||
1.1. Terminology
|
||||
|
||||
In this document, the term "unsecure delegation" means any delegation
|
||||
for which no DS record appears at the parent. An "unsecure referral"
|
||||
is an answer from the parent containing an NS RRset and a proof that
|
||||
no DS record exists for that name.
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in [RFC2119].
|
||||
|
||||
1.2. The Problem
|
||||
|
||||
Delegation Signer (DS) introduces new semantics for the NXT RR that
|
||||
are incompatible with the semantics in RFC 2535. In RFC 2535, NXT
|
||||
records were only required to be returned as part of a non-existence
|
||||
proof. With DS, an unsecure referral returns, in addition to the NS,
|
||||
a proof of non-existence of a DS RR in the form of an NXT and
|
||||
SIG(NXT). RFC 2535 didn't specify how a resolver was to interpret a
|
||||
response with RCODE=0, AA=0, and both an NS and an NXT in the
|
||||
authority section. Some widely deployed 2535-aware resolvers
|
||||
interpret any answer with an NXT as a proof of non-existence of the
|
||||
requested record. This results in unsecure delegations being
|
||||
invisible to 2535-aware resolvers and violates the basic
|
||||
architectural principle that DNSSEC must do no harm -- the signing of
|
||||
zones must not prevent the resolution of unsecured delegations.
|
||||
|
||||
2. Possible Solutions
|
||||
|
||||
This section presents several solutions that were considered.
|
||||
Section 3 describes the one selected.
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 2]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
2.1. Change SIG, KEY, and NXT type codes
|
||||
|
||||
To avoid the problem described above, legacy (RFC2535-aware)
|
||||
resolvers need to be kept from seeing unsecure referrals that include
|
||||
NXT records in the authority section. The simplest way to do that is
|
||||
to change the type codes for SIG, KEY, and NXT.
|
||||
|
||||
The obvious drawback to this is that new resolvers will not be able
|
||||
to validate zones signed with the old RRs. This problem already
|
||||
exists, however, because of the changes made by DS, and resolvers
|
||||
that understand the old RRs (and have compatibility issues with DS)
|
||||
are far more prevalent than 2535-signed zones.
|
||||
|
||||
2.2. Change a subset of type codes
|
||||
|
||||
The observed problem with unsecure referrals could be addressed by
|
||||
changing only the NXT type code or another subset of the type codes
|
||||
that includes NXT. This has the virtue of apparent simplicity, but
|
||||
it risks introducing new problems or not going far enough. It's
|
||||
quite possible that more incompatibilities exist between DS and
|
||||
earlier semantics. Legacy resolvers may also be confused by seeing
|
||||
records they recognize (SIG and KEY) while being unable to find NXTs.
|
||||
Although it may seem unnecessary to fix that which is not obviously
|
||||
broken, it's far cleaner to change all of the type codes at once.
|
||||
This will leave legacy resolvers and tools completely blinded to
|
||||
DNSSEC -- they will see only unknown RRs.
|
||||
|
||||
2.3. Replace the DO bit
|
||||
|
||||
Another way to keep legacy resolvers from ever seeing DNSSEC records
|
||||
with DS semantics is to have authoritative servers only send that
|
||||
data to DS-aware resolvers. It's been proposed that assigning a new
|
||||
EDNS0 flag bit to signal DS-awareness (tentatively called "DA"), and
|
||||
having authoritative servers send DNSSEC data only in response to
|
||||
queries with the DA bit set, would accomplish this. This bit would
|
||||
presumably supplant the DO bit described in [RFC3225].
|
||||
|
||||
This solution is sufficient only if all 2535-aware resolvers zero out
|
||||
EDNS0 flags that they don't understand. If one passed through the DA
|
||||
bit unchanged, it would still see the new semantics, and it would
|
||||
probably fail to see unsecure delegations. Since it's impractical to
|
||||
know how every DNS implementation handles unknown EDNS0 flags, this
|
||||
is not a universal solution. It could, though, be considered in
|
||||
addition to changing the RR type codes.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 3]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
2.4. Increment the EDNS version
|
||||
|
||||
Another possible solution is to increment the EDNS version number as
|
||||
defined in [RFC2671], on the assumption that all existing
|
||||
implementations will reject higher versions than they support, and
|
||||
retain the DO bit as the signal for DNSSEC awareness. This approach
|
||||
has not been tested.
|
||||
|
||||
2.5. Do nothing
|
||||
|
||||
There is a large deployed base of DNS resolvers that understand
|
||||
DNSSEC as defined by the standards track RFC 2535 and [RFC2065] and,
|
||||
due to under specification in those documents, interpret any answer
|
||||
with an NXT as a non-existence proof. So long as that is the case,
|
||||
zone owners will have a strong incentive to not sign any zones that
|
||||
contain unsecure delegations, lest those delegations be invisible to
|
||||
such a large installed base. This will dramatically slow DNSSEC
|
||||
adoption.
|
||||
|
||||
Unfortunately, without signed zones there's no clear incentive for
|
||||
operators of resolvers to upgrade their software to support the new
|
||||
version of DNSSEC, as defined in RFC 3658. Historical data suggests
|
||||
that resolvers are rarely upgraded, and that old nameserver code
|
||||
never dies.
|
||||
|
||||
Rather than wait years for resolvers to be upgraded through natural
|
||||
processes before signing zones with unsecure delegations, addressing
|
||||
this problem with a protocol change will immediately remove the
|
||||
disincentive for signing zones and allow widespread deployment of
|
||||
DNSSEC.
|
||||
|
||||
3. Protocol changes
|
||||
|
||||
This document changes the type codes of SIG, KEY, and NXT. This
|
||||
approach is the cleanest and safest of those discussed above, largely
|
||||
because the behavior of resolvers that receive unknown type codes is
|
||||
well understood. This approach has also received the most testing.
|
||||
|
||||
To avoid operational confusion, it's also necessary to change the
|
||||
mnemonics for these RRs. DNSKEY will be the replacement for KEY,
|
||||
with the mnemonic indicating that these keys are not for application
|
||||
use, per [RFC3445]. RRSIG (Resource Record SIGnature) will replace
|
||||
SIG, and NSEC (Next SECure) will replace NXT. These new types
|
||||
completely replace the old types, except that SIG(0) [RFC2931] and
|
||||
TKEY [RFC2930] will continue to use SIG and KEY.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 4]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
The new types will have exactly the same syntax and semantics as
|
||||
specified for SIG, KEY, and NXT in RFC 2535 and RFC 3658 except for
|
||||
the following:
|
||||
|
||||
1) Consistent with [RFC3597], domain names embedded in RRSIG and NSEC
|
||||
RRs MUST NOT be compressed,
|
||||
|
||||
2) Embedded domain names in RRSIG and NSEC RRs are not downcased for
|
||||
purposes of DNSSEC canonical form and ordering nor for equality
|
||||
comparison, and
|
||||
|
||||
3) An RRSIG with a type-covered field of zero has undefined
|
||||
semantics. The meaning of such a resource record may only be
|
||||
defined by IETF Standards Action.
|
||||
|
||||
If a resolver receives the old types, it SHOULD treat them as unknown
|
||||
RRs and SHOULD NOT assign any special meaning to them or give them
|
||||
any special treatment. It MUST NOT use them for DNSSEC validations
|
||||
or other DNS operational decision making. For example, a resolver
|
||||
MUST NOT use DNSKEYs to validate SIGs or use KEYs to validate RRSIGs.
|
||||
If SIG, KEY, or NXT RRs are included in a zone, they MUST NOT receive
|
||||
special treatment. As an example, if a SIG is included in a signed
|
||||
zone, there MUST be an RRSIG for it. Authoritative servers may wish
|
||||
to give error messages when loading zones containing SIG or NXT
|
||||
records (KEY records may be included for SIG(0) or TKEY).
|
||||
|
||||
As a clarification to previous documents, some positive responses,
|
||||
particularly wildcard proofs and unsecure referrals, will contain
|
||||
NSEC RRs. Resolvers MUST NOT treat answers with NSEC RRs as negative
|
||||
answers merely because they contain an NSEC.
|
||||
|
||||
4. IANA Considerations
|
||||
|
||||
4.1. DNS Resource Record Types
|
||||
|
||||
This document updates the IANA registry for DNS Resource Record Types
|
||||
by assigning types 46, 47, and 48 to the RRSIG, NSEC, and DNSKEY RRs,
|
||||
respectively.
|
||||
|
||||
Types 24 and 25 (SIG and KEY) are retained for SIG(0) [RFC2931] and
|
||||
TKEY [RFC2930] use only.
|
||||
|
||||
Type 30 (NXT) should be marked as Obsolete.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 5]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
4.2. DNS Security Algorithm Numbers
|
||||
|
||||
To allow zone signing (DNSSEC) and transaction security mechanisms
|
||||
(SIG(0) and TKEY) to use different sets of algorithms, the existing
|
||||
"DNS Security Algorithm Numbers" registry is modified to include the
|
||||
applicability of each algorithm. Specifically, two new columns are
|
||||
added to the registry, showing whether each algorithm may be used for
|
||||
zone signing, transaction security mechanisms, or both. Only
|
||||
algorithms usable for zone signing may be used in DNSKEY, RRSIG, and
|
||||
DS RRs. Only algorithms usable for SIG(0) and/or TSIG may be used in
|
||||
SIG and KEY RRs.
|
||||
|
||||
All currently defined algorithms except for Indirect (algorithm 252)
|
||||
remain usable for transaction security mechanisms. Only RSA/SHA-1
|
||||
[RFC3110], DSA/SHA-1 [RFC2536], and private algorithms (types 253 and
|
||||
254) may be used for zone signing. Note that the registry does not
|
||||
contain the requirement level of each algorithm, only whether or not
|
||||
an algorithm may be used for the given purposes. For example,
|
||||
RSA/MD5, while allowed for transaction security mechanisms, is NOT
|
||||
RECOMMENDED, per [RFC3110].
|
||||
|
||||
Additionally, the presentation format algorithm mnemonics from
|
||||
[RFC2535] Section 7 are added to the registry. This document assigns
|
||||
RSA/SHA-1 the mnemonic RSASHA1.
|
||||
|
||||
As before, assignment of new algorithms in this registry requires
|
||||
IETF Standards Action. Additionally, modification of algorithm
|
||||
mnemonics or applicability requires IETF Standards Action. Documents
|
||||
defining a new algorithm must address the applicability of the
|
||||
algorithm and should assign a presentation mnemonic to the algorithm.
|
||||
|
||||
4.3. DNSKEY Flags
|
||||
|
||||
Like the KEY resource record, DNSKEY contains a 16-bit flags field.
|
||||
This document creates a new registry for the DNSKEY flags field.
|
||||
|
||||
Initially, this registry only contains an assignment for bit 7 (the
|
||||
ZONE bit). Bits 0-6 and 8-15 are available for assignment by IETF
|
||||
Standards Action.
|
||||
|
||||
4.4. DNSKEY Protocol Octet
|
||||
|
||||
Like the KEY resource record, DNSKEY contains an eight bit protocol
|
||||
field. The only defined value for this field is 3 (DNSSEC). No
|
||||
other values are allowed, hence no IANA registry is needed for this
|
||||
field.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 6]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
5. Security Considerations
|
||||
|
||||
The changes introduced here do not materially affect security. The
|
||||
implications of trying to use both new and legacy types together are
|
||||
not well understood, and attempts to do so would probably lead to
|
||||
unintended and dangerous results.
|
||||
|
||||
Changing type codes will leave code paths in legacy resolvers that
|
||||
are never exercised. Unexercised code paths are a frequent source of
|
||||
security holes, largely because those code paths do not get frequent
|
||||
scrutiny.
|
||||
|
||||
Doing nothing, as described in section 2.5, will slow DNSSEC
|
||||
deployment. While this does not decrease security, it also fails to
|
||||
increase it.
|
||||
|
||||
6. References
|
||||
|
||||
6.1. Normative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[RFC2535] Eastlake, D., "Domain Name System Security Extensions", RFC
|
||||
2535, March 1999.
|
||||
|
||||
[RFC2536] Eastlake, D., "DSA KEYs and SIGs in the Domain Name System
|
||||
(DNS)", RFC 2536, March 1999.
|
||||
|
||||
[RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY RR)",
|
||||
RFC 2930, September 2000.
|
||||
|
||||
[RFC2931] Eastlake, D., "DNS Request and Transaction Signatures
|
||||
(SIG(0)s)", RFC 2931, September 2000.
|
||||
|
||||
[RFC3110] Eastlake, D., "RSA/SHA-1 SIGs and RSA KEYs in the Domain
|
||||
Name System (DNS)", RFC 3110, May 2001.
|
||||
|
||||
[RFC3658] Gudmundsson, O., "Delegation Signer (DS) Resource Record
|
||||
(RR)", RFC 3658, December 2003.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 7]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
6.2. Informative References
|
||||
|
||||
[RFC2065] Eastlake, 3rd, D. and C. Kaufman, "Domain Name System
|
||||
Security Extensions", RFC 2065, January 1997.
|
||||
|
||||
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
|
||||
2671, August 1999.
|
||||
|
||||
[RFC3225] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
|
||||
3225, December 2001.
|
||||
|
||||
[RFC3445] Massey, D., and S. Rose, "Limiting the Scope of the KEY
|
||||
Resource Record (RR)", RFC 3445, December 2002.
|
||||
|
||||
[RFC3597] Gustafsson, A., "Handling of Unknown DNS Resource Record
|
||||
(RR) Types", RFC 3597, September 2003.
|
||||
|
||||
7. Acknowledgments
|
||||
|
||||
The changes introduced here and the analysis of alternatives had many
|
||||
contributors. With apologies to anyone overlooked, those include:
|
||||
Michael Graff, Johan Ihren, Olaf Kolkman, Mark Kosters, Ed Lewis,
|
||||
Bill Manning, Paul Vixie, and Suzanne Woolf.
|
||||
|
||||
Thanks to Jakob Schlyter and Mark Andrews for identifying the
|
||||
incompatibility described in section 1.2.
|
||||
|
||||
In addition to the above, the author would like to thank Scott Rose,
|
||||
Olafur Gudmundsson, and Sandra Murphy for their substantive comments.
|
||||
|
||||
8. Author's Address
|
||||
|
||||
Samuel Weiler
|
||||
SPARTA, Inc.
|
||||
7075 Samuel Morse Drive
|
||||
Columbia, MD 21046
|
||||
USA
|
||||
|
||||
EMail: weiler@tislabs.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 8]
|
||||
|
||||
RFC 3755 Legacy Resolver Compatibility for DS May 2004
|
||||
|
||||
|
||||
9. Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2004). This document is subject
|
||||
to the rights, licenses and restrictions contained in BCP 78, and
|
||||
except as set forth therein, the authors retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
|
||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
|
||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at ietf-
|
||||
ipr@ietf.org.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Weiler Standards Track [Page 9]
|
||||
|
||||
1123
doc/rfc/rfc4294.txt
Normal file
1123
doc/rfc/rfc4294.txt
Normal file
File diff suppressed because it is too large
Load Diff
1459
doc/rfc/rfc4339.txt
Normal file
1459
doc/rfc/rfc4339.txt
Normal file
File diff suppressed because it is too large
Load Diff
1291
doc/rfc/rfc4471.txt
Normal file
1291
doc/rfc/rfc4471.txt
Normal file
File diff suppressed because it is too large
Load Diff
1627
doc/rfc/rfc4472.txt
Normal file
1627
doc/rfc/rfc4472.txt
Normal file
File diff suppressed because it is too large
Load Diff
1011
doc/rfc/rfc4697.txt
Normal file
1011
doc/rfc/rfc4697.txt
Normal file
File diff suppressed because it is too large
Load Diff
395
doc/rfc/rfc4955.txt
Normal file
395
doc/rfc/rfc4955.txt
Normal file
@@ -0,0 +1,395 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group D. Blacka
|
||||
Request for Comments: 4955 VeriSign, Inc.
|
||||
Category: Standards Track July 2007
|
||||
|
||||
|
||||
DNS Security (DNSSEC) Experiments
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This document specifies an Internet standards track protocol for the
|
||||
Internet community, and requests discussion and suggestions for
|
||||
improvements. Please refer to the current edition of the "Internet
|
||||
Official Protocol Standards" (STD 1) for the standardization state
|
||||
and status of this protocol. Distribution of this memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
Abstract
|
||||
|
||||
This document describes a methodology for deploying alternate, non-
|
||||
backwards-compatible, DNS Security (DNSSEC) methodologies in an
|
||||
experimental fashion without disrupting the deployment of standard
|
||||
DNSSEC.
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
2. Definitions and Terminology . . . . . . . . . . . . . . . . . . 2
|
||||
3. Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
4. Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
5. Defining an Experiment . . . . . . . . . . . . . . . . . . . . 4
|
||||
6. Considerations . . . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
7. Use in Non-Experiments . . . . . . . . . . . . . . . . . . . . 5
|
||||
8. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
|
||||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 6
|
||||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 6
|
||||
9.2. Informative References . . . . . . . . . . . . . . . . . . 6
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 1]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
1. Overview
|
||||
|
||||
Historically, experimentation with DNSSEC alternatives has been a
|
||||
problematic endeavor. There has typically been a desire to both
|
||||
introduce non-backwards-compatible changes to DNSSEC and to try these
|
||||
changes on real zones in the public DNS. This creates a problem when
|
||||
the change to DNSSEC would make all or part of the zone using those
|
||||
changes appear bogus (bad) or otherwise broken to existing security-
|
||||
aware resolvers.
|
||||
|
||||
This document describes a standard methodology for setting up DNSSEC
|
||||
experiments. This methodology addresses the issue of coexistence
|
||||
with standard DNSSEC and DNS by using unknown algorithm identifiers
|
||||
to hide the experimental DNSSEC protocol modifications from standard
|
||||
security-aware resolvers.
|
||||
|
||||
2. Definitions and Terminology
|
||||
|
||||
Throughout this document, familiarity with the DNS system (RFC 1035
|
||||
[5]) and the DNS security extensions (RFC 4033 [2], RFC 4034 [3], and
|
||||
RFC 4035 [4]) is assumed.
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [1].
|
||||
|
||||
3. Experiments
|
||||
|
||||
When discussing DNSSEC experiments, it is necessary to classify these
|
||||
experiments into two broad categories:
|
||||
|
||||
Backwards-Compatible: describes experimental changes that, while not
|
||||
strictly adhering to the DNSSEC standard, are nonetheless
|
||||
interoperable with clients and servers that do implement the
|
||||
DNSSEC standard.
|
||||
|
||||
Non-Backwards-Compatible: describes experiments that would cause a
|
||||
standard security-aware resolver to (incorrectly) determine that
|
||||
all or part of a zone is bogus, or to otherwise not interoperate
|
||||
with standard DNSSEC clients and servers.
|
||||
|
||||
Not included in these terms are experiments with the core DNS
|
||||
protocol itself.
|
||||
|
||||
The methodology described in this document is not necessary for
|
||||
backwards-compatible experiments, although it certainly may be used
|
||||
if desired.
|
||||
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 2]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
4. Method
|
||||
|
||||
The core of the methodology is the use of strictly unknown algorithm
|
||||
identifiers when signing the experimental zone, and more importantly,
|
||||
having only unknown algorithm identifiers in the DS records for the
|
||||
delegation to the zone at the parent.
|
||||
|
||||
This technique works because of the way DNSSEC-compliant validators
|
||||
are expected to work in the presence of a DS set with only unknown
|
||||
algorithm identifiers. From RFC 4035 [4], Section 5.2:
|
||||
|
||||
If the validator does not support any of the algorithms listed in
|
||||
an authenticated DS RRset, then the resolver has no supported
|
||||
authentication path leading from the parent to the child. The
|
||||
resolver should treat this case as it would the case of an
|
||||
authenticated NSEC RRset proving that no DS RRset exists, as
|
||||
described above.
|
||||
|
||||
And further:
|
||||
|
||||
If the resolver does not support any of the algorithms listed in
|
||||
an authenticated DS RRset, then the resolver will not be able to
|
||||
verify the authentication path to the child zone. In this case,
|
||||
the resolver SHOULD treat the child zone as if it were unsigned.
|
||||
|
||||
Although this behavior isn't strictly mandatory (as marked by MUST),
|
||||
it is unlikely for a validator to implement a substantially different
|
||||
behavior. Essentially, if the validator does not have a usable chain
|
||||
of trust to a child zone, then it can only do one of two things:
|
||||
treat responses from the zone as insecure (the recommended behavior),
|
||||
or treat the responses as bogus. If the validator chooses the
|
||||
latter, this will both violate the expectation of the zone owner and
|
||||
defeat the purpose of the above rule. However, with local policy, it
|
||||
is within the right of a validator to refuse to trust certain zones
|
||||
based on any criteria, including the use of unknown signing
|
||||
algorithms.
|
||||
|
||||
Because we are talking about experiments, it is RECOMMENDED that
|
||||
private algorithm numbers be used (see RFC 4034 [3], Appendix A.1.1.
|
||||
Note that secure handling of private algorithms requires special
|
||||
handing by the validator logic. See "Clarifications and
|
||||
Implementation Notes for DNSSECbis" [6] for further details.)
|
||||
Normally, instead of actually inventing new signing algorithms, the
|
||||
recommended path is to create alternate algorithm identifiers that
|
||||
are aliases for the existing, known algorithms. While, strictly
|
||||
speaking, it is only necessary to create an alternate identifier for
|
||||
the mandatory algorithms, it is suggested that all optional defined
|
||||
algorithms be aliased as well.
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 3]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
It is RECOMMENDED that for a particular DNSSEC experiment, a
|
||||
particular domain name base is chosen for all new algorithms, then
|
||||
the algorithm number (or name) is prepended to it. For example, for
|
||||
experiment A, the base name of "dnssec-experiment-a.example.com" is
|
||||
chosen. Then, aliases for algorithms 3 (DSA) and 5 (RSASHA1) are
|
||||
defined to be "3.dnssec-experiment-a.example.com" and
|
||||
"5.dnssec-experiment-a.example.com". However, any unique identifier
|
||||
will suffice.
|
||||
|
||||
Using this method, resolvers (or, more specifically, DNSSEC
|
||||
validators) essentially indicate their ability to understand the
|
||||
DNSSEC experiment's semantics by understanding what the new algorithm
|
||||
identifiers signify.
|
||||
|
||||
This method creates two classes of security-aware servers and
|
||||
resolvers: servers and resolvers that are aware of the experiment
|
||||
(and thus recognize the experiment's algorithm identifiers and
|
||||
experimental semantics), and servers and resolvers that are unaware
|
||||
of the experiment.
|
||||
|
||||
This method also precludes any zone from being both in an experiment
|
||||
and in a classic DNSSEC island of security. That is, a zone is
|
||||
either in an experiment and only possible to validate experimentally,
|
||||
or it is not.
|
||||
|
||||
5. Defining an Experiment
|
||||
|
||||
The DNSSEC experiment MUST define the particular set of (previously
|
||||
unknown) algorithm identifiers that identify the experiment and
|
||||
define what each unknown algorithm identifier means. Typically,
|
||||
unless the experiment is actually experimenting with a new DNSSEC
|
||||
algorithm, this will be a mapping of private algorithm identifiers to
|
||||
existing, known algorithms.
|
||||
|
||||
Normally the experiment will choose a DNS name as the algorithm
|
||||
identifier base. This DNS name SHOULD be under the control of the
|
||||
authors of the experiment. Then the experiment will define a mapping
|
||||
between known mandatory and optional algorithms into this private
|
||||
algorithm identifier space. Alternately, the experiment MAY use the
|
||||
Object Identifier (OID) private algorithm space instead (using
|
||||
algorithm number 254), or MAY choose non-private algorithm numbers,
|
||||
although this would require an IANA allocation.
|
||||
|
||||
For example, an experiment might specify in its description the DNS
|
||||
name "dnssec-experiment-a.example.com" as the base name, and declare
|
||||
that "3.dnssec-experiment-a.example.com" is an alias of DNSSEC
|
||||
algorithm 3 (DSA), and that "5.dnssec-experiment-a.example.com" is an
|
||||
alias of DNSSEC algorithm 5 (RSASHA1).
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 4]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
Resolvers MUST only recognize the experiment's semantics when present
|
||||
in a zone signed by one or more of these algorithm identifiers. This
|
||||
is necessary to isolate the semantics of one experiment from any
|
||||
others that the resolver might understand.
|
||||
|
||||
In general, resolvers involved in the experiment are expected to
|
||||
understand both standard DNSSEC and the defined experimental DNSSEC
|
||||
protocol, although this isn't required.
|
||||
|
||||
6. Considerations
|
||||
|
||||
There are a number of considerations with using this methodology.
|
||||
|
||||
1. If an unaware validator does not correctly follow the rules laid
|
||||
out in RFC 4035 (e.g., the validator interprets a DNSSEC record
|
||||
prior to validating it), or if the experiment is broader in scope
|
||||
that just modifying the DNSSEC semantics, the experiment may not
|
||||
be sufficiently masked by this technique. This may cause
|
||||
unintended resolution failures.
|
||||
|
||||
2. It will not be possible for security-aware resolvers unaware of
|
||||
the experiment to build a chain of trust through an experimental
|
||||
zone.
|
||||
|
||||
7. Use in Non-Experiments
|
||||
|
||||
This general methodology MAY be used for non-backwards compatible
|
||||
DNSSEC protocol changes that start out as or become standards. In
|
||||
this case:
|
||||
|
||||
o The protocol change SHOULD use public IANA allocated algorithm
|
||||
identifiers instead of private algorithm identifiers. This will
|
||||
help identify the protocol change as a standard, rather than an
|
||||
experiment.
|
||||
|
||||
o Resolvers MAY recognize the protocol change in zones not signed
|
||||
(or not solely signed) using the new algorithm identifiers.
|
||||
|
||||
8. Security Considerations
|
||||
|
||||
Zones using this methodology will be considered insecure by all
|
||||
resolvers except those aware of the experiment. It is not generally
|
||||
possible to create a secure delegation from an experimental zone that
|
||||
will be followed by resolvers unaware of the experiment.
|
||||
|
||||
Implementers should take into account any security issues that may
|
||||
result from environments being configured to trust both experimental
|
||||
and non-experimental zones. If the experimental zone is more
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 5]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
vulnerable to attacks, it could, for example, be used to promote
|
||||
trust in zones not part of the experiment, possibly under the control
|
||||
of an attacker.
|
||||
|
||||
9. References
|
||||
|
||||
9.1. Normative References
|
||||
|
||||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[2] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"DNS Security Introduction and Requirements", RFC 4033,
|
||||
March 2005.
|
||||
|
||||
[3] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"Resource Records for the DNS Security Extensions", RFC 4034,
|
||||
March 2005.
|
||||
|
||||
[4] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"Protocol Modifications for the DNS Security Extensions",
|
||||
RFC 4035, March 2005.
|
||||
|
||||
9.2. Informative References
|
||||
|
||||
[5] Mockapetris, P., "Domain names - implementation and
|
||||
specification", STD 13, RFC 1035, November 1987.
|
||||
|
||||
[6] Weiler, S. and R. Austein, "Clarifications and Implementation
|
||||
Notes for DNSSECbis", Work in Progress, March 2007.
|
||||
|
||||
Author's Address
|
||||
|
||||
David Blacka
|
||||
VeriSign, Inc.
|
||||
21355 Ridgetop Circle
|
||||
Dulles, VA 20166
|
||||
US
|
||||
|
||||
Phone: +1 703 948 3200
|
||||
EMail: davidb@verisign.com
|
||||
URI: http://www.verisignlabs.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 6]
|
||||
|
||||
RFC 4955 DNS Security (DNSSEC) Experiments July 2007
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
|
||||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Blacka Standards Track [Page 7]
|
||||
|
||||
955
doc/rfc/rfc4956.txt
Normal file
955
doc/rfc/rfc4956.txt
Normal file
@@ -0,0 +1,955 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group R. Arends
|
||||
Request for Comments: 4956 Nominet
|
||||
Category: Experimental M. Kosters
|
||||
D. Blacka
|
||||
VeriSign, Inc.
|
||||
July 2007
|
||||
|
||||
|
||||
DNS Security (DNSSEC) Opt-In
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This memo defines an Experimental Protocol for the Internet
|
||||
community. It does not specify an Internet standard of any kind.
|
||||
Discussion and suggestions for improvement are requested.
|
||||
Distribution of this memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
Abstract
|
||||
|
||||
In the DNS security (DNSSEC) extensions, delegations to unsigned
|
||||
subzones are cryptographically secured. Maintaining this
|
||||
cryptography is not always practical or necessary. This document
|
||||
describes an experimental "Opt-In" model that allows administrators
|
||||
to omit this cryptography and manage the cost of adopting DNSSEC with
|
||||
large zones.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 1]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2. Definitions and Terminology . . . . . . . . . . . . . . . . . 3
|
||||
3. Experimental Status . . . . . . . . . . . . . . . . . . . . . 4
|
||||
4. Protocol Additions . . . . . . . . . . . . . . . . . . . . . . 5
|
||||
4.1. Server Considerations . . . . . . . . . . . . . . . . . . 6
|
||||
4.1.1. Delegations Only . . . . . . . . . . . . . . . . . . . 6
|
||||
4.1.2. Insecure Delegation Responses . . . . . . . . . . . . 6
|
||||
4.1.3. Dynamic Update . . . . . . . . . . . . . . . . . . . . 6
|
||||
4.2. Client Considerations . . . . . . . . . . . . . . . . . . 7
|
||||
4.2.1. Delegations Only . . . . . . . . . . . . . . . . . . . 7
|
||||
4.2.2. Validation Process Changes . . . . . . . . . . . . . . 7
|
||||
4.2.3. NSEC Record Caching . . . . . . . . . . . . . . . . . 8
|
||||
4.2.4. Use of the AD bit . . . . . . . . . . . . . . . . . . 8
|
||||
5. Benefits . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||
6. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
7. Transition Issues . . . . . . . . . . . . . . . . . . . . . . 11
|
||||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 11
|
||||
9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
|
||||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
|
||||
10.1. Normative References . . . . . . . . . . . . . . . . . . . 13
|
||||
10.2. Informative References . . . . . . . . . . . . . . . . . . 13
|
||||
Appendix A. Implementing Opt-In Using "Views" . . . . . . . . . . 15
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 2]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
1. Overview
|
||||
|
||||
The cost to cryptographically secure delegations to unsigned zones is
|
||||
high for large delegation-centric zones and zones where insecure
|
||||
delegations will be updated rapidly. For these zones, the costs of
|
||||
maintaining the NextSECure (NSEC) record chain may be extremely high
|
||||
relative to the gain of cryptographically authenticating existence of
|
||||
unsecured zones.
|
||||
|
||||
This document describes an experimental method of eliminating the
|
||||
superfluous cryptography present in secure delegations to unsigned
|
||||
zones. Using "Opt-In", a zone administrator can choose to remove
|
||||
insecure delegations from the NSEC chain. This is accomplished by
|
||||
extending the semantics of the NSEC record by using a redundant bit
|
||||
in the type map.
|
||||
|
||||
2. Definitions and Terminology
|
||||
|
||||
Throughout this document, familiarity with the DNS system (RFC 1035
|
||||
[1]), DNS security extensions ([4], [5], and [6], referred to in this
|
||||
document as "standard DNSSEC"), and DNSSEC terminology (RFC 3090
|
||||
[10]) is assumed.
|
||||
|
||||
The following abbreviations and terms are used in this document:
|
||||
|
||||
RR: is used to refer to a DNS resource record.
|
||||
|
||||
RRset: refers to a Resource Record Set, as defined by [8]. In this
|
||||
document, the RRset is also defined to include the covering RRSIG
|
||||
records, if any exist.
|
||||
|
||||
signed name: refers to a DNS name that has, at minimum, a (signed)
|
||||
NSEC record.
|
||||
|
||||
unsigned name: refers to a DNS name that does not (at least) have an
|
||||
NSEC record.
|
||||
|
||||
covering NSEC record/RRset: is the NSEC record used to prove
|
||||
(non)existence of a particular name or RRset. This means that for
|
||||
a RRset or name 'N', the covering NSEC record has the name 'N', or
|
||||
has an owner name less than 'N' and "next" name greater than 'N'.
|
||||
|
||||
delegation: refers to an NS RRset with a name different from the
|
||||
current zone apex (non-zone-apex), signifying a delegation to a
|
||||
subzone.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 3]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
secure delegation: refers to a signed name containing a delegation
|
||||
(NS RRset), and a signed DS RRset, signifying a delegation to a
|
||||
signed subzone.
|
||||
|
||||
insecure delegation: refers to a signed name containing a delegation
|
||||
(NS RRset), but lacking a DS RRset, signifying a delegation to an
|
||||
unsigned subzone.
|
||||
|
||||
Opt-In insecure delegation: refers to an unsigned name containing
|
||||
only a delegation NS RRset. The covering NSEC record uses the
|
||||
Opt-In methodology described in this document.
|
||||
|
||||
The key words "MUST, "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY, and "OPTIONAL" in this
|
||||
document are to be interpreted as described in RFC 2119 [2].
|
||||
|
||||
3. Experimental Status
|
||||
|
||||
This document describes an EXPERIMENTAL extension to DNSSEC. It
|
||||
interoperates with non-experimental DNSSEC using the technique
|
||||
described in [7]. This experiment is identified with the following
|
||||
private algorithms (using algorithm 253):
|
||||
|
||||
"3.optin.verisignlabs.com": is an alias for DNSSEC algorithm 3, DSA,
|
||||
and
|
||||
|
||||
"5.optin.verisignlabs.com": is an alias for DNSSEC algorithm 5,
|
||||
RSASHA1.
|
||||
|
||||
Servers wishing to sign and serve zones that utilize Opt-In MUST sign
|
||||
the zone with only one or more of these private algorithms and MUST
|
||||
NOT use any other algorithms.
|
||||
|
||||
Resolvers MUST NOT apply the Opt-In validation rules described in
|
||||
this document unless a zone is signed using one or more of these
|
||||
private algorithms.
|
||||
|
||||
This experimental protocol relaxes the restriction that validators
|
||||
MUST ignore the setting of the NSEC bit in the type map as specified
|
||||
in RFC 4035 [6] Section 5.4.
|
||||
|
||||
The remainder of this document assumes that the servers and resolvers
|
||||
involved are aware of and are involved in this experiment.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 4]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
4. Protocol Additions
|
||||
|
||||
In DNSSEC, delegation NS RRsets are not signed, but are instead
|
||||
accompanied by an NSEC RRset of the same name and (possibly) a DS
|
||||
record. The security status of the subzone is determined by the
|
||||
presence or absence of the DS RRset, cryptographically proven by the
|
||||
NSEC record. Opt-In expands this definition by allowing insecure
|
||||
delegations to exist within an otherwise signed zone without the
|
||||
corresponding NSEC record at the delegation's owner name. These
|
||||
insecure delegations are proven insecure by using a covering NSEC
|
||||
record.
|
||||
|
||||
Since this represents a change of the interpretation of NSEC records,
|
||||
resolvers must be able to distinguish between RFC standard DNSSEC
|
||||
NSEC records and Opt-In NSEC records. This is accomplished by
|
||||
"tagging" the NSEC records that cover (or potentially cover) insecure
|
||||
delegation nodes. This tag is indicated by the absence of the NSEC
|
||||
bit in the type map. Since the NSEC bit in the type map merely
|
||||
indicates the existence of the record itself, this bit is redundant
|
||||
and safe for use as a tag.
|
||||
|
||||
An Opt-In tagged NSEC record does not assert the (non)existence of
|
||||
the delegations that it covers (except for a delegation with the same
|
||||
name). This allows for the addition or removal of these delegations
|
||||
without recalculating or resigning records in the NSEC chain.
|
||||
However, Opt-In tagged NSEC records do assert the (non)existence of
|
||||
other RRsets.
|
||||
|
||||
An Opt-In NSEC record MAY have the same name as an insecure
|
||||
delegation. In this case, the delegation is proven insecure by the
|
||||
lack of a DS bit in the type map, and the signed NSEC record does
|
||||
assert the existence of the delegation.
|
||||
|
||||
Zones using Opt-In MAY contain a mixture of Opt-In tagged NSEC
|
||||
records and standard DNSSEC NSEC records. If an NSEC record is not
|
||||
Opt-In, there MUST NOT be any insecure delegations (or any other
|
||||
records) between it and the RRsets indicated by the 'next domain
|
||||
name' in the NSEC RDATA. If it is Opt-In, there MUST only be
|
||||
insecure delegations between it and the next node indicated by the
|
||||
'next domain name' in the NSEC RDATA.
|
||||
|
||||
In summary,
|
||||
|
||||
o An Opt-In NSEC type is identified by a zero-valued (or not-
|
||||
specified) NSEC bit in the type bit map of the NSEC record.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 5]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
o A standard DNSSEC NSEC type is identified by a one-valued NSEC bit
|
||||
in the type bit map of the NSEC record.
|
||||
|
||||
and
|
||||
|
||||
o An Opt-In NSEC record does not assert the non-existence of a name
|
||||
between its owner name and "next" name, although it does assert
|
||||
that any name in this span MUST be an insecure delegation.
|
||||
|
||||
o An Opt-In NSEC record does assert the (non)existence of RRsets
|
||||
with the same owner name.
|
||||
|
||||
4.1. Server Considerations
|
||||
|
||||
Opt-In imposes some new requirements on authoritative DNS servers.
|
||||
|
||||
4.1.1. Delegations Only
|
||||
|
||||
This specification dictates that only insecure delegations may exist
|
||||
between the owner and "next" names of an Opt-In tagged NSEC record.
|
||||
Signing tools MUST NOT generate signed zones that violate this
|
||||
restriction. Servers MUST refuse to load and/or serve zones that
|
||||
violate this restriction. Servers also MUST reject AXFR or IXFR
|
||||
responses that violate this restriction.
|
||||
|
||||
4.1.2. Insecure Delegation Responses
|
||||
|
||||
When returning an Opt-In insecure delegation, the server MUST return
|
||||
the covering NSEC RRset in the Authority section.
|
||||
|
||||
In standard DNSSEC, NSEC records already must be returned along with
|
||||
the insecure delegation. The primary difference that this proposal
|
||||
introduces is that the Opt-In tagged NSEC record will have a
|
||||
different owner name from the delegation RRset. This may require
|
||||
implementations to search for the covering NSEC RRset.
|
||||
|
||||
4.1.3. Dynamic Update
|
||||
|
||||
Opt-In changes the semantics of Secure DNS Dynamic Update [9]. In
|
||||
particular, it introduces the need for rules that describe when to
|
||||
add or remove a delegation name from the NSEC chain. This document
|
||||
does not attempt to define these rules. Until these rules are
|
||||
defined, servers MUST NOT process DNS Dynamic Update requests against
|
||||
zones that use Opt-In NSEC records. Servers SHOULD return responses
|
||||
to update requests with RCODE=REFUSED.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 6]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
4.2. Client Considerations
|
||||
|
||||
Opt-In imposes some new requirements on security-aware resolvers
|
||||
(caching or otherwise).
|
||||
|
||||
4.2.1. Delegations Only
|
||||
|
||||
As stated in Section 4.1 above, this specification restricts the
|
||||
namespace covered by Opt-In tagged NSEC records to insecure
|
||||
delegations only. Clients are not expected to take any special
|
||||
measures to enforce this restriction; instead, it forms an underlying
|
||||
assumption that clients may rely on.
|
||||
|
||||
4.2.2. Validation Process Changes
|
||||
|
||||
This specification does not change the resolver's resolution
|
||||
algorithm. However, it does change the DNSSEC validation process.
|
||||
|
||||
4.2.2.1. Referrals
|
||||
|
||||
Resolvers MUST be able to use Opt-In tagged NSEC records to
|
||||
cryptographically prove the validity and security status (as
|
||||
insecure) of a referral. Resolvers determine the security status of
|
||||
the referred-to zone as follows:
|
||||
|
||||
o In standard DNSSEC, the security status is proven by the existence
|
||||
or absence of a DS RRset at the same name as the delegation. The
|
||||
existence of the DS RRset indicates that the referred-to zone is
|
||||
signed. The absence of the DS RRset is proven using a verified
|
||||
NSEC record of the same name that does not have the DS bit set in
|
||||
the type map. This NSEC record MAY also be tagged as Opt-In.
|
||||
|
||||
o Using Opt-In, the security status is proven by the existence of a
|
||||
DS record (for signed) or the presence of a verified Opt-In tagged
|
||||
NSEC record that covers the delegation name. That is, the NSEC
|
||||
record does not have the NSEC bit set in the type map, and the
|
||||
delegation name falls between the NSEC's owner and "next" name.
|
||||
|
||||
Using Opt-In does not substantially change the nature of following
|
||||
referrals within DNSSEC. At every delegation point, the resolver
|
||||
will have cryptographic proof that the referred-to subzone is signed
|
||||
or unsigned.
|
||||
|
||||
4.2.2.2. Queries for DS Resource Records
|
||||
|
||||
Since queries for DS records are directed to the parent side of a
|
||||
zone cut (see [5], Section 5), negative responses to these queries
|
||||
may be covered by an Opt-In flagged NSEC record.
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 7]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
Resolvers MUST be able to use Opt-In tagged NSEC records to
|
||||
cryptographically prove the validity and security status of negative
|
||||
responses to queries for DS records. In particular, a NOERROR/NODATA
|
||||
(i.e., RCODE=3, but the answer section is empty) response to a DS
|
||||
query may be proven by an Opt-In flagged covering NSEC record, rather
|
||||
than an NSEC record matching the query name.
|
||||
|
||||
4.2.3. NSEC Record Caching
|
||||
|
||||
Caching resolvers MUST be able to retrieve the appropriate covering
|
||||
Opt-In NSEC record when returning referrals that need them. This
|
||||
requirement differs from standard DNSSEC in that the covering NSEC
|
||||
will not have the same owner name as the delegation. Some
|
||||
implementations may have to use new methods for finding these NSEC
|
||||
records.
|
||||
|
||||
4.2.4. Use of the AD bit
|
||||
|
||||
The AD bit, as defined by [3] and [6], MUST NOT be set when:
|
||||
|
||||
o sending a Name Error (RCODE=3) response where the covering NSEC is
|
||||
tagged as Opt-In.
|
||||
|
||||
o sending an Opt-In insecure delegation response, unless the
|
||||
covering (Opt-In) NSEC record's owner name equals the delegation
|
||||
name.
|
||||
|
||||
o sending a NOERROR/NODATA response when query type is DS and the
|
||||
covering NSEC is tagged as Opt-In, unless NSEC record's owner name
|
||||
matches the query name.
|
||||
|
||||
This rule is based on what the Opt-In NSEC record actually proves:
|
||||
for names that exist between the Opt-In NSEC record's owner and
|
||||
"next" names, the Opt-In NSEC record cannot prove the non-existence
|
||||
or existence of the name. As such, not all data in the response has
|
||||
been cryptographically verified, so the AD bit cannot be set.
|
||||
|
||||
5. Benefits
|
||||
|
||||
Using Opt-In allows administrators of large and/or changing
|
||||
delegation-centric zones to minimize the overhead involved in
|
||||
maintaining the security of the zone.
|
||||
|
||||
Opt-In accomplishes this by eliminating the need for NSEC records for
|
||||
insecure delegations. This, in a zone with a large number of
|
||||
delegations to unsigned subzones, can lead to substantial space
|
||||
savings (both in memory and on disk). Additionally, Opt-In allows
|
||||
for the addition or removal of insecure delegations without modifying
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 8]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
the NSEC record chain. Zones that are frequently updating insecure
|
||||
delegations (e.g., Top-Level Domains (TLDs)) can avoid the
|
||||
substantial overhead of modifying and resigning the affected NSEC
|
||||
records.
|
||||
|
||||
6. Example
|
||||
|
||||
Consider the zone EXAMPLE shown below. This is a zone where all of
|
||||
the NSEC records are tagged as Opt-In.
|
||||
|
||||
Example A: Fully Opt-In Zone.
|
||||
|
||||
EXAMPLE. SOA ...
|
||||
EXAMPLE. RRSIG SOA ...
|
||||
EXAMPLE. NS FIRST-SECURE.EXAMPLE.
|
||||
EXAMPLE. RRSIG NS ...
|
||||
EXAMPLE. DNSKEY ...
|
||||
EXAMPLE. RRSIG DNSKEY ...
|
||||
EXAMPLE. NSEC FIRST-SECURE.EXAMPLE. (
|
||||
SOA NS RRSIG DNSKEY )
|
||||
EXAMPLE. RRSIG NSEC ...
|
||||
|
||||
FIRST-SECURE.EXAMPLE. A ...
|
||||
FIRST-SECURE.EXAMPLE. RRSIG A ...
|
||||
FIRST-SECURE.EXAMPLE. NSEC NOT-SECURE-2.EXAMPLE. A RRSIG
|
||||
FIRST-SECURE.EXAMPLE. RRSIG NSEC ...
|
||||
|
||||
NOT-SECURE.EXAMPLE. NS NS.NOT-SECURE.EXAMPLE.
|
||||
NS.NOT-SECURE.EXAMPLE. A ...
|
||||
|
||||
NOT-SECURE-2.EXAMPLE. NS NS.NOT-SECURE.EXAMPLE.
|
||||
NOT-SECURE-2.EXAMPLE NSEC SECOND-SECURE.EXAMPLE NS RRSIG
|
||||
NOT-SECURE-2.EXAMPLE RRSIG NSEC ...
|
||||
|
||||
SECOND-SECURE.EXAMPLE. NS NS.ELSEWHERE.
|
||||
SECOND-SECURE.EXAMPLE. DS ...
|
||||
SECOND-SECURE.EXAMPLE. RRSIG DS ...
|
||||
SECOND-SECURE.EXAMPLE. NSEC EXAMPLE. NS RRSIG DNSKEY
|
||||
SECOND-SECURE.EXAMPLE. RRSIG NSEC ...
|
||||
|
||||
UNSIGNED.EXAMPLE. NS NS.UNSIGNED.EXAMPLE.
|
||||
NS.UNSIGNED.EXAMPLE. A ...
|
||||
|
||||
|
||||
Example A.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 9]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
In this example, a query for a signed RRset (e.g., "FIRST-
|
||||
SECURE.EXAMPLE A") or a secure delegation ("WWW.SECOND-SECURE.EXAMPLE
|
||||
A") will result in a standard DNSSEC response.
|
||||
|
||||
A query for a nonexistent RRset will result in a response that
|
||||
differs from standard DNSSEC by the following: the NSEC record will
|
||||
be tagged as Opt-In, there may be no NSEC record proving the non-
|
||||
existence of a matching wildcard record, and the AD bit will not be
|
||||
set.
|
||||
|
||||
A query for an insecure delegation RRset (or a referral) will return
|
||||
both the answer (in the Authority section) and the corresponding
|
||||
Opt-In NSEC record to prove that it is not secure.
|
||||
|
||||
Example A.1: Response to query for WWW.UNSIGNED.EXAMPLE. A
|
||||
|
||||
|
||||
RCODE=NOERROR, AD=0
|
||||
|
||||
Answer Section:
|
||||
|
||||
Authority Section:
|
||||
UNSIGNED.EXAMPLE. NS NS.UNSIGNED.EXAMPLE
|
||||
SECOND-SECURE.EXAMPLE. NSEC EXAMPLE. NS RRSIG DS
|
||||
SECOND-SECURE.EXAMPLE. RRSIG NSEC ...
|
||||
|
||||
Additional Section:
|
||||
NS.UNSIGNED.EXAMPLE. A ...
|
||||
|
||||
Example A.1
|
||||
|
||||
In the Example A.1 zone, the EXAMPLE. node MAY use either style of
|
||||
NSEC record, because there are no insecure delegations that occur
|
||||
between it and the next node, FIRST-SECURE.EXAMPLE. In other words,
|
||||
Example A would still be a valid zone if the NSEC record for EXAMPLE.
|
||||
was changed to the following RR:
|
||||
|
||||
EXAMPLE. NSEC FIRST-SECURE.EXAMPLE. (SOA NS
|
||||
RRSIG DNSKEY NSEC )
|
||||
|
||||
However, the other NSEC records (FIRST-SECURE.EXAMPLE. and SECOND-
|
||||
SECURE.EXAMPLE.) MUST be tagged as Opt-In because there are insecure
|
||||
delegations in the range they define. (NOT-SECURE.EXAMPLE. and
|
||||
UNSIGNED.EXAMPLE., respectively).
|
||||
|
||||
NOT-SECURE-2.EXAMPLE. is an example of an insecure delegation that is
|
||||
part of the NSEC chain and also covered by an Opt-In tagged NSEC
|
||||
record. Because NOT-SECURE-2.EXAMPLE. is a signed name, it cannot be
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 10]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
removed from the zone without modifying and resigning the prior NSEC
|
||||
record. Delegations with names that fall between NOT-SECURE-
|
||||
2.EXAMPLE. and SECOND-SECURE.EXAMPLE. may be added or removed without
|
||||
resigning any NSEC records.
|
||||
|
||||
7. Transition Issues
|
||||
|
||||
Opt-In is not backwards compatible with standard DNSSEC and is
|
||||
considered experimental. Standard DNSSEC-compliant implementations
|
||||
would not recognize Opt-In tagged NSEC records as different from
|
||||
standard NSEC records. Because of this, standard DNSSEC
|
||||
implementations, if they were to validate Opt-In style responses,
|
||||
would reject all Opt-In insecure delegations within a zone as
|
||||
invalid. However, by only signing with private algorithms, standard
|
||||
DNSSEC implementations will treat Opt-In responses as unsigned.
|
||||
|
||||
It should be noted that all elements in the resolution path between
|
||||
(and including) the validator and the authoritative name server must
|
||||
be aware of the Opt-In experiment and implement the Opt-In semantics
|
||||
for successful validation to be possible. In particular, this
|
||||
includes any caching middleboxes between the validator and
|
||||
authoritative name server.
|
||||
|
||||
8. Security Considerations
|
||||
|
||||
Opt-In allows for unsigned names, in the form of delegations to
|
||||
unsigned subzones, to exist within an otherwise signed zone. All
|
||||
unsigned names are, by definition, insecure, and their validity or
|
||||
existence cannot be cryptographically proven.
|
||||
|
||||
In general:
|
||||
|
||||
o Records with unsigned names (whether or not existing) suffer from
|
||||
the same vulnerabilities as records in an unsigned zone. These
|
||||
vulnerabilities are described in more detail in [12] (note in
|
||||
particular Sections 2.3, "Name Games" and 2.6, "Authenticated
|
||||
Denial").
|
||||
|
||||
o Records with signed names have the same security whether or not
|
||||
Opt-In is used.
|
||||
|
||||
Note that with or without Opt-In, an insecure delegation may have its
|
||||
contents undetectably altered by an attacker. Because of this, the
|
||||
primary difference in security that Opt-In introduces is the loss of
|
||||
the ability to prove the existence or nonexistence of an insecure
|
||||
delegation within the span of an Opt-In NSEC record.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 11]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
In particular, this means that a malicious entity may be able to
|
||||
insert or delete records with unsigned names. These records are
|
||||
normally NS records, but this also includes signed wildcard
|
||||
expansions (while the wildcard record itself is signed, its expanded
|
||||
name is an unsigned name), which can be undetectably removed or used
|
||||
to replace an existing unsigned delegation.
|
||||
|
||||
For example, if a resolver received the following response from the
|
||||
example zone above:
|
||||
|
||||
Example S.1: Response to query for WWW.DOES-NOT-EXIST.EXAMPLE. A
|
||||
|
||||
RCODE=NOERROR
|
||||
|
||||
Answer Section:
|
||||
|
||||
Authority Section:
|
||||
DOES-NOT-EXIST.EXAMPLE. NS NS.FORGED.
|
||||
EXAMPLE. NSEC FIRST-SECURE.EXAMPLE. SOA NS \
|
||||
RRSIG DNSKEY
|
||||
EXAMPLE. RRSIG NSEC ...
|
||||
|
||||
Additional Section:
|
||||
|
||||
|
||||
Attacker has forged a name
|
||||
|
||||
The resolver would have no choice but to believe that the referral to
|
||||
NS.FORGED. is valid. If a wildcard existed that would have been
|
||||
expanded to cover "WWW.DOES-NOT-EXIST.EXAMPLE.", an attacker could
|
||||
have undetectably removed it and replaced it with the forged
|
||||
delegation.
|
||||
|
||||
Note that being able to add a delegation is functionally equivalent
|
||||
to being able to add any record type: an attacker merely has to forge
|
||||
a delegation to the nameserver under his/her control and place
|
||||
whatever records are needed at the subzone apex.
|
||||
|
||||
While in particular cases, this issue may not present a significant
|
||||
security problem, in general it should not be lightly dismissed.
|
||||
Therefore, it is strongly RECOMMENDED that Opt-In be used sparingly.
|
||||
In particular, zone signing tools SHOULD NOT default to Opt-In, and
|
||||
MAY choose not to support Opt-In at all.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 12]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
9. Acknowledgments
|
||||
|
||||
The contributions, suggestions, and remarks of the following persons
|
||||
(in alphabetic order) to this document are acknowledged:
|
||||
|
||||
Mats Kolkman, Edward Lewis, Ted Lindgreen, Rip Loomis, Bill
|
||||
Manning, Dan Massey, Scott Rose, Mike Schiraldi, Jakob Schlyter,
|
||||
Brian Wellington.
|
||||
|
||||
10. References
|
||||
|
||||
10.1. Normative References
|
||||
|
||||
[1] Mockapetris, P., "Domain names - implementation and
|
||||
specification", STD 13, RFC 1035, November 1987.
|
||||
|
||||
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
|
||||
Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[3] Wellington, B. and O. Gudmundsson, "Redefinition of DNS
|
||||
Authenticated Data (AD) bit", RFC 3655, November 2003.
|
||||
|
||||
[4] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"DNS Security Introduction and Requirements", RFC 4033,
|
||||
March 2005.
|
||||
|
||||
[5] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"Resource Records for the DNS Security Extensions", RFC 4034,
|
||||
March 2005.
|
||||
|
||||
[6] Arends, R., Austein, R., Larson, M., Massey, D., and S. Rose,
|
||||
"Protocol Modifications for the DNS Security Extensions",
|
||||
RFC 4035, March 2005.
|
||||
|
||||
[7] Blacka, D., "DNSSEC Experiments", RFC 4955, July 2007.
|
||||
|
||||
10.2. Informative References
|
||||
|
||||
[8] Elz, R. and R. Bush, "Clarifications to the DNS Specification",
|
||||
RFC 2181, July 1997.
|
||||
|
||||
[9] Wellington, B., "Secure Domain Name System (DNS) Dynamic
|
||||
Update", RFC 3007, November 2000.
|
||||
|
||||
[10] Lewis, E., "DNS Security Extension Clarification on Zone
|
||||
Status", RFC 3090, March 2001.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 13]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
[11] Conrad, D., "Indicating Resolver Support of DNSSEC", RFC 3225,
|
||||
December 2001.
|
||||
|
||||
[12] Atkins, D. and R. Austein, "Threat Analysis of the Domain Name
|
||||
System (DNS)", RFC 3833, August 2004.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 14]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
Appendix A. Implementing Opt-In Using "Views"
|
||||
|
||||
In many cases, it may be convenient to implement an Opt-In zone by
|
||||
combining two separately maintained "views" of a zone at request
|
||||
time. In this context, "view" refers to a particular version of a
|
||||
zone, not to any specific DNS implementation feature.
|
||||
|
||||
In this scenario, one view is the secure view, the other is the
|
||||
insecure (or legacy) view. The secure view consists of an entirely
|
||||
signed zone using Opt-In tagged NSEC records. The insecure view
|
||||
contains no DNSSEC information. It is helpful, although not
|
||||
necessary, for the secure view to be a subset (minus DNSSEC records)
|
||||
of the insecure view.
|
||||
|
||||
In addition, the only RRsets that may solely exist in the insecure
|
||||
view are non-zone-apex NS RRsets. That is, all non-NS RRsets (and
|
||||
the zone apex NS RRset) MUST be signed and in the secure view.
|
||||
|
||||
These two views may be combined at request time to provide a virtual,
|
||||
single Opt-In zone. The following algorithm is used when responding
|
||||
to each query:
|
||||
|
||||
V_A is the secure view as described above.
|
||||
|
||||
V_B is the insecure view as described above.
|
||||
|
||||
R_A is a response generated from V_A, following standard DNSSEC.
|
||||
|
||||
R_B is a response generated from V_B, following DNS resolution as
|
||||
per RFC 1035 [1].
|
||||
|
||||
R_C is the response generated by combining R_A with R_B, as
|
||||
described below.
|
||||
|
||||
A query is DNSSEC-aware if it either has the DO bit [11] turned on
|
||||
or is for a DNSSEC-specific record type.
|
||||
|
||||
1. If V_A is a subset of V_B and the query is not DNSSEC-aware,
|
||||
generate and return R_B, otherwise
|
||||
|
||||
2. Generate R_A.
|
||||
|
||||
3. If R_A's RCODE != NXDOMAIN, return R_A, otherwise
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 15]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
4. Generate R_B and combine it with R_A to form R_C:
|
||||
|
||||
For each section (ANSWER, AUTHORITY, ADDITIONAL), copy the
|
||||
records from R_A into R_B, EXCEPT the AUTHORITY section SOA
|
||||
record, if R_B's RCODE = NOERROR.
|
||||
|
||||
5. Return R_C.
|
||||
|
||||
Authors' Addresses
|
||||
|
||||
Roy Arends
|
||||
Nominet
|
||||
Sandford Gate
|
||||
Sandy Lane West
|
||||
Oxford OX4 6LB
|
||||
UNITED KINGDOM
|
||||
|
||||
Phone: +44 1865 332211
|
||||
EMail: roy@nominet.org.uk
|
||||
|
||||
|
||||
Mark Kosters
|
||||
VeriSign, Inc.
|
||||
21355 Ridgetop Circle
|
||||
Dulles, VA 20166
|
||||
US
|
||||
|
||||
Phone: +1 703 948 3200
|
||||
EMail: mkosters@verisign.com
|
||||
URI: http://www.verisignlabs.com
|
||||
|
||||
|
||||
David Blacka
|
||||
VeriSign, Inc.
|
||||
21355 Ridgetop Circle
|
||||
Dulles, VA 20166
|
||||
US
|
||||
|
||||
Phone: +1 703 948 3200
|
||||
EMail: davidb@verisign.com
|
||||
URI: http://www.verisignlabs.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 16]
|
||||
|
||||
RFC 4956 DNS Security (DNSSEC) Opt-In July 2007
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
|
||||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Arends, et al. Experimental [Page 17]
|
||||
|
||||
619
doc/rfc/rfc5001.txt
Normal file
619
doc/rfc/rfc5001.txt
Normal file
@@ -0,0 +1,619 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group R. Austein
|
||||
Request for Comments: 5001 ISC
|
||||
Category: Standards Track August 2007
|
||||
|
||||
|
||||
DNS Name Server Identifier (NSID) Option
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This document specifies an Internet standards track protocol for the
|
||||
Internet community, and requests discussion and suggestions for
|
||||
improvements. Please refer to the current edition of the "Internet
|
||||
Official Protocol Standards" (STD 1) for the standardization state
|
||||
and status of this protocol. Distribution of this memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
Abstract
|
||||
|
||||
With the increased use of DNS anycast, load balancing, and other
|
||||
mechanisms allowing more than one DNS name server to share a single
|
||||
IP address, it is sometimes difficult to tell which of a pool of name
|
||||
servers has answered a particular query. While existing ad-hoc
|
||||
mechanisms allow an operator to send follow-up queries when it is
|
||||
necessary to debug such a configuration, the only completely reliable
|
||||
way to obtain the identity of the name server that responded is to
|
||||
have the name server include this information in the response itself.
|
||||
This note defines a protocol extension to support this functionality.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 1]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
|
||||
1.1. Reserved Words . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2. Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
|
||||
2.1. Resolver Behavior . . . . . . . . . . . . . . . . . . . . 3
|
||||
2.2. Name Server Behavior . . . . . . . . . . . . . . . . . . . 3
|
||||
2.3. The NSID Option . . . . . . . . . . . . . . . . . . . . . 4
|
||||
2.4. Presentation Format . . . . . . . . . . . . . . . . . . . 4
|
||||
3. Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . 4
|
||||
3.1. The NSID Payload . . . . . . . . . . . . . . . . . . . . . 4
|
||||
3.2. NSID Is Not Transitive . . . . . . . . . . . . . . . . . . 7
|
||||
3.3. User Interface Issues . . . . . . . . . . . . . . . . . . 7
|
||||
3.4. Truncation . . . . . . . . . . . . . . . . . . . . . . . . 8
|
||||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
|
||||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
|
||||
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9
|
||||
7.1. Normative References . . . . . . . . . . . . . . . . . . . 9
|
||||
7.2. Informative References . . . . . . . . . . . . . . . . . . 10
|
||||
|
||||
1. Introduction
|
||||
|
||||
With the increased use of DNS anycast, load balancing, and other
|
||||
mechanisms allowing more than one DNS name server to share a single
|
||||
IP address, it is sometimes difficult to tell which of a pool of name
|
||||
servers has answered a particular query.
|
||||
|
||||
Existing ad-hoc mechanisms allow an operator to send follow-up
|
||||
queries when it is necessary to debug such a configuration, but there
|
||||
are situations in which this is not a totally satisfactory solution,
|
||||
since anycast routing may have changed, or the server pool in
|
||||
question may be behind some kind of extremely dynamic load balancing
|
||||
hardware. Thus, while these ad-hoc mechanisms are certainly better
|
||||
than nothing (and have the advantage of already being deployed), a
|
||||
better solution seems desirable.
|
||||
|
||||
Given that a DNS query is an idempotent operation with no retained
|
||||
state, it would appear that the only completely reliable way to
|
||||
obtain the identity of the name server that responded to a particular
|
||||
query is to have that name server include identifying information in
|
||||
the response itself. This note defines a protocol enhancement to
|
||||
achieve this.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 2]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
1.1. Reserved Words
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in [RFC2119].
|
||||
|
||||
2. Protocol
|
||||
|
||||
This note uses an EDNS [RFC2671] option to signal the resolver's
|
||||
desire for information identifying the name server and to hold the
|
||||
name server's response, if any.
|
||||
|
||||
2.1. Resolver Behavior
|
||||
|
||||
A resolver signals its desire for information identifying a name
|
||||
server by sending an empty NSID option (Section 2.3) in an EDNS OPT
|
||||
pseudo-RR in the query message.
|
||||
|
||||
The resolver MUST NOT include any NSID payload data in the query
|
||||
message.
|
||||
|
||||
The semantics of an NSID request are not transitive. That is: the
|
||||
presence of an NSID option in a query is a request that the name
|
||||
server which receives the query identify itself. If the name server
|
||||
side of a recursive name server receives an NSID request, the client
|
||||
is asking the recursive name server to identify itself; if the
|
||||
resolver side of the recursive name server wishes to receive
|
||||
identifying information, it is free to add NSID requests in its own
|
||||
queries, but that is a separate matter.
|
||||
|
||||
2.2. Name Server Behavior
|
||||
|
||||
A name server that understands the NSID option and chooses to honor a
|
||||
particular NSID request responds by including identifying information
|
||||
in a NSID option (Section 2.3) in an EDNS OPT pseudo-RR in the
|
||||
response message.
|
||||
|
||||
The name server MUST ignore any NSID payload data that might be
|
||||
present in the query message.
|
||||
|
||||
The NSID option is not transitive. A name server MUST NOT send an
|
||||
NSID option back to a resolver which did not request it. In
|
||||
particular, while a recursive name server may choose to add an NSID
|
||||
option when sending a query, this has no effect on the presence or
|
||||
absence of the NSID option in the recursive name server's response to
|
||||
the original client.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 3]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
As stated in Section 2.1, this mechanism is not restricted to
|
||||
authoritative name servers; the semantics are intended to be equally
|
||||
applicable to recursive name servers.
|
||||
|
||||
2.3. The NSID Option
|
||||
|
||||
The OPTION-CODE for the NSID option is 3.
|
||||
|
||||
The OPTION-DATA for the NSID option is an opaque byte string, the
|
||||
semantics of which are deliberately left outside the protocol. See
|
||||
Section 3.1 for discussion.
|
||||
|
||||
2.4. Presentation Format
|
||||
|
||||
User interfaces MUST read and write the contents of the NSID option
|
||||
as a sequence of hexadecimal digits, two digits per payload octet.
|
||||
|
||||
The NSID payload is binary data. Any comparison between NSID
|
||||
payloads MUST be a comparison of the raw binary data. Copy
|
||||
operations MUST NOT assume that the raw NSID payload is null-
|
||||
terminated. Any resemblance between raw NSID payload data and any
|
||||
form of text is purely a convenience, and does not change the
|
||||
underlying nature of the payload data.
|
||||
|
||||
See Section 3.3 for discussion.
|
||||
|
||||
3. Discussion
|
||||
|
||||
This section discusses certain aspects of the protocol and explains
|
||||
considerations that led to the chosen design.
|
||||
|
||||
3.1. The NSID Payload
|
||||
|
||||
The syntax and semantics of the content of the NSID option are
|
||||
deliberately left outside the scope of this specification.
|
||||
|
||||
Choosing the NSID content is a prerogative of the server
|
||||
administrator. The server administrator might choose to encode the
|
||||
NSID content in such a way that the server operator (or clients
|
||||
authorized by the server operator) can decode the NSID content to
|
||||
obtain more information than other clients can. Alternatively, the
|
||||
server operator might choose unencoded NSID content that is equally
|
||||
meaningful to any client.
|
||||
|
||||
This section describes some of the kinds of data that server
|
||||
administrators might choose to provide as the content of the NSID
|
||||
option, and explains the reasoning behind specifying a simple opaque
|
||||
byte string in Section 2.3.
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 4]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
There are several possibilities for the payload of the NSID option:
|
||||
|
||||
o It could be the "real" name of the specific name server within the
|
||||
name server pool.
|
||||
|
||||
o It could be the "real" IP address (IPv4 or IPv6) of the name
|
||||
server within the name server pool.
|
||||
|
||||
o It could be some sort of pseudo-random number generated in a
|
||||
predictable fashion somehow using the server's IP address or name
|
||||
as a seed value.
|
||||
|
||||
o It could be some sort of probabilistically unique identifier
|
||||
initially derived from some sort of random number generator then
|
||||
preserved across reboots of the name server.
|
||||
|
||||
o It could be some sort of dynamically generated identifier so that
|
||||
only the name server operator could tell whether or not any two
|
||||
queries had been answered by the same server.
|
||||
|
||||
o It could be a blob of signed data, with a corresponding key which
|
||||
might (or might not) be available via DNS lookups.
|
||||
|
||||
o It could be a blob of encrypted data, the key for which could be
|
||||
restricted to parties with a need to know (in the opinion of the
|
||||
server operator).
|
||||
|
||||
o It could be an arbitrary string of octets chosen at the discretion
|
||||
of the name server operator.
|
||||
|
||||
Each of these options has advantages and disadvantages:
|
||||
|
||||
o Using the "real" name is simple, but the name server may not have
|
||||
a "real" name.
|
||||
|
||||
o Using the "real" address is also simple, and the name server
|
||||
almost certainly does have at least one non-anycast IP address for
|
||||
maintenance operations, but the operator of the name server may
|
||||
not be willing to divulge its non-anycast address.
|
||||
|
||||
o Given that one common reason for using anycast DNS techniques is
|
||||
an attempt to harden a critical name server against denial of
|
||||
service attacks, some name server operators are likely to want an
|
||||
identifier other than the "real" name or "real" address of the
|
||||
name server instance.
|
||||
|
||||
o Using a hash or pseudo-random number can provide a fixed length
|
||||
value that the resolver can use to tell two name servers apart
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 5]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
without necessarily being able to tell where either one of them
|
||||
"really" is, but makes debugging more difficult if one happens to
|
||||
be in a friendly open environment. Furthermore, hashing might not
|
||||
add much value, since a hash based on an IPv4 address still only
|
||||
involves a 32-bit search space, and DNS names used for servers
|
||||
that operators might have to debug at 4am tend not to be very
|
||||
random.
|
||||
|
||||
o Probabilistically unique identifiers have properties similar to
|
||||
hashed identifiers, but (given a sufficiently good random number
|
||||
generator) are immune to the search space issues. However, the
|
||||
strength of this approach is also its weakness: there is no
|
||||
algorithmic transformation by which even the server operator can
|
||||
associate name server instances with identifiers while debugging,
|
||||
which might be annoying. This approach also requires the name
|
||||
server instance to preserve the probabilistically unique
|
||||
identifier across reboots, but this does not appear to be a
|
||||
serious restriction, since authoritative nameservers almost always
|
||||
have some form of non-volatile storage. In the rare case of a
|
||||
name server that does not have any way to store such an
|
||||
identifier, nothing terrible will happen if the name server
|
||||
generates a new identifier every time it reboots.
|
||||
|
||||
o Using an arbitrary octet string gives name server operators yet
|
||||
another setting to configure, or mis-configure, or forget to
|
||||
configure. Having all the nodes in an anycast name server
|
||||
constellation identify themselves as "My Name Server" would not be
|
||||
particularly useful.
|
||||
|
||||
o A signed blob is not particularly useful as an NSID payload unless
|
||||
the signed data is dynamic and includes some kind of replay
|
||||
protection, such as a timestamp or some kind of data identifying
|
||||
the requestor. Signed blobs that meet these criteria could
|
||||
conceivably be useful in some situations but would require
|
||||
detailed security analysis beyond the scope of this document.
|
||||
|
||||
o A static encrypted blob would not be particularly useful, as it
|
||||
would be subject to replay attacks and would, in effect, just be a
|
||||
random number to any party that does not possess the decryption
|
||||
key. Dynamic encrypted blobs could conceivably be useful in some
|
||||
situations but, as with signed blobs, dynamic encrypted blobs
|
||||
would require detailed security analysis beyond the scope of this
|
||||
document.
|
||||
|
||||
Given all of the issues listed above, there does not appear to be a
|
||||
single solution that will meet all needs. Section 2.3 therefore
|
||||
defines the NSID payload to be an opaque byte string and leaves the
|
||||
choice of payload up to the implementor and name server operator.
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 6]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
The following guidelines may be useful to implementors and server
|
||||
operators:
|
||||
|
||||
o Operators for whom divulging the unicast address is an issue could
|
||||
use the raw binary representation of a probabilistically unique
|
||||
random number. This should probably be the default implementation
|
||||
behavior.
|
||||
|
||||
o Operators for whom divulging the unicast address is not an issue
|
||||
could just use the raw binary representation of a unicast address
|
||||
for simplicity. This should only be done via an explicit
|
||||
configuration choice by the operator.
|
||||
|
||||
o Operators who really need or want the ability to set the NSID
|
||||
payload to an arbitrary value could do so, but this should only be
|
||||
done via an explicit configuration choice by the operator.
|
||||
|
||||
This approach appears to provide enough information for useful
|
||||
debugging without unintentionally leaking the maintenance addresses
|
||||
of anycast name servers to nogoodniks, while also allowing name
|
||||
server operators who do not find such leakage threatening to provide
|
||||
more information at their own discretion.
|
||||
|
||||
3.2. NSID Is Not Transitive
|
||||
|
||||
As specified in Section 2.1 and Section 2.2, the NSID option is not
|
||||
transitive. This is strictly a hop-by-hop mechanism.
|
||||
|
||||
Most of the discussion of name server identification to date has
|
||||
focused on identifying authoritative name servers, since the best
|
||||
known cases of anycast name servers are a subset of the name servers
|
||||
for the root zone. However, given that anycast DNS techniques are
|
||||
also applicable to recursive name servers, the mechanism may also be
|
||||
useful with recursive name servers. The hop-by-hop semantics support
|
||||
this.
|
||||
|
||||
While there might be some utility in having a transitive variant of
|
||||
this mechanism (so that, for example, a stub resolver could ask a
|
||||
recursive server to tell it which authoritative name server provided
|
||||
a particular answer to the recursive name server), the semantics of
|
||||
such a variant would be more complicated, and are left for future
|
||||
work.
|
||||
|
||||
3.3. User Interface Issues
|
||||
|
||||
Given the range of possible payload contents described in
|
||||
Section 3.1, it is not possible to define a single presentation
|
||||
format for the NSID payload that is efficient, convenient,
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 7]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
unambiguous, and aesthetically pleasing. In particular, while it is
|
||||
tempting to use a presentation format that uses some form of textual
|
||||
strings, attempting to support this would significantly complicate
|
||||
what's intended to be a very simple debugging mechanism.
|
||||
|
||||
In some cases the content of the NSID payload may be binary data
|
||||
meaningful only to the name server operator, and may not be
|
||||
meaningful to the user or application, but the user or application
|
||||
must be able to capture the entire content anyway in order for it to
|
||||
be useful. Thus, the presentation format must support arbitrary
|
||||
binary data.
|
||||
|
||||
In cases where the name server operator derives the NSID payload from
|
||||
textual data, a textual form such as US-ASCII or UTF-8 strings might
|
||||
at first glance seem easier for a user to deal with. There are,
|
||||
however, a number of complex issues involving internationalized text
|
||||
which, if fully addressed here, would require a set of rules
|
||||
significantly longer than the rest of this specification. See
|
||||
[RFC2277] for an overview of some of these issues.
|
||||
|
||||
It is much more important for the NSID payload data to be passed
|
||||
unambiguously from server administrator to user and back again than
|
||||
it is for the payload data to be pretty while in transit. In
|
||||
particular, it's critical that it be straightforward for a user to
|
||||
cut and paste an exact copy of the NSID payload output by a debugging
|
||||
tool into other formats such as email messages or web forms without
|
||||
distortion. Hexadecimal strings, while ugly, are also robust.
|
||||
|
||||
3.4. Truncation
|
||||
|
||||
In some cases, adding the NSID option to a response message may
|
||||
trigger message truncation. This specification does not change the
|
||||
rules for DNS message truncation in any way, but implementors will
|
||||
need to pay attention to this issue.
|
||||
|
||||
Including the NSID option in a response is always optional, so this
|
||||
specification never requires name servers to truncate response
|
||||
messages.
|
||||
|
||||
By definition, a resolver that requests NSID responses also supports
|
||||
EDNS, so a resolver that requests NSID responses can also use the
|
||||
"sender's UDP payload size" field of the OPT pseudo-RR to signal a
|
||||
receive buffer size large enough to make truncation unlikely.
|
||||
|
||||
4. IANA Considerations
|
||||
|
||||
IANA has allocated EDNS option code 3 for the NSID option
|
||||
(Section 2.3).
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 8]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
5. Security Considerations
|
||||
|
||||
This document describes a channel signaling mechanism intended
|
||||
primarily for debugging. Channel signaling mechanisms are outside
|
||||
the scope of DNSSEC, per se. Applications that require integrity
|
||||
protection for the data being signaled will need to use a channel
|
||||
security mechanism such as TSIG [RFC2845].
|
||||
|
||||
Section 3.1 discusses a number of different kinds of information that
|
||||
a name server operator might choose to provide as the value of the
|
||||
NSID option. Some of these kinds of information are security
|
||||
sensitive in some environments. This specification deliberately
|
||||
leaves the syntax and semantics of the NSID option content up to the
|
||||
implementation and the name server operator.
|
||||
|
||||
Two of the possible kinds of payload data discussed in Section 3.1
|
||||
involve a digital signature and encryption, respectively. While this
|
||||
specification discusses some of the pitfalls that might lurk for
|
||||
careless users of these kinds of payload data, full analysis of the
|
||||
issues that would be involved in these kinds of payload data would
|
||||
require knowledge of the content to be signed or encrypted,
|
||||
algorithms to be used, and so forth, which is beyond the scope of
|
||||
this document. Implementors should seek competent advice before
|
||||
attempting to use these kinds of NSID payloads.
|
||||
|
||||
6. Acknowledgements
|
||||
|
||||
Thanks to: Joe Abley, Harald Alvestrand, Dean Anderson, Mark Andrews,
|
||||
Roy Arends, Steve Bellovin, Alex Bligh, Randy Bush, David Conrad,
|
||||
John Dickinson, Alfred Hoenes, Johan Ihren, Daniel Karrenberg, Peter
|
||||
Koch, William Leibzon, Ed Lewis, Thomas Narten, Mike Patton, Geoffrey
|
||||
Sisson, Andrew Sullivan, Mike StJohns, Tom Taylor, Paul Vixie, Sam
|
||||
Weiler, and Suzanne Woolf, none of whom are responsible for what the
|
||||
author did with their comments and suggestions. Apologies to anyone
|
||||
inadvertently omitted from the above list.
|
||||
|
||||
7. References
|
||||
|
||||
7.1. Normative References
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", RFC 2119, BCP 14, March 1997.
|
||||
|
||||
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)",
|
||||
RFC 2671, August 1999.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 9]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
[RFC2845] Vixie, P., Gudmundsson, O., Eastlake 3rd, D., and B.
|
||||
Wellington, "Secret Key Transaction Authentication for DNS
|
||||
(TSIG)", RFC 2845, May 2000.
|
||||
|
||||
7.2. Informative References
|
||||
|
||||
[RFC2277] Alvestrand, H., "IETF Policy on Character Sets and
|
||||
Languages", RFC 2277, BCP 18, January 1998.
|
||||
|
||||
Author's Address
|
||||
|
||||
Rob Austein
|
||||
ISC
|
||||
950 Charter Street
|
||||
Redwood City, CA 94063
|
||||
USA
|
||||
|
||||
EMail: sra@isc.org
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 10]
|
||||
|
||||
RFC 5001 DNS NSID August 2007
|
||||
|
||||
|
||||
Full Copyright Statement
|
||||
|
||||
Copyright (C) The IETF Trust (2007).
|
||||
|
||||
This document is subject to the rights, licenses and restrictions
|
||||
contained in BCP 78, and except as set forth therein, the authors
|
||||
retain all their rights.
|
||||
|
||||
This document and the information contained herein are provided on an
|
||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
|
||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
|
||||
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
|
||||
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Intellectual Property
|
||||
|
||||
The IETF takes no position regarding the validity or scope of any
|
||||
Intellectual Property Rights or other rights that might be claimed to
|
||||
pertain to the implementation or use of the technology described in
|
||||
this document or the extent to which any license under such rights
|
||||
might or might not be available; nor does it represent that it has
|
||||
made any independent effort to identify any such rights. Information
|
||||
on the procedures with respect to rights in RFC documents can be
|
||||
found in BCP 78 and BCP 79.
|
||||
|
||||
Copies of IPR disclosures made to the IETF Secretariat and any
|
||||
assurances of licenses to be made available, or the result of an
|
||||
attempt made to obtain a general license or permission for the use of
|
||||
such proprietary rights by implementers or users of this
|
||||
specification can be obtained from the IETF on-line IPR repository at
|
||||
http://www.ietf.org/ipr.
|
||||
|
||||
The IETF invites any interested party to bring to its attention any
|
||||
copyrights, patents or patent applications, or other proprietary
|
||||
rights that may cover technology that may be required to implement
|
||||
this standard. Please address the information to the IETF at
|
||||
ietf-ipr@ietf.org.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Austein Standards Track [Page 11]
|
||||
|
||||
1011
doc/rfc/rfc5452.txt
Normal file
1011
doc/rfc/rfc5452.txt
Normal file
File diff suppressed because it is too large
Load Diff
675
doc/rfc/rfc5625.txt
Normal file
675
doc/rfc/rfc5625.txt
Normal file
@@ -0,0 +1,675 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group R. Bellis
|
||||
Request for Comments: 5625 Nominet UK
|
||||
BCP: 152 August 2009
|
||||
Category: Best Current Practice
|
||||
|
||||
|
||||
DNS Proxy Implementation Guidelines
|
||||
|
||||
Abstract
|
||||
|
||||
This document provides guidelines for the implementation of DNS
|
||||
proxies, as found in broadband gateways and other similar network
|
||||
devices.
|
||||
|
||||
Status of This Memo
|
||||
|
||||
This document specifies an Internet Best Current Practices for the
|
||||
Internet Community, and requests discussion and suggestions for
|
||||
improvements. Distribution of this memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (c) 2009 IETF Trust and the persons identified as the
|
||||
document authors. All rights reserved.
|
||||
|
||||
This document is subject to BCP 78 and the IETF Trust's Legal
|
||||
Provisions Relating to IETF Documents in effect on the date of
|
||||
publication of this document (http://trustee.ietf.org/license-info).
|
||||
Please review these documents carefully, as they describe your rights
|
||||
and restrictions with respect to this document.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 1]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Introduction ....................................................2
|
||||
2. Terminology .....................................................3
|
||||
3. The Transparency Principle ......................................3
|
||||
4. Protocol Conformance ............................................4
|
||||
4.1. Unexpected Flags and Data ..................................4
|
||||
4.2. Label Compression ..........................................4
|
||||
4.3. Unknown Resource Record Types ..............................4
|
||||
4.4. Packet Size Limits .........................................4
|
||||
4.4.1. TCP Transport .......................................5
|
||||
4.4.2. Extension Mechanisms for DNS (EDNS0) ................6
|
||||
4.4.3. IP Fragmentation ....................................6
|
||||
4.5. Secret Key Transaction Authentication for DNS (TSIG) .......7
|
||||
5. DHCP's Interaction with DNS .....................................7
|
||||
5.1. Domain Name Server (DHCP Option 6) .........................7
|
||||
5.2. Domain Name (DHCP Option 15) ...............................8
|
||||
5.3. DHCP Leases ................................................8
|
||||
6. Security Considerations .........................................9
|
||||
6.1. Forgery Resilience .........................................9
|
||||
6.2. Interface Binding .........................................10
|
||||
6.3. Packet Filtering ..........................................10
|
||||
7. Acknowledgements ...............................................10
|
||||
8. References .....................................................11
|
||||
8.1. Normative References ......................................11
|
||||
8.2. Informative References ....................................12
|
||||
|
||||
1. Introduction
|
||||
|
||||
Research has found ([SAC035], [DOTSE]) that many commonly used
|
||||
broadband gateways (and similar devices) contain DNS proxies that are
|
||||
incompatible in various ways with current DNS standards.
|
||||
|
||||
These proxies are usually simple DNS forwarders, but typically do not
|
||||
have any caching capabilities. The proxy serves as a convenient
|
||||
default DNS resolver for clients on the LAN, but relies on an
|
||||
upstream resolver (e.g., at an ISP) to perform recursive DNS lookups.
|
||||
|
||||
Note that to ensure full DNS protocol interoperability it is
|
||||
preferred that client stub resolvers should communicate directly with
|
||||
full-feature, upstream recursive resolvers wherever possible.
|
||||
|
||||
That notwithstanding, this document describes the incompatibilities
|
||||
that have been discovered and offers guidelines to implementors on
|
||||
how to provide better interoperability in those cases where the
|
||||
client must use the broadband gateway's DNS proxy.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 2]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
2. Terminology
|
||||
|
||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
|
||||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
|
||||
document are to be interpreted as described in [RFC2119].
|
||||
|
||||
3. The Transparency Principle
|
||||
|
||||
It is not considered practical for a simple DNS proxy to implement
|
||||
all current and future DNS features.
|
||||
|
||||
There are several reasons why this is the case:
|
||||
|
||||
o Broadband gateways usually have limited hardware resources.
|
||||
|
||||
o Firmware upgrade cycles are long, and many users do not routinely
|
||||
apply upgrades when they become available.
|
||||
|
||||
o No one knows what those future DNS features will be or how they
|
||||
might be implemented.
|
||||
|
||||
o Doing so would substantially complicate the configuration user
|
||||
interface (UI) of the device.
|
||||
|
||||
Furthermore, some modern DNS protocol extensions (see, e.g., EDNS0
|
||||
below) are intended to be used as "hop-by-hop" mechanisms. If the
|
||||
DNS proxy is considered to be such a "hop" in the resolution chain,
|
||||
then for it to function correctly, it would need to be fully
|
||||
compliant with all such mechanisms.
|
||||
|
||||
[SAC035] shows that the more actively a proxy participates in the DNS
|
||||
protocol, the more likely it is that it will somehow interfere with
|
||||
the flow of messages between the DNS client and the upstream
|
||||
recursive resolvers.
|
||||
|
||||
The role of the proxy should therefore be no more and no less than to
|
||||
receive DNS requests from clients on the LAN side, forward those
|
||||
verbatim to one of the known upstream recursive resolvers on the WAN
|
||||
side, and ensure that the whole response is returned verbatim to the
|
||||
original client.
|
||||
|
||||
It is RECOMMENDED that proxies should be as transparent as possible,
|
||||
such that any "hop-by-hop" mechanisms or newly introduced protocol
|
||||
extensions operate as if the proxy were not there.
|
||||
|
||||
Except when required to enforce an active security or network policy
|
||||
(such as maintaining a pre-authentication "walled garden"), end-users
|
||||
SHOULD be able to send their DNS queries to specified upstream
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 3]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
resolvers, thereby bypassing the proxy altogether. In this case, the
|
||||
gateway SHOULD NOT modify the DNS request or response packets in any
|
||||
way.
|
||||
|
||||
4. Protocol Conformance
|
||||
|
||||
4.1. Unexpected Flags and Data
|
||||
|
||||
The Transparency Principle above, when combined with Postel's
|
||||
Robustness Principle [RFC0793], suggests that DNS proxies should not
|
||||
arbitrarily reject or otherwise drop requests or responses based on
|
||||
perceived non-compliance with standards.
|
||||
|
||||
For example, some proxies have been observed to drop any packet
|
||||
containing either the "Authentic Data" (AD) or "Checking Disabled"
|
||||
(CD) bits from DNSSEC [RFC4035]. This may be because [RFC1035]
|
||||
originally specified that these unused "Z" flag bits "MUST" be zero.
|
||||
However, these flag bits were always intended to be reserved for
|
||||
future use, so refusing to proxy any packet containing these flags
|
||||
(now that uses for those flags have indeed been defined) is not
|
||||
appropriate.
|
||||
|
||||
Therefore, proxies MUST ignore any unknown DNS flags and proxy those
|
||||
packets as usual.
|
||||
|
||||
4.2. Label Compression
|
||||
|
||||
Compression of labels as per Section 4.1.4 of [RFC1035] is optional.
|
||||
|
||||
Proxies MUST forward packets regardless of the presence or absence of
|
||||
compressed labels therein.
|
||||
|
||||
4.3. Unknown Resource Record Types
|
||||
|
||||
[RFC3597] requires that resolvers MUST handle Resource Records (RRs)
|
||||
of unknown type transparently.
|
||||
|
||||
All requests and responses MUST be proxied regardless of the values
|
||||
of the QTYPE and QCLASS fields.
|
||||
|
||||
Similarly, all responses MUST be proxied regardless of the values of
|
||||
the TYPE and CLASS fields of any Resource Record therein.
|
||||
|
||||
4.4. Packet Size Limits
|
||||
|
||||
[RFC1035] specifies that the maximum size of the DNS payload in a UDP
|
||||
packet is 512 octets. Where the required portions of a response
|
||||
would not fit inside that limit, the DNS server MUST set the
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 4]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
"TrunCation" (TC) bit in the DNS response header to indicate that
|
||||
truncation has occurred. There are however two standard mechanisms
|
||||
(described in Sections 4.4.1 and 4.4.2) for transporting responses
|
||||
larger than 512 octets.
|
||||
|
||||
Many proxies have been observed to truncate all responses at 512
|
||||
octets, and others at a packet size related to the WAN MTU, in either
|
||||
case doing so without correctly setting the TC bit.
|
||||
|
||||
Other proxies have been observed to remove the TC bit in server
|
||||
responses that correctly had the TC bit set by the server.
|
||||
|
||||
If a DNS response is truncated but the TC bit is not set, then client
|
||||
failures may result. In particular, a naive DNS client library might
|
||||
suffer crashes due to reading beyond the end of the data actually
|
||||
received.
|
||||
|
||||
Since UDP packets larger than 512 octets are now expected in normal
|
||||
operation, proxies SHOULD NOT truncate UDP packets that exceed that
|
||||
size. See Section 4.4.3 for recommendations for packet sizes
|
||||
exceeding the WAN MTU.
|
||||
|
||||
If a proxy must unilaterally truncate a response, then the proxy MUST
|
||||
set the TC bit. Similarly, proxies MUST NOT remove the TC bit from
|
||||
responses.
|
||||
|
||||
4.4.1. TCP Transport
|
||||
|
||||
Should a UDP query fail because of truncation, the standard fail-over
|
||||
mechanism is to retry the query using TCP, as described in Section
|
||||
6.1.3.2 of [RFC1123].
|
||||
|
||||
Whilst TCP transport is not strictly mandatory, it is supported by
|
||||
the vast majority of stub resolvers and recursive servers. Lack of
|
||||
support in the proxy prevents this fail-over mechanism from working.
|
||||
|
||||
DNS proxies MUST therefore be prepared to receive and forward queries
|
||||
over TCP.
|
||||
|
||||
Note that it is unlikely that a client would send a request over TCP
|
||||
unless it had already received a truncated UDP response. Some
|
||||
"smart" proxies have been observed to first forward any request
|
||||
received over TCP to an upstream resolver over UDP, only for the
|
||||
response to be truncated, causing the proxy to retry over TCP. Such
|
||||
behaviour increases network traffic and causes delay in DNS
|
||||
resolution since the initial UDP request is doomed to fail.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 5]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
Therefore, whenever a proxy receives a request over TCP, the proxy
|
||||
SHOULD forward the query over TCP and SHOULD NOT attempt the same
|
||||
query over UDP first.
|
||||
|
||||
4.4.2. Extension Mechanisms for DNS (EDNS0)
|
||||
|
||||
The "Extension Mechanism for DNS" [RFC2671] was introduced to allow
|
||||
the transport of larger DNS packets over UDP and also to allow for
|
||||
additional request and response flags.
|
||||
|
||||
A client may send an OPT Resource Record (OPT RR) in the Additional
|
||||
Section of a request to indicate that it supports a specific receive
|
||||
buffer size. The OPT RR also includes the "DNSSEC OK" (DO) flag used
|
||||
by DNSSEC to indicate that DNSSEC-related RRs should be returned to
|
||||
the client.
|
||||
|
||||
However, some proxies have been observed to either reject (with a
|
||||
FORMERR response code) or black-hole any packet containing an OPT RR.
|
||||
As per Section 4.1, proxies MUST NOT refuse to proxy such packets.
|
||||
|
||||
4.4.3. IP Fragmentation
|
||||
|
||||
Support for UDP packet sizes exceeding the WAN MTU depends on the
|
||||
gateway's algorithm for handling fragmented IP packets. Several
|
||||
methods are possible:
|
||||
|
||||
1. Fragments are dropped.
|
||||
|
||||
2. Fragments are forwarded individually as they're received.
|
||||
|
||||
3. Complete packets are reassembled on the gateway and then re-
|
||||
fragmented (if necessary) as they're forwarded to the client.
|
||||
|
||||
Method 1 above will cause compatibility problems with EDNS0 unless
|
||||
the DNS client is configured to advertise an EDNS0 buffer size
|
||||
limited to the WAN MTU less the size of the IP header. Note that RFC
|
||||
2671 does recommend that the path MTU should be taken into account
|
||||
when using EDNS0.
|
||||
|
||||
Also, whilst the EDNS0 specification allows for a buffer size of up
|
||||
to 65535 octets, most common DNS server implementations do not
|
||||
support a buffer size above 4096 octets.
|
||||
|
||||
Therefore (irrespective of which of the above methods is in use),
|
||||
proxies SHOULD be capable of forwarding UDP packets up to a payload
|
||||
size of at least 4096 octets.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 6]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
NB: in theory, IP fragmentation may also occur if the LAN MTU is
|
||||
smaller than the WAN MTU, although the author has not observed such a
|
||||
configuration in use on any residential broadband service.
|
||||
|
||||
4.5. Secret Key Transaction Authentication for DNS (TSIG)
|
||||
|
||||
[RFC2845] defines TSIG, which is a mechanism for authenticating DNS
|
||||
requests and responses at the packet level.
|
||||
|
||||
Any modifications made to the DNS portions of a TSIG-signed query or
|
||||
response packet (with the exception of the Query ID) will cause a
|
||||
TSIG authentication failure.
|
||||
|
||||
DNS proxies MUST implement Section 4.7 of [RFC2845] and either
|
||||
forward packets unchanged (as recommended above) or fully implement
|
||||
TSIG.
|
||||
|
||||
As per Section 4.3, DNS proxies MUST be capable of proxying packets
|
||||
containing TKEY [RFC2930] Resource Records.
|
||||
|
||||
NB: any DNS proxy (such as those commonly found in WiFi hotspot
|
||||
"walled gardens") that transparently intercepts all DNS queries and
|
||||
that returns unsigned responses to signed queries, will also cause
|
||||
TSIG authentication failures.
|
||||
|
||||
5. DHCP's Interaction with DNS
|
||||
|
||||
Whilst this document is primarily about DNS proxies, most consumers
|
||||
rely on DHCP [RFC2131] to obtain network configuration settings.
|
||||
Such settings include the client machine's IP address, subnet mask,
|
||||
and default gateway, but also include DNS-related settings.
|
||||
|
||||
It is therefore appropriate to examine how DHCP affects client DNS
|
||||
configuration.
|
||||
|
||||
5.1. Domain Name Server (DHCP Option 6)
|
||||
|
||||
Most gateways default to supplying their own IP address in the DHCP
|
||||
"Domain Name Server" option [RFC2132]. The net result is that
|
||||
without explicit re-configuration many DNS clients will, by default,
|
||||
send queries to the gateway's DNS proxy. This is understandable
|
||||
behaviour given that the correct upstream settings are not usually
|
||||
known at boot time.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 7]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
Most gateways learn their own DNS settings via values supplied by an
|
||||
ISP via DHCP or PPP over the WAN interface. However, whilst many
|
||||
gateways do allow the device administrator to override those values,
|
||||
some gateways only use those supplied values to affect the proxy's
|
||||
own forwarding function, and do not offer these values via DHCP.
|
||||
|
||||
When using such a device, the only way to avoid using the DNS proxy
|
||||
is to hard-code the required values in the client operating system.
|
||||
This may be acceptable for a desktop system but it is inappropriate
|
||||
for mobile devices that are regularly used on many different
|
||||
networks.
|
||||
|
||||
As per Section 3, end-users SHOULD be able to send their DNS queries
|
||||
directly to specified upstream resolvers, ideally without hard-coding
|
||||
those settings in their stub resolver.
|
||||
|
||||
It is therefore RECOMMENDED that gateways SHOULD support device-
|
||||
administrator configuration of values for the "Domain Name Server"
|
||||
DHCP option.
|
||||
|
||||
5.2. Domain Name (DHCP Option 15)
|
||||
|
||||
A significant amount of traffic to the DNS Root Name Servers is for
|
||||
invalid top-level domain names, and some of that traffic can be
|
||||
attributed to particular equipment vendors whose firmware defaults
|
||||
this DHCP option to specific values.
|
||||
|
||||
Since no standard exists for a "local" scoped domain name suffix, it
|
||||
is RECOMMENDED that the default value for this option SHOULD be
|
||||
empty, and that this option MUST NOT be sent to clients when no value
|
||||
is configured.
|
||||
|
||||
5.3. DHCP Leases
|
||||
|
||||
It is noted that some DHCP servers in broadband gateways offer, by
|
||||
default, their own IP address for the "Domain Name Server" option (as
|
||||
described above) but then automatically start offering the upstream
|
||||
servers' addresses once they've been learnt over the WAN interface.
|
||||
|
||||
In general, this behaviour is highly desirable, but the effect for
|
||||
the end-user is that the settings used depend on whether the DHCP
|
||||
lease was obtained before or after the WAN link was established.
|
||||
|
||||
If the DHCP lease is obtained whilst the WAN link is down, then the
|
||||
DHCP client (and hence the DNS client) will not receive the correct
|
||||
values until the DHCP lease is renewed.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 8]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
Whilst no specific recommendations are given here, vendors may wish
|
||||
to give consideration to the length of DHCP leases and to whether
|
||||
some mechanism for forcing a DHCP lease renewal might be appropriate.
|
||||
|
||||
Another possibility is that the learnt upstream values might be
|
||||
persisted in non-volatile memory such that on reboot the same values
|
||||
can be automatically offered via DHCP. However, this does run the
|
||||
risk that incorrect values are initially offered if the device is
|
||||
moved or connected to another ISP.
|
||||
|
||||
Alternatively, the DHCP server might only issue very short (i.e., 60
|
||||
second) leases while the WAN link is down, only reverting to more
|
||||
typical lease lengths once the WAN link is up and the upstream DNS
|
||||
servers are known. Indeed, with such a configuration it may be
|
||||
possible to avoid the need to implement a DNS proxy function in the
|
||||
broadband gateway at all.
|
||||
|
||||
6. Security Considerations
|
||||
|
||||
This document introduces no new protocols. However, there are some
|
||||
security-related recommendations for vendors that are listed here.
|
||||
|
||||
6.1. Forgery Resilience
|
||||
|
||||
Whilst DNS proxies are not usually full-feature resolvers, they
|
||||
nevertheless share some characteristics with them.
|
||||
|
||||
Notwithstanding the recommendations above about transparency, many
|
||||
DNS proxies are observed to pick a new Query ID for outbound requests
|
||||
to ensure that responses are directed to the correct client.
|
||||
|
||||
NB: changing the Query ID is acceptable and compatible with proxying
|
||||
TSIG-signed packets since the TSIG signature calculation is based on
|
||||
the original message ID, which is carried in the TSIG RR.
|
||||
|
||||
It has been standard guidance for many years that each DNS query
|
||||
should use a randomly generated Query ID. However, many proxies have
|
||||
been observed picking sequential Query IDs for successive requests.
|
||||
|
||||
It is strongly RECOMMENDED that DNS proxies follow the relevant
|
||||
recommendations in [RFC5452], particularly those in Section 9.2
|
||||
relating to randomisation of Query IDs and source ports. This also
|
||||
applies to source port selection within any NAT function.
|
||||
|
||||
If a DNS proxy is running on a broadband gateway with NAT that is
|
||||
compliant with [RFC4787], then it SHOULD also follow the
|
||||
recommendations in Section 10 of [RFC5452] concerning how long DNS
|
||||
state is kept.
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 9]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
6.2. Interface Binding
|
||||
|
||||
Some gateways have been observed to have their DNS proxy listening on
|
||||
both internal (LAN) and external (WAN) interfaces. In this
|
||||
configuration, it is possible for the proxy to be used to mount
|
||||
reflector attacks as described in [RFC5358].
|
||||
|
||||
The DNS proxy in a gateway SHOULD NOT, by default, be accessible from
|
||||
the WAN interfaces of the device.
|
||||
|
||||
6.3. Packet Filtering
|
||||
|
||||
The Transparency and Robustness Principles are not entirely
|
||||
compatible with the deep packet-inspection features of security
|
||||
appliances such as firewalls, which are intended to protect systems
|
||||
on the inside of a network from rogue traffic.
|
||||
|
||||
However, a clear distinction may be made between traffic that is
|
||||
intrinsically malformed and that which merely contains unexpected
|
||||
data.
|
||||
|
||||
Examples of malformed packets that MAY be dropped include:
|
||||
|
||||
o invalid compression pointers (i.e., those that point outside of
|
||||
the current packet or that might cause a parsing loop)
|
||||
|
||||
o incorrect counts for the Question, Answer, Authority, and
|
||||
Additional Sections (although care should be taken where
|
||||
truncation is a possibility)
|
||||
|
||||
Dropped packets will cause the client to repeatedly retransmit the
|
||||
original request, with the client only detecting the error after
|
||||
several retransmit intervals.
|
||||
|
||||
In these circumstances, proxies SHOULD synthesise a suitable DNS
|
||||
error response to the client (i.e., SERVFAIL) instead of dropping the
|
||||
packet completely. This will allow the client to detect the error
|
||||
immediately.
|
||||
|
||||
7. Acknowledgements
|
||||
|
||||
The author would particularly like to acknowledge the assistance of
|
||||
Lisa Phifer of Core Competence. In addition, the author is grateful
|
||||
for the feedback from the members of the DNSEXT Working Group.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 10]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
8. References
|
||||
|
||||
8.1. Normative References
|
||||
|
||||
[RFC0793] Postel, J., "Transmission Control Protocol", STD 7,
|
||||
RFC 793, September 1981.
|
||||
|
||||
[RFC1035] Mockapetris, P., "Domain names - implementation and
|
||||
specification", STD 13, RFC 1035, November 1987.
|
||||
|
||||
[RFC1123] Braden, R., "Requirements for Internet Hosts - Application
|
||||
and Support", STD 3, RFC 1123, October 1989.
|
||||
|
||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
|
||||
Requirement Levels", BCP 14, RFC 2119, March 1997.
|
||||
|
||||
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
|
||||
RFC 2131, March 1997.
|
||||
|
||||
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor
|
||||
Extensions", RFC 2132, March 1997.
|
||||
|
||||
[RFC2671] Vixie, P., "Extension Mechanisms for DNS (EDNS0)",
|
||||
RFC 2671, August 1999.
|
||||
|
||||
[RFC2845] Vixie, P., Gudmundsson, O., Eastlake, D., and B.
|
||||
Wellington, "Secret Key Transaction Authentication for DNS
|
||||
(TSIG)", RFC 2845, May 2000.
|
||||
|
||||
[RFC2930] Eastlake, D., "Secret Key Establishment for DNS (TKEY
|
||||
RR)", RFC 2930, September 2000.
|
||||
|
||||
[RFC3597] Gustafsson, A., "Handling of Unknown DNS Resource Record
|
||||
(RR) Types", RFC 3597, September 2003.
|
||||
|
||||
[RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
|
||||
Rose, "Protocol Modifications for the DNS Security
|
||||
Extensions", RFC 4035, March 2005.
|
||||
|
||||
[RFC4787] Audet, F. and C. Jennings, "Network Address Translation
|
||||
(NAT) Behavioral Requirements for Unicast UDP", BCP 127,
|
||||
RFC 4787, January 2007.
|
||||
|
||||
[RFC5358] Damas, J. and F. Neves, "Preventing Use of Recursive
|
||||
Nameservers in Reflector Attacks", BCP 140, RFC 5358,
|
||||
October 2008.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 11]
|
||||
|
||||
RFC 5625 DNS Proxy Implementation Guidelines August 2009
|
||||
|
||||
|
||||
[RFC5452] Hubert, A. and R. van Mook, "Measures for Making DNS More
|
||||
Resilient against Forged Answers", RFC 5452, January 2009.
|
||||
|
||||
8.2. Informative References
|
||||
|
||||
[DOTSE] Ahlund and Wallstrom, "DNSSEC Tests of Consumer Broadband
|
||||
Routers", February 2008,
|
||||
<http://www.iis.se/docs/Routertester_en.pdf>.
|
||||
|
||||
[SAC035] Bellis, R. and L. Phifer, "Test Report: DNSSEC Impact on
|
||||
Broadband Routers and Firewalls", September 2008,
|
||||
<http://www.icann.org/committees/security/sac035.pdf>.
|
||||
|
||||
Author's Address
|
||||
|
||||
Ray Bellis
|
||||
Nominet UK
|
||||
Edmund Halley Road
|
||||
Oxford OX4 4DQ
|
||||
United Kingdom
|
||||
|
||||
Phone: +44 1865 332211
|
||||
EMail: ray.bellis@nominet.org.uk
|
||||
URI: http://www.nominet.org.uk/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Bellis Best Current Practice [Page 12]
|
||||
|
||||
Reference in New Issue
Block a user