子网对等互连通过链接特定子网而不是整个虚拟网络地址空间来连接两个虚拟网络。 此方法可精细控制哪些子网参与本地和远程虚拟网络之间的对等互连关系。
子网对等互连为虚拟网络对等互连带来了额外的灵活性。 可以选择特定子网在虚拟网络之间进行对等互联。 你可以指定或输入要在虚拟网络中对等互连的子网列表。 相比之下,常规虚拟网络对等互连则能跨虚拟网络连接整个地址空间和子网。
使用子网对等互连时,以下限制条件适用:
订阅白名单:若要使用此功能,必须注册您希望在其上配置子网对等互连的订阅。 填写此窗体即可注册订阅。
可用性:该功能在所有区域中都可用。 但是,只能通过 Terraform、PowerShell、API、CLI 和 ARM 模板对其进行配置。
先决条件
拥有有效订阅的 Azure 帐户。 创建账户。
若要访问此功能,请通过白名单过程注册订阅。
配置子网对等互连
- 本操作说明文章需要 2.31.0 版或更高版本的 Azure CLI。
在现有的虚拟网络对等互连创建过程中,引入了一些新的可选参数。 本部分介绍每个参数:
新的可选参数
--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]
使用 az group create 在 chinanorth3 位置创建名为 test-rg 的资源组。
az group create \ --name test-rg \ --location chinanorth3使用 az network vnet create 创建两个名为 vnet-1 和 vnet-2 的虚拟网络。
az network vnet create \ --name vnet-1 \ --resource-group test-rg \ --location chinanorth3 \ --address-prefix 10.0.0.0/16 && \ az network vnet create \ --name vnet-2 \ --resource-group test-rg \ --location chinanorth3 \ --address-prefix 10.1.0.0/16使用 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创建所需的子网后,你可能只需要从 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
子网对等互连检查和限制
下图显示了配置子网对等互连时执行的检查以及当前限制。
参与的子网必须是独一无二的,并且必须属于独一无二的地址空间。
- 例如,在虚拟网络 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 地址空间。
任意两个虚拟网络之间只能有一个对等互连链接。 如果要从对等互连链接添加或删除子网,则需要更新相同的对等互连链接。 一组子网之间无法进行多个独占对等互连。
无法更改给定的对等互连链接类型。 如果虚拟网络 A 与虚拟网络 B 之间存在虚拟网络对等互连,并且想要更改该对等互连到子网对等互连,则必须删除现有的虚拟网络对等互连链接,并使用子网对等互连所需的参数创建新的对等互连,反之亦然。参与单个对等链接的子网数量限制为每一侧 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 端)
在当前版本(功能仍隐藏在订阅标志后面),存在从非对等互连子网到对等互连子网的转发路由 - 在当前方案中,虚拟网络 A 和虚拟网络 B 正在进行对等互连,即使虚拟网络 A 端的子网 2 未进行对等互连,它仍然具有到虚拟网络 B 中子网 1 和子网 2 的路由。
在虚拟网络 A 和虚拟网络 B 的子网对等互连中,预期只有来自虚拟网络 A 的子网 1 和子网 3 能在远程虚拟网络 B 中为子网 1 和子网 2 路由。然而,子网 2 和子网 4(在本地端虚拟网络 A 未与远程虚拟网络 B 对等互连)也拥有到远程端(虚拟网络 B)子网 1 和子网 2 的路由。这意味着未对等的子网可以向对等子网中的目标节点发送数据包,尽管这些数据包会被丢弃且无法到达虚拟机。
建议在参与子网上应用 NSG,只允许来自对等互连子网和地址空间的流量通过。 此限制在 GA 后的版本中被移除。
子网对等互连和 AVNM
- 连接组
如果将两个虚拟网络连接在“连接的组”中,并且在这两个虚拟网络上配置了子网对等连接,则子网对等连接将优先,并且非对等子网之间的连接会中断。 - AVNM 连接配置
目前,AVNM 无法区分虚拟网络对等互连和子网对等互连。 如果虚拟网络 A 和虚拟网络 B 之间存在子网对等互连,并且后来 AVNM 用户尝试通过某些 AVNM 连接配置(中心辐射部署)在虚拟网络 A 和虚拟网络 B 之间建立虚拟网络对等互连,AVNM 假定虚拟网络 A 与虚拟网络 B 之间的对等互连已存在,并忽略新的对等互连请求。 使用 AVNM 和子网对等互连时,在这种冲突情境下应谨慎行事。
- 连接组
硬性限制:如果计划使用生产中的功能, 则必须使用基于 Intel 的 V5 SKU/迁移到 V5 SKU(基于 Intel 的第 5 代 VM SKU 或基于 AMDGena 或 Cobalt 100 的 SKU), 以避免由于旧代 SKU 上出现 bug 而导致可能出现的中断。
后续步骤
通过允许在无需互连的子网之间重复使用地址空间,子网对等互连有助于节省 IPv4 空间。 它还可防止通过网关不必要地向本地环境暴露整个虚拟网络地址空间。 使用仅限 IPv6 的对等互连,可以为双堆栈子网或仅限 IPv6 的子网配置对等互连。 浏览这些功能并分享你的反馈和建议。
若要详细了解对等互连,请参阅虚拟网络对等互连。