本文介绍了如何使用 Azure 虚拟 WAN 将虚拟网络连接到另一租户中的虚拟中心。 如果你的客户端工作负载必须连接到同一网络,但它们位于不同的租户上,则此体系结构非常有帮助。 例如,如下图所示,可以将非 Contoso 虚拟网络(远程租户)连接到 Contoso 虚拟中心(父租户)。
在本文中,您将学习如何:
- 添加另一个租户作为你的 Azure 订阅上的参与者。
- 将跨租户虚拟网络连接到虚拟中心。
此配置的步骤是通过将 Azure 门户和 PowerShell 结合使用来执行的。 但是,该功能本身仅通过 PowerShell 和 Azure CLI 提供。
注意
只能通过本地计算机上安装的 PowerShell 或 Azure CLI 管理跨租户虚拟网络连接。 由于 Azure 门户不支持跨租户操作,因此无法通过 Azure 门户或 Azure 门户 CloudShell(包括 PowerShell 和 CLI)管理跨租户虚拟网络连接。
开始之前
先决条件
若要使用本文中的步骤,你必须已在环境中设置以下配置:
- 父订阅中的虚拟 WAN 和虚拟中心
- 在另一租户(远程租户)的订阅中配置的虚拟网络
请确保远程租户中的虚拟网络地址空间不与已连接到父级虚拟中心的任何其他虚拟网络中的任何其他地址空间重叠。
使用 Azure PowerShell
打开 PowerShell。
分配权限
在远程租户的虚拟网络订阅中,将“贡献者”角色分配给管理虚拟集线器的管理员。 参与者权限将使管理员能够修改和访问远程租户中的虚拟网络。
可以使用 PowerShell 或 Azure 门户来分配此角色。 有关步骤,请参阅以下文章:
运行以下命令,将远程租户订阅和父租户订阅添加到 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]"
切换回父帐户:
Select-AzSubscription -SubscriptionId "[parent ID]"
将虚拟网络连接到中心:
New-AzVirtualHubVnetConnection -ResourceGroupName "[parent resource group name]" -VirtualHubName "[virtual hub name]" -Name "[name of connection]" -RemoteVirtualNetwork $remote
可以在 PowerShell 或 Azure 门户中查看新连接:
- 如果连接已成功建立,则来自新建的连接的元数据将会显示在 PowerShell 控制台中。
- 在Azure 门户中,转到虚拟中心,然后选择“连接”“虚拟网络连接”。 然后,可以查看指向连接的指针。 若要查看实际资源,你需要适当的权限。
场景:将静态路由添加到虚拟网络中心连接
在以下步骤中,将使用命令将静态路由添加到虚拟中心的默认路由表。 根据你自己的环境替换示例值。
注意
- 运行命令之前,请确保你拥有访问权限并已获得授权,能够访问远程订阅。
- 目标前缀可以是一个或多个 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)