Unterstützt Active Directory DNS-Namen mit Leerzeichen?

8

Bei der Untersuchung, wie einige statische DNS-SD-Dienste in unserem Netzwerk eingerichtet werden, bin ich auf http://www.dns-sd.org/ServerStaticSetup.html gestoßen , das besagt, dass der DNS-Server von Active Directory keine DNS-Namen mit Leerzeichen unterstützt in ihnen.

Weiß jemand, ob dies noch wahr ist (da sich die Seite ziemlich alt anfühlt)?

Update: Ich beziehe mich hauptsächlich auf PTR- und SRV-Datensätze, nicht auf A / CNAME-Datensätze.

gmw
quelle
2
Das mag verrückt klingen, aber ich habe noch nie einen URI mit einem Leerzeichen darin gesehen. Ist das überhaupt RFC-konform? Warum ist das für Sie relevant?
SpacemanSpiff
11
RFC1035, 2.3.1: "[Domänen] müssen mit einem Buchstaben beginnen, mit einem Buchstaben oder einer Ziffer enden und als innere Zeichen nur Buchstaben, Ziffern und Bindestriche enthalten."
Smudge
@SpacemanSpiff ist in keinem URL-Schema RFC-konform, bei dem der Domain-Teil einen Hostnamen darstellt (dh die meisten von ihnen).
Alnitak
Können Sie ein Beispiel für die Art von Eintrag geben, die Sie erstellen möchten?
Alnitak
1
@ Sam In dieser zitierten Phrase geht es um Hostnamen , nicht um "Domains".
Alnitak

Antworten:

30

Ein Domainname kann ein beliebiges binäres Oktett im Bereich von 0 bis 255 enthalten.

Wenn Ihre AD-Einträge jedoch Hostnamen darstellen , ist ein Leerzeichen kein gültiges Zeichen. Ein Hostname (dh ein Domänenname, der auf einen Aoder einen AAAADatensatz verweist ) muss den Regeln von RFC 1123 entsprechen , wodurch die zulässigen Zeichen im Wesentlichen auf LDH ("Buchstaben-Ziffern-Bindestrich") beschränkt werden.

Daher ist es für andere Einträge durchaus möglich, dass MS die RFCs falsch interpretiert hat. Sie werden nicht die Ersten sein, und sie werden sicherlich nicht die Letzten sein.

Verweise

§5.1 von RFC 1035 :

Anführungskonventionen ermöglichen die Speicherung beliebiger Zeichen in Domänennamen.

und §6.1.3.5. von RFC 1123 :

Das DNS definiert die Domainnamensyntax sehr allgemein - eine Folge von Bezeichnungen, die jeweils bis zu 63 8-Bit-Oktette enthalten und durch Punkte getrennt sind

und §11 RFC 2181 :

Eine beliebige Binärzeichenfolge, die als Bezeichnung für einen Ressourceneintrag verwendet werden kann

Alnitak
quelle
Ja, das ist es, wovor ich Angst habe ...
GMW
9

Ah - tut mir leid, dass ich schnippisch bin, aber du hast einen Witz mit dem Hund hier. Es ist nicht so, dass AD keine DNS-Namen mit Leerzeichen unterstützt, aber dass DNS-Namen pro Definition und RFC zunächst keine Leerzeichen haben dürfen. RFC 952 und 1123 erlauben keine Leerzeichen als Teil eines DNS-Namens.

Daher fehlt AD nicht die Unterstützung für Leerzeichen in DNS-Namen als Shortcoing, sondern weil es denselben Regeln folgt wie alle anderen.

