RFC 4592 - The Role of Wildcards in the Domain Name System(2)

时间:2006-11-02 来源: 作者: 点击:
labelexists’atermhasbeencoinedtodescribethelastdomain (node)matched.Thetermis"closestencloser". 3.3.1.ClosestEncloserandtheSourceofSynthesis Theclosestencloseristhenodeinthezone’streeofexisting dom
  
   label exists’ a term has been coined to describe the last domain
   (node) matched.  The term is "closest encloser".

3.3.1.  Closest Encloser and the Source of Synthesis

   The closest encloser is the node in the zone’s tree of existing
   domain names that has the most labels matching the query name
   (consecutively, counting from the root label downward).  Each match
   is a "label match" and the order of the labels is the same.

   The closest encloser is, by definition, an existing name in the zone.
   The closest encloser might be an empty non-terminal or even be a
   wildcard domain name itself.  In no circumstances is the closest
   encloser to be used to synthesize records for the current query.

   The source of synthesis is defined in the context of a query process
   as that wildcard domain name immediately descending from the closest
   encloser, provided that this wildcard domain name exists.
   "Immediately descending" means that the source of synthesis has a
   name of the form:

      <asterisk label>.<closest encloser>.

   A source of synthesis does not guarantee having a RRSet to use for
   synthesis.  The source of synthesis could be an empty non-terminal.

   If the source of synthesis does not exist (not on the domain tree),
   there will be no wildcard synthesis.  There is no search for an
   alternate.

   The important concept is that for any given lookup process, there is
   at most one place at which wildcard synthetic records can be
   obtained.  If the source of synthesis does not exist, the lookup
   terminates, and the lookup does not look for other wildcard records.

3.3.2.  Closest Encloser and Source of Synthesis Examples

   To illustrate, using the example zone in section 2.2.1 of this
   document, the following chart shows QNAMEs and the closest enclosers.

     QNAME                       Closest Encloser    Source of Synthesis
     host3.example.              example.            *.example.
     _telnet._tcp.host1.example. _tcp.host1.example. no source
     _dns._udp.host2.example.    host2.example.      no source
     _telnet._tcp.host3.example. example.            *.example.
     _chat._udp.host3.example.   example.            *.example.
     foobar.*.example.           *.example.          no source

3.3.3.  Type Matching

   RFC 1034 concludes part ’c’ with this:

   #            If the "*" label does not exist, check whether the name
   #            we are looking for is the original QNAME in the query
   #            or a name we have followed due to a CNAME.  If the name
   #            is original, set an authoritative name error in the
   #            response and exit.  Otherwise just exit.
   #
   #            If the "*" label does exist, match RRs at that node
   #            against QTYPE.  If any match, copy them into the answer
   #            section, but set the owner of the RR to be QNAME, and
   #            not the node with the "*" label.  Go to step 6.

   The final paragraph covers the role of the QTYPE in the lookup
   process.

   Based on implementation feedback and similarities between part ’a’
   and part ’c’, a change to this passage has been made.

   The change is to add the following text to part ’c’ prior to the
   instructions to "go to step 6":

      If the data at the source of synthesis is a CNAME, and QTYPE
      doesn’t match CNAME, copy the CNAME RR into the answer section of
      the response changing the owner name to the QNAME, change QNAME to
      the canonical name in the CNAME RR, and go back to step 1.

   This is essentially the same text in part ’a’ covering the processing
   of CNAME RRSets.

4.  Considerations with Special Types

   Sections 2 and 3 of this document discuss wildcard synthesis with
   respect to names in the domain tree and ignore the impact of types.
   In this section, the implication of wildcards of specific types is
   discussed.  The types covered are those that have proven to be the
   most difficult to understand.  The types are SOA, NS, CNAME, DNAME,
   SRV, DS, NSEC, RRSIG, and "none", that is, empty non-terminal
   wildcard domain names.

4.1.  SOA RRSet at a Wildcard Domain Name

   A wildcard domain name owning an SOA RRSet means that the domain is
   at the root of the zone (apex).  The domain cannot be a source of
   synthesis because that is, by definition, a descendant node (of the
   closest encloser) and a zone apex is at the top of the zone.

   Although a wildcard domain name owning an SOA RRSet can never be a
   source of synthesis, there is no reason to forbid the ownership of an
   SOA RRSet.

   For example, given this zone:

      $ORIGIN *.example.
      @                 3600 IN  SOA   <SOA RDATA>
                        3600     NS    ns1.example.com.
                        3600     NS    ns1.example.net.
      www               3600     TXT   "the www txt record"

   A query for www.*.example.’s TXT record would still find the "the www
   txt record" answer.  The asterisk label only becomes significant when
   section 4.3.2, step 3, part ’c’ is in effect.

   Of course, there would need to be a delegation in the parent zone,
   "example." for this to work too.  This is covered in the next
   section.

