1. Einführung und Hintergrund (Introduction and Background)
Das DNS-Protokoll [RFC1035] definiert den Antwortcode 3 als "Namensfehler" (Name Error) oder "NXDOMAIN" [RFC2308], was bedeutet, dass der angefragte Domainname im DNS nicht existiert.
The DNS protocol [RFC1035] defines response code 3 as "Name Error", or "NXDOMAIN" [RFC2308], which means that the queried domain name does not exist in the DNS.
Seit einiger Zeit gibt es Kontroversen darüber, ob eine NXDOMAIN-Antwort bedeutet, dass der Name selbst nicht existiert und alles unterhalb davon ebenfalls nicht existiert. Dieser Abschnitt beschreibt den Status quo.
Since time immemorial, there has been some controversy as to whether a NXDOMAIN response means that the name itself does not exist and everything underneath it does not exist either. This section describes the status quo.
RFC 1034 [RFC1034], Abschnitt 4.3.3, besagt:
RFC 1034 [RFC1034], Section 4.3.3, says:
Wenn die Antwort ein Fehler ist (entweder ein Resolver-Implementierungsfehler oder eine NXDOMAIN-Antwort vom Nameserver), wird dieser Fehler an den Client gemeldet.
If the response is an error (either a resolver implementation error or a NXDOMAIN response from the name server), then the error is reported to the client.
Dies wird im iterativen Auflösungsalgorithmus (Abschnitt 5.3.3 von [RFC1034]) nicht explizit dargelegt:
This is not explicitly stated in the iterative resolution algorithm (Section 5.3.3 of [RFC1034]):
- Wenn die Antwort autoritativ ist und den Code "Name Error" hat, liegt der angefragte Name nicht im DNS. Signalisiere dem Client einen "unbekannten Host-Namen" Fehler.
- If the response is authoritative and has the code "Name Error", then the name queried does not exist in the DNS. Signal an "unknown host name" error to the client.
Allerdings impliziert das Vorhandensein eines "leeren Nicht-Terminals" (ENT, siehe [RFC7719]) – ein Knoten im DNS-Baum, der keine Ressourcendatensätze hat, aber Knoten darunter besitzt – dass NXDOMAIN "nichts darunter" bedeutet. Wenn foo.example ein ENT ist, existiert es. Daher wäre eine Antwort für foo.example nicht NXDOMAIN (es wäre NODATA: Antwortcode 0 und eine leere Antwortsektion). Wenn foo.example nicht existierte, könnte bar.foo.example auch nicht existieren.
However, the presence of an "empty non-terminal" (ENT, see [RFC7719]) -- a node in the DNS tree that has no resource records but has nodes underneath it -- implies that NXDOMAIN means "nothing underneath". If foo.example is an ENT, it exists. Therefore, a response for foo.example would not be NXDOMAIN (it would be NODATA: response code 0 and an empty answer section). If foo.example did not exist, bar.foo.example could not exist either.
Die DNSSEC-Spezifikation [RFC4035] ist in Abschnitt 3.1.3.2 expliziter:
The DNSSEC specification [RFC4035] is more explicit in Section 3.1.3.2:
Der Nameserver MUSS eine kanonische NSEC-RR für den Eigentumsnamen (Zone Apex) des Abschnitts zurückgeben, der den QNAME enthält, um zu beweisen, dass der QNAME nicht existiert.
The name server MUST return the canonical NSEC RR for the owner name (zone apex) of the section containing the QNAME to prove that the QNAME does not exist.
Und Abschnitt 5.4 von [RFC4035] sagt:
And Section 5.4 of [RFC4035] says:
Wenn der Resolver feststellt, dass der Namensfehler-Abschnitt gültig ist, beweist dies, dass der QNAME nicht existiert und dass keine Validierungskette konstruiert werden konnte.
If the resolver determines that the name error section is valid, this proves that the QNAME does not exist and that no validation chain could be constructed.
Ein Beweis für die Nichtexistenz, wie ein NSEC- oder NSEC3-Datensatz, deckt den gesamten Baum unterhalb des Namens ab.
A proof of nonexistence, such as an NSEC or NSEC3 record, covers the entire tree below the name.
1.1. Terminologie (Terminology)
Die Schlüsselwörter "MUSS" (MUST), "DARF NICHT" (MUST NOT), "ERFORDERLICH" (REQUIRED), "SOLL" (SHALL), "SOLL NICHT" (SHALL NOT), "SOLLTE" (SHOULD), "SOLLTE NICHT" (SHOULD NOT), "EMPFOHLEN" (RECOMMENDED), "KANN" (MAY) und "OPTIONAL" (OPTIONAL) in diesem Dokument sind so zu interpretieren, wie in [RFC2119] beschrieben.
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].
"NXDOMAIN-Cut" bezieht sich auf die Technik (beschrieben in Abschnitt 2), bei der ein Resolver, der eine NXDOMAIN-Antwort für einen Domainnamen empfängt, annimmt, dass kein Name unterhalb dieses Namens existiert.
"NXDOMAIN cut" refers to the technique (described in Section 2) where a resolver that receives a NXDOMAIN response for a domain name assumes that no name underneath that name exists.
"QNAME" ist definiert in [RFC1034] und wird in diesem Dokument verwendet, um den Domainnamen in der Anfrage zu bezeichnen.
"QNAME" is defined in [RFC1034] and is used in this document to refer to the domain name in the query.