将跨租户虚拟网络连接到虚拟 WAN 中心

本文介绍了如何使用 Azure 虚拟 WAN 将虚拟网络连接到另一租户中的虚拟中心。 如果你的客户端工作负载必须连接到同一网络,但它们位于不同的租户上,则此体系结构非常有帮助。 例如,如下图所示,可以将非 Contoso 虚拟网络(远程租户)连接到 Contoso 虚拟中心(父租户)。

Diagram that shows a routing configuration with a parent tenant and a remote tenant.

在本文中,学习如何:

  • 添加另一个租户作为你的 Azure 订阅上的参与者。
  • 将跨租户虚拟网络连接到虚拟中心。

此配置的步骤是通过将 Azure 门户和 PowerShell 结合使用来执行的。 但是,该功能本身仅通过 PowerShell 和 Azure CLI 提供。

备注

只能通过 PowerShell 或 Azure CLI 管理跨租户虚拟网络连接。 无法在 Azure 门户中管理跨租户虚拟网络连接。

准备阶段

先决条件

若要使用本文中的步骤,你必须已在环境中设置以下配置:

  • 父订阅中的虚拟 WAN 和虚拟中心
  • 在另一(远程)租户中的订阅中配置的虚拟网络

请确保远程租户中的虚拟网络地址空间不与已连接到父级虚拟中心的任何其他虚拟网络中的任何其他地址空间重叠。

使用 Azure PowerShell

打开 PowerShell。

分配权限

  1. 在远程租户的虚拟网络订阅中,将“参与者”角色分配添加给管理员(管理虚拟中心的用户)。 参与者权限将使管理员能够修改和访问远程租户中的虚拟网络。

    可以使用 PowerShell 或 Azure 门户来分配此角色。 有关步骤,请参阅以下文章:

  2. 运行以下命令,将远程租户订阅和父租户订阅添加到 PowerShell 的当前会话。 如果你已登录到父租户,则需要仅针对远程租户运行此命令。

    Connect-AzAccount -Environment AzureChinaCloud -SubscriptionId "[subscription ID]" -TenantId "[tenant ID]"
    
  3. 验证角色分配是否成功。 使用父凭据登录到 Azure PowerShell,并运行以下命令:

    Get-AzSubscription
    

    如果权限已成功传播到父租户并已添加到会话中,则父租户和远程租户所拥有的订阅会显示在该命令的输出中。

将虚拟网络连接到中心

在下面的步骤中,将虚拟网络链接到虚拟中心时,需使用命令在两个订阅的上下文之间进行切换。 根据你自己的环境替换示例值。

  1. 请确保处于远程帐户的上下文中:

    Select-AzSubscription -SubscriptionId "[remote ID]"
    
  2. 创建一个本地变量,用于存储要连接到中心的虚拟网络的元数据:

    $remote = Get-AzVirtualNetwork -Name "[vnet name]" -ResourceGroupName "[resource group name]"
    
  3. 切换回父帐户:

    Select-AzSubscription -SubscriptionId "[parent ID]"
    
  4. 将虚拟网络连接到中心:

    New-AzVirtualHubVnetConnection -ResourceGroupName "[parent resource group name]" -VirtualHubName "[virtual hub name]" -Name "[name of connection]" -RemoteVirtualNetwork $remote
    

可以在 PowerShell 或 Azure 门户中查看新连接:

  • 如果连接已成功建立,则来自新建的连接的元数据将会显示在 PowerShell 控制台中。
  • 在Azure 门户中,转到虚拟中心,然后选择“连接”>“虚拟网络连接”。 然后,可以查看指向连接的指针。 若要查看实际资源,你需要适当的权限。

场景:将静态路由添加到虚拟网络中心连接

在以下步骤中,需使用命令将静态路由添加到虚拟中心默认路由表和虚拟网络连接,以指向“下一个跃点”IP 地址(即 NVA 设备)。 根据你自己的环境替换示例值。

备注

  • 运行命令之前,请确保你有访问权限并已经过授权,可以访问远程订阅。
  • 目标前缀可以是一个或多个 CIDR。 对于单个 CIDR,请使用以下格式:@("10.19.2.0/24")。 对于多个 CIDR,请使用以下格式:@("10.19.2.0/24", "10.40.0.0/16")
  1. 请确保处于父帐户的上下文中:

    Select-AzSubscription -SubscriptionId "[parent ID]" 
    
  2. 在没有特定 IP 地址的情况下,在虚拟中心的默认路由表中添加路由。

    1. 获取连接详细信息:

      $hubVnetConnection = Get-AzVirtualHubVnetConnection -Name "[HubconnectionName]" -ParentResourceName "[Hub Name]" -ResourceGroupName "[resource group name]"
      
    2. 将静态路由添加到虚拟中心的路由表。 (下一个跃点是虚拟网络连接。)

      $Route2 = New-AzVHubRoute -Name "[Route Name]" -Destination "[@("Destination prefix")]" -DestinationType "CIDR" -NextHop $hubVnetConnection.Id -NextHopType "ResourceId"
      
    3. 更新中心的当前默认路由表:

      Update-AzVHubRouteTable -ResourceGroupName "[resource group name]"-VirtualHubName ["Hub Name"] -Name "defaultRouteTable" -Route @($Route2)
      
    4. 更新虚拟网络连接中的路由,以将下一个跃点指定为 IP 地址。

      备注

      路由名称应与之前添加静态路由时使用的路由名称相同。 否则,将在路由表中创建两个路由:一个没有 IP 地址的路由,以及一个具有 IP 地址的路由。

      $newroute = New-AzStaticRoute -Name "[Route Name]"  -AddressPrefix "[@("Destination prefix")]" -NextHopIpAddress "[Destination NVA IP address]"
      
      $newroutingconfig = New-AzRoutingConfiguration -AssociatedRouteTable $hubVnetConnection.RoutingConfiguration.AssociatedRouteTable.id -Id $hubVnetConnection.RoutingConfiguration.PropagatedRouteTables.Ids[0].id -Label @("default") -StaticRoute @($newroute)
      
      Update-AzVirtualHubVnetConnection -ResourceGroupName $rgname -VirtualHubName "[Hub Name]" -Name "[Virtual hub connection name]" -RoutingConfiguration $newroutingconfig
      
      

      此更新命令将删除路由表中以前的手动配置路由。

    5. 验证是否已将静态路由建立到下一个跃点 IP 地址。

      Get-AzVirtualHubVnetConnection -ResourceGroupName "[Resource group]" -VirtualHubName "[virtual hub name]" -Name "[Virtual hub connection name]"
      

疑难解答

  • 验证 $remote 中的元数据(来自前面的部分)是否与 Azure 门户中的信息相匹配。
  • 可以使用远程租户资源组的 IAM 设置或使用 Azure PowerShell 命令 (Get-AzSubscription) 来验证权限。
  • 请确保将资源组的名称或任何其他特定于环境的变量用引号引起来(例如 "VirtualHub1""VirtualNetwork1")。

后续步骤