4.2.  NS RRSet at a Wildcard Domain Name

   With the definition of DNSSEC [RFC4033, RFC4034, RFC4035] now in
   place, the semantics of a wildcard domain name owning an NS RRSet has
   come to be poorly defined.  The dilemma relates to a conflict between
   the rules for synthesis in part ’c’ and the fact that the resulting
   synthesis generates a record for which the zone is not authoritative.
   In a DNSSEC signed zone, the mechanics of signature management
   (generation and inclusion in a message) have become unclear.

   Salient points of the working group discussion on this topic are
   summarized in section 4.2.1.

   As a result of these discussions, there is no definition given for
   wildcard domain names owning an NS RRSet.  The semantics are left
   undefined until there is a clear need to have a set defined, and
   until there is a clear direction to proceed.  Operationally,
   inclusion of wildcard NS RRSets in a zone is discouraged, but not
   barred.

4.2.1.  Discarded Notions

   Prior to DNSSEC, a wildcard domain name owning a NS RRSet appeared to
   be workable, and there are some instances in which it is found in
   deployments using implementations that support this.  Continuing to
   allow this in the specification is not tenable with DNSSEC.  The
   reason is that the synthesis of the NS RRSet is being done in a zone
   that has delegated away the responsibility for the name.  This
   "unauthorized" synthesis is not a problem for the base DNS protocol,
   but DNSSEC in affirming the authorization model for DNS exposes the
   problem.

   Outright banning of wildcards of type NS is also untenable as the DNS
   protocol does not define how to handle "illegal" data.
   Implementations may choose not to load a zone, but there is no
   protocol definition.  The lack of the definition is complicated by
   having to cover dynamic update [RFC2136] and zone transfers, as well
   as loading at the master server.  The case of a client (resolver,
   caching server) getting a wildcard of type NS in a reply would also
   have to be considered.

   Given the daunting challenge of a complete definition of how to ban
   such records, dealing with existing implementations that permit the
   records today is a further complication.  There are uses of wildcard
   domain name owning NS RRSets.

   One compromise proposed would have redefined wildcards of type NS to
   not be used in synthesis, this compromise fell apart because it would
   have required significant edits to the DNSSEC signing and validation
   work.  (Again, DNSSEC catches unauthorized data.)

   With no clear consensus forming on the solution to this dilemma, and
   the realization that wildcards of type NS are a rarity in operations,
   the best course of action is to leave this open-ended until "it
   matters".

4.3.  CNAME RRSet at a Wildcard Domain Name

   The issue of a CNAME RRSet owned by a wildcard domain name has
   prompted a suggested change to the last paragraph of step 3c of the
   algorithm in 4.3.2.  The changed text appears in section 3.3.3 of
   this document.

4.4.  DNAME RRSet at a Wildcard Domain Name

   Ownership of a DNAME [RFC2672] RRSet by a wildcard domain name
   represents a threat to the coherency of the DNS and is to be avoided
   or outright rejected.  Such a DNAME RRSet represents non-
   deterministic synthesis of rules fed to different caches.  As caches
   are fed the different rules (in an unpredictable manner) the caches
   will cease to be coherent.  ("As caches are fed" refers to the
   storage in a cache of records obtained in responses by recursive or
   iterative servers.)

   For example, assume one cache, responding to a recursive request,
   obtains the following record:

         "a.b.example. DNAME foo.bar.example.net."

      and another cache obtains:

         "b.example.  DNAME foo.bar.example.net."

      both generated from the record:

         "*.example. DNAME foo.bar.example.net."

       by an authoritative server.

   The DNAME specification is not clear on whether DNAME records in a
   cache are used to rewrite queries.  In some interpretations, the
   rewrite occurs; in others, it does not.  Allowing for the occurrence
   of rewriting, queries for "sub.a.b.example. A" may be rewritten as
   "sub.foo.bar.tld. A" by the former caching server and may be
   rewritten as "sub.a.foo.bar.tld. A" by the latter.  Coherency is
   lost, and an operational nightmare ensues.

   Another justification for a recommendation to avoid the use of
   wildcard DNAME records is the observation that such a record could
   synthesize a DNAME owned by "sub.foo.bar.example." and
   "foo.bar.example.".  There is a restriction in the DNAME definition
   that no domain exist below a DNAME-owning domain; hence, the wildcard
   DNAME is to be avoided.

