你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
子网对等互连是指通过链接子网地址空间而不是整个虚拟网络地址空间来连接两个虚拟网络的方法。 它允许用户指定哪些子网应该参与跨本地和远程虚拟网络的对等互连。
子网对等互连是在虚拟网络对等互连的基础之上提高了灵活性。 用户可以选择需要跨虚拟网络进行对等互连的特定子网。 用户可以指定或输入他们希望进行对等互连的虚拟网络中的子网列表。 相比之下,在常规虚拟网络对等互连中,整个虚拟网络中的地址空间/子网都会进行对等互连。
使用子网对等互连时存在以下限制:
将订阅加入允许列表:若要使用此功能,必须注册要在其上配置子网对等互连的订阅。 填写此窗体即可注册订阅。
可用性:此功能在所有区域均可用,但只能通过 Terraform、PowerShell、API、CLI 和 ARM 模板进行配置。
先决条件
具有活动订阅的 Azure 帐户。 免费创建帐户。
按照所述过程注册订阅,将订阅加入允许列表,然后才能访问此功能。
配置子网对等互连
- 本操作说明文章需要 2.31.0 版或更高版本的 Azure CLI。 如果使用 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]
使用 az group create 在“eastus2”位置创建名为“test-rg”的资源组。
az group create \ --name test-rg \ --___location eastus2
使用 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
使用 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 中的 subnet-1 和 vnet-2 中的 subnet-3,而不是将整个虚拟网络都进行对等互连。 为此,我们使用上面描述的可选参数来实现这一点。
为此,我们使用可选参数运行虚拟网络对等互连 create 命令。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 之间存在虚拟网络对等互连,而用户想要将其更改为子网对等互连,则必须删除现有的虚拟网络对等互连链接,并使用子网对等互连所需的参数创建新的对等互连,反之亦然。可以属于对等互连链接的子网数应小于或等于 400(每个本地端和远程端的限制均为 200)。
- 例如,在虚拟网络 A 和虚拟网络 B 的对等互连链接(以蓝色箭头线表示)中,此处参与对等互连的子网的总数为 4(两个来自虚拟网络 A 端,两个来自虚拟网络 B 端)。 该数字应该 <=400。
在现行版本(功能落后于订阅标志)中,存在从非对等互连子网到对等互连子网的转发路由 - 在当前方案中,虚拟网络 A 和虚拟网络 B 进行对等互连,即使虚拟网络 A 端中的子网 2 未进行对等互连,但它在虚拟网络 B 中仍有用于子网 1 和子网 2 的路由。
在虚拟网络 A 和虚拟网络 B 的子网对等互连中,客户希望仅虚拟网络 A 中的子网 1 和子网 3 在远程虚拟网络 B 中有用于子网 1 和子网 2 的路由,但是,子网 2 和子网 4(来自未进行对等互连的本地端虚拟网络 A)在远程端(虚拟网络 B)中也有用于子网 1 和子网 2 的路由,这意味着,非对等互连子网可以将数据包发送到对等互连子网中的目标节点,尽管数据包已被丢弃且未到达虚拟机。
建议用户在参与子网上应用 NSG,以便仅允许来自对等互连子网/地址空间的流量。 未来的正式版本中将取消此限制。
子网对等互连和 AVNM
- 连接组
如果“连接组”中连接了两个虚拟网络,并且这两个虚拟网络上均配置了子网对等互连,则会优先考虑子网对等互连,非对等互连子网之间的连接会被丢弃。 - AVNM 连接配置
目前,AVNM 无法区分虚拟网络对等互连和子网对等互连。 如果虚拟网络 A 和虚拟网络 B 之间存在子网对等互连,并且稍后 AVNM 用户尝试通过某些 AVNM 连接配置(中心辐射型部署)在虚拟网络 A 和虚拟网络 B 之间建立虚拟网络对等互连,则 AVNM 会假定虚拟网络 A 和虚拟网络 B 之间的对等互连已经存在,因此会忽略新的对等互连请求。 建议用户在使用 AVNM 和子网对等互连时,如遇此类冲突情形务必慎重操作
- 连接组
后续步骤
通过子网对等互连,可以在不需要对等互连的子网间重复使用地址空间,从而更好地节省 IPv4 空间。 它还能防止通过网关将整个虚拟网络地址空间毫无必要地暴露给本地环境。 使用仅限 IPv6 的对等互连,可以针对双协议栈子网或仅 IPv6 子网进一步配置通过 IPv6 进行对等互连。 请试用这些功能,若有相关反馈和建议,请告知我们。
若要详细了解对等互连,请参阅虚拟网络对等互连。