你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何配置子网对等互连

子网对等互连通过链接特定子网而不是整个虚拟网络地址空间,连接两个虚拟网络。 此方法可精细控制哪些子网参与本地和远程虚拟网络之间的对等互连关系。

子网对等互连为虚拟网络对等互连带来了额外的灵活性。 可以选择特定子网在虚拟网络之间进行对等互连。 你可以指定或输入要在虚拟网络中对等互连的子网列表。 相比之下,常规虚拟网络对等互连将整个地址空间和子网连接到虚拟网络中。

使用子网对等互连时,以下限制条件适用:

  • 订阅允许列表:若要使用此功能,必须注册你希望在其上配置子网对等互连的订阅。 填写此窗体即可注册订阅。

  • 可用性:该功能在所有区域中都可用。 但是,只能通过 Terraform、PowerShell、API、CLI 和 ARM 模板对其进行配置。

先决条件

  • 具有活动订阅的 Azure 帐户。 免费创建帐户

  • 若要访问此功能,请通过白名单过程注册订阅。

配置子网对等互连

  • 本文需要 Azure CLI 版本 2.31.0 或更高版本。 如果使用 Azure Cloud Shell,则已安装最新版本。

在现有的虚拟网络对等互连创建过程中,引入了一些新的可选参数。 本部分介绍每个参数:

新的可选参数

  • --peer-complete-vnet
    选择子网对等互连。 默认情况下,此参数的值设置为 true,这意味着整个虚拟网络实例都进行对等互连(包括所有地址空间和子网)。 若要使用子网对等互连,请将此参数设置为 false。
    接受的值:0、1、f、false、n、no、t、true、y、yes
    默认值:True

  • --local-subnet-names
    在启用子网对等互连时,输入要与远端子网对等互连的本地子网名称,将 peer-complete-vnet 参数设置为 0。

  • --remote-subnet-names
    在启用子网对等互连时,输入要与本地子网对等互连的远程子网名称,将 peer-complete-vnet 参数设置为 0。

  • --enable-only-ipv6
    仅在 IPv6 地址空间上配置子网对等互连(适用于双堆栈子网)。 默认情况下,此参数的值设置为 false。 默认情况下,对等互连通过 IPv4 地址完成。 如果设置为 true,则在双协议栈子网中通过 IPv6 完成对等互连。
    接受的值:0、1、f、false、n、no、t、true、y、yes

az network vnet peering create --name
                               --remote-vnet
                               --resource-group
                               --vnet-name
                               [--allow-forwarded-traffic {0, 1, f, false, n, no, t, true, y, yes}]
                               [--allow-gateway-transit {0, 1, f, false, n, no, t, true, y, yes}]
                               [--allow-vnet-access {0, 1, f, false, n, no, t, true, y, yes}]
                               [--no-wait {0, 1, f, false, n, no, t, true, y, yes}]
                               [--use-remote-gateways {0, 1, f, false, n, no, t, true, y, yes}]
	                           [--peer-complete-vnet {0, 1(default), f, false, n, no, t, true, y, yes}]
                               [--enable-only-ipv6 {0(default), 1, f, false, n, no, t, true, y, yes}]  
                               [--local-subnet-names] 
                               [--remote-subnet-names] 

  1. 使用 az group create 在“eastus2”位置创建名为“test-rg”的资源组。

    az group create \
        --name test-rg \
        --location eastus2
    
  2. 使用 az network vnet create 创建两个名为 vnet-1 和 vnet-2 的虚拟网络。

    az network vnet create \
        --name vnet-1 \
        --resource-group test-rg \
        --location eastus2 \
        --address-prefix 10.0.0.0/16 && \
    az network vnet create \
        --name vnet-2 \
        --resource-group test-rg \
        --location eastus2 \
        --address-prefix 10.1.0.0/16
    
  3. 使用 az network vnet subnet create 创建具有多个前缀的子网。

    az network vnet subnet create \
    --name subnet-1 \
    --resource-group test-rg \
    --vnet-name vnet-1 \
    --address-prefix 10.0.1.0/24 && \
    az network vnet subnet create \
        --name subnet-2 \
        --resource-group test-rg \
        --vnet-name vnet-1 \
        --address-prefix 10.0.2.0/24 && \
    az network vnet subnet create \
        --name subnet-3 \
        --resource-group test-rg \
        --vnet-name vnet-2 \
        --address-prefix 10.1.1.0/24 && \
    az network vnet subnet create \
        --name subnet-4 \
        --resource-group test-rg \
        --vnet-name vnet-2 \
        --address-prefix 10.1.2.0/24
    
  4. 创建所需的子网后,你可能只需要从 vnet-1 连接子网 1,从 vnet-2 连接子网 3,而不是对等互连整个虚拟网络。 若要实现此配置,请使用前面所述的可选参数。
    使用可选参数运行虚拟网络对等互连创建命令。

    az network vnet peering create --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --remote-vnet vnet-2
                                   --allow-forwarded-traffic 
                                   --allow-gateway-transit 
                                   --allow-vnet-access 
                                   --peer-complete-vnet false
                                   --local-subnet-names subnet-1
                                   --remote-subnet-names subnet-3
    az network vnet peering create --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-vnet vnet-1
                                   --allow-forwarded-traffic 
                                   --allow-gateway-transit 
                                   --allow-vnet-access 
                                   --peer-complete-vnet false
                                   --local-subnet-names subnet-3
                                   --remote-subnet-names subnet-1
    

    将新子网添加到对等互连

    az network vnet peering update --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --local-subnet-names subnet-1 subnet-2
    az network vnet peering update --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-subnet-names subnet-3 subnet-4
    

    从对等互连中移除子网

    az network vnet peering update --name vnet-1_to_vnet-2
                                   --resource-group test-rg
                                   --vnet-name vnet-1
                                   --local-subnet-names subnet-1
    az network vnet peering update --name vnet-2_to_vnet-1
                                   --resource-group test-rg
                                   --vnet-name vnet-2
                                   --remote-subnet-names subnet-3
    

    同步对等互连

    az network vnet peering sync --name vnet-1_to_vnet-2
                                 --resource-group test-rg
                                 --vnet-name vnet-1
    az network vnet peering sync --name vnet-2_to_vnet-1
                                 --resource-group test-rg
                                 --vnet-name vnet-2
    

    显示对等互连

    az network vnet peering show --name vnet-1_to_vnet-2
                                 --resource-group test-rg
                                 --vnet-name vnet-1
    az network vnet peering show --name vnet-2_to_vnet-1
                                 --resource-group test-rg
                                 --vnet-name vnet-2
    