4.5.  SRV RRSet at a Wildcard Domain Name

   The definition of the SRV RRset is RFC 2782 [RFC2782].  In the
   definition of the record, there is some confusion over the term
   "Name".  The definition reads as follows:

   # The format of the SRV RR
   ...
   #    _Service._Proto.Name TTL Class SRV Priority Weight Port Target
   ...
   #  Name
   #   The domain this RR refers to.  The SRV RR is unique in that the
   #   name one searches for is not this name; the example near the end
   #   shows this clearly.

   Do not confuse the definition "Name" with the owner name.  That is,
   once removing the _Service and _Proto labels from the owner name of
   the SRV RRSet, what remains could be a wildcard domain name but this
   is immaterial to the SRV RRSet.

   For example, if an SRV record is the following:

      _foo._udp.*.example. 10800 IN SRV 0 1 9 old-slow-box.example.

   *.example is a wildcard domain name and although it is the Name of
   the SRV RR, it is not the owner (domain name).  The owner domain name
   is "_foo._udp.*.example.", which is not a wildcard domain name.

   A query for the SRV RRSet of "_foo._udp.bar.example." (class IN),
   will result in a match of the name "*.example." (assuming there is no
   bar.example.) and not a match of the SRV record shown.  If there is
   no SRV RRSet at "*.example.", the answer section will reflect that
   (be empty or a CNAME RRset).

   The confusion is likely based on the mixture of the specification of
   the SRV RR and the description of a "use case".

4.6.  DS RRSet at a Wildcard Domain Name

   A DS RRSet owned by a wildcard domain name is meaningless and
   harmless.  This statement is made in the context that an NS RRSet at
   a wildcard domain name is undefined.  At a non-delegation point, a DS
   RRSet has no value (no corresponding DNSKEY RRSet will be used in
   DNSSEC validation).  If there is a synthesized DS RRSet, it alone
   will not be very useful as it exists in the context of a delegation
   point.

4.7.  NSEC RRSet at a Wildcard Domain Name

   Wildcard domain names in DNSSEC signed zones will have an NSEC RRSet.
   Synthesis of these records will only occur when the query exactly
   matches the record.  Synthesized NSEC RRs will not be harmful as they
   will never be used in negative caching or to generate a negative
   response [RFC2308].

4.8.  RRSIG at a Wildcard Domain Name

   RRSIG records will be present at a wildcard domain name in a signed
   zone and will be synthesized along with data sought in a query.  The
   fact that the owner name is synthesized is not a problem as the label
   count in the RRSIG will instruct the verifying code to ignore it.

4.9.  Empty Non-terminal Wildcard Domain Name

   If a source of synthesis is an empty non-terminal, then the response
   will be one of no error in the return code and no RRSet in the answer
   section.

5.  Security Considerations

   This document is refining the specifications to make it more likely
   that security can be added to DNS.  No functional additions are being
   made, just refining what is considered proper to allow the DNS,
   security of the DNS, and extending the DNS to be more predictable.

6.  References

6.1. Normative References

   [RFC20]   Cerf, V., "ASCII format for network interchange", RFC 20,
             October 1969.

   [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.

   [RFC1995] Ohta, M., "Incremental Zone Transfer in DNS", RFC 1995,
             August 1996.

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2308] Andrews, M., "Negative Caching of DNS Queries (DNS
             NCACHE)", RFC 2308, March 1998.

   [RFC2672] Crawford, M., "Non-Terminal DNS Name Redirection", RFC
             2672, August 1999.

   [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for
             specifying the location of services (DNS SRV)", RFC 2782,
             February 2000.

   [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
             Rose, "DNS Security Introduction and Requirements", RFC
             4033, March 2005.

   [RFC4034] Arends, R., Austein, R., Larson, M., Massey, D., and S.
             Rose, "Resource Records for the DNS Security Extensions",
             RFC 4034, March 2005.

   [RFC4035] Arends, R., Austein, R., Larson, M., Massey, D., and S.
             Rose, "Protocol Modifications for the DNS Security
             Extensions", RFC 4035, March 2005.

6.2.  Informative References

   [RFC2136] Vixie, P., Thomson, S., Rekhter, Y., and J. Bound, "Dynamic
             Updates in the Domain Name System (DNS UPDATE)", RFC 2136,
             April 1997.

7.  Others Contributing to the Document

   This document represents the work of a large working group.  The
   editor merely recorded its collective wisdom.

   Comments on this document can be sent to the editor or the mailing
   list for the DNSEXT WG, namedroppers@ops.ietf.org.

Editor’s Address

   Edward Lewis
   NeuStar
   46000 Center Oak Plaza
   Sterling, VA
   20166, US

   Phone: +1-571-434-5468
   EMail: ed.lewis@neustar.biz

Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   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 provided by the IETF
   Administrative Support Activity (IASA).
------分隔线----------------------------
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容