本文提供指导以解决 Microsoft Power Platform 中 虚拟网络 的常见情况。 本文重点介绍如何使用 Microsoft.PowerPlatform.EnterprisePolicies PowerShell 模块来帮助识别和解决与虚拟网络配置相关的问题。
使用诊断 PowerShell 模块
Microsoft.PowerPlatform.EnterprisePolicies PowerShell 模块旨在帮助诊断和排查与 Power Platform 中的虚拟网络配置相关的问题。 可以使用该工具检查 Power Platform 环境与虚拟网络之间的连接。 还可以使用它来识别可能导致问题的任何错误配置。 此诊断 PowerShell 模块可在 PowerShell 库以及其 GitHub 存储库 PowerPlatform-EnterprisePolicies 中获取。
安装此模块
若要安装诊断 PowerShell 模块,请运行以下 PowerShell 命令:
Install-Module -Name Microsoft.PowerPlatform.EnterprisePolicies
运行诊断函数
安装模块后,运行以下命令将其导入到 PowerShell 会话中:
Import-Module Microsoft.PowerPlatform.EnterprisePolicies
该模块包含多个功能,用于诊断和排查与虚拟网络配置相关的问题。 一些关键函数包括:
- Get-EnvironmentRegion:检索指定 Power Platform 环境的区域
- Get-EnvironmentUsage:提供有关指定的 Power Platform 环境使用情况的信息
- Test-DnsResolution:测试指定域名的 DNS 解析
- Test-NetworkConnectivity:测试 Power Platform 环境与指定虚拟网络之间的网络连接
报告诊断模块中的问题
如果在运行诊断模块时遇到问题,请通过托管模块的 GitHub 存储库报告这些问题。 存储库位于: PowerPlatform-EnterprisePolicies。
若要报告问题,请转到存储库的 “问题 ”部分,并 打开一个新问题。 提供有关所遇到的问题的详细信息,包括调查问题时可能有帮助的任何错误消息或日志条目。 不要在报表中包含任何敏感信息。
排查常见问题
区域配置错误
如果一切配置正确,但仍遇到问题,请使用 Get-EnvironmentRegion 诊断 PowerShell 模块中的函数来检查 Power Platform 环境的区域是否与虚拟网络的区域相同。 运行下面的命令:
Get-EnvironmentRegion -EnvironmentId "<EnvironmentId>"
你的环境属于特定的 PowerPlatform 区域。 但是,PowerPlatform 区域可以跨越两个 Azure 区域。 你的环境可以位于任一区域,也可以在它们之间自动故障转移。 因此,为了确保高可用性和连接性,请在与 PowerPlatform 区域关联的两个 Azure 区域中配置虚拟网络。 若要了解 PowerPlatform 区域如何映射到支持虚拟网络功能的 Azure 区域,请参阅 Power Platform 区域。
找不到主机名
如果遇到影响主机名解析的问题,请使用 Test-DnsResolution 诊断 PowerShell 模块中的函数检查主机名是否已正确解决。 运行下面的命令:
Test-DnsResolution -EnvironmentId "<EnvironmentId>" -HostName "<HostName>"
此命令在 Power Platform 环境的上下文中测试指定主机名的 DNS 解析。 请求从委派子网启动,并尝试使用为虚拟网络配置的 DNS 服务器解析主机名。 如果主机名未正确解析,可能需要检查 DNS 设置,以确保正确配置主机名。
重要
如果发现 DNS 设置不正确,并且必须更新虚拟网络的 DNS 服务器设置,请参阅 是否在将虚拟网络的 DNS 地址委托给“Microsoft.PowerPlatform/enterprisePolicies”后更新虚拟网络的 DNS 地址?
请求使用公共 IP 地址而不是专用 IP 地址
如果遇到请求资源使用公共 IP 地址而不是专用 IP 地址的问题,则资源的主机名的 DNS 解析可能会返回公共 IP 地址。 Azure 和非 Azure 资源可能会出现此问题。
没有专用终结点的非 Azure 资源
如果非 Azure 资源没有专用终结点,但可从虚拟网络访问该终结点,则应将 DNS 服务器配置为将资源的主机名解析为其专用 IP 地址。 将 DNS A 记录添加到 DNS 服务器,该记录将资源的主机名映射到其专用 IP 地址:
- 如果使用自定义 DNS 服务器,请直接将 A 记录添加到服务器。
- 如果使用 Azure 提供的 DNS,请创建 一个 Azure 专用 DNS 区域,并将其链接到虚拟网络。 然后,将 A 记录添加到专用 DNS 区域。
此映射可确保通过其专用 IP 地址访问资源。
具有专用终结点的 Azure 资源
如果 Azure 资源具有专用终结点,则资源的主机名的 DNS 解析应返回与专用终结点关联的专用 IP 地址。 如果 DNS 解析改为返回公共 IP 地址,则 DNS 配置中可能缺少记录。 执行以下步骤:
- 验证资源类型是否存在专用 DNS 区域。 例如,
privatelink.database.windows.net对于 Azure SQL 数据库。 如果专用 DNS 区域不存在, 请创建一个。 - 验证专用 DNS 区域是否已链接到虚拟网络。 如果专用 DNS 区域未链接到虚拟网络, 请链接它。
将专用 DNS 区域链接到虚拟网络后,资源的主机名应解析为与专用终结点关联的专用 IP 地址。
测试 DNS 配置更改
更新 DNS 配置后,请使用 Test-DnsResolution 诊断 PowerShell 模块中的函数来验证主机名是否解析为正确的专用 IP 地址。 运行下面的命令:
Test-DnsResolution -EnvironmentId "<EnvironmentId>" -HostName "<HostName>"
无法连接到资源
如果遇到影响与资源连接的问题,请使用 Test-NetworkConnectivity 诊断 PowerShell 模块中的函数检查连接。 运行下面的命令:
Test-NetworkConnectivity -EnvironmentId "<EnvironmentId>" -Destination "<ResourceAddress>" -Port 1433
此命令尝试在 Power Platform 环境的上下文中建立与指定目标和端口的 TCP 连接。 请求从委托子网启动,并尝试使用虚拟网络中的网络配置连接到指定目标。 如果连接失败,可能需要检查网络设置,以确保可从虚拟网络访问目标。 成功的连接表示 Power Platform 环境与指定资源之间存在网络连接。
注释
此命令仅测试是否可以建立到指定目标和端口的 TCP 连接。 它不会测试资源是否可用,或者是否有任何应用程序级问题可能会阻止访问资源。 某些防火墙可能允许建立 TCP 连接,但随后会阻止实际流量流向资源(例如 HTTPS)。 因此,即使命令指示网络连接,该状态也不能保证资源完全可访问。
连接成功,但应用程序仍然不起作用
如果连接测试成功,但仍在应用程序中遇到问题,可能需要检查应用程序级别的设置和配置,如下所示:
- 验证防火墙是否允许从委托子网访问资源。
- 验证资源提供的证书是否受到公开信任。
- 确保不存在阻止访问资源的身份验证或授权问题。
可能无法使用诊断 PowerShell 模块诊断或解决问题。 在这种情况下,请在虚拟网络中创建不委派的子网,并在该子网中部署虚拟机(VM)。 然后,可以使用 VM 执行进一步的诊断和故障排除步骤,例如检查网络流量、分析日志和测试应用程序级连接。