Изучая, как настроить некоторые статические службы DNS-SD в нашей сети, я наткнулся на http://www.dns-sd.org/ServerStaticSetup.html, в котором указано, что DNS-сервер Active Directory не поддерживает DNS-имена с пробелами в них.
Кто-нибудь знает, правда ли это (поскольку страница кажется довольно старой)?
Обновление: в первую очередь я имею в виду записи PTR и SRV, а не записи A / CNAME.
А доменное имя может включать любой двоичный октет в диапазоне от 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:
любая двоичная строка, которую можно использовать в качестве метки любой записи ресурса
Ах, извините за грубость, но вам нужно вилять собакой. Дело не в том, что AD не поддерживает имена DNS с пробелами, но в том, что имена DNS для каждого определения и RFC не могут иметь пробелы в начале. RFC 952 и 1123 не допускают использования пробелов в DNS-имени.
Таким образом, в AD отсутствует поддержка пробелов в именах DNS в качестве сокращения, а потому, что она следует тем же правилам, что и все остальные.
Ответ на ваш конкретный вопрос: Нет, Active Directory делает НЕ разрешать пробелы в DNS имена хостов. Запрещенные символы четко обозначены в KB 909264 - Соглашения об именах в Active Directory для компьютеров, доменов, сайтов и подразделений в разделе с пометкой Запрещенные символы он гласит:
Имя хоста DNS не может содержать пробелов или пробелов.
Чтобы распространить ответ за пределы Active Directory на систему доменных имен DNS в целом, ситуация немного сложнее, потому что, хотя пробелы технически разрешены в определенных случаях, на практике вы, вероятно, никогда не столкнетесь с таким случаем.
Краткий ответ: НЕ ИСПОЛЬЗУЙТЕ ПРОБЕЛЫ В DNS HOSTNAMES!
Длинный ответ согласно § 2 RFC 3696, Ограничения на имена доменов (DNS), в том, что:
В именах DNS разрешены любые символы или комбинации битов (как октеты).
Он продолжает утверждать (выделено мной):
Однако существует предпочтительная форма, которая требуется для большинства приложений. Эта предпочтительная форма была единственной разрешенной в именах доменов верхнего уровня или TLD. В целом, это также единственная форма, разрешенная в большинстве имен второго уровня, зарегистрированных в TLD, хотя некоторые имена, которые обычно не видны пользователям, подчиняются другим правилам. Это происходит из исходных правил ARPANET для именования хостов (т. Е. Правила «имя хоста») и, возможно, лучше описывать как «правило LDH» после символов, которые оно разрешает. Правило LDH в обновленном виде предусматривает, что метки (слова или строки, разделенные точками), составляющие доменное имя, должны состоять только из буквенных и цифровых символов ASCII [ASCII] плюс дефис. Никакие другие символы или знаки препинания не допускаются, а также пробелы. Если используется дефис, он не может появляться ни в начале, ни в конце метки. Существует дополнительное правило, которое по существу требует, чтобы имена доменов верхнего уровня не были полностью числовыми.
На практике это означает, что вам следует НЕ используйте пробелы, хотя в самой общей спецификации доменных имен, как определено в этих отрывках из §5.1 RFC 1035 можно разрешить пробелы в доменных именах:
<domain-name> составляют большую часть данных в главном файле. Метки в доменном имени представлены в виде строк символов и разделены точками. Соглашения о кавычках позволяют хранить произвольные символы в доменных именах.
и
<character-string> выражается одним или двумя способами: как непрерывный набор символов без внутренних пробелов или как строка, начинающаяся с "и заканчивающаяся". Внутри строки с разделителями может встречаться любой символ, кроме самого символа, который должен быть заключен в кавычки с использованием \ (обратной косой черты).
Имейте в виду, что в другом месте RFC 1035, в частности §2.3, предупреждает:
2.3. Конвенции
Система доменов имеет несколько соглашений, касающихся низкоуровневых, но фундаментальных вопросов. Хотя разработчик может нарушать эти соглашения В СВОЕЙ СОБСТВЕННОЙ СИСТЕМЕ, он должен соблюдать эти соглашения во ВСЕМ поведении, наблюдаемом с других хостов.
2.3.1. Предпочтительный синтаксис имени
Спецификации DNS стараются быть как можно более общими в правилах построения доменных имен. Идея состоит в том, что имя любого существующего объекта может быть выражено как доменное имя с минимальными изменениями.
Однако при присвоении объекту доменного имени разумный пользователь выберет имя, которое удовлетворяет как правилам системы домена, так и любым существующим правилам для объекта, независимо от того, опубликованы ли эти правила или подразумеваются существующими программами.
Например, при присвоении имени почтовому домену пользователь должен удовлетворять как правилам этого меморандума, так и правилам RFC-822. При создании нового имени хоста следует соблюдать старые правила для HOSTS.TXT. Это позволяет избежать проблем при преобразовании старого программного обеспечения для использования доменных имен.
Я, безусловно, приветствовал бы дальнейшие разъяснения или исправления моей интерпретации, но, пожалуйста, не делайте этого, если вы не можете процитировать определенные разделы RFC, чтобы подтвердить или опровергнуть эту интерпретацию.
По умолчанию DNS-серверы Windows не поддерживают пробелы в именах DNS, однако, изменив настройку «Свойства сервера -> вкладка« Дополнительно »-> Проверка имени» на «Все имена», сервер с радостью примет и обслужит записи с пробелами.