本指南提供了一个详细的分步过程,用于诊断和解决 Active Directory (AD) 环境中的动态主机配置协议 (DHCP) 授权失败。
现象
在服务器上 DHCP 角色的安装后阶段,遇到以下错误消息:
授权 DHCP 服务器..... 未通过
DHCP 服务器的授权失败,错误代码:20070。 DHCP 服务无法联系 Active Directory。
DHCP 控制台在 IPv4 部分中显示向下红色箭头,指示服务器未获得授权。
事件 ID 1046 记录在系统事件日志中,指示 DHCP 服务器无权租用 IP 地址:
属于 Windows 管理域域<>的本地计算机上的 DHCP/BINL 服务已确定它无权启动。 它已停止服务客户端。
手动尝试授权 DHCP 服务器也可能失败,并显示以下错误消息:
指定的域不存在或可以联系。
DHCP 授权流
DHCP 授权可确保只有经过授权的服务器才能在 AD 域中运行。 此机制可防止未经授权的服务器分发 IP 地址,这可能会导致网络冲突和安全问题。
当 DHCP 服务器获得授权时,在 AD 中创建一个条目,该条目位于授权服务器列表下。 此行为是通过域控制器(DC)与 DHCP 服务器之间的轻型目录访问协议(LDAP)通信来实现的。 此列表驻留在 AD 架构的配置容器中。
DHCP 服务器使用 LDAP 每小时在 Active Directory 域服务(AD DS)中验证其授权状态。 如果在此列表中找不到服务器的 IP 地址,则服务器将自行取消授权。
授权失败的原因
- 权限问题:用于授权服务器的帐户没有足够的权限。
- AD 中缺少条目:DHCP 服务器的条目可能会从 AD 的配置容器中删除。
- 连接问题:网络或防火墙问题阻止 DC 与 DHCP 服务器之间的通信。
- AD 复制问题:延迟或问题可能会导致条目不一致,导致 AD 配置 容器中的重复或冲突条目(例如冲突 (CNF) 对象)。 DHCP 服务器无法使用这些条目进行授权。
疑难解答步骤
步骤 1:验证权限
使用企业管理员帐户授权 DHCP 服务器。 此帐户有足够的权限对 AD 进行更改。
步骤 2:检查授权状态
运行以下命令之一,验证 DHCP 服务器的条目是否存在于 AD 中授权服务器列表中:
PowerShell 命令:
Get-DhcpServerInDC
命令提示符命令:
netsh dhcp show server
或者,使用 ADSI Edit 连接到 配置 分区,并验证服务器是否显示在那里:
- 在 DC 上打开 adsiedit.msc 。
- 连接到 配置 容器。
- 导航到 Configuration>Services>NetServices。
- 检查 DHCP 服务器的名称是否显示在右窗格中。
步骤 3:尝试手动授权
如果服务器没有现有条目,请执行以下步骤:
- 打开 DHCP 管理控制台。
- 右键单击 DHCP 服务器名称。
- 选择“授权”。
如果此操作失败,请继续操作。
步骤 4:验证连接
使用以下工具测试 DHCP 服务器与 DC 之间的连接:
用于两个服务器之间基本网络连接检查的 Ping 命令。
通过 PowerShell 针对 TCP 端口 389 的 Test-NetConnection 命令。 例如:
Test-NetConnection -ComputerName <DC-IP> -Port 389
验证 LDAP 端口(TCP/UDP 389)是否打开并正常运行。 查看防火墙设置,确保这些端口不会被阻止。 相应地解决检测到的连接问题。
此外,还可以捕获 Wireshark 跟踪,以识别 DC 和 DHCP 服务器之间的数据包丢弃。
步骤 5:识别和解决冲突条目
打开 adsiedit.msc 并导航到 Configuration>Services>NetServices。
查找包含服务器名称的 CNF 标记的条目。 CNF 标记在属性 CN 下添加。 例如:
cn <fqdn>CNF:ca69f501234
在这种情况下,需要删除 CNF 对象(冲突对象)。 建议创建 AD 备份,然后删除此对象。 删除对象后,可以重新授权 DHCP 服务器。
额外的故障排除步骤
手动尝试授权服务器时,它可能会正常工作,但几天后会再次失败,因为它的条目在 AD 中删除。 在这种情况下,请务必了解为什么条目在 AD 中删除或谁正在从 AD 中删除条目。
若要查找从 DC 中删除 DHCP 服务器的条目的人员,可以在默认情况下未启用的 DC 上启用审核。 按照以下步骤启用审核:
启用 AD 更改审核
在 DC 上打开组策略管理控制台 ,或运行 gpmc.msc。
导航到>域控制器默认域控制器策略Domain_Name>>域。
右键单击并编辑 默认域控制器策略。
导航到计算机配置>策略>Windows 设置>高级审核策略配置>审核策略>DS 访问>审核目录服务更改。 启用 成功 和 失败 尝试。
在“配置”容器中设置审核
打开 adsiedit.msc。
连接到 配置 容器。
导航到 Services>NetServices。
右键单击并选择 “属性”。
转到 “安全 ”选项卡,然后选择“ 高级”。
在 “审核 ”选项卡中,选择“ 添加”。
添加 “每个人 ”组,并为以下项启用审核:
- 写入所有属性
- 删除
- 删除子树
应用更改。
当问题再次出现时,在 DC 上导出安全事件日志,以识别已删除或修改 DHCP 条目的人员。
请参阅以下事件删除示例:
A directory service object was deleted.
Subject:
Security ID: <domain>\administrator
Account Name: Administrator
Account Domain: <domain>
Logon ID: 0x35D447
Directory Service:
Name: <url>
Type: Active Directory Domain Services
Object:
DN: CN=<fqdn>,CN=NetServices,CN=Services,CN=Configuration,DC=<domain>,DC=com
有关详细信息,请参阅 配置容器上的配置审核。
数据收集
在联系Microsoft支持人员之前,可以收集有关问题的信息。
按照 TroubleShootingScript 工具集简介(TSS)中提供的步骤,使用 TSS 工具下载和收集日志。 然后,使用此命令在受影响的计算机上启用日志收集。
.\TSS.ps1 -Scenario NET_DHCPsrv