DHCP 故障排除指导

试试我们的虚拟代理 - 它可以帮助你快速识别和修复常见的 DHCP 问题。

必须为设备分配 IP 地址,它才能在网络中运行。 可以手动或自动分配 IP 地址。 自动分配由动态主机配置协议 (DHCP) 服务(Microsoft或第三方服务器)处理。

DHCP 是 RFC 1541 定义的标准协议(由 RFC 2131 取代)。 DHCP 使服务器能够将 IP 寻址和配置信息动态分布到客户端。 通常,DHCP 服务器至少向客户端提供以下基本信息:

  • IP 地址
  • 子网掩码
  • 默认网关
  • 其他信息,例如域名服务 (DNS) 服务器地址和 Windows Internet 名称服务 (WINS) 服务器地址。 系统管理员使用解析到客户端的选项来配置 DHCP 服务器。

有关详细信息,请参阅 DHCP 基础知识

故障排除清单

在开始排除故障之前,请检查以下各项。 这些项目可以帮助你找到问题的根本原因。

  • 何时开始出现问题?
  • 是否有任何错误消息?
  • DHCP 服务器以前正常工作吗?还是从未正常工作过? 如果它以前正常工作,那么在问题开始发生之前是否进行了任何更改? 例如,是否安装了更新? 是否对基础结构进行了更改?
  • 问题是永久性的还是间歇性的? 如果是间歇性的,上次发生是什么时候?
  • 地址租用失败是发生在所有客户端还是只发生在特定客户端(例如单作用域子网)?
  • DHCP 服务器所在的网络子网上是否有任何客户端?
  • 如果客户端驻留在同一网络子网上,它们能否获取 IP 地址?
  • 如果客户端不在同一网络子网上,路由器或 VLAN 交换机是否正确配置为使用 DHCP 中继代理(也称为 IP 帮助程序)?
  • DHCP 服务器是独立服务器还是针对高可用性进行了配置(例如拆分作用域或 DHCP 故障转移)?
  • 检查中间设备是否有已知会导致问题的功能,如 VRRP/HSRP、动态 ARP 检查或 DHCP 侦听等。

排查 DHCP 服务器问题

对于 DHCP 服务器,请检查以下设备和设置:

  • DHCP 服务器服务已启动且正在运行。 要检查此设置,请运行 net start 命令并查找 DHCP 服务器
  • DHCP 服务器已授权。 请参阅已加入域场景中的 Windows DHCP 服务器授权
  • 针对 DHCP 客户端所在子网,验证 IP 地址租用在 DHCP 服务器范围内是否可用。 为此,请参阅 DHCP 服务器管理控制台中相应范围的统计信息。
  • 在“地址租约”部分中检查是否可以找到任何BAD_ADDRESS列表。
  • 检查网络中是否存在未从 DHCP 范围中排除的静态 IP 地址。
  • 验证 DHCP 服务器绑定到的 IP 地址是否位于必须从中租用 IP 地址的范围子网中。在这种情况下,没有可用的中继代理。 为此,请运行 Get-DhcpServerv4BindingGet-DhcpServerv6Binding cmdlet。
  • 验证是否只有 DHCP 服务器正在侦听 UDP 端口 67 和 68。 其他进程或其他服务(如 WDS 或 PXE)不应占用这些端口。 为此,请运行 netstat -anb 命令。
  • 如果要处理部署了 IPsec 的环境,请验证是否添加了 DHCP 服务器 IPsec 豁免。
  • 验证是否可从 DHCP 服务器对中继代理 IP 地址执行 ping 操作。
  • 枚举并检查配置的 DHCP 策略和筛选器。

排查 DHCP 客户端问题

对于 DHCP 客户端,请检查以下设备和设置:

  • 电缆已连接且工作正常。
  • 客户端连接到的交换机上启用了 MAC 筛选功能。
  • 网络适配器已启用。
  • 安装并更新了正确的网络适配器驱动程序。
  • DHCP 客户端服务已启动且正在运行。 若要对此进行检查,请运行 net start 命令,查找 DHCP 客户端。
  • 客户端计算机上没有防火墙阻止端口 67 和 68 UDP。

使用网络跟踪排查 DHCP 问题

确认 DHCP 客户端和服务器上的设置后,可以使用 Wireshark 检查 DHCP DORA 进程是否已成功完成,或者是否有任何数据包删除阻止 DHCP 客户端从服务器获取 IP 地址。

收集网络跟踪的步骤

