适用于 Cloud SQL 的 Active Directory 诊断工具

Active Directory (AD) 诊断工具是一个实用程序 PowerShell 脚本,可帮助您在 Google Cloud 中排查本地网域和 Cloud SQL for SQL Server 实例的 AD 设置问题。

该工具会对相关问题(例如关闭的端口、FQDN 查找和 DNS 问题)执行各种检查。它在一个本地 Windows 虚拟机上运行,并且该虚拟机应是本地网域的网域控制器之一。

本页面介绍如何使用适用于 Cloud SQL 的 Active Directory 诊断工具,并说明了该工具执行的检查。

前提条件

在继续使用 AD 诊断工具之前,请确保已设置以下组件:

  • 已启用 AD 的本地网域。
  • Google Cloud 控制台中的 Managed AD 域。
  • 已加入 Managed AD 域的 Cloud SQL for SQL Server 实例。

如何使用 AD 诊断工具

如需使用 AD 诊断工具,请执行以下步骤:

  1. 登录任一本地网域控制器或登录一个加入了本地网域的虚拟机。
  2. 在虚拟机上下载 diagnose_ad.ps1 脚本
  3. 以管理员身份启动 Powershell。
  4. 使用以下命令在 Powershell 窗口中运行 diagnose_ad.ps1 脚本:

    powershell -command "& { . C:\\<var>SCRIPT_PATH</var>\\diagnose_ad.ps1; Run-Tool }"
    
  5. 出现提示时,请输入以下信息:

    • 本地域名,例如 my-onprem-domain.com
    • Managed AD 域名,例如 my-ad-domain.com
    • SQL Server Active Directory FQDN 和专用 IP 地址列表。您可以在 Google Cloud 控制台的实例概览页面上找到此列表。

之后,该工具会执行多项检查,具体请参阅使用 AD 诊断工具执行的检查部分。

使用 AD 诊断工具执行的检查

支票说明 备注和建议
可用的网域控制器 对本地网域上每个网域控制器的 IP 地址发出 ping 请求,以确保它们可以访问。 其余检查会继续对可访问的 IP 地址进行。如果有某个本地网域控制器未通过此检查,则需确保其余本地网域控制器的网络连接。如需了解详情,请参阅创建网络基础架构
端口 验证 AD 的所有必需 TCP 和 UDP 端口在所有本地网域控制器上都处于打开状态。 此检查会针对 RPC 端口范围 (49152-65535) 返回警告状态(如果打开端口列表不一致)。建议您确认设置了允许此范围的防火墙规则。如需了解详情,请参阅打开防火墙端口
DNS 服务器 检查 AD 设置的健康状态及其容错性能。 如果脚本未在本地网域控制器上运行,则此检查会返回警告。建议您通过设置主要和次要 DNS 服务器来部署提供容错性能的 AD 设置
FQDN(Managed AD 域) 对您提供的 Managed AD 域名执行 nslookup 检查。 此检查会验证是否可以从本地网域控制器访问 Managed AD 域。如果此检查未通过,请尝试在您的本地网络和 Google Cloud Virtual Private Cloud (VPC) 之间建立网络连接。如需了解详情,请参阅建立网络连接
FQDN (SQL Server) 对您提供的 SQL Server FQDN 执行 nslookup 检查。 此检查会验证是否可以从本地网域控制器访问您的实例。如果此检查未通过,请尝试在您的本地网络和 Google Cloud Virtual Private Cloud (VPC) 之间建立网络连接。如需了解详情,请参阅建立网络连接
DC 复制 查找本地网域控制器之间是否发生任何 AD 复制失败问题。 当脚本是在加入了本地网域的虚拟机上运行,如果 Powershell 未以 Active Directory 域用户身份运行,则该检查会返回失败状态。如果此检查未通过,请按照测试安装中指定的步骤操作。
DNS 转发 查找本地网域控制器上是否有条件 DNS 转发设置,若要将请求从本地网域控制器路由到 Managed AD 域控制器,则必须要有此转发设置。 如果脚本未在本地网域控制器上运行,则此检查可能会失败。建议您配置 DNS 条件转发器
信任设置 验证是否在本地网域和 Managed AD 域之间设置了 AD 信任。 此检查会验证是否在本地网域和 Managed AD 域之间设置了 AD 信任。建议您在本地网域和 Managed Microsoft AD 域之间建立信任关系。如需了解详情,请参阅设置信任关系
本地安全政策 检查是否已设置本地安全政策配置 Network access: Named pipes that can be accessed anonymously。您需要此检查才能建立 AD 信任。 如果脚本未在本地网域控制器上运行,则此检查预计会失败。此检查要求您以管理员身份运行 Powershell 以检查本地安全政策设置。如果此检查未通过,建议您验证本地网域的本地安全政策
名称后缀路由 检查本地网域控制器上是否启用了路由到 Managed AD 域的名称后缀。您需要此检查才能将请求从本地林路由到 Managed AD 林。 此检查要求您以管理员身份运行 Powershell 以检查名称后缀路由设置。如果此检查未通过,建议您刷新本地信任的名称后缀路由
本地网域的 Kerberos 票据 验证是否已在本地网域中启用 Kerberos 身份验证。该检查会查找本地网域的现有 Kerberos 票据。如果未找到,它会尝试生成新的票据。 此检查会尝试查找本地 DC 的现有 Kerberos 票据。如果未找到,它会尝试生成新的票据来作为验证形式。其他检查中的错误也可能会导致此检查出错。如果您解决了其他检查中的错误,则此检查的错误问题应该也会予以解决。
SQL Server 的 Kerberos 票据 验证是否已在本地网域中启用 Kerberos 身份验证。该检查会针对您提供的每个 SQL Server 服务主体名称 (SPN) 查找现有 Kerberos 票据。SQL Server 的 SPN 为 MSSQLSvc/{SQL Server FQDN}:1433。如果获取 SPN 的票据失败,则 Cloud SQL 会检查是否已设置相关 Windows 注册表值来允许主机名中包含 IP 地址。如果已设置,请尝试使用 SPN MSSQLSvc/{SQL Server IP}:1433 来获取票据。
如需了解详情,请参阅 Microsoft 文档
此检查会尝试查找 SQL Server 的现有 Kerberos 票据。如果未找到,它会尝试生成新的票据来作为验证形式。其他检查中的错误也可能会导致此检查出错。如果解决了其他检查中的错误,则此检查的错误问题应该也会予以解决。

后续步骤

  • 如要提供反馈意见,您可以通过 GitHub 问题来提交反馈。