RFC 4892
Requirements for a Mechanism Identifying a Name Server Instance
RFC 4892: Requirements for a Mechanism Identifying a Name Server Instance π
Title block, bestie:
- RFC number: 4892
- Title: Requirements for a Mechanism Identifying a Name Server Instance
- Authors: S. Woolf (Internet Systems Consortium, Inc.) and D. Conrad (ICANN) π
- Category: Informational (so this is guidance, not a standard, okay?)
- Date: June 2007
- Obsoletes/Updates: the title block doesn't list anything it obsoletes or updates β¨
Status of This Memo π
This memo gives information to the Internet community. It is not an Internet standard of any kind π Distribution is unlimited, so share away π
Copyright Notice Β©οΈ
Copyright (C) The IETF Trust (2007). That's the legal bit, but it's cute that it's there πΈ
Abstract β¨
Okay so, DNS anycast, load balancing, and other setups let more than one DNS name server share a single IP address. That's amazing for reliability, but it makes it kinda hard to tell which server in the pool actually answered your query π A standard way to find out the identity of the responding name server would be super useful, especially as a diagnostic tool for admins π₯
The problem is that the ad hoc ways people currently use have some shortcomings. The biggest one is that nobody did the prior analysis of how such a mechanism should be designed and deployed π This document describes the existing convention that several widely deployed DNS implementations use, including its advantages and disadvantages, and talks about some attributes of an improved mechanism π¦
1. Introduction and Rationale π§
Knowing which name server is answering queries is really useful, especially when you're trying to debug name server trouble π It's most obviously helpful for authoritative name servers, where you want to figure out where inaccurate data is coming from or how common it is. It can also be useful for caching resolvers in similar and other situations π And as DNS has become more critical to more Internet users, and as server deployment topologies have gotten more complicated, being able to identify the responding server has only become more useful π
Traditionally, the way to figure out which of several servers answered a query has been to use the server's IP address as a unique identifier. But the modern Internet has deployed a bunch of load balancing, fault-tolerance, and attack-resistance schemes, like shared use of unicast IP addresses as documented in [RFC3258]. Honestly, that's where things get messy π© Using IP addresses as identifiers for DNS (or any other) service gets kinda problematic. Multiple dedicated DNS queries sent to the same IP address may not reach the same server. Non-DNS methods like ICMP ping, TCP connections, or non-DNS UDP packets (such as the ones generated by tools like "traceroute") are even less certain to reach the same server that receives the DNS queries π
There's a well-known, frequently used technique for getting an identity for a name server that's more specific than the possibly-non-unique "server that answered the query I sent to IP address A.B.C.D" π Because people use this existing convention so much, it suggests there's a need for a documented, interoperable way to query the identity of a name server that might be part of an anycast or load-balancing cluster π«Ά But it also has some drawbacks, which argue against standardizing it the way it's been practiced so far π₯²
2. Existing Conventions π
For a while now, the widely deployed Berkeley Internet Name Domain (BIND) implementation of the DNS protocol suite, from the Internet Systems Consortium [BIND], has supported a way to identify a particular server using a standards-compliant (if kinda unusual) DNS query π§ Specifically, sending a query to a recent BIND server for a TXT resource record in class 3 (CHAOS) for the domain name HOSTNAME.BIND. returns a string that the name server administrator can configure to give a unique identifier for the responding server β¨ (The value defaults to the result of a gethostname() call.) This mechanism extends the BIND convention of using CHAOS class TXT RR queries to sub-domains of the BIND. domain for version information, and several name server vendors have copied it πΈ
A refinement to the BIND-based mechanism dropped the implementation-specific label and replaces BIND. with SERVER.. So the query label to learn a server's unique name can look like ID.SERVER. π
(FYI, the other well-known name used by recent versions of BIND in the CHAOS class BIND. domain is VERSION.BIND.. A CHAOS TXT RR query for this name returns an administratively defined string that defaults to the software version of the responding server. Other vendors don't generally implement this one π)
2.1. Advantages π
There are several valuable attributes to this mechanism, and they're the reason it's so useful π
- The
HOSTNAME.BIND.orID.SERVER.query response mechanism lives within the DNS protocol itself. A mechanism that relies on the DNS protocol is more likely to succeed (though not guaranteed) at reaching the same system as a "normal" DNS query π - Because the identity information is requested and returned within the DNS protocol, it doesn't need any other query mechanism to be allowed to the server, like holes in firewalls for otherwise-unallowed ICMP Echo requests π₯ So it's likely to reach the same server over a path subject to the same routing, resource, and security policy as the query, with no special exceptions to site security policy π¦
- It's simple to configure. An administrator can easily turn this feature on and control the results of the relevant query π
- It lets the administrator have complete control over what information is given out in the response, which minimizes passive leakage of implementation or configuration details π Infrastructure operators often consider those details sensitive, so this is a big deal π
2.2. Disadvantages π₯
Still, the CHAOS/TXT query mechanism has some serious drawbacks, and they argue against standardizing it the way it currently operates π¬
- It requires an additional query to correlate the answer to a DNS query under normal conditions with the supposed identity of the server that received it. There are a number of situations where this simply isn't reliable π
- It reserves an entire class in the DNS (CHAOS) for what amounts to one zone. CHAOS class is defined in [RFC1034] and [RFC1035], but it's not clear that supporting it solely for this purpose is a good use of the namespace or of implementation effort π€
- The initial, still-common form, using
BIND., is implementation specific. BIND is one DNS implementation, and at the time of this writing it's probably most prevalent for authoritative servers. That doesn't justify standardizing on its ad hoc solution to a problem shared across many operators and implementors π ββοΈ Meanwhile, the refinement mentioned above changes the query label but keeps the ad hoc CHAOS/TXT mechanism π€ - There's no convention or shared understanding of what information an answer to such a server identity query could or should contain, including a possible encoding or authentication mechanism π«οΈ
- Hypothetically, since DNSSEC has been defined to cover all DNS classes, the TXT RRs returned in response to the
ID.SERVER.query could be signed, which would have the advantages described in [RFC4033]. However, DNSSEC deployment for the CHAOS class is neither existent nor foreseeable, and since theID.SERVER.TXT RR is expected to be unique per server, this would be impossible in practice π
The first of the listed disadvantages may be technically the most serious π¨ It argues for an attempt to design a good answer to the problem, "I need to know what nameserver is answering my queries," rather than just a convenient one β¨
3. Characteristics of an Implementation Neutral Convention π§ββοΈ
The discussion above of the advantages and disadvantages of the HOSTNAME.BIND. mechanism suggests some requirements for a better solution to the server identification problem π These are summarized here as guidelines for any effort to provide appropriate protocol extensions:
- The mechanism adopted must be in-band for the DNS protocol. That is, it needs to allow the query for the server's identifying information to be part of a normal, operational query. It should also permit a separate, dedicated query for the server's identifying information. But it should preserve the ability of the CHAOS/TXT query-based mechanism to work through firewalls and in other situations where only DNS can be relied upon to reach the server of interest π₯
- The new mechanism should not require dedicated namespaces or other reserved values outside of the existing protocol mechanisms for these, i.e., the OPT pseudo-RR π In particular, it should not carry forward the existing drawback of requiring support for a CLASS and top level domain in the authoritative server (or the querying tool) to be useful π
- Support for the identification functionality should be easy to implement and easy to enable. It must be easy to disable, and it should lend itself to access controls on who can query for it π
- It should be possible to return a unique identifier for a server without exposing information that may be non-public and considered sensitive by the operator, such as a hostname or unicast IP address maintained for administrative purposes π
- It should be possible to authenticate the received data by some mechanism analogous to those provided by DNSSEC. In this context, the need could be met by including encryption options in the specification of a new mechanism π§
- The identification mechanism should not be implementation-specific π
4. IANA Considerations π
This document proposes no specific IANA action. Protocol extensions, if any, to meet the requirements described here are out of scope for this document. A proposed extension, specified and adopted through the normal IETF process, is described in [NSID], including the relevant IANA action π
5. Security Considerations π₯
okay bestie, this section is SERIOUS π Telling people which server answered a query from a particular spot on the internet can count as information leakage, and that's a real security risk π. That's why the suggestion above says a new server identification mechanism should let the admin switch the whole thing off or only partly restrict who can access the data π«Ά. It also says the server identification data shouldn't be easily correlated with a hostname or unicast IP address that the nameserver operator treats as private to their management infrastructure π.
Propagating protocol or service metadata can sometimes expose the application to denial of service or other attacks π¬. DNS is a critically important infrastructure service for the production Internet, so designers, implementors, and operators of a new server identification mechanism need to take extra care with this risk π .
Both authentication and confidentiality of server identification data may matter to administrators. Operators may want that data available and reliable to themselves and their chosen associates only π. That means they need to be able to authenticate it to themselves and keep it private from arbitrary other parties, which is why this leads to characteristics 4 and 5 of an improved solution β¨.
6. Acknowledgements πΈ
the technique for host identification in this document was first implemented by Paul Vixie of the Internet Software Consortium in the Berkeley Internet Name Daemon package π§. Comments and questions on earlier versions came from Bob Halley, Brian Wellington, Andreas Gustafsson, Ted Hardie, Chris Yarnell, Randy Bush, and members of the ICANN Root Server System Advisory Committee π. The newest version goes in a significantly different direction from earlier ones, thanks to discussion among DNSOP working group contributors and others, especially Olafur Gudmundsson, Ed Lewis, Bill Manning, Sam Weiler, and Rob Austein π.
7. References π
7.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.
[RFC3258] Hardie, T., "Distributing Authoritative Name Servers via
Shared Unicast Addresses", RFC 3258, April 2002.
7.2. Informative References
[BIND] ISC, "BIND 9 Configuration Reference".
[NSID] Austein, R., "DNS Name Server Identifier Option (NSID)",
Work in Progress, June 2006.
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S.
Rose, "DNS Security Introduction and Requirements", RFC
4033, March 2005.
Authors' Addresses π
Suzanne Woolf
Internet Systems Consortium, Inc.
950 Charter Street
Redwood City, CA 94063
US
Phone: +1 650 423-1333
EMail: woolf@isc.org
URI: http://www.isc.org/
David Conrad
ICANN
4676 Admiralty Way
Marina del Rey, CA 90292
US
Phone: +1 310 823 9358
EMail: david.conrad@icann.org
URI: http://www.iana.org/
Full Copyright Statement Β©οΈ
the IETF Trust holds the copyright for 2007 π. This document is subject to the rights, licenses and restrictions in BCP 78, and except as set out there, the authors keep all their rights π¦. The document and the information in it are provided "AS IS", and the disclaimer below applies β οΈ.
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 doesn't take a position on whether any Intellectual Property Rights or other rights that might be claimed for the technology in this document are valid or in scope, or whether any license under those rights is available π€·ββοΈ. It also doesn't say it has independently checked for such rights. You can find the rules on rights in RFC documents in BCP 78 and BCP 79 π.
Copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission for implementers or users are available from the IETF's online IPR repository at http://www.ietf.org/ipr π». The IETF also invites anyone to flag any copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org π¬.
Acknowledgement π
funding for the RFC Editor function is currently coming from the Internet Society πβ¨
π¦ where this page comes from
- ietf: rfc4892 2007-06
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms