Active Directory prend-il en charge les noms DNS avec des espaces?

8

En cherchant comment configurer certains services DNS-SD statiques dans notre réseau, je suis tombé sur http://www.dns-sd.org/ServerStaticSetup.html , qui indique que le serveur DNS d'Active Directory ne prend pas en charge les noms DNS avec des espaces en eux.

Est-ce que quelqu'un sait si cela est toujours vrai (car la page semble plutôt ancienne)?

Mise à jour: je fais principalement référence aux enregistrements PTR et SRV, pas aux enregistrements A / CNAME.

gmw
la source
2
Cela peut sembler fou, mais je n'ai jamais, JAMAIS vu d'URI avec un espace dedans, est-ce même compatible RFC? Pourquoi est-ce pertinent pour vous?
SpacemanSpiff
11
RFC1035, 2.3.1: "[Les domaines] doivent commencer par une lettre, se terminer par une lettre ou un chiffre et avoir comme caractères intérieurs uniquement des lettres, des chiffres et un trait d'union."
Smudge
@SpacemanSpiff n'est conforme à la RFC dans aucun schéma d'URL où la partie domaine représente un nom d'hôte (c'est-à-dire la plupart d'entre eux).
Alnitak
Pouvez-vous donner un exemple du type d'entrée spécifique que vous souhaitez créer?
Alnitak
1
@Sam, cette phrase concerne les noms d'hôte , pas les "domaines".
Alnitak

Réponses:

30

Un nom de domaine peut inclure n'importe quel octet binaire compris entre 0 et 255.

Cependant, si vos entrées AD représentent des noms d'hôtes , un espace n'est pas un caractère valide. Un nom d'hôte (c'est-à-dire un nom de domaine qui pointe vers un Aou un AAAAenregistrement) doit suivre les règles de la RFC 1123 , qui restreint essentiellement les caractères légaux à LDH ("lettre chiffre trait d'union").

Par conséquent, pour d'autres entrées, il est parfaitement possible que MS ait mal interprété les RFC. Ils ne seront pas les premiers et certainement pas les derniers.

Références

§5.1 de la RFC 1035 :

Les conventions de citation permettent de stocker des caractères arbitraires dans les noms de domaine.

et §6.1.3.5. de la RFC 1123 :

Le DNS définit la syntaxe des noms de domaine de manière très générale - une chaîne d'étiquettes contenant chacune jusqu'à 63 octets de 8 bits, séparées par des points

et §11 de la RFC 2181 :

n'importe quelle chaîne binaire qui peut être utilisée comme étiquette de tout enregistrement de ressource

Alnitak
la source
Oui, c'est ce dont j'ai peur ...
GMW
9

Ah - désolé d'être snippy, mais vous avez un remue-ménage ici. Ce n'est pas qu'AD ne prend pas en charge les noms DNS avec des espaces, mais que les noms DNS par définition et RFC ne sont pas autorisés à avoir des espaces pour commencer. Les RFC 952 et 1123 n'autorisent pas les espaces dans le cadre d'un nom DNS.

Ainsi, AD ne manque pas de prise en charge des espaces dans les noms DNS comme raccourci mais parce qu'il suit les mêmes règles que tout le monde.

TomTom
la source
2
Veuillez corriger votre nomenclature. À strictement parler, une entrée DNS peut contenir des espaces. Cependant, un nom d'hôte ne le peut pas.
Alnitak
3
Je crains que vous vous trompiez - dans le DNS, il existe des exemples clairs de noms de domaine ( pas de "noms de ZONE") qui ne sont pas tenus de suivre les règles RFC 1123 pour un "nom d'hôte". Par exemple, les noms de préfixe de soulignement utilisés par les SRVenregistrements. Voir aussi le §6.1.3.5 de la RFC 1123 et mon profil.
Alnitak
6
les enregistrements srv sont des cas très particuliers. Encore une fois, vous jouez à des jeux. Où cela permet-il un espace? Citez la section d'un RFC permettant un espace quelque part, et vous avez raison. Continuez à vous disputer et vous vous trompez toujours. Arrêtez de pleurnicher quelqu'un appelle votre bluff.
TomTom
17
J'ai déjà fait - §6.1.3.5 de la RFC 1123 "Le DNS définit très généralement la syntaxe des noms de domaine - une chaîne d'étiquettes contenant chacune jusqu'à 63 octets 8 bits, séparées par des points" . Les normes DNS et le protocole sont mon travail quotidien, FWIW.
Alnitak
1
@TomTom ma réponse cite la partie pertinente des RFC qui montrent qu'Alnitak est correct; les noms d'hôtes NE PEUVENT PAS contenir d'espaces, mais les noms DNS en général PEUVENT en effet contenir des espaces.
aculich
5

La réponse à votre question spécifique est NON , Active Directory n'autorise PAS les espaces dans DNS hôte . Les caractères interdits sont clairement décrits dans l'article KB 909264 - Conventions de dénomination dans Active Directory pour les ordinateurs, les domaines, les sites et les unités d'organisation dans la section intitulée Caractères interdits qu'il lit:

Le nom d'hôte DNS ne peut pas contenir de caractères vides ou d'espace.

Pour étendre la réponse au-delà d'Active Directory au système de noms de domaine DNS en général, la situation est un peu plus délicate car, bien que techniquement les espaces soient autorisés dans certains cas, en pratique, vous ne rencontrerez probablement jamais un tel cas vous-même.

