Active Directory 是否支持带空格的 DNS 名称?

gmw*_*gmw 8 domain-name-system active-directory

在研究如何在我们的网络中设置一些静态 DNS-SD 服务时,我遇到了http://www.dns-sd.org/ServerStaticSetup.html,其中指出 Active Directory 的 DNS 服务器不支持带空格的 DNS 名称在他们之中。

有谁知道这是否仍然正确(因为页面感觉很旧)?

更新:我主要指的是 PTR 和 SRV 记录,而不是 A/CNAME 记录。

Aln*_*tak 30

域名可以包括在到255的范围0任何二进制八位位组。

但是,如果您的 AD 条目表示主机名,则空格不是有效字符。主机名(即指向AAAAA记录的域名)必须遵循RFC 1123 中的规则,该规则实质上将合法字符限制为 LDH(“字母数字连字符”)。

因此,对于其他条目,MS 完全有可能误解了 RFC。他们不会是第一个,当然也不会是最后一个。

参考

RFC 1035 的§5.1 :

引用约定允许在域名中存储任意字符。

和第 6.1.3.5 节。的RFC 1123

DNS 对域名语法的定义非常一般——一串标签,每个标签最多包含 63 个 8 位八位字节,用点分隔

RFC 2181 的§11 :

任何可以用作任何资源记录标签的二进制字符串


Tom*_*Tom 9

啊 - 对不起,我很狡猾,但你在这里摇摆狗。并不是 AD 不支持带空格的 DNS 名称,而是每个定义和 RFC 的 DNS 名称不允许以空格开头。RFC 952 和 1123 都不允许将空格作为 DNS 名称的一部分。

因此,AD 并不缺乏对 DNS 名称中空格的支持,因为它与其他人遵循相同的规则。

  • 我已经这样做了 - RFC 1123 的 §6.1.3.5 _“DNS 非常笼统地定义了域名语法 - 一串标签,每个标签最多包含 63 个 8 位八位字节,用点分隔”_。DNS 标准和协议是我的日常工作,FWIW。 (17认同)
  • srv 记录是非常特殊的情况。再次,你玩游戏。它允许空间在哪里?引用 RFC 中在某处允许空格的部分,您是对的。继续争论,你还是错了。不要再抱怨有人说你虚张声势了。 (6认同)
  • 恐怕你错了 - 在 DNS 中有明确的域名实例(**不是**“区域名称”),它们不需要遵循“主机名”的 RFC 1123 规则。例如,“SRV”记录使用的下划线前缀名称。另请参阅 RFC 1123 的 §6.1.3.5 和我的个人资料。 (3认同)
  • 请修正您的命名法。严格来说,DNS 条目_可能_包含空格。但是 _hostname_ 可能不是。 (2认同)

acu*_*ich 5

您的具体问题的答案是否定的,Active Directory不允许DNS主机名中有空格KB 909264 - Active Directory 中计算机、域、站点和 OU 的命名约定中明确列出了禁止字符,该部分标有“禁止字符”部分:

DNS 主机名不能包含空格或空格字符。

要将 Active Directory 之外的答案扩展到 DNS 域名系统,一般情况会有点棘手,因为虽然在某些情况下技术上允许使用空格,但实际上您自己可能永远不会遇到这种情况。

简短的回答:不要在 DNS 主机名中使用空格!

根据RFC 3696 的 §2,域 (DNS) 名称的限制,长答案是:

DNS 名称中允许使用任何字符或位组合(作为八位字节)。

它继续说明(强调我的):

但是,大多数应用程序都需要一种首选形式。这种首选形式是顶级域或 TLD 名称中唯一允许的形式。通常,它也是大多数 TLD 中注册的二级名称中唯一允许的形式, 尽管用户通常看不到的一些名称遵守其他规则。它派生自用于主机命名的原始 ARPANET 规则(即“主机名”规则),并且在它允许的字符之后可能更好地描述为“LDH 规则”。更新后的 LDH 规则规定,构成域名的标签(由句点分隔的单词或字符串)必须仅由 ASCII [ASCII] 字母和数字字符以及连字符组成。不允许使用其他符号或标点符号,也不允许使用空格。 如果使用连字符,则不允许出现在标签的开头或结尾。还有一个额外的规则,本质上要求顶级域名不能全是数字。

实际上,这意味着您不应该使用空格,即使在RFC 1035 §5.1 的这些摘录中定义的最通用的域名规范中,也可以允许在域名中使用空格:

<domain-name> 在主文件中占了很大一部分数据。域名中的标签用字符串表示,用点分隔。引用约定允许在域名中存储任意字符。

<character-string> 以一种或两种方式表示:作为没有内部空格的连续字符集,或作为以 " 开头并以 " 结尾的字符串。在 " 分隔的字符串中,任何字符都可以出现,除了 " 本身,必须使用 \(反斜杠)引用。

请记住,RFC 1035中的其他地方,特别是 §2.3,它警告:

2.3. 公约

域系统有几个处理低级但基本问题的约定。 虽然实现者可以在他自己的系统内自由地违反这些约定,但他必须在从其他主机观察到的所有行为中遵守这些约定。

2.3.1. 首选名称语法

DNS 规范试图在构建域名的规则中尽可能通用。这个想法是任何现有对象的名称都可以表示为一个域名,只需很少的更改。

但是,在为对象分配域名时,谨慎的用户将选择一个既满足域系统规则又满足对象任何现有规则的名称,无论这些规则是公开的还是由现有程序隐含的。

例如,在命名邮件域时,用户应同时满足本备忘录的规则和 RFC-822 中的规则。创建新主机名时,应遵循 HOSTS.TXT 的旧规则。这可以避免旧软件转换为使用域名时出现的问题。

我当然欢迎进一步澄清或更正我的解释,但请不要这样做,除非您能够引用 RFC 的特定部分来确认或否认这种解释。