本文介绍如何使用Azure Virtual WAN将virtual network连接到其他租户中的虚拟中心。 如果你的客户端工作负载必须连接到同一网络,但它们位于不同的租户上,则此体系结构非常有帮助。 例如,如下图所示,您可以将一个非 Contoso 的虚拟网络(远程租户)连接到 Contoso 的虚拟中心(父租户)。
在本文中,您将学习如何:
- 在Azure订阅上添加另一个租户作为参与者。
- 将跨租户虚拟网络连接到虚拟中心。
此配置的步骤使用 Azure portal 和 PowerShell 的组合。 但是,此功能本身仅在 PowerShell 和 Azure CLI中提供。
注意
只能通过 PowerShell 或本地计算机上安装的Azure CLI来管理跨租户virtual network连接。 由于 Azure 门户不支持跨租户操作,因此无法通过 Azure 门户或 CloudShell(包括 PowerShell 和 CLI)管理跨租户虚拟网络连接。
开始之前
先决条件
若要使用本文中的步骤,你必须已在环境中设置以下配置:
- 父订阅中的虚拟WAN和虚拟中心
- 在不同(远程)租户的订阅中配置的虚拟网络
确保远程租户中的virtual network地址空间不会与连接到父虚拟中心的任何其他虚拟网络中的其他任何地址空间重叠。
使用 Azure PowerShell
打开 PowerShell。
分配权限
在远程租户中虚拟网络的订阅中,向管理员(管理虚拟枢纽的用户)添加贡献者角色分配。 贡献者权限将赋予管理员修改、访问远程租户中的虚拟网络的能力。
可以使用 PowerShell 或Azure portal来分配此角色。 有关步骤,请参阅以下文章:
运行以下命令,将远程租户订阅和父租户订阅添加到 PowerShell 的当前会话。 如果你已登录到父租户,则需要仅针对远程租户运行此命令。
Connect-AzAccount -Environment AzureChinaCloud -SubscriptionId "[subscription ID]" -TenantId "[tenant ID]"验证角色分配是否成功。 使用父凭据登录到Azure PowerShell,并运行以下命令:
Get-AzSubscription如果权限已成功传播到父租户并已添加到会话中,则父租户和远程租户所拥有的订阅会显示在该命令的输出中。
将虚拟网络连接到中心
在以下步骤中,您将使用命令在两个订阅的上下文之间切换,以将虚拟网络链接到虚拟中心。 根据你自己的环境替换示例值。
请确保处于远程帐户的上下文中:
Select-AzSubscription -SubscriptionId "[remote ID]"创建局部变量以存储要连接到中心节点的虚拟网络的元数据:
$remote = Get-AzVirtualNetwork -Name "[vnet name]" -ResourceGroupName "[resource group name]"连接到父帐户:
Connect-AzAccount -Environment AzureChinaCloud -TenantID "[parent tenant ID]"选择父订阅:
Select-AzSubscription -SubscriptionId "[parent ID]"将virtual network连接到中心:
New-AzVirtualHubVnetConnection -ResourceGroupName "[parent resource group name]" -VirtualHubName "[virtual hub name]" -Name "[name of connection]" -RemoteVirtualNetwork $remote
可以在 PowerShell 或Azure portal中查看新连接:
- 如果连接已成功建立,则来自新建的连接的元数据将会显示在 PowerShell 控制台中。
- 在Azure portal中,转到虚拟中心并选择Connectivity>Virtual Network Connections。 然后,可以查看指向连接的指针。 若要查看实际资源,你需要适当的权限。
场景:将静态路由添加到虚拟网络集线器连接
在以下步骤中,将使用命令将静态路由添加到虚拟中心的默认路由表。 根据你自己的环境替换示例值。
注意
- 运行命令之前,请确保您已获得访问权限,并被授权访问远程订阅。
- 目标前缀可以是一个或多个 CIDR。 对于单个 CIDR,请使用以下格式:
@("10.19.2.0/24")。 对于多个 CIDR,请使用以下格式:@("10.19.2.0/24", "10.40.0.0/16")。
请确保处于父帐户的上下文中:
Select-AzSubscription -SubscriptionId "[parent ID]"在没有特定 IP 地址的情况下,在虚拟中心的默认路由表中添加路由。
获取连接详细信息:
$hubVnetConnection = Get-AzVirtualHubVnetConnection -Name "[HubconnectionName]" -ParentResourceName "[Hub Name]" -ResourceGroupName "[resource group name]"将静态路由添加到虚拟中心的路由表,其下一跃点为虚拟网络连接。 系统会按照以下示例脚本的形式保留路由表中的现有路由。
$routeTable = Get-AzVHubRouteTable -ResourceGroupName "[Resource group name]" -VirtualHubName "[Virtual hub name]" -Name "defaultRouteTable" $Route2 = New-AzVHubRoute -Name "[Route Name]" -Destination "[@("Destination prefix")]" -DestinationType "CIDR" -NextHop $hubVnetConnection.Id -NextHopType "ResourceId" $routeTable.Routes.add($Route2)验证路由表是否具有新路由:
$routeTable.Routes更新中心的当前默认路由表:
Update-AzVHubRouteTable -ResourceGroupName "[resource group name]"-VirtualHubName ["Hub Name"] -Name "defaultRouteTable" -Route @($routeTable.Routes)