试试我们的虚拟代理 - 它可以帮助你快速识别和修复常见的 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-DhcpServerv4Binding
或Get-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 问题,请执行以下步骤:
在受影响的 DHCP 客户端和 DHCP 服务器上安装 Wireshark 。
在客户端和服务器上以管理员身份运行 Wireshark。
通过在 Wireshark 中双击 DHCP,选择两台设备上用于 DHCP 的网络接口。
在客户端和服务器上使用 Wireshark 启动数据包捕获。
重现此问题。 触发 DHCP 问题(例如,
ipconfig /renew
在客户端上运行)。 等待失败方案发生。使用 Wireshark 中的红色按钮在两台设备上停止数据包捕获。
通过选择“文件>另存为”将捕获的数据包保存到指定位置。
应用 DHCP 筛选器以查看 DHCP 事务:
在客户端捕获上,为“dhcp”应用显示筛选器。
在服务器捕获中,使用筛选器“dhcp.id == <事务 ID>”来跟踪特定的客户端事务。 可以从客户端捕获获取事务 ID,并将其应用于服务器端捕获的筛选器中。
分析 DHCP 事务:
- 检查所有四个 DHCP 数据包(DISCOVER、OFFER、REQUEST、ACK)的客户端捕获。 如果所有进程都存在,则 DORA 过程可能会成功。
- 如果缺少任何数据包(例如,只有 DISCOVER 数据包可见),则表示可能存在下降。
标识网络删除。 查找以下网络下降指标:
- 客户端捕获显示 DISCOVER 数据包,但服务器捕获不会。
- 客户端捕获显示 DISCOVER 数据包,服务器显示已发送 OFFER,但客户端上未显示任何产品/服务。
- 客户端捕获显示 DISCOVER、OFFER 和 REQUEST,但服务器仅显示 DISCOVER 和 OFFER。
- 客户端捕获显示 DISCOVER、OFFER 和 REQUEST,但服务器显示已完成的所有四个数据包(DISCOVER、OFFER、REQUEST、ACK),客户端上未显示 ACK。
确认删除后,请让网络团队调查并解决删除问题。
这些步骤可确保使用 Wireshark 彻底排查 DHCP 通信故障的位置,从而加快 DHCP 配置或网络问题的解决。
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。
数据收集
在联系Microsoft支持人员之前,可以收集有关问题的信息。
先决条件
- TSS 必须由本地系统上具有管理员权限的帐户运行,并且必须接受 EULA(接受 EULA 后,TSS 不会再次提示)。
- 建议使用本地计算机
RemoteSigned
PowerShell 执行策略。
注意
如果当前 PowerShell 执行策略不允许运行 TSS,请执行以下操作:
- 通过运行 cmdlet
PS C:\> Set-ExecutionPolicy -scope Process -ExecutionPolicy RemoteSigned
设置RemoteSigned
进程级别的执行策略。 - 若要验证更改是否生效,请运行 cmdlet
PS C:\> Get-ExecutionPolicy -List
。 - 由于进程级别权限仅适用于当前的 PowerShell 会话,因此一旦关闭了运行 TSS 的给定 PowerShell 窗口,进程级别的分配权限也将返回到以前配置的状态。
在联系Microsoft支持人员之前收集关键信息
在所有节点上下载 TSS ,并将其解压缩到 C:\tss 文件夹中。
从提升的 PowerShell 命令提示符打开 C:\tss 文件夹。
使用以下 cmdlet 在客户端和服务器上启动跟踪:
Client:
TSS.ps1 -Scenario NET_DHCPcli
服务器:
TSS.ps1 -Scenario NET_DHCPsrv
如果跟踪首次在服务器或客户端上运行,请接受 EULA。
允许录制(PSR 或视频)。
在输入 Y 之前重现问题。
注意
如果在客户端和服务器上收集日志,请在两个节点上等待此消息,然后再重现问题。
在重现问题后输入 Y 以完成日志收集。
跟踪将存储在 C:\MS_DATA 文件夹中的 zip 文件中,该文件可以上传到工作区进行分析。
参考
事件日志
在系统和 DHCP 服务器服务事件日志(“应用程序和服务日志”>“Microsoft”>“Windows”>“DHCP 服务器”)中,检查所报告的、与观察到的问题相关的问题。
根据问题类型,事件将被记录到以下某一事件通道:
DHCP 服务器日志
DHCP 服务器服务调试日志提供有关 IP 地址租用分配和 DHCP 服务器执行的 DNS 动态更新的详细信息。 默认情况下,这些日志位于 %windir%\System32\Dhcp 中。
有关详细信息,请参阅分析 DHCP 服务器日志文件。