若要使用网络跟踪排查 DHCP 问题,请执行以下步骤:

  1. 在受影响的 DHCP 客户端和 DHCP 服务器上安装 Wireshark

  2. 在客户端和服务器上以管理员身份运行 Wireshark。

  3. 通过在 Wireshark 中双击 DHCP,选择两台设备上用于 DHCP 的网络接口。

  4. 在客户端和服务器上使用 Wireshark 启动数据包捕获。

  5. 重现此问题。 触发 DHCP 问题(例如, ipconfig /renew 在客户端上运行)。 等待失败方案发生。

  6. 使用 Wireshark 中的红色按钮在两台设备上停止数据包捕获。

    停止 Wireshark 捕获。

  7. 通过选择“文件>另存为将捕获的数据包保存到指定位置。

  8. 应用 DHCP 筛选器以查看 DHCP 事务:

    • 在客户端捕获上,为“dhcp”应用显示筛选器。

    • 在服务器捕获中,使用筛选器“dhcp.id == <事务 ID>”来跟踪特定的客户端事务。 可以从客户端捕获获取事务 ID,并将其应用于服务器端捕获的筛选器中。

      客户端捕获中的事务 ID。

  9. 分析 DHCP 事务:

    • 检查所有四个 DHCP 数据包(DISCOVER、OFFER、REQUEST、ACK)的客户端捕获。 如果所有进程都存在,则 DORA 过程可能会成功。
    • 如果缺少任何数据包(例如,只有 DISCOVER 数据包可见),则表示可能存在下降。
  10. 标识网络删除。 查找以下网络下降指标:

    • 客户端捕获显示 DISCOVER 数据包,但服务器捕获不会。
    • 客户端捕获显示 DISCOVER 数据包,服务器显示已发送 OFFER,但客户端上未显示任何产品/服务。
    • 客户端捕获显示 DISCOVER、OFFER 和 REQUEST,但服务器仅显示 DISCOVER 和 OFFER。
    • 客户端捕获显示 DISCOVER、OFFER 和 REQUEST,但服务器显示已完成的所有四个数据包(DISCOVER、OFFER、REQUEST、ACK),客户端上未显示 ACK。
  11. 确认删除后,请让网络团队调查并解决删除问题。

这些步骤可确保使用 Wireshark 彻底排查 DHCP 通信故障的位置,从而加快 DHCP 配置或网络问题的解决。

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。

数据收集

在联系Microsoft支持人员之前,可以收集有关问题的信息。

先决条件

  1. TSS 必须由本地系统上具有管理员权限的帐户运行,并且必须接受 EULA(接受 EULA 后,TSS 不会再次提示)。
  2. 建议使用本地计算机 RemoteSigned PowerShell 执行策略。

注意

如果当前 PowerShell 执行策略不允许运行 TSS,请执行以下操作:

  • 通过运行 cmdlet PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned设置RemoteSigned进程级别的执行策略。
  • 若要验证更改是否生效,请运行 cmdlet PS C:\> Get-ExecutionPolicy -List
  • 由于进程级别权限仅适用于当前的 PowerShell 会话,因此一旦关闭了运行 TSS 的给定 PowerShell 窗口,进程级别的分配权限也将返回到以前配置的状态。

在联系Microsoft支持人员之前收集关键信息

  1. 在所有节点上下载 TSS ,并将其解压缩到 C:\tss 文件夹中。

  2. 从提升的 PowerShell 命令提示符打开 C:\tss 文件夹。

  3. 使用以下 cmdlet 在客户端和服务器上启动跟踪:

    • Client:

      TSS.ps1 -Scenario NET_DHCPcli
      
    • 服务器:

      TSS.ps1 -Scenario NET_DHCPsrv
      
  4. 如果跟踪首次在服务器或客户端上运行,请接受 EULA。

  5. 允许录制(PSR 或视频)。

  6. 在输入 Y 之前重现问题。

    注意

    如果在客户端和服务器上收集日志,请在两个节点上等待此消息,然后再重现问题。

  7. 在重现问题后输入 Y 以完成日志收集。

跟踪将存储在 C:\MS_DATA 文件夹中的 zip 文件中,该文件可以上传到工作区进行分析。

参考

事件日志

在系统和 DHCP 服务器服务事件日志(“应用程序和服务日志”>“Microsoft”>“Windows”>“DHCP 服务器”)中,检查所报告的、与观察到的问题相关的问题。

根据问题类型,事件将被记录到以下某一事件通道:

DHCP 服务器日志

DHCP 服务器服务调试日志提供有关 IP 地址租用分配和 DHCP 服务器执行的 DNS 动态更新的详细信息。 默认情况下,这些日志位于 %windir%\System32\Dhcp 中。

有关详细信息,请参阅分析 DHCP 服务器日志文件