Поддерживает ли Active Directory DNS-имена с пробелами?

8

Изучая, как настроить некоторые статические службы DNS-SD в нашей сети, я наткнулся на http://www.dns-sd.org/ServerStaticSetup.html , в котором говорится, что DNS-сервер Active Directory не поддерживает DNS-имена с пробелами. в них.

Кто-нибудь знает, правда ли это все еще (поскольку страница кажется довольно старой)?

Обновление: я в основном имею в виду записи PTR и SRV, а не записи A / CNAME.

GMW
источник
2
Это может показаться сумасшедшим, но я никогда, НИКОГДА не видел URI с пробелом, это даже RFC-совместимый? Почему это относится к вам?
SpacemanSpiff
11
RFC1035, 2.3.1: «[Домены] должны начинаться с буквы, заканчиваться буквой или цифрой и содержать в качестве внутренних символов только буквы, цифры и дефис».
Размазать
@SpacemanSpiff не соответствует RFC ни в одной схеме URL, где доменная часть представляет имя хоста (т.е. большинство из них).
Альнитак
Можете ли вы привести пример конкретной записи, которую вы хотите создать?
Альнитак
1
@ Сэм, которая цитирует фразу о именах хостов , а не "доменах".
Альнитак

Ответы:

30

Доменное имя может включать в себя любой двоичный октет в диапазоне от 0 до 255.

Однако, если ваши записи AD представляют имена хостов , пробел не является допустимым символом. Имя хоста (т. Е. Имя домена, которое указывает на Aили AAAAзапись) должно соответствовать правилам из RFC 1123 , который по существу ограничивает допустимые символы LDH («дефис буквенных цифр»).

Следовательно, для других записей вполне возможно, что MS неправильно истолковала RFC. Они не будут первыми и, конечно, не последними.

Ссылки

§5.1 RFC 1035 :

Соглашения о цитировании позволяют хранить произвольные символы в доменных именах.

и §6.1.3.5. из RFC 1123 :

DNS определяет синтаксис доменного имени очень широко - строку меток, каждая из которых содержит до 63 8-битных октетов, разделенных точками

и §11 RFC 2181 :

любая двоичная строка, которая может использоваться в качестве метки любой записи ресурса

Альнитак
источник
Да, это то, чего я боюсь ...
gmw
9

Ах, извините, что я нехорошо, но у вас есть собачка. Дело не в том, что AD не поддерживает DNS-имена с пробелами, а в том, что DNS-именам по определению и RFC не разрешается иметь пробелы для начала. RFC 952 и 1123 не допускают использование пробелов в качестве части имени DNS.

Таким образом, в AD не хватает поддержки пробелов в именах DNS в качестве короткого замыкания, а потому что он следует тем же правилам, что и все остальные.

TomTom
источник
2
Пожалуйста, исправьте свою номенклатуру. Строго говоря, запись DNS может содержать пробелы. Однако имя хоста не может.
Альнитак
3
Боюсь, вы не правы - в DNS есть явные примеры доменных имен ( не «имен ZONE»), которые не обязаны следовать правилам RFC 1123 для «имени хоста». Например, подчеркивание префиксных имен, используемых SRVзаписями. См. Также §6.1.3.5 RFC 1123 и мой профиль.
Альнитак
6
Записи SRV - это особые случаи. Вы снова играете в игры. Где это позволяет пространство? Процитируйте раздел RFC, где-то есть место, и вы правы. Продолжайте спорить, и вы все еще не правы. Хватит ныть, кто-то называет твой блеф.
TomTom
17
Я уже сделал - §6.1.3.5 RFC 1123 «DNS определяет синтаксис доменного имени очень широко - строку меток, каждая из которых содержит до 63 8-битных октетов, разделенных точками» . Стандарты DNS и протокол - моя ежедневная работа, FWIW.
Альнитак
1
@TomTom мой ответ цитирует соответствующую часть RFC, которые показывают, что Альнитак прав; Имена хостов НЕ МОГУТ содержать пробелы, однако DNS-имена в общем МОГУТ содержать пробелы.
aculich
5

Ответ на ваш конкретный вопрос - НЕТ , Active Directory НЕ разрешает пробелы в именах узлов DNS . Запрещенные символы четко обозначены в KB 909264 - Соглашения об именах в Active Directory для компьютеров, доменов, сайтов и подразделений в разделе, озаглавленном « Запрещенные символы» :

Имя хоста DNS не может содержать пробелы или пробелы.

Распространить ответ за пределы Active Directory на систему доменных имен DNS в целом ситуация немного сложнее, поскольку, хотя в некоторых случаях пробелы технически разрешены, на практике вы, вероятно, никогда не столкнетесь с таким случаем самостоятельно.

