Sind Hostnamen mit einem Buchstaben gültig?

14

RFC-952 (letzter Satz von Punkt 1 unter Annahmen) verbietet Hostnamen mit einzelnen Zeichen, und ich habe Erfahrungen gemacht (vor über 7 Jahren, Sommer 2002), in denen einige Dienste die Arbeit mit Hostnamen mit einzelnen Zeichen ablehnten (weil solche Namen vorhanden waren) nicht standardkonform), aber ich habe in den letzten Jahren eine Reihe von Einzelzeichen-Hostnamen gesehen, die verwendet wurden. Sind Einzelzeichen-Hostnamen jetzt gültig? (Wenn ja, was ist die richtige Validierungsreferenz?)

Bearbeiten (um einige Informationen aus den Antworten zu konsolidieren): Verschiedene Aspekte von DNS scheinen in mehreren RFCs definiert zu sein, darunter 1035 , 1123 und 2181 . Aus RFC-2181 Abschnitt 11 :

Note however, that the various applications that make use of DNS data
can have restrictions imposed on what particular values are
acceptable in their environment.  For example, that any binary label
can have an MX record does not imply that any binary name can be used
as the host part of an e-mail address.
[ ... ]
See also [RFC1123] section 6.1.3.5.

Aus RFC-1123 Abschnitt 6.1.3.5 :

The DNS defines domain name syntax very generally -- a
string of labels each containing up to 63 8-bit octets,
separated by dots, and with a maximum total of 255
octets.  Particular applications of the DNS are
permitted to further constrain the syntax of the domain
names they use, although the DNS deployment has led to
some applications allowing more general names.  In
particular, Section 2.1 of this document liberalizes
slightly the syntax of a legal Internet host name that
was defined in RFC-952 [DNS:4].

Aus RFC-1123 Abschnitt 2.1 :

The syntax of a legal Internet host name was specified in RFC-952
[DNS:4].  One aspect of host name syntax is hereby changed: the
restriction on the first character is relaxed to allow either a
letter or a digit.  Host software MUST support this more liberal
syntax.

Und schließlich, wie ursprünglich erwähnt, aus RFC-952 :

1. A "name" (Net, Host, Gateway, or Domain name) is a text string up
to 24 characters drawn from the alphabet (A-Z), digits (0-9), minus
sign (-), and period (.).  Note that periods are only allowed when
they serve to delimit components of "domain style names". (See
RFC-921, "Domain Name System Implementation Schedule", for
background).  No blank or space characters are permitted as part of a
name. No distinction is made between upper and lower case.  The first
character must be an alpha character.  The last character must not be
a minus sign or period.
[ ... ]
Single character names or nicknames are not allowed.

Aus dieser Kette ging hervor, dass RFC-952 Hostnamen mit einem Zeichen verbietet.

Isaac
quelle

Antworten:

2

Es gibt einen Unterschied zwischen "gültig" und "es funktioniert". Es ist durchaus möglich, dass Hostnamen nicht als gültig angesehen werden, wenn es sich um einzelne Zeichen handelt (mein früherer Beitrag widerspricht nicht). Viele Systeme erlauben dies jedoch. Ein wichtiges System, das AD / DNS-System von Microsoft, hat einen alten Grund für die Erlaubnis einzelner Zeichennamen.

NetBIOS-Namen alter Schule dürfen 1 bis 15 Zeichen lang sein. Diese Spezifikation wurde unabhängig von RFC952 entwickelt und basiert auf einer anderen Datei namens lmhosts. Das Problem trat auf, als Microsoft von NetBEUI (tatsächlich NBF, NetBIOS Frame Protocol) auf TCP / IP (tatsächlich NBT) umzog und Microsoft die Namensauflösung über TCP / IP-Netzwerke zulassen musste. MS entschied sich dafür, die Auflösung im NetBIOS-Stil mit WINS-Servern beizubehalten, ohne RFC952-kompatible Hosts zu benötigen.

Dann kamen Active Directory und seine DNS-Abhängigkeiten. Dynamisches DNS war die Regel, daher mussten Clients ihren Computernamen (die ersten 15 Zeichen sind auch ihr NetBIOS-Name) in der DNS-Domäne registrieren. Da MS die Registrierung von NetBIOS-Namen mit einem Zeichen in DNS zulässt, ist dies mit RFC952 in Konflikt geraten. Sie beschlossen, ihre Systeme zu codieren, um dies zuzulassen, da dies nachahmte, wie es in den WINS-Tagen immer funktionierte.

BIND DNS erlaubt auch Hostnamen mit einem Zeichen. Aber RFC2181 sagt ziemlich genau, dass Anwendungen ihre eigenen Daten überprüfen müssen, nicht mehr DNS. Dies führt zu einer großen Anzahl von Geräten und Software, für die Hostnamen mit einem Zeichen in Ordnung sind, und einigen Ausreißern, die RFC952-streng sind und dies nicht zulassen.

