故障排除指南:DHCP 授权失败

本指南提供了一个详细的分步过程,用于诊断和解决 Active Directory (AD) 环境中的动态主机配置协议 (DHCP) 授权失败。

现象

在服务器上 DHCP 角色的安装后阶段,遇到以下错误消息:

授权 DHCP 服务器..... 未通过
DHCP 服务器的授权失败,错误代码:20070。 DHCP 服务无法联系 Active Directory。

DHCP 控制台在 IPv4 部分中显示向下红色箭头,指示服务器未获得授权。

DHCP 控制台的屏幕截图,其中显示了未经授权的状态。

事件 ID 1046 记录在系统事件日志中,指示 DHCP 服务器无权租用 IP 地址:

属于 Windows 管理域域<>的本地计算机上的 DHCP/BINL 服务已确定它无权启动。 它已停止服务客户端。

指示未授权状态的事件日志的屏幕截图。

手动尝试授权 DHCP 服务器也可能失败,并显示以下错误消息:

指定的域不存在或可以联系。

DHCP 授权流

DHCP 授权可确保只有经过授权的服务器才能在 AD 域中运行。 此机制可防止未经授权的服务器分发 IP 地址,这可能会导致网络冲突和安全问题。

当 DHCP 服务器获得授权时,在 AD 中创建一个条目,该条目位于授权服务器列表下。 此行为是通过域控制器(DC)与 DHCP 服务器之间的轻型目录访问协议(LDAP)通信来实现的。 此列表驻留在 AD 架构的配置容器中

显示 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 连接到 配置 分区,并验证服务器是否显示在那里:

  1. 在 DC 上打开 adsiedit.msc
  2. 连接到 配置 容器。
  3. 导航到 Configuration>Services>NetServices。
  4. 检查 DHCP 服务器的名称是否显示在右窗格中。

步骤 3:尝试手动授权

如果服务器没有现有条目,请执行以下步骤:

  1. 打开 DHCP 管理控制台
  2. 右键单击 DHCP 服务器名称。
  3. 选择“授权”。

如果此操作失败,请继续操作。

步骤 4:验证连接

使用以下工具测试 DHCP 服务器与 DC 之间的连接:

  • 用于两个服务器之间基本网络连接检查的 Ping 命令。

  • 通过 PowerShell 针对 TCP 端口 389 的 Test-NetConnection 命令。 例如:

    Test-NetConnection -ComputerName <DC-IP> -Port 389
    

验证 LDAP 端口(TCP/UDP 389)是否打开并正常运行。 查看防火墙设置,确保这些端口不会被阻止。 相应地解决检测到的连接问题。

此外,还可以捕获 Wireshark 跟踪,以识别 DC 和 DHCP 服务器之间的数据包丢弃。

步骤 5:识别和解决冲突条目

  1. 打开 adsiedit.msc 并导航到 Configuration>Services>NetServices。

  2. 查找包含服务器名称的 CNF 标记的条目。 CNF 标记在属性 CN 下添加。 例如:

    cn <fqdn>CNF:ca69f501234

在这种情况下,需要删除 CNF 对象(冲突对象)。 建议创建 AD 备份,然后删除此对象。 删除对象后,可以重新授权 DHCP 服务器。

额外的故障排除步骤

手动尝试授权服务器时,它可能会正常工作,但几天后会再次失败,因为它的条目在 AD 中删除。 在这种情况下,请务必了解为什么条目在 AD 中删除或谁正在从 AD 中删除条目。

若要查找从 DC 中删除 DHCP 服务器的条目的人员,可以在默认情况下未启用的 DC 上启用审核。 按照以下步骤启用审核:

启用 AD 更改审核

  1. DC 上打开组策略管理控制台 ,或运行 gpmc.msc

  2. 导航到>域控制器默认域控制器策略Domain_Name>>域。

  3. 右键单击并编辑 默认域控制器策略

  4. 导航到计算机配置>策略>Windows 设置>高级审核策略配置>审核策略>DS 访问>审核目录服务更改。 启用 成功失败 尝试。

在“配置”容器中设置审核

  1. 打开 adsiedit.msc

  2. 连接到 配置 容器。

  3. 导航到 Services>NetServices。

  4. 右键单击并选择 “属性”

  5. 转到 “安全 ”选项卡,然后选择“ 高级”。

  6. “审核 ”选项卡中,选择“ 添加”。

  7. 添加 “每个人 ”组,并为以下项启用审核:

    • 写入所有属性
    • 删除
    • 删除子树
  8. 应用更改。

  9. 当问题再次出现时,在 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