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

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

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

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

不能在通过经典部署模型部署的两个虚拟网络之间创建对等互连。 本教程将在同一区域中的虚拟网络之间建立对等互连。 还可以将不同受支持的区域中的虚拟网络对等互连。 建议在对等互连虚拟网络之前让自己熟悉对等互连的要求和约束

在位于不同订阅中的虚拟网络间创建虚拟网络对等互连时,订阅可以与同一 Microsoft Entra 租户相关联。 如果你没有 Microsoft Entra 租户,可以快速创建一个

可使用 Azure 门户Azure CLIAzure PowerShell 创建虚拟网络对等互连。 单击以前的任何工具链接即可直接转到使用所选工具创建虚拟网络对等互连的步骤。

创建对等互连 - Azure 门户

本教程为每个订阅使用不同的帐户。 如果使用的帐户可访问这两个订阅,则可使用相同帐户完成所有步骤,跳过注销门户的步骤,及为虚拟网络分配其他用户权限的步骤。

  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 的电子邮件地址来搜索用户名。 显示的用户列表来自要为其设置对等互连的虚拟网络所在的同一个 Microsoft Entra 租户。 单击出现在列表中的 UserB。

  9. 单击“保存” 。

  10. 以 UserA 的身份注销门户,然后以 UserB 的身份登录。

  11. 单击“+ 新建”,在“在市场中搜索”框中键入“虚拟网络”,然后在搜索结果中单击“虚拟网络” 。

  12. 在显示的“虚拟网络”边栏选项卡中,在“选择部署模型”框中选择“经典”,单击“创建” 。

  13. 在显示的“创建虚拟网络(经典)”边栏选项卡中,输入以下值:

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

  15. 在显示的“myVnetB”边栏选项卡中,单击左侧垂直选项列表中的“属性” 。 复制“资源 ID”,在稍后的步骤中使用。 资源 ID 类似于以下示例:/subscriptions/<Subscription ID>/resourceGroups/myResourceGroupB/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 使用的用户名。 使用 Azure 经典 CLI 和 Azure CLI 完成以下步骤。 可以通过在本地计算机上安装经典 CLICLI 并运行命令来完成这些步骤。

  1. 使用 azure login -e AzureChinaCloud 命令打开命令会话并登录 Azure。

  2. 输入 azure config mode asm 命令,在服务管理模式下运行经典 CLI。

  3. 输入下述经典 CLI 命令以创建虚拟网络(经典):

    azure network vnet create --vnet myVnetB --address-space 10.1.0.0 --cidr 16 --location "China East"
    
  4. 必须使用 bash shell 和 Azure CLI(非经典 CLI)完成其余步骤。

  5. 将以下脚本复制到电脑上的文本编辑器。 将 <SubscriptionB-Id> 替换为订阅 ID。 如果不知道订阅 ID,请输入 az account show 命令。 输出中的 id 值就是订阅 ID。复制修改后的脚本,将其粘贴到 CLI 会话中,然后按 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 资源组中创建了虚拟网络。

  6. 以用户 B 的身份注销 Azure,再以用户 A 的身份在 CLI 中登录。

  7. 创建资源组和虚拟网络(资源管理器)。 复制以下脚本,将其粘贴到 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
    
  8. 在通过不同部署模型创建的两个虚拟网络之间创建虚拟网络对等互连。 将以下脚本复制到电脑上的文本编辑器。 将 <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  /subscriptions/<SubscriptionB-id>/resourceGroups/Default-Networking/providers/Microsoft.ClassicNetwork/virtualNetworks/myVnetB \
      --allow-vnet-access
    
  9. 执行该脚本后,请检查虚拟网络(资源管理器)的对等互连。 复制以下脚本,将其粘贴到 CLI 会话中:

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

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

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

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

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

创建对等互连 - PowerShell

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

  1. 安装最新版本的 PowerShell AzureAz 模块。 如果不熟悉 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>
    

    警告

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

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

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

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

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

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

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

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

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

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

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

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

删除资源

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

Azure 门户

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

Azure CLI

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

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

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

PowerShell

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

    Remove-AzResourceGroup -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>
    

    警告

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

后续步骤