sysadmin1138
quelle
There is a difference between 'valid' and 'it works'. Letztendlich denke ich, dass dies die vernünftigste Antwort ist, obwohl ich die gesamte Diskussion sehr geschätzt habe. Die Schlussfolgerung, die ich ziehen möchte, ist, dass Hostnamen mit einem Zeichen technisch immer noch ungültig sind, aber an diesem Punkt praktisch universell funktionieren. (Ebenso sind Unterstriche verboten, funktionieren aber größtenteils.)
Isaac
11

Sie könnten annehmen, dass sie gültig sind, da die Root-Nameserver alle aus einem Buchstaben bestehende Hosts (a.root-servers.net) sind und die DNS-Spezifikation keine spezielle Ausnahme für sie erstellt. Der betreffende RFC ist speziell für das Hostdateiformat vorgesehen, nicht für DNS. DNS wurde in einem späteren RFC definiert ( RFC 1035 startet es). RFC 1123 (1989) stellt es klar.

 The syntax of a legal Internet host name was specified in RFC-952
 [DNS:4].  One aspect of host name syntax is hereby changed: the
 restriction on the first character is relaxed to allow either a
 letter or a digit.  Host software MUST support this more liberal
 syntax.

Einzelbuchstaben-Hostnamen sind also in DNS-basierten Systemen gültig und seit der Erfindung von Spam-E-Mails gültig. Systeme, die nicht RFC-konform sind, können verspottet werden. Es sei denn, sie verwenden überhaupt kein DNS und nur Hosts-Dateien. Zu diesem Zeitpunkt ist Schade die bessere Wahl.

sysadmin1138
quelle
Okay, ich habe das in RFC-1123 gelesen, aber ich habe es so interpretiert, dass die in RFC-952 gelesenen Spezifikationen zutreffen, mit der Ausnahme, dass eine Ziffer auch als erstes Zeichen zulässig ist (wie Sie zitiert haben) Verbot von Einzelzeichennamen). In Bezug auf die Root-Server wurde mir irgendwann mitgeteilt, dass sie eine besondere Ausnahme von der Regel darstellen.
Isaac
2

Da es Hostnamen gab, bevor jemand darüber nachdachte, einen RFC darüber zu schreiben, kann ich keinen Grund erkennen, warum Hostnamen mit einem einzelnen Zeichen plötzlich "illegal" werden sollten. Dieser bestimmte RFC hat mich verloren, als er sagte

Dieser RFC ist die offizielle Spezifikation

weil ein RFC KEIN Standard ist. Nicht einmal annähernd.

Trotz alledem ist anzumerken, dass der fragliche RFC für eine relativ kleine Gruppe geschaffen wurde, nämlich das Verteidigungsministerium (vermutlich USA).

John Gardeniers
quelle
RFC ist per definitionem kein Standard. "Bitte um Kommentare" schreit nicht gerade "Standard" für irgendjemanden. Interessant, dass sie damit in ihren eigenen Unterlagen davongekommen sind.
Mark Henderson
1
en.wikipedia.org/wiki/Domain_name_system#Internet_standards listet viele RFCs auf, die das DNS-Protokoll "definieren". RFC-1123 (wie von sysadmin1138 erwähnt) gehört zu den aufgelisteten und verweist auf RFC-952. Ich habe die Erfahrung gemacht, dass RFCs, obwohl sie Anforderungen sind, zu Definitionen werden, wenn sie akzeptiert werden.
Isaac
@Farseeker, ich sage nicht, dass dies hier der Fall ist, aber ich bin immer überrascht über die Leute, von denen die meisten es besser wissen sollten und die RFCs zitieren, als ob sie die ultimative Autorität in einem bestimmten Thema wären. Ich bin mir ziemlich sicher, dass es irgendwo einen RFC gibt. ;)
John Gardeniers
1
Einige RFCs sind tatsächlich Standards - RFCs 1034 und 1035 umfassen beispielsweise zusammen STD0013. Der Grund, warum sie "Anfragen nach Kommentaren" genannt werden, ist historisch und hatte im Wesentlichen mit einer Reihe von minderwertigen Postgraduierten in den späten 60er Jahren zu tun, die ihre Vorgesetzten nicht abhaken wollten (das habe ich direkt von der Autor von RFC 1).
Alnitak
2
@ John Ich schlage vor, dass Sie RFC 2026 lesen. "Einer Spezifikation, die den Status" Standard "erreicht, wird eine Nummer in der STD-Serie zugewiesen, während die RFC-Nummer beibehalten wird." Ich schreibe IETF-Dokumente für meinen Tagesjob.
Alnitak
1

