你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 IoT Central 创建和配置专用终结点

你可以使用 Azure 虚拟网络中的专用终结点将设备连接到 IoT Central 应用程序。

专用终结点使用虚拟网络地址空间中的专用 IP 地址,将设备以私密方式连接到 IoT Central 应用程序。 虚拟网络和 IoT 平台上的设备之间的网络流量将穿过虚拟网络以及 Microsoft 主干网络上的专用链接,因此不会在公共 Internet 上公开。 本文介绍了如何为 IoT Central 应用程序创建专用终结点。

先决条件

  • 一个有效的 Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户
  • IoT Central 应用程序。 若要了解详细信息,请参阅创建 IoT Central 应用程序
  • Azure 订阅中的虚拟网络。 有关详细信息,请参阅创建虚拟网络。 若要完成本指南中的步骤,不需要 Bastion 主机或虚拟机。

创建专用终结点

有几种方法可以为 IoT Central 应用程序创建专用终结点:

在现有 IoT Central 应用程序上创建专用终结点:

  1. 在 Azure 门户中,导航到应用程序,然后选择“网络”。

  2. 选择“专用终结点连接”选项卡,然后选择“+ 专用终结点”。

  3. 在“基本信息”选项卡上,为专用终结点输入一个名称,并选择一个区域。 然后选择“下一步: 资源”。

  4. 系统会自动填充“ 资源 ”选项卡。 选择“下一步: 虚拟网络”。

  5. 在“虚拟网络”选项卡上,选择要在其中部署专用终结点的“虚拟网络”和“子网”。

  6. 在同一选项卡上的“专用 IP 配置”部分,选择“动态分配 IP 地址”。

  7. 选择“下一步: DNS”。

  8. 在“DNS”选项卡上,为“与专用 DNS 区域集成”选择“”。专用 DNS 将所有必需的终结点解析为虚拟网络中的专用 IP 地址:

    Azure 门户的屏幕截图,其中显示了专用 DNS 集成。

    注意

    由于 IoT Central 具有自动缩放功能,你应尽可能使用“专用 DNS 集成”选项。 如果由于某种原因而无法使用此选项,请参阅使用自定义 DNS 服务器

  9. 在完成时选择“下一步: 标记”。

  10. 在“标记”选项卡上,配置所需的任何标记,然后选择“下一步: 查看 + 创建”。

  11. 查看配置详细信息,然后选择“创建”以创建专用终结点资源。

Azure 门户的屏幕截图,其中显示了创建专用终结点的摘要。

验证专用终结点的创建

专用终结点创建完成后,你可以在 Azure 门户中访问它。

查看为应用程序创建的所有专用终结点:

  1. 在 Azure 门户中,导航到 IoT Central 应用程序,然后选择“网络”。

  2. 选择“专用终结点连接”选项卡。表中显示了为应用程序创建的所有专用终结点。

使用自定义 DNS 服务器

在某些情况下,你可能无法与虚拟网络的专用 DNS 区域集成。 例如,你可以使用自己的 DNS 服务器,或使用虚拟机上的主机文件来创建 DNS 记录。 本节介绍了如何获取 DNS 区域。

  1. 安装 chocolatey

  2. 安装 ARMClient:

    choco install armclient
    
  3. 使用 ARMClient 登录:

    armclient login 
    
  4. 使用以下命令为 IoT Central 应用程序获取专用 DNS 区域。 将占位符替换为你的 IoT Central 应用程序的详细信息:

    armclient GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.IoTCentral/IoTApps/<AppName>/privateLinkResources?api-version=2021-11-01-preview
    
  5. 检查响应。 所需的 DNS 区域位于响应有效负载中的 requiredZoneNames 数组中:

    {  
      "value": [  
        {  
          "id": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.IoTCentral/IoTApps/<AppName>/privateLinkResources/iotApp",  
          "name": "ioTApp",  
          "type": "Microsoft.IoTCentral/IoTApps/privateLinkResources",  
          "location": "<the region of your application>",  
          "properties": {  
          "groupId": "iotApp",  
          "requiredMembers":[  
            "<IoTCentral Name>",  
            "<DPS Name>",  
            "<IoTHub1 Name>",  
            "<IoTHub2 Name>",  
            "<EH1 Name>",  
            "<EH2 Name>"],  
          "requiredZoneNames": [  
            "privatelink.azureiotcentral.com",  
            "privatelink.azure-devices.net",  
            "privatelink.servicebus.windows.net",  
            "privatelink.azure-devices-provisioning.net"],  
          "provisioningState": "Succeeded"}  
        }  
      ]  
    }
    
  6. 在 Azure 门户中,导航到专用终结点,然后选择“DNS 配置”。 在此页上,可以找到将 IP 地址映射到 DNS 名称所需的信息。

Azure 门户的屏幕截图,其中显示了专用 DNS 配置。

警告

这些信息可以让你用必要的记录来填充自定义 DNS 服务器。 如果可能,应该与虚拟网络的专用 DNS 区域集成,而不是配置你自己的自定义 DNS 服务器。 IoT Central 应用程序的专用终结点不同于其他 Azure PaaS 服务。 在某些情况下(例如 IoT Central 自动缩放),IoT Central 可以横向扩展可通过专用终结点访问的 IoT 中心数目。 如果你选择填充自己的自定义 DNS 服务器,那么每当 IoT Central 自动缩放时,你都有责任更新 DNS 记录,并在以后 IoT 中心数目缩减时删除记录。