TomTom
quelle
2
Bitte korrigieren Sie Ihre Nomenklatur. Streng genommen einen DNS - Eintrag kann Leerzeichen enthalten. Ein Hostname kann jedoch nicht.
Alnitak
3
Ich fürchte, Sie liegen falsch - in DNS gibt es eindeutige Instanzen von Domain-Namen ( nicht "ZONE-Namen"), die nicht den RFC 1123-Regeln für einen "Host-Namen" entsprechen müssen. Zum Beispiel die von SRVDatensätzen verwendeten Unterstrich-Präfixnamen . Siehe auch §6.1.3.5 von RFC 1123 und mein Profil.
Alnitak
6
srv-Datensätze sind ganz besondere Fälle. Wieder spielen Sie Spiele. Wo erlaubt es einen Platz? Zitieren Sie den Abschnitt eines RFC, der irgendwo einen Platz zulässt, und Sie haben Recht. Streiten Sie weiter und Sie liegen immer noch falsch. Hör auf zu jammern, jemand nennt deinen Bluff.
TomTom
17
Ich habe bereits - §6.1.3.5 von RFC 1123 "Das DNS definiert die Syntax von Domänennamen sehr allgemein - eine Zeichenfolge, die jeweils bis zu 63 8-Bit-Oktette enthält, die durch Punkte getrennt sind" . DNS-Standards und das Protokoll sind meine Tagesaufgabe, FWIW.
Alnitak
1
@ TomTom Meine Antwort zitiert den relevanten Teil der RFCs, die zeigen, dass Alnitak korrekt ist. Hostnamen dürfen keine Leerzeichen enthalten, DNS-Namen dürfen jedoch im Allgemeinen tatsächlich Leerzeichen enthalten.
Aculich
5

Die Antwort auf Ihre spezielle Frage lautet NEIN . Active Directory lässt KEINE Leerzeichen in DNS- Hostnamen zu . Die verbotenen Zeichen sind in KB 909264 - Namenskonventionen in Active Directory für Computer, Domänen, Sites und Organisationseinheiten im Abschnitt " Nicht zugelassene Zeichen" klar beschrieben:

Der DNS-Hostname darf keine Leerzeichen oder Leerzeichen enthalten.

Um die Antwort über Active Directory hinaus auf das DNS-Domänennamensystem im Allgemeinen auszudehnen, ist die Situation etwas schwieriger, da in bestimmten Fällen zwar technisch zulässige Leerzeichen vorhanden sind, in der Praxis Sie jedoch wahrscheinlich nie selbst auf einen solchen Fall stoßen werden.

Die kurze Antwort: Verwenden Sie keine Leerzeichen in DNS-Hostnames!

Die lange Antwort gemäß §2 von RFC 3696, Einschränkungen bei Domainnamen (DNS), lautet:

Alle Zeichen oder Kombinationen von Bits (als Oktette) sind in DNS-Namen zulässig.

Es heißt weiter (Hervorhebung von mir):

Es gibt jedoch eine bevorzugte Form, die von den meisten Anwendungen benötigt wird. Diese bevorzugte Form war die einzige, die in den Namen von Top-Level-Domains oder TLDs zulässig ist. Im Allgemeinen ist dies auch die einzige Form, die in den meisten in TLDs registrierten Namen der zweiten Ebene zulässig ist, obwohl einige Namen, die normalerweise von Benutzern nicht gesehen werden, anderen Regeln entsprechen. Es leitet sich von den ursprünglichen ARPANET-Regeln für die Benennung von Hosts ab (dh der Regel "Hostname") und wird nach den zulässigen Zeichen möglicherweise besser als "LDH-Regel" beschrieben. Die aktualisierte LDH-Regel sieht dies vorDie Bezeichnungen (durch Punkte getrennte Wörter oder Zeichenfolgen), aus denen ein Domänenname besteht, dürfen nur aus den alphabetischen und numerischen ASCII-Zeichen [ASCII] sowie dem Bindestrich bestehen. Es sind weder andere Symbole oder Satzzeichen noch Leerzeichen zulässig. Wenn der Bindestrich verwendet wird, darf er weder am Anfang noch am Ende eines Etiketts erscheinen. Es gibt eine zusätzliche Regel, die im Wesentlichen erfordert, dass Domänennamen der obersten Ebene nicht vollständig numerisch sind.

In der Praxis bedeutet dies, dass Sie KEINE Leerzeichen verwenden sollten , obwohl in der allgemeinsten Spezifikation von Domänennamen, wie in diesen Auszügen aus §5.1 von RFC 1035 definiert , Leerzeichen in Domänennamen zulässig sind:

