VNet 对等互连和服务终结点
使用 VNet 对等互连连接两个 VNet,实现低延迟的专用通信,并使用服务终结点将流量路由到 Azure 服务,而无需经过公共互联网。
VNet 对等互连和服务终结点 是 CoddyKit 上的免费 Azure Fundamentals 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Azure Fundamentals 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Azure Fundamentals 课程共包含 4 节课。
VNet 对等互连的必要性
不同 Azure VNet 中的资源默认无法相互通信,即使它们位于同一个 Azure 区域也是如此。然而,大型组织通常拥有多个 VNet,例如分别用于开发、预发布和生产环境的 VNet,或为不同部门分别设置的 VNet。VNet 对等互连通过 Microsoft 的专用骨干网络直接连接两个 VNet,使两个 VNet 中的资源能够像处于同一网络中一样相互通信,而无需任何流量经过公共互联网,也无需 VPN 网关。
VNet 对等互连的工作原理
VNet 对等互连是一种非传递连接:如果 VNet A 与 VNet B 建立了对等互连,而 VNet B 又与 VNet C 建立了对等互连,则除非在 A 和 C 之间另外创建对等互连,否则 VNet A 无法与 VNet C 通信。对等互连链路是双向的,但必须在两端分别配置:从 A 到 B 创建对等互连不会自动从 B 到 A 创建对等互连。两端配置完成后,对等 VNet 之间的流量会使用Azure backbone,具有低延迟和高带宽,性能类似于单个 VNet 内子网之间的通信。
# Create peering from VNet-A to VNet-B
az network vnet peering create \
--resource-group myRG \
--name A-to-B \
--vnet-name VNet-A \
--remote-vnet VNet-B \
--allow-vnet-access
# Create return peering from VNet-B to VNet-A
az network vnet peering create \
--resource-group myRG \
--name B-to-A \
--vnet-name VNet-B \
--remote-vnet VNet-A \
--allow-vnet-access本地对等互连与全局对等互连
VNet 对等互连有两种范围选项:本地 VNet 对等互连连接同一 Azure 区域中的两个 VNet。流量会保留在该区域内,并产生少量按 GB 计费的传输费用。全局 VNet 对等互连连接不同 Azure 区域中的两个 VNet,流量通过 Microsoft 的全球骨干网络进行路由。这样,东 US 中的资源无需经过公共互联网,即可与西欧中的资源进行专用通信。全局对等互连的传输成本略高于本地对等互连,但仍显著低于通过 VPN 路由,并且可靠性更高。
使用对等互连构建中心辐射拓扑
企业中常见的一种模式是使用 VNet 对等互连实现中心辐射拓扑。中心的中心 VNet 承载共享服务:Azure 防火墙、VPN Gateway、DNS 服务器和监控服务。多个辐射 VNet(每个环境或工作负载一个)分别与中心建立对等互连。通过将所有辐射 VNet 的流量都经由中心防火墙路由,组织无需在每个辐射 VNet 中复杂地管理 NSG,也能获得集中式安全检查。由于对等互连不具有传递性,中心防火墙会使用用户定义路由(UDR)在各辐射 VNet 之间路由流量。
对等互连的地址空间要求
VNet 对等互连有一项关键要求:建立对等互连的 VNet 的地址空间不得重叠。如果 VNet A 使用 10.0.0.0/16,而 VNet B 也使用 10.0.0.0/16,对等互连就会失败,因为 Azure 无法在相同的地址范围之间路由流量。因此,在开始之前,为所有 VNet 以及本地网络规划不重叠的 CIDR 范围非常重要。资源部署后更改 VNet 的地址空间,需要重新创建 VNet,或使用有限的地址空间添加/删除功能。
什么是 Service 终结点
Service 终结点将 VNet 的身份扩展到 Azure Storage、Azure SQL Database、Azure Key Vault 和 Cosmos DB 等 Azure PaaS 服务。当您在子网上启用 Service 终结点后,该子网中的资源发往指定 Azure 服务的流量会通过 Azure 骨干网络路由,而不是经过公共互联网——即使使用的仍然是该服务的公共 IP 地址。之后,该服务可以将访问限制为仅允许来自已启用 Service 终结点的 VNet 中的资源,从而比可通过互联网访问的终结点显著提高安全性。
# Enable Service Endpoint for Storage on a subnet
az network vnet subnet update \
--resource-group myRG \
--vnet-name myVNet \
--name app-tier \
--service-endpoints Microsoft.StorageService 终结点与专用终结点
Service 终结点和专用终结点都能为访问 Azure PaaS 服务提供安全保障,但工作方式不同:Service 终结点——通过 Azure 骨干网络路由流量,但仍使用该服务的公共 IP 地址;Service 终结点位于子网级别。专用终结点——为服务分配来自您的 VNet 的专用 IP;可以完全禁用公共终结点,使服务真正保持专用。专用终结点提供更强的隔离能力,还可以通过 VPN/ExpressRoute 从本地访问。若要获得最高级别的安全性,建议使用专用终结点;Service 终结点则是更简单、成本更低的替代方案。
使用 Service 终结点限制 Storage
在子网上启用 Service 终结点后,您需要将 Azure 服务配置为仅接受来自该子网的连接。对于存储帐户,这意味着在存储帐户的防火墙设置中添加 VNet 规则。完成此更改后,只有指定子网中的 VM 才能访问该存储帐户,来自其他位置的所有互联网流量都会被拒绝。与允许所有互联网流量访问相比,这是一种快速且零成本的方式,可以显著提高存储帐户的安全性,尤其适用于托管敏感应用数据的帐户。
# Restrict storage account to a subnet with service endpoint
az storage account network-rule add \
--resource-group myRG \
--account-name mystorageacct \
--vnet-name myVNet \
--subnet app-tierApp Service 的 VNet 集成
VNet 集成(不同于 VNet 对等互连)允许 Azure App Service 应用向 VNet 内的资源发起出站调用。没有 VNet 集成时,App Service 的出站流量总是经由公共互联网离开,即使调用的是同一 VNet 中的 Azure SQL 或 Azure Cache for Redis 等资源。启用 VNet 集成后,应用的出站流量会路由进入 VNet,并可以访问专用资源。这要求在 VNet 中使用一个专用的委托子网,其地址空间至少为 /28。
使用 NVA 实现传递性对等互连
由于 VNet 对等互连不具有传递性,连接两个以上的 VNet 时,要么在每一对 VNet 之间直接建立对等互连(复杂度为 O(n²)),要么使用中心路由中心。在中心辐射模型中,中心 VNet 包含一个网络虚拟设备(NVA)或 Azure 防火墙,充当各辐射 VNet 之间的传输路由器。每个辐射 VNet 都会添加一个 UDR,将所有流量(0.0.0.0/0 或发往特定辐射 VNet CIDR 的流量)指向中心内 NVA 的 IP。随后,NVA 会将流量转发到正确的目标辐射 VNet,从而通过中心有效提供传递性连接。
需要了解的对等互连限制
VNet 对等互连的主要限制包括:必须使用不重叠的地址空间——在创建 VNet 之前,请谨慎规划 CIDR 范围。不具有传递性——A-B 和 B-C 建立对等互连,并不会连接 A-C。如果 VNet 存在活动的对等互连,则无法调整其地址空间大小,除非暂时删除这些对等互连。网关传输——辐射 VNet 可以通过在对等互连配置中启用“使用远程网关”,使用中心 VNet 中的 VPN 或 ExpressRoute 网关,但这要求先创建中心网关。了解这些限制对于设计可扩展且易于维护的多 VNet 架构非常重要。
快速检查
请测试您对本课 Microsoft Azure 基础知识(AZ-900)概念的理解。
课程回顾
本课您学习了以下内容:VNet 对等互连通过 Microsoft 的骨干网络连接两个 VNet,从而无需 VPN 即可实现专用、低延迟通信,但对等互连不具有传递性;Service 终结点通过骨干网络将子网流量路由到 Azure PaaS 服务,而不会将其暴露给公共互联网;专用终结点是更强的替代方案,它为 PaaS 服务分配专用 IP,因此可以完全禁用公共终结点。接下来,我们将学习 Azure DNS 和 Load Balancer 的基础知识。
常见问题解答
「VNet 对等互连和服务终结点」课时是免费的吗?
是的 — 「VNet 对等互连和服务终结点」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Azure Fundamentals 课程的其余内容,请升级到 CoddyKit PRO。 Azure Fundamentals 课程共包含 4 节课。
「VNet 对等互连和服务终结点」这节课中我会学到什么?
使用 VNet 对等互连连接两个 VNet,实现低延迟的专用通信,并使用服务终结点将流量路由到 Azure 服务,而无需经过公共互联网。 你通过在浏览器中直接运行的动手代码来练习 Azure Fundamentals,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Azure Fundamentals 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Azure Fundamentals 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「VNet 对等互连和服务终结点」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Azure Fundamentals 课中编写并运行代码吗?
能。每节 Azure Fundamentals 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 虚拟网络和子网
- 网络安全组和应用程序安全组
- VNet 对等互连和服务终结点
- Azure DNS 和负载均衡器基础