Ich denke, dass die aktuellen Hostnamen mehr von den DNS-Spezifikationen abhängen, da DNS von den meisten Benutzern innerhalb eines Netzwerks oder im Internet verwendet wird. Es kommen drei RFCs in den Sinn (1034 - Konzepte, 1035 - Implementierung und 2181 - Erläuterungen zu DNS).

Abschnitt 3 von RFC 1034 lautet:

Der Domain Name Space ist eine Baumstruktur. Jeder Knoten und jedes Blatt im Baum entspricht einem Ressourcensatz (der leer sein kann). Das Domänensystem unterscheidet nicht zwischen den Verwendungen der inneren Knoten und Blätter, und in diesem Memo wird der Begriff "Knoten" verwendet, um sich auf beide zu beziehen.

Jeder Knoten hat eine Bezeichnung mit einer Länge von 0 bis 63 Bytes. Brother-Knoten haben möglicherweise nicht dieselbe Bezeichnung, obwohl für Knoten, die keine Brüder sind, dieselbe Bezeichnung verwendet werden kann. Ein Label ist reserviert, und das ist das Null-Label (dh Länge Null), das für die Wurzel verwendet wird.

In Abschnitt 11 von RFC 2181 finden Sie eine Erläuterung zur Benennung der einzelnen Knoten der Adresse:

Der DNS selbst beschränkt nur die bestimmten Bezeichnungen
, die zum Identifizieren von Ressourceneinträgen verwendet werden können. Diese eine Einschränkung
bezieht sich auf die Länge des Etiketts und den vollständigen Namen. Die Länge eines Etiketts ist auf 1 bis 63 Oktette begrenzt. Ein vollständiger Domainname ist auf 255 Bytes (einschließlich der Trennzeichen) beschränkt.

Nach den DNS-Spezifikationen können Sie also a.domain.tld haben

Core-Dump
quelle
Ab dem nächsten Absatz in Abschnitt 11 von RFC-2181 gilt: Note however, that the various applications that make use of DNS data can have restrictions imposed on what particular values are acceptable in their environment. For example, that any binary label can have an MX record does not imply that any binary name can be used as the host part of an e-mail address. Grundsätzlich gilt, dass eine Domain, die in DNS gültig ist, keinen gültigen Hostnamen darstellt. Das Ende von Abschnitt 11 verweist auf Abschnitt 6.1.3.5 von RFC-1123, in dem Abschnitt 2.1 von sich selbst und RFC-952 aufgeführt sind, wie in der Antwort von sysadmin1138 erläutert.
Isaac
Das Zitat am Ende von Abschnitt 6.1.3.5 befasst sich mit weniger Einschränkungen der Namenskonvention von 952. Außerdem definiert 952 eine DOD-Host-Tabelle, und ich bin nicht ganz davon überzeugt, dass sie relevanter ist als die DNS-Spezifikationen.
Coredump
Ich denke, dass die Liberalisierung von Beschränkungen, die am Ende von 6.1.3.5 erwähnt wurde, nur das Erlauben des ersten Zeichens als Zahl bedeutet - dies ist die einzige Modifikation, die in Abschnitt 2.1 desselben RFC erwähnt wird (das ist der Abschnitt, zu dem 6.1. 3.5 verweist). In diesem Abschnitt 2.1 wird die Definition aus RFC-952 als Definition eines legalen Hostnamens bezeichnet.
Isaac
Überprüfen Sie auch RFC 920 und 921, die die Migration vom alten DARPA zu Domänennamen behandeln.
Coredump
1

Wie Sie festgestellt haben, ist RFC 1123 in diesem Längenproblem nicht vollständig klar.

In Abschnitt 2.1 heißt es:

Die Host-Software MUSS Host-Namen mit bis zu 63 Zeichen und Host-Namen mit bis zu 255 Zeichen verarbeiten

Da dieser Text den Text aus RFC 952 effektiv vollständig überschreibt, sollte auch impliziert werden, dass eine Länge von bis zu 255 Zeichen zulässig ist.

Leider erhielten Internet-Entwürfe 1989 nicht die unglaublich strenge Bewertung, die sie jetzt erhalten, so dass die Mehrdeutigkeit wahrscheinlich einfach nicht entdeckt wurde.

Alnitak
quelle
1
Aber 2.1 sagt auch: The syntax of a legal Internet host name was specified in RFC-952 [DNS:4]. One aspect of host name syntax is hereby changed: the restriction on the first character is relaxed to allow either a letter or a digit. Ist es nicht sinnvoll, dies so zu interpretieren, dass Ihr Zitat den Text aus RFC-952 nicht vollständig überschreibt?
Isaac
Es sagt das, aber es ist eindeutig falsch. RFC 1123 ändert auch explizit die zulässige Länge eines Hostnamens.
Alnitak