<Domänenname> s machen einen großen Teil der Daten in der Masterdatei aus. Die Bezeichnungen im Domainnamen werden als Zeichenfolgen ausgedrückt und durch Punkte getrennt. Anführungskonventionen ermöglichen die Speicherung beliebiger Zeichen in Domänennamen.

und

<Zeichenzeichenfolge> wird auf eine oder zwei Arten ausgedrückt: als zusammenhängende Menge von Zeichen ohne Innenräume oder als Zeichenfolge, die mit einem "beginnt und mit einem" endet. Innerhalb einer "durch Trennzeichen getrennten Zeichenfolge kann jedes Zeichen vorkommen, außer einem" selbst, das mit \ (Schrägstrich) in Anführungszeichen gesetzt werden muss.

Beachten Sie , dass an anderer Stelle in RFC 1035, insbesondere in §2.3 , Folgendes gewarnt wird:

2.3. Konventionen

Das Domänensystem verfügt über mehrere Konventionen, die sich mit einfachen, aber grundlegenden Problemen befassen. Während der Implementierer diese Konventionen INNERHALB SEINES EIGENEN SYSTEMS verletzen kann, muss er diese Konventionen in ALLEM Verhalten anderer Hosts beachten.

2.3.1. Bevorzugte Namenssyntax

Die DNS-Spezifikationen versuchen, in den Regeln zum Erstellen von Domänennamen so allgemein wie möglich zu sein. Die Idee ist, dass der Name eines vorhandenen Objekts mit minimalen Änderungen als Domänenname ausgedrückt werden kann.

Beim Zuweisen eines Domänennamens für ein Objekt wählt der umsichtige Benutzer jedoch einen Namen aus, der sowohl den Regeln des Domänensystems als auch allen vorhandenen Regeln für das Objekt entspricht, unabhängig davon, ob diese Regeln von vorhandenen Programmen veröffentlicht oder impliziert werden.

Wenn Sie beispielsweise eine E-Mail-Domäne benennen, sollte der Benutzer sowohl die Regeln dieses Memos als auch die in RFC-822 erfüllen. Beim Erstellen eines neuen Hostnamens sollten die alten Regeln für HOSTS.TXT befolgt werden. Dies vermeidet Probleme, wenn alte Software zur Verwendung von Domänennamen konvertiert wird.

Ich würde sicherlich eine weitere Klarstellung oder Korrektur meiner Interpretation begrüßen, aber bitte tun Sie dies nicht, es sei denn, Sie können bestimmte Abschnitte von RFCs zitieren, um diese Interpretation entweder zu bestätigen oder abzulehnen.

aculich
quelle
Wirst du jetzt deine Ablehnung entfernen? ;)
Alnitak
+1 für die zusätzliche Referenz (RFC 3696)
Alnitak
@Alnitak, ja, ich habe Ihren Beitrag anfangs falsch gelesen ... habe jetzt die Abwertung und meinen Kommentar entfernt (damit es nicht zu noch mehr Verwirrung kommt). Die Art und Weise, wie die RFCs geschrieben sind, ist überraschend, dass dieses ganze Internet-Ding überhaupt funktioniert! :)
Aculich
Ich habe die "binäre" Qualifikation hinzugefügt, nachdem Sie einen Kommentar abgegeben haben, um zu verdeutlichen, dass ich nicht über IP-Adressoktette spreche. Die DNS-RFCs können besonders schwer zu verstehen sein, da sie damals nicht so streng überprüft wurden wie heute und Inkonsistenzen häufig sind.
Alnitak
Ja, ich sehe das jetzt, wo Sie "binär" gesagt haben.
Aculich
0

Standardmäßig unterstützen Windows-DNS-Server keine Leerzeichen in DNS-Namen. Wenn Sie jedoch die Einstellung "Servereigenschaften -> Registerkarte" Erweitert "-> Namensprüfung" in "Alle Namen" ändern, akzeptiert der Server Einträge mit Leerzeichen.

tracyb
quelle