子网对等互连检查和限制

下图显示了配置子网对等互连时执行的检查以及当前限制。

显示子网对等互连的关系图。

  1. 参与的子网必须是独一无二的,并且必须属于独一无二的地址空间

    • 例如,在虚拟网络 A 和虚拟网络 C 对等互连(如图中所示,由黑箭头线表示)中,虚拟网络 A 无法通过子网 1、子网 2 和子网 3 与虚拟网络 C 内的任何子网建立子网对等关系,因为虚拟网络 A 的这些子网属于 10.1.0.0/16 地址空间,而该地址空间也存在于虚拟网络 C 中。
    • 但是,虚拟网络 A 的子网 4 (10.0.1.0/24) 可以与虚拟网络 C 中的子网 5 (10.6.1.0/24) 进行子网对等互连,因为这些子网在虚拟网络中是独一无二的,并且属于虚拟网络中独一无二的地址空间。 子网 4 属于虚拟网络 A 中的 10.0.0.0/16 地址空间,子网 5 属于虚拟网络 C 中的 10.6.0.0/16 地址空间。
  2. 任意两个虚拟网络之间只能有一个对等互连链接。 如果要从对等互连链接添加或删除子网,则需要更新相同的对等互连链接。 一组子网之间无法进行多个独占对等互连
    无法更改给定的对等互连链接类型。 如果虚拟网络 A 与虚拟网络 B 之间存在虚拟网络对等互连,并且想要更改该对等互连到子网对等互连,则必须删除现有的虚拟网络对等互连链接,并使用子网对等互连所需的参数创建新的对等互连,反之亦然。

  3. 参与单个对等互连链接的子网数量限制为每端 200 个(200 来自本地虚拟网络,200 来自远程虚拟网络)。 此外,对于给定的虚拟网络,通过所有对等互连链接可以连接的子网总数不应超过1,000个

    • 例如,在虚拟网络 A 和虚拟网络 B 的对等互连(由蓝色箭头所示)中,参与 VNET A 对等互连的子网总数应为<=200,同样,VNET B 端的子网总数也应为<=200。
    • 所有支路(VNET B 和 VNET C)上可以与 VNET A 对等互连的子网总数应该为 <= 1000。 在上图中,总共有 3 个(2 个来自 VNET B 端,1 个来自 VNET C 端)
  4. 在当前版本(功能仍隐藏在订阅标志后面),存在从非对等互连子网到对等互连子网的转发路由 - 在当前方案中,虚拟网络 A 和虚拟网络 B 正在进行对等互连,即使虚拟网络 A 端的子网 2 未进行对等互连,它仍然具有到虚拟网络 B 中子网 1 和子网 2 的路由。

    • 在虚拟网络 A 和虚拟网络 B 的子网对等互连中,预期只有来自虚拟网络 A 的子网 1 和子网 3 能在远程虚拟网络 B 中为子网 1 和子网 2 路由。然而,子网 2 和子网 4(在本地端虚拟网络 A 未与远程虚拟网络 B 对等互连)也拥有到远程端(虚拟网络 B)子网 1 和子网 2 的路由。这意味着未对等的子网可以向对等子网中的目标节点发送数据包,尽管这些数据包会被丢弃且无法到达虚拟机。

    • 建议在参与子网上应用 NSG,只允许来自对等互连子网和地址空间的流量通过。 此限制在 GA 后的版本中被移除。

  5. 子网对等互连和 AVNM

    • 连接组
      如果在“已连接组”中连接了两个虚拟网络,并且你在这两个虚拟网上配置了子网对等互连,则子网对等互连将优先进行,非对等互连子网之间的连接将断开。
    • AVNM 连接配置
      目前,AVNM 无法区分虚拟网络对等互连和子网对等互连。 如果虚拟网络 A 和虚拟网络 B 之间存在子网对等互连,并且后来 AVNM 用户尝试通过某些 AVNM 连接配置(中心辐射部署)在虚拟网络 A 和虚拟网络 B 之间建立虚拟网络对等互连,AVNM 假定虚拟网络 A 与虚拟网络 B 之间的对等互连已存在,并忽略新的对等互连请求。 使用 AVNM 和子网对等互连时,在这种冲突情境下应谨慎行事。
  6. 对于生产部署,请确保使用 V5 SKU(第 5 代 VM SKU)或迁移到它们,以防止旧代 SKU 可能出现的潜在中断。

后续步骤

子网对等互连通过允许你在不需要连接的子网之间重用地址空间来帮助你节省 IPv4 空间。 它还可防止通过网关不必要地向本地环境暴露整个虚拟网络地址空间。 使用仅限 IPv6 的对等互连,可以为双堆栈子网或仅限 IPv6 的子网配置对等互连。 浏览这些功能并分享你的反馈和建议。

若要详细了解对等互连,请参阅虚拟网络对等互连