Краткий ответ: НЕ ИСПОЛЬЗУЙТЕ ПРОСТРАНСТВА В DNS-ХОСТНАМАХ!

Длинный ответ согласно § 2 RFC 3696 «Ограничения на доменные (DNS) имена» заключается в следующем:

Любые символы или комбинации битов (в виде октетов) разрешены в именах DNS.

Это продолжает заявлять (выделение мое):

Однако существует предпочтительная форма, которая требуется большинству приложений. Эта предпочтительная форма была единственной, разрешенной в именах доменов верхнего уровня или TLD. В целом, это также единственная форма, разрешенная для большинства имен второго уровня, зарегистрированных в TLD, хотя некоторые имена, которые обычно не видны пользователям, подчиняются другим правилам. Он вытекает из исходных правил ARPANET для именования хостов (т. Е. Правила «имени хоста») и, возможно, лучше описывается как «правило LDH» после символов, которые он разрешает. Обновленное правило LDH предусматривает, чтометки (слова или строки, разделенные точками), составляющие доменное имя, должны состоять только из буквенных и цифровых символов ASCII [ASCII], а также дефиса. Другие символы или знаки пунктуации не допускаются, а также пробелы. Если используется дефис, он не может появляться ни в начале, ни в конце метки. Существует дополнительное правило, которое требует, чтобы доменные имена верхнего уровня не были полностью числовыми.

На практике это означает, что вы НЕ ДОЛЖНЫ использовать пробелы , даже если в самой общей спецификации доменных имен, как определено в этих выдержках из §5.1 RFC 1035, можно разрешить пробелы в доменных именах:

<domain-name> составляют большую долю данных в главном файле. Метки в доменном имени представлены в виде символьных строк и разделены точками. Соглашения о цитировании позволяют хранить произвольные символы в доменных именах.

а также

<символьная строка> выражается одним или двумя способами: в виде непрерывного набора символов без внутренних пробелов или в виде строки, начинающейся с «и заканчивающейся на». Внутри «строки с разделителями может встречаться любой символ, кроме самого», который должен быть заключен в кавычки с помощью \ (обратная косая черта).

Имейте в виду, что в другом месте в RFC 1035, в частности, в §2.3 , он предупреждает:

2,3. Условные обозначения

Система доменов имеет несколько соглашений, касающихся низкоуровневых, но фундаментальных вопросов. Хотя разработчик может свободно нарушать эти соглашения В СВОЕЙ СОБСТВЕННОЙ СИСТЕМЕ, он должен соблюдать эти соглашения во ВСЕМ поведении, наблюдаемом от других хостов.

2.3.1. Предпочитаемый синтаксис имени

Спецификации DNS пытаются быть максимально общими в правилах построения доменных имен. Идея заключается в том, что имя любого существующего объекта может быть выражено как доменное имя с минимальными изменениями.

Однако при назначении доменного имени для объекта разумный пользователь выберет имя, которое удовлетворяет как правилам доменной системы, так и любым существующим правилам для объекта, независимо от того, публикуются ли эти правила или подразумеваются существующими программами.

Например, при именовании почтового домена пользователь должен удовлетворять как правилам этой памятки, так и правилам в RFC-822. При создании нового имени хоста должны соблюдаться старые правила для HOSTS.TXT. Это позволяет избежать проблем при конвертации старого программного обеспечения в доменные имена.

Я, конечно, приветствую дальнейшие разъяснения или исправления моей интерпретации, но, пожалуйста, не делайте этого, если только вы не можете привести конкретные разделы RFC, чтобы подтвердить или опровергнуть эту интерпретацию.

aculich
источник
так ты сейчас уберешь свое понижение? ;)
Альнитак
+1 для дополнительной ссылки (RFC 3696)
Альнитак
@Alnitak, да, я изначально неправильно прочитал ваш пост ... теперь удалил понижающее голосование и мой комментарий (так что это не добавляет еще большей путаницы). То, как написаны RFC, удивительно, что вся эта интернет-штука работает вообще! :)
aculich
После того, как вы прокомментировали, я добавил «двоичную» квалификацию, чтобы было ясно, что я не хочу говорить об октетах IP-адресов. DNS RFC может быть особенно трудным для понимания, потому что тогда они не получали такого строгого обзора, как сейчас, и несоответствия встречаются довольно часто.
Альнитак
Да, я вижу это сейчас, когда ты сказал «бинарный».
aculich
0

По умолчанию DNS-серверы Windows не поддерживают пробелы в именах DNS, однако, изменив настройку «Свойства сервера -> вкладка« Дополнительно »-> Проверка имени» на «Все имена», сервер с радостью примет и обработает записи с пробелами.

tracyb
источник