La réponse courte: N'UTILISEZ PAS D'ESPACES DANS LES HÔTELS DNS!

La réponse longue selon § 2 de la RFC 3696, Restrictions sur les noms de domaine (DNS), est que:

Tous les caractères ou combinaisons de bits (sous forme d'octets) sont autorisés dans les noms DNS.

Il continue à dire (soulignement le mien):

Cependant, il existe une forme préférée qui est requise par la plupart des applications. Cette forme préférée a été la seule autorisée dans les noms de domaines de premier niveau, ou TLD. En général, c'est aussi le seul formulaire autorisé dans la plupart des noms de deuxième niveau enregistrés dans les TLD, bien que certains noms qui ne sont normalement pas vus par les utilisateurs obéissent à d'autres règles. Il dérive des règles ARPANET d'origine pour la dénomination des hôtes (c'est-à-dire la règle "hostname") et est peut-être mieux décrit comme la "règle LDH", après les caractères qu'il autorise. La règle LDH, telle que mise à jour, prévoit queles étiquettes (mots ou chaînes séparés par des points) qui composent un nom de domaine doivent être constituées uniquement des caractères alphabétiques et numériques ASCII [ASCII], plus le tiret. Aucun autre symbole ou caractère de ponctuation n'est autorisé, pas plus que l'espace vide. Si le trait d'union est utilisé, il n'est pas autorisé d'apparaître au début ou à la fin d'une étiquette. Il existe une règle supplémentaire qui exige essentiellement que les noms de domaine de niveau supérieur ne soient pas entièrement numériques.

En pratique, cela signifie que vous ne devez PAS utiliser d'espaces , même si dans la spécification la plus générale des noms de domaine telle que définie dans ces extraits du §5.1 de la RFC 1035, il est possible d'autoriser les espaces dans les noms de domaine:

Les <nom-domaine> constituent une part importante des données du fichier maître. Les étiquettes du nom de domaine sont exprimées sous forme de chaînes de caractères et séparées par des points. Les conventions de citation permettent de stocker des caractères arbitraires dans les noms de domaine.

et

<character-string> s'exprime d'une ou de deux façons: comme un ensemble contigu de caractères sans espaces intérieurs, ou comme une chaîne commençant par un "et se terminant par un". À l'intérieur d'une "chaîne délimitée, n'importe quel caractère peut apparaître, à l'exception d'un" lui-même, qui doit être cité à l'aide de \ (barre oblique inverse).

Gardez à l'esprit qu'ailleurs dans la RFC 1035, en particulier le §2.3 , il avertit:

2.3. Conventions

Le système de domaine a plusieurs conventions traitant des problèmes de bas niveau, mais fondamentaux. Bien que l'implémenteur soit libre de violer ces conventions DANS SON PROPRE SYSTÈME, il doit respecter ces conventions dans TOUS les comportements observés à partir d'autres hôtes.

2.3.1. Syntaxe des noms préférés

Les spécifications DNS tentent d'être aussi générales que possible dans les règles de construction des noms de domaine. L'idée est que le nom de tout objet existant peut être exprimé sous la forme d'un nom de domaine avec un minimum de changements.

Cependant, lors de l'attribution d'un nom de domaine à un objet, l'utilisateur prudent sélectionnera un nom qui satisfait à la fois les règles du système de domaine et toutes les règles existantes pour l'objet, que ces règles soient publiées ou implicites par les programmes existants.

Par exemple, lors de la désignation d'un domaine de messagerie, l'utilisateur doit satisfaire à la fois aux règles de ce mémo et à celles de la RFC-822. Lors de la création d'un nouveau nom d'hôte, les anciennes règles de HOSTS.TXT doivent être suivies. Cela évite les problèmes lorsque l'ancien logiciel est converti pour utiliser des noms de domaine.

Je serais certainement heureux de recevoir des éclaircissements ou des corrections supplémentaires sur mon interprétation, mais veuillez ne pas le faire à moins que vous ne puissiez citer des sections spécifiques des RFC pour affirmer ou nier cette interprétation.

aculich
la source
alors allez-vous supprimer votre downvote maintenant? ;)
Alnitak
+1 pour la référence supplémentaire (RFC 3696)
Alnitak
@Alnitak, oui j'ai d'abord mal lu votre message ... j'ai maintenant supprimé le downvote et mon commentaire (donc cela n'ajoute pas à plus de confusion). La façon dont les RFC sont écrits est surprenant que tout ce truc sur Internet fonctionne! :)
aculich
J'ai ajouté la qualification "binaire" après que vous ayez commenté pour qu'il soit clair que je ne parlerai pas des octets d'adresse IP. Les RFC DNS peuvent être particulièrement difficiles à comprendre car à l'époque ils n'avaient pas été examinés aussi rigoureusement qu'aujourd'hui, et les incohérences sont assez courantes.
Alnitak
Oui, je vois cela maintenant que vous avez dit "binaire".
aculich
0

Par défaut, les serveurs DNS Windows ne prennent pas en charge les espaces dans les noms DNS, mais en changeant le paramètre 'Propriétés du serveur -> onglet Avancé -> Vérification du nom' en 'Tous les noms', le serveur acceptera et servira volontiers les entrées avec des espaces.

tracyb
la source