Active Directory 允许的对象的最大长度
- 2025-09-18 18:57:00
- 丁国栋
- 原创 5
Active Directory 允许的对象的最大长度是多少?官方是如何定义的?比如一个主机名或一个FQDN规范名称的对象。 这是一个非常具体且重要的问题,特别是在进行 Active Directory 规划和故障排除时。
核心摘要
Active Directory 中对象名称(如计算机名、用户登录名等)的最大长度通常为 64 个字符。然而,当这些名称用于构成更复杂的路径(如 Distinguished Name)或与网络服务(如 DNS)结合时,会受到其他限制。
官方定义主要来源于 Microsoft 的协议规范,而不是图形界面(GUI)或常用工具的限制。
1. 官方定义与规范
Active Directory 的架构和约束主要遵循 LDAP(轻量级目录访问协议) 标准以及 Microsoft 的实现。关键定义来自:
- LDAPv3 标准 (RFC 4512, RFC 4514):定义了 Distinguished Name (DN) 和 Relative Distinguished Name (RDN) 的格式。
- Microsoft Active Directory 协议文档:更具体地规定了其实现细节。参见Microsoft Learn - Open Specifications: Active Directory Protocols。
最重要的两个概念是:
- RDN (Relative Distinguished Name):对象本身的名称,例如
CN=MyVeryLongComputerNameThatIsApproachingTheLimit
。 - DN (Distinguished Name):对象的完整路径,例如
CN=MyComputer, OU=MyOU, DC=contoso, DC=com
。
a) RDN (对象名称本身) 的最大长度
- 官方限制: 64 个字符。
- 来源: 这是由 Active Directory 架构中
ntdsapi.h
头文件定义的AZ_MAX_OBJECT_NAME_LEN
常量。 - 影响范围: 这个限制适用于:
- 计算机名 (
CN
) - 用户名 (
CN
) - 组织单位名 (
OU
) - 组名 (
CN
) - 以及其他所有对象类的通用名称 (
CN
) 部分。
- 计算机名 (
这意味着,当你创建一台计算机或一个用户时,其名称(如 MyComputer
)不能超过 64 个字符。
b) DN (可分辨名称/完整路径) 的最大长度
- 官方限制: 255 个字符。
- 来源: 同样由
ntdsapi.h
中的AZ_MAX_SCRIPT_STRING_LEN
常量定义。 - 影响范围: 这是整个 DN 字符串的总长度限制。例如,一个深层次 OU 结构中的长名称对象可能会接近此限制。
CN=ShortName, OU=VeryLongOrganizationalUnitNameHere, OU=AnotherLongOU, DC=domain, DC=com
2. 主机名 (Hostname) 和 FQDN (完全限定域名) 的特殊情况
这是一个容易混淆的点,因为它涉及两个系统的交集:Active Directory 和 DNS。
a) 主机名 (NetBIOS 名称)
- 最大长度: 15 个字符。
- 原因: 这是为了与旧的 NetBIOS 命名协议保持兼容。第 16 个字符被操作系统保留,用于标识服务类型(如工作站、域控制器等)。
- 即使 AD 对象名允许 64 个字符,当你将此对象用作一台“计算机”时,其主机名(在网络中可见的名称)仍然会被截断为 15 个字符。 这是最佳实践和强制的兼容性要求。
b) FQDN (完全限定域名)
- 最大长度: 255 个字符(包括所有点和标签)。
- 每个标签的最大长度(如 “hostname”、“domain”、“com”): 63 个字符。
- 原因: 这是由 DNS 标准 (RFC 1034, RFC 1035) 定义的,与 Active Directory 本身无关。但由于 AD 严重依赖 DNS 进行定位和服务发现,因此必须遵守此规则。
总结与实践指南
对象/概念 | 最大长度 | 约束来源 | 示例与说明 |
---|---|---|---|
AD 对象名 (RDN) | 64 字符 | Active Directory (LDAP) | 在 ADUC 中创建用户或计算机时,名称最长 64 字符。 |
AD 对象完整路径 (DN) | 255 字符 | Active Directory (LDAP) | CN=Name,OU=... 整个字符串的长度。 |
计算机主机名 | 15 字符 | NetBIOS 兼容性 | 实际的网络主机名 (computername )。AD 中 64 字符的名称会被截断。 |
DNS 标签 | 63 字符 | DNS 标准 (RFC 1035) | FQDN 中每个点之间的部分(如 hostname , domain )。 |
完整 FQDN | 255 字符 | DNS 标准 (RFC 1035) | hostname.domain.com 整个字符串的长度。 |
最重要的实践建议:
- 命名计算机时,始终使用不超过 15 个字符的名称。 这是最安全、兼容性最好的做法。如果你在 AD 中创建了一个 20 字符的计算机账户,其主机名实际上只会是前 15 个字符,这会导致混乱和潜在的管理问题。
- 为用户、组和 OU 命名时,虽然可以长达 64 字符,但出于可读性和可管理性考虑,也应保持名称简洁明了。
- 设计 OU 结构时,避免使用过长的 OU 名称和过深的层级,以防 DN 总长度接近 255 字符的限制,这可能影响某些脚本或应用程序的处理。
因此,官方定义来源于 LDAP 协议和 Microsoft 的实现常量,但实际应用中必须考虑与 DNS 和 NetBIOS 的历史兼容性约束。
发表评论