限制公共访问

要将设备的公共访问限制到 IoT Central,请禁用来自公共终结点的访问。 禁用公共访问后,设备将无法从公用网络连接到 IoT Central,必须使用专用终结点:

  1. 在 Azure 门户中,导航到 IoT Central 应用程序,然后选择“网络”。

  2. 在“ 公共访问 ”选项卡上,为公用网络访问选择“ 已禁用 ”。

  3. (可选)可以定义可连接到 IoT Central 应用程序的公共终结点的 IP 地址/范围列表。

  4. 选择“保存” 。

连接到专用终结点

禁用 IoT Central 应用程序的公用网络访问时,设备无法连接到设备预配服务 (DPS) 全局终结点。 出现这种情况的原因是,DPS 的唯一 FQDN 在你的虚拟网络中有一个直接 IP 地址。 全局终结点现在无法访问。

为 IoT Central 应用程序配置专用终结点时,会更新 IoT Central 服务终结点以反映直接 DPS 终结点。

更新设备代码以使用直接 DPS 终结点。

显示直接 DPS 终结点的 IoT Central 应用程序的屏幕截图。

最佳做法

  • 请勿使用专用链接子域 URL 将设备连接到 IoT Central。 创建专用终结点后,请始终使用 IoT Central 应用程序中显示的 DPS URL。

  • 使用 Azure 提供的专用 DNS 区域进行 DNS 管理。 避免使用你自己的 DNS 服务器,因为在 IoT Central 自动缩放其资源时,你需要不断更新 DNS 配置以保持同步。

  • 如果你为同一 IoT Central 资源创建多个专用终结点,DNS 区域可能会覆盖 FQDN,因此应重新添加它们。

限制

  • 目前,仅为 IoT Central 应用程序中的基础 IoT 中心和 DPS 的设备连接启用专用连接。 IoT Central Web UI 和 API 可继续通过其公共终结点工作。

  • 专用终结点必须与虚拟网络位于同一区域中。

  • 当你禁用公用网络访问时:

    • IoT Central 模拟设备无法正常工作,因为它们未连接到虚拟网络。

    • 全局 DPS 终结点 (global.device-provisioning.net) 无法访问。 请更新设备固件以连接到直接 DPS 实例。 可以在 IoT Central 应用程序的“设备连接组”页中找到直接 DPS URL。

  • 配置专用终结点后,将无法重命名 IoT Central 应用程序。

  • 不能将专用终结点或 IoT Central 应用程序移到另一个资源组或订阅。

  • 支持仅限于 IPv4。 不支持 IPv6。

疑难解答

如果在连接到专用终结点时遇到问题,请使用以下故障排除指南:

检查连接状态

确保专用终结点的连接状态设置为“已批准”。

  1. 在 Azure 门户中,导航到应用程序,然后选择“网络”。
  2. 选择“专用终结点连接”选项卡。验证专用终结点的连接状态是否为“已批准”。

在虚拟网络中运行检查

使用以下检查内容从同一虚拟网络内部调查连接问题。 在你创建了专用终结点的同一虚拟网络中部署一台虚拟机。 登录到虚拟机以运行以下测试。

为了确保名称解析正常工作,请循环访问专用终结点 DNS 配置中的所有 FQDN,然后使用 nslookupTest-NetConnection 或其他类似工具运行测试,验证每个 DNS 是否与其相应的 IP 地址匹配。

此外,请运行以下命令,验证每个 FQDN 的 DNS 名称是否与相应的 IP 地址匹配。

#replace the <...> placeholders with the correct values 
nslookup iotc-….azure-devices.net 

结果与以下输出类似:

#Results in the following output: 
Server:127.0.0.53 
Address:127.0.0.53#53 

Non-authoritative answer: xyz.azure-devices.net
canonical name = xyz.privatelink.azure-devices.net
Name:xyz.privatelink.azure-devices.net
Address: 10.1.1.12

如果发现 FQDN 与相应的 IP 地址不匹配,请修复自定义 DNS 服务器。 如果你没有使用自定义 DNS 服务器,请创建支持票证。

检查是否有多个专用终结点

如果为单个 IoT Central 应用程序创建或删除多个专用终结点,可以覆盖 DNS 配置:

  • 在 Azure 门户中,导航到专用终结点资源。
  • 在“DNS”部分,确保所有必需资源都有对应的条目:IoT 中心、事件中心、DPS 和 IoT Central FQDN。
  • 验证 IP(以及使用此 DNS 区域的其他专用终结点的 IP)是否反映在 DNS 的 A 记录中。
  • 从已删除的较旧专用终结点中删除 IP 的任何 A 记录。

其他故障排除提示

如果在尝试所有这些检查后仍遇到问题,请尝试使用专用终结点故障排除指南

如果所有检查内容都成功,但设备仍无法建立与 IoT Central 的连接,请联系通常负责防火墙和网络的公司安全团队。 潜在的失败原因包括:

  • Azure 虚拟网络配置错误
  • 防火墙设备配置错误
  • Azure 虚拟网络中用户定义的路由配置错误
  • 设备和 IoT Central 资源之间的代理配置错误

后续步骤

现在,你已了解如何为应用程序创建专用终结点,建议接下来执行以下步骤: