创建虚拟网络对等互连 - 不同的部署模型和不同的订阅

本文介绍如何在通过不同部署模型创建的虚拟网络间创建虚拟网络对等互连。 虚拟网络位于不同订阅。 在两个虚拟网络之间建立对等互连可让不同虚拟网络中的资源以相同的带宽和延迟彼此通信,就像这些资源位于同一个虚拟网络中一样。 了解有关虚拟网络对等互连的详细信息。

创建虚拟网络对等互连的步骤有所不同,具体取决于虚拟网络是否位于相同订阅,以及创建虚拟网络的 Azure 部署模型。 单击下表中的方案,了解如何采用其他方案创建虚拟网络对等互连:

Azure 部署模型 Azure 订阅
均为资源管理器模型 相同
均为资源管理器模型 不同
一个为资源管理器模型,一个为经典模型 相同

不能在通过经典部署模型部署的两个虚拟网络之间创建对等互连。 只能在同一 Azure 区域中的两个虚拟网络之间创建虚拟网络对等互连。 在位于不同订阅的虚拟网络间创建虚拟网络对等互连时,两个订阅均必须与同一 Azure Active Directory 租户相关联。 如果还没有 Azure Active Directory 租户,可快速创建一个。 如需连接均通过经典部署模型创建的虚拟网络,或存在于不同 Azure 区域中的虚拟网络,或是存在于与不同 Azure Active Directory 租户相关联的订阅中的虚拟网络,请使用 Azure VPN 网关连接虚拟网络。

Warning

在通过不同订阅中的不同 Azure 部署模型创建的虚拟网络间创建虚拟网络对等互连目前为预览版。 采用此方案创建的虚拟网络对等互连与在正式发布版中创建的虚拟网络对等互连相比,二者的可用性和可靠性等级可能不同。 不支持采用此方案创建的虚拟网络对等体互连,其功能可能会受限,且可能无法用于所有 Azure 区域。 有关此功能可用性和状态方面的最新通知,请参阅 Azure 虚拟网络更新页。

可使用 Azure 门户、Azure 命令行接口 (CLI) 或 Azure PowerShell 创建虚拟网络对等互连。 单击以前的任何工具链接即可直接转到使用所选工具创建虚拟网络对等互连的步骤。

注册预览版

若要注册预览版,请完成包含要对等的虚拟网络的两个订阅的后续步骤。 唯一可用于注册预览版的工具是 PowerShell。

  1. 安装最新版本的 PowerShell AzureRm 模块。 如果不熟悉 Azure PowerShell,请参阅 Azure PowerShell 概述
  2. 使用 login-azurermaccount 命令启动 PowerShell 会话并登录到 Azure。
  3. 输入以下命令,注册预览版订阅:

    Register-AzureRmProviderFeature `
      -FeatureName AllowClassicCrossSubscriptionPeering `
      -ProviderNamespace Microsoft.Network
    
    Register-AzureRmResourceProvider `
      -ProviderNamespace Microsoft.Network
    

    输入以下命令后,收到的两个订阅的 RegistrationState 输出为 Registered 后,才能完成本文中在门户、Azure CLI 或 PowerShell 部分中进行的步骤:

    Get-AzureRmProviderFeature `
      -FeatureName AllowClassicCrossSubscriptionPeering `
      -ProviderNamespace Microsoft.Network
    

创建对等互连 - Azure 门户

本教程为每个订阅使用不同的帐户。 如果使用的帐户可访问这两个订阅,则可使用相同帐户完成所有步骤,跳过注销门户的步骤,及为虚拟网络分配其他用户权限的步骤。 必须先注册预览版,才能完成以下任意步骤。 若要注册,请完成本文](#register)注册预览版[部分的步骤。 请先确保两个订阅已完成预览版注册,再继续执行其余步骤。

  1. 以 UserA 的身份登录 Azure 门户。 用于登录的帐户必须拥有创建虚拟网络对等互连的必要权限。 有关详细信息,请参阅本文的权限部分。
  2. 依次单击“+ 新建”、“网络”、“虚拟网络”。
  3. 在“创建虚拟网络”边栏选项卡中,为以下设置输入或选择值,然后单击“创建”:
    • 名称myVnetA
    • 地址空间:10.0.0.0/16
    • 子网名称:默认值
    • 子网地址范围:10.0.0.0/24
    • 订阅:选择订阅 A。
    • 资源组:选择“新建”并输入 myResourceGroupA
    • 位置:中国东部
  4. 在门户顶部的“搜索资源”框中键入 myVnetA。 单击出现在搜索结果中的“myVnetA”。 随即显示“myVnetA”虚拟网络的边栏选项卡。
  5. 在显示的“myVnetA”边栏选项卡中,单击左侧垂直选项列表中的“访问控制(IAM)”。
  6. 在显示的“myVnetA - 访问控制(IAM)”边栏选项卡中,单击“+ 添加”。
  7. 在显示的“添加权限”边栏选项卡上的“角色”框中,选择“网络参与者”。
  8. 在“选择”框中,选择 UserB,或者键入 UserB 的电子邮件地址来搜索用户名。 显示的用户列表与要为其设置对等互连的虚拟网络来自同一个 Azure Active Directory 租户。 单击出现在列表中的 UserB。
  9. 单击“保存” 。
  10. 以 UserA 的身份注销门户,然后以 UserB 的身份登录。
  11. 单击“+ 新建”,在“搜索 Marketplace”框中键入“虚拟网络”,并在搜索结果中单击“虚拟网络”。
  12. 在显示的“虚拟网络”边栏选项卡中,在“选择部署模型”框中选择“经典”,单击“创建”。
  13. 在显示的“创建虚拟网络(经典)”边栏选项卡中,输入以下值:

    • 名称myVnetB
    • 地址空间:10.1.0.0/16
    • 子网名称:默认值
    • 子网地址范围:10.1.0.0/24
    • 订阅:选择订阅 B。
    • 资源组:选择“新建”并输入 myResourceGroupB
    • 位置:中国东部
  14. 在门户顶部的“搜索资源”框中键入 myVnetB。 单击出现在搜索结果中的“myVnetB”。 随即显示“myVnetB”虚拟网络的边栏选项卡。

  15. 在显示的“myVnetB”边栏选项卡中,单击左侧垂直选项列表中的“属性”。 复制“资源 ID”,在稍后的步骤中使用。 资源 ID 类似于以下示例:/subscriptions//resourceGroups/myResoureGroupB/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB
  16. 完成 myVnetB 的步骤 5-9,输入步骤 8 中的 UserA
  17. 以 UserB 的身份注销门户,然后以 UserA 的身份登录。
  18. 在门户顶部的“搜索资源”框中键入 myVnetA。 单击出现在搜索结果中的“myVnetA”。 随即显示“myVnet”虚拟网络的边栏选项卡。
  19. 单击“myVnetA”。
  20. 在显示的“myVnetA”边栏选项卡中,单击左侧垂直选项列表中的“对等互连”。
  21. 在显示的“myVnetA - 对等互连”边栏选项卡中,单击“+ 添加”
  22. 在显示的“添加对等互连”边栏选项卡中,输入或选择以下选项,然后单击“确定”:
    • 名称myVnetAToMyVnetB
    • 虚拟网络部署模型:选择“经典”。
    • 我知道我的资源 ID:选中此框。
    • 资源 ID:输入步骤 15 中 myVnetB 的资源 ID。
    • 允许虚拟网络访问:确保选择“启用”。 本教程不使用其他任何设置。 若要了解所有对等互连设置,请阅读管理虚拟网络对等互连
  23. 在上一步骤中单击“确定”后,“添加对等互连”边栏选项卡会关闭,并再次显示“myVnetA - 对等互连”边栏选项卡。 几秒钟后,创建的对等互连将显示在该边栏选项卡中。 所创建的 myVnetAToMyVnetB 对等互连的“对等互连状态”列中列出了“已连接”。 现已建立对等互连。 无需将虚拟网络(经典)对等互连到虚拟网络(资源管理器)。

    在任一虚拟网络中创建的任何 Azure 资源现在都可通过其 IP 地址相互通信。 如果为虚拟网络使用默认的 Azure 名称解析,则虚拟网络中的资源无法跨虚拟网络解析名称。 若要跨对等互连中的虚拟网络解析名称,必须创建自己的 DNS 服务器。 了解如何使用自己的 DNS 服务器进行名称解析

  24. 可选:尽管本教程未介绍如何创建虚拟机,但你可以在每个虚拟网络中创建一个虚拟机并将其相互连接,以验证连接性。

  25. 可选:若要删除在本教程中创建的资源,请完成本文删除资源部分所述步骤。

创建对等互连 - Azure CLI

本教程为每个订阅使用不同的帐户。 如果使用的帐户可访问这两个订阅,则可使用相同帐户完成所有步骤,可跳过注销 Azure 的步骤,并删除创建用户角色分配的脚本行。 将以下所有脚本中的 UserA@azure.com 和 UserB@azure.com 替换为 UserA 和 UserB 使用的用户名。

必须先注册预览版,才能完成以下任意步骤。 若要注册,请完成本文](#register)注册预览版[部分的步骤。 请先确保两个订阅已完成预览版注册,再继续执行其余步骤。

  1. 安装 Azure CLI 1.0,创建虚拟网络(经典)。
  2. 使用 azure login -e AzureChinaCloud 命令打开 CLI 会话并以 UserB 的身份登录到 Azure。
  3. 输入 azure config mode asm 命令,在服务管理模式下运行 CLI 命令。
  4. 输入以下命令创建虚拟网络(经典):

    azure network vnet create --vnet myVnetB --address-space 10.1.0.0 --cidr 16 --location "China East"
    
  5. 必须通过安装的 Azure CLI 2.0.4 或更高版本使用 bash shell 或使用 Azure Cloud Shell 来完成其余步骤。 Azure Cloud Shell 是可直接在 Azure 门户中运行的免费 Bash shell。 它预安装有 Azure CLI 并将其配置为与你的帐户一起使用。 单击下面脚本中的“试用”按钮,此时会打开一个可登录到 Azure 帐户的 Cloud Shell。 有关在 Windows 客户端上运行 CLI 脚本的选项,请参阅在 Windows 中运行 Azure CLI
  6. 将以下脚本复制到电脑上的文本编辑器。 将 <SubscriptionB-Id> 替换为订阅 ID。 如果不知道订阅 ID,请输入 az account show 命令。 输出中的 id 值就是订阅 ID。复制修改后的脚本,将其粘贴到 CLI 2.0 会话中,按 Enter

    az role assignment create \
      --assignee UserA@azure.com \
      --role "Classic Network Contributor" \
      --scope /subscriptions/<SubscriptionB-Id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB
    

    在步骤 4 中创建虚拟网络(经典)后,Azure 在 Default-Networking 资源组中创建了虚拟网络。

  7. 以 UserB 的身份注销 Azure,并以 UserA 的身份在 CLI 2.0 中登录。
  8. 创建资源组和虚拟网络(资源管理器)。 复制以下脚本,将其粘贴到 CLI 会话中,按 Enter

    #!/bin/bash
    
    # Variables for common values used throughout the script.
    rgName="myResourceGroupA"
    location="chinaeast"
    
    # Create a resource group.
    az group create \
      --name $rgName \
      --location $location
    
    # Create virtual network A (Resource Manager).
    az network vnet create \
      --name myVnetA \
      --resource-group $rgName \
      --location $location \
      --address-prefix 10.0.0.0/16
    
    # Get the id for myVnetA.
    vNetAId=$(az network vnet show \
      --resource-group $rgName \
      --name myVnetA \
      --query id --out tsv)
    
    # Assign UserB permissions to myVnetA.
    az role assignment create \
      --assignee UserB@azure.com \
      --role "Network Contributor" \
      --scope $vNetAId
    
  9. 在通过不同部署模型创建的两个虚拟网络之间创建虚拟网络对等互连。 将以下脚本复制到电脑上的文本编辑器。 将 <SubscriptionB-id> 替换为订阅 ID。如果不知道订阅 ID,请输入 az account show 命令。 输出中的 id 值就是订阅 ID。Azure 创建了虚拟网络(经典),该网络是在步骤 4 中在名为 Default-Networking 的资源组中创建的虚拟网络。 将修改后的脚本粘贴到 CLI 会话中,按 Enter

    # Peer VNet1 to VNet2.
    az network vnet peering create \
      --name myVnetAToMyVnetB \
      --resource-group $rgName \
      --vnet-name myVnetA \
      --remote-vnet-id  /subscriptions/<SubscriptionB-id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB \
      --allow-vnet-access
    
  10. 执行该脚本后,请检查虚拟网络(资源管理器)的对等互连。 复制以下脚本,将其粘贴到 CLI 会话中:

    az network vnet peering list \
      --resource-group $rgName \
      --vnet-name myVnetA \
      --output table
    

    该输出会在 PeeringState 列中显示“已连接”。

    在任一虚拟网络中创建的任何 Azure 资源现在都可通过其 IP 地址相互通信。 如果为虚拟网络使用默认的 Azure 名称解析,则虚拟网络中的资源无法跨虚拟网络解析名称。 若要跨对等互连中的虚拟网络解析名称,必须创建自己的 DNS 服务器。 了解如何使用自己的 DNS 服务器进行名称解析

  11. 可选:尽管本教程未介绍如何创建虚拟机,但你可以在每个虚拟网络中创建一个虚拟机并将其相互连接,以验证连接性。

  12. 可选:若要删除在本教程中创建的资源,请完成本文的删除资源中所述的步骤。

创建对等互连 - PowerShell

本教程为每个订阅使用不同的帐户。 如果使用的帐户可访问这两个订阅,则可使用相同帐户完成所有步骤,可跳过注销 Azure 的步骤,并删除创建用户角色分配的脚本行。 将以下所有脚本中的 UserA@azure.com 和 UserB@azure.com 替换为 UserA 和 UserB 使用的用户名。

必须先注册预览版,才能完成以下任意步骤。 若要注册,请完成本文](#register)注册预览版[部分的步骤。 请先确保两个订阅已完成预览版注册,再继续执行其余步骤。

  1. 安装最新版本的 PowerShell AzureAzureRm 模块。 如果不熟悉 Azure PowerShell,请参阅 Azure PowerShell 概述
  2. 启动 PowerShell 会话。
  3. 在 PowerShell 中输入 Add-AzureAccount -Environment AzureChinaCloud 命令,以 UserB 的身份登录到 UserB 的订阅。
  4. 若要通过 PowerShell 创建虚拟网络(经典),必须新建网络配置文件,或修改现有网络配置文件。 了解如何导出、更新和导入网络配置文件。 该文件应包括本教程中使用的虚拟网络的以下 VirtualNetworkSite 元素:

    <VirtualNetworkSite name="myVnetB" Location="China East">
      <AddressSpace>
        <AddressPrefix>10.1.0.0/16</AddressPrefix>
      </AddressSpace>
      <Subnets>
        <Subnet name="default">
          <AddressPrefix>10.1.0.0/24</AddressPrefix>
        </Subnet>
      </Subnets>
    </VirtualNetworkSite>
    

    Warning

    导入更改的网络配置文件会导致订阅中现有虚拟网络(经典)发生变化。 请确保只添加之前的虚拟网络,且不会从订阅中更改或删除任何现有虚拟网络。

  5. 输入 login-azurermaccount 命令,以 UserB 的身份登录到 UserB 的订阅,以使用资源管理器。

  6. 向 UserA 分配访问虚拟网络 B 的权限。将以下脚本复制到电脑上的文本编辑器,并将 <SubscriptionB-id> 替换为订阅 B 的 ID。如果不知道订阅 ID,请输入 Get-AzureRmSubscription 命令查看。 返回的输出中的 Id 值就是订阅 ID。 Azure 创建了虚拟网络(经典),该网络是在步骤 4 中在名为 Default-Networking 的资源组中创建的虚拟网络。 若要执行该脚本,请复制修改后的脚本,将其粘贴到 PowerShell,按 Enter

    New-AzureRmRoleAssignment `
      -SignInName UserA@azure.com `
      -RoleDefinitionName "Classic Network Contributor" `
      -Scope /subscriptions/<SubscriptionB-id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB
    
  7. 以 UserB 的身份注销 Azure,然后输入 login-azurermaccount 命令,以 UserA 的身份登录到 UserA 的订阅。 用于登录的帐户必须拥有创建虚拟网络对等互连的必要权限。 有关详细信息,请参阅本文的权限部分。

  8. 复制以下脚本,将其粘贴到 PowerShell,按 Enter 创建虚拟网络(资源管理器):

    # Variables for common values
      $rgName='MyResourceGroupA'
      $location='chinaeast'
    
    # Create a resource group.
    New-AzureRmResourceGroup `
      -Name $rgName `
      -Location $location
    
    # Create virtual network A.
    $vnetA = New-AzureRmVirtualNetwork `
      -ResourceGroupName $rgName `
      -Name 'myVnetA' `
      -AddressPrefix '10.0.0.0/16' `
      -Location $location
    
  9. 向 UserB 分配访问 myVnetA 的权限。 将以下脚本复制到电脑上的文本编辑器,并将 <SubscriptionA-Id> 替换为订阅 A 的 ID。如果不知道订阅 ID,请输入 Get-AzureRmSubscription 命令查看。 返回的输出中的 Id 值就是订阅 ID。 将修改后的脚本粘贴到 PowerShell,按 Enter 执行该脚本。

    New-AzureRmRoleAssignment `
      -SignInName UserB@azure.com `
      -RoleDefinitionName "Network Contributor" `
      -Scope /subscriptions/<SubscriptionA-Id>/resourceGroups/myResourceGroupA/providers/Microsoft.Network/VirtualNetworks/myVnetA
    
  10. 将以下脚本复制到电脑上的文本编辑器,并将 <SubscriptionB-id> 替换为订阅 B 的 ID。将myVnetA 和 myVNetB 进行对等,复制修改后的脚本,将其粘贴到 PowerShell,按 Enter

    Add-AzureRmVirtualNetworkPeering `
      -Name 'myVnetAToMyVnetB' `
      -VirtualNetwork $vnetA `
      -RemoteVirtualNetworkId /subscriptions/<SubscriptionB-id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB
    
  11. 复制以下脚本,将其粘贴到 PowerShell,按 Enter 查看 myVnetA 的对等互连状态。

    Get-AzureRmVirtualNetworkPeering `
      -ResourceGroupName $rgName `
      -VirtualNetworkName myVnetA `
      | Format-Table VirtualNetworkName, PeeringState
    

    状态为“已连接”。 设置从 myVnetB 到 myVnetA 的对等互连后,状态即会变为“已连接”。

    在任一虚拟网络中创建的任何 Azure 资源现在都可通过其 IP 地址相互通信。 如果为虚拟网络使用默认的 Azure 名称解析,则虚拟网络中的资源无法跨虚拟网络解析名称。 若要跨对等互连中的虚拟网络解析名称,必须创建自己的 DNS 服务器。 了解如何使用自己的 DNS 服务器进行名称解析

  12. 可选:尽管本教程未介绍如何创建虚拟机,但你可以在每个虚拟网络中创建一个虚拟机并将其相互连接,以验证连接性。

  13. 可选:若要删除在本教程中创建的资源,请完成本文的删除资源中所述的步骤。

权限

用于创建虚拟网络对等互连的帐户必须具有所需的角色或权限。 例如,如果对等互连两个名为 myVnetA 和 myVnetB 的虚拟网络,则对于每个虚拟网络,帐户必须分配有以下最低角色或权限:

虚拟网络 部署模型 角色 权限
myVnetA Resource Manager 网络参与者 Microsoft.Network/virtualNetworks/virtualNetworkPeerings/write
经典 经典网络参与者 不适用
myVnetB Resource Manager 网络参与者 Microsoft.Network/virtualNetworks/peer
经典 经典网络参与者 Microsoft.ClassicNetwork/virtualNetworks/peer

详细了解内置角色以及将特定的权限分配到自定义角色(仅限 Resource Manager)。

删除资源

完成本教程后,可能需要删除本教程中创建的资源,以免产生使用费。 删除资源组会删除其中包含的所有资源。

Azure 门户

  1. 在门户的搜索框中,输入 myResourceGroupA。 在搜索结果中,单击“myResourceGroupA”。
  2. 在“myResourceGroupA”边栏选项卡中,单击“删除”图标。
  3. 若要确认删除,请在“键入资源组名称”框中输入 myResourceGroupA,单击“删除”。
  4. 在门户顶部的“搜索资源”框中键入 myVnetB。 单击出现在搜索结果中的“myVnetB”。 随即显示“myVnetB”虚拟网络的边栏选项卡。
  5. 在“myVnetB”边栏选项卡中,单击“删除”。
  6. 若要确认删除,请单击“删除虚拟网络”框中的“是”。

Azure CLI

  1. 使用 CLI 2.0 登录 Azure,通过以下命令删除虚拟网络(资源管理器):

    az group delete --name myResourceGroupA --yes
    
  2. 使用 Azure CLI 1.0 登录 Azure,通过以下命令删除虚拟网络(经典):

    azure config mode asm 
    
    azure network vnet delete --vnet myVnetB --quiet
    

PowerShell

  1. 在 PowerShell 命令提示符处,输入以下命令,删除虚拟网络(资源管理器):

    Remove-AzureRmResourceGroup -Name myResourceGroupA -Force
    
  2. 若要通过 PowerShell 删除虚拟网络(经典),必须修改现有网络配置文件。 了解如何导出、更新和导入网络配置文件。 删除本教程中使用的虚拟网络的以下 VirtualNetworkSite 元素:

    <VirtualNetworkSite name="myVnetB" Location="China East">
      <AddressSpace>
        <AddressPrefix>10.1.0.0/16</AddressPrefix>
      </AddressSpace>
      <Subnets>
        <Subnet name="default">
          <AddressPrefix>10.1.0.0/24</AddressPrefix>
        </Subnet>
      </Subnets>
    </VirtualNetworkSite>
    

    Warning

    导入更改的网络配置文件会导致订阅中现有虚拟网络(经典)发生变化。 请确保只删除之前的虚拟网络,且不会从订阅中更改或删除任何其他现有虚拟网络。

后续步骤