Azure虚拟网络和子网

Azure虚拟网络(VNet)和子网是每个Azure网络的基础构建基块。 本文介绍了 VNet 如何提供隔离、子网如何组织资源,以及如何为生产工作负荷调整网络大小和结构。

本文介绍的内容

本文介绍 VNet 隔离边界、子网大小规划和保留地址、用于 Azure 防火墙 和应用程序网关等服务的专用平台子网、VNet 对等互连,以及常见的网络布局模式。

谁需要本文

如果你符合以下情况,请阅读本文:

  • 正在将第一个工作负荷部署到Azure,并且需要在创建资源之前了解网络的工作原理。
  • 规划多工作负荷环境,需要确定要创建的 VNet 和子网数。
  • 正在将本地工作负荷迁移到Azure,并且需要了解Azure网络与物理网络有何不同。
  • 需要为Azure平台服务(如 Azure 防火墙、VPN 网关 或 Azure Kubernetes 服务 (AKS))正确调整子网大小。
  • 想要了解何时将工作负荷分成不同的 VNet,而不是将它们保留在同一 VNet 中。

直接转移焦点:在Azure中镜像本地子网分段。 将现有 VLAN 和安全区域映射到子网,使地址空间与团队已运行的范围保持一致,并慷慨地调整子网大小,以便在迁移期间不必重新寻址。

现代化重点: 围绕平台服务和自动化设计子网。 为 AKS、专用终结点和专用平台服务合理规划子网规模,并规划使用 Azure Virtual Network Manager 在多个 VNet 之间应用一致的配置。

跨云焦点:在创建任何 VNet 之前,在Azure、AWS 和 Google Cloud 之间规划不重叠的地址空间。 预留不会与现有 VPC 冲突的 CIDR 范围,以便在无需 NAT 的情况下通过对等连接或 VPN 连接云网络。

Azure服务和功能

以下服务和功能构成了Azure中的虚拟网络基础:

服务或功能 它提供的内容 何时使用它
Azure 虚拟网络 (VNet) Azure中的隔离专用网络。 所有Azure网络都从此处开始。 默认情况下,同一 VNet 中的资源可以通信;除非显式连接这些资源,否则不同 VNet 中的资源无法通信。 始终:每个需要网络连接的工作负载都需要一个 VNet。
子网 VNet 地址空间的分区。 子网是网络安全组(NSG)和路由表关联的范围。 始终:按函数或安全边界将工作负荷组件组织到子网中。
VNet 对等互连 同一区域或跨区域两个 VNet 之间的低延迟专用连接。 流量保持在微软主干网络内。 对等互连不是传递性的;每个对等互连都是直接连接。 当单独的 VNet 中的资源需要通信时。 有关跨区域对等互连,请参阅 跨区域连接
子网对等互连(预览版) 特定子网之间的对等互连,而非整个虚拟网络。 提供对哪些子网参与对等互连关系的精细控制。 当您需要在不同 VNet 的特定子网之间进行精细化对等互连控制时。 请参阅 约束 部分。
路由表/用户定义的路由(UDR) 重写Azure中的默认系统路由,以控制流量的发送位置。 在子网级别应用。 当您需要强制使流量通过防火墙或网络虚拟设备(NVA)时。 中心辐射型出站流量控制所必需。 请参阅Azure 防火墙设计中心辐射型拓扑
Azure Virtual Network Manager (AVNM) 集中创建、管理网络配置,并将其应用到跨订阅的虚拟网络。 在多个订阅中管理多个 VNet 时。 请参阅 集中式网络管理

显示 VNet 的示意图,其中包括用于 Web、应用和数据层的工作负载子网,以及用于网关、防火墙和 Bastion 的专用平台子网

如何选择

什么是虚拟网络?

虚拟网络(VNet)是Azure中软件定义的隔离网络。 将其视为Azure中的专用网络。 与使用电缆、交换机和路由器的物理网络不同,VNet 完全是软件定义的。 创建它,为其分配地址空间,并将资源部署到其中。

主要特征:

  • 区域范围:VNet 存在于单个Azure区域中。 该 VNet 中的所有资源都必须位于同一区域。 VNet 确实跨越该区域内的可用性区域。
  • 默认情况下隔离:除非显式创建连接(对等互连或 VPN),否则一个 VNet 中的资源无法与其他 VNet 中的资源通信。
  • 默认内部连接:同一 VNet 中的资源默认可以通过Azure提供的系统路由相互通信。

什么是子网?

子网是 VNet 中的一系列 IP 地址。 子网可让您:

  • 按工作负荷组件划分网络(例如 Web 层、应用程序层、数据层)。
  • 应用安全规则: NSG 附加到子网级别以筛选流量。
  • 控制路由: 路由表附加到子网级别以定向流量。

Azure在每个子网中保留五个 IP 地址:前四个地址和最后一个地址。 例如,在 /24 子网(256 个地址)中,只有 251 个可用。 将此预留量计入容量估算中。

示例:三层应用程序

典型的三层 Web 应用程序使用三个子网来分隔关注点并应用不同的安全规则:

子网 CIDR 范围 Purpose 示例资源
web-subnet 10.0.1.0/24 接受来自 Internet 或应用程序网关的入站 HTTP/HTTPS 流量的前端 Web 服务器 Azure 应用服务环境、运行 NGINX 的虚拟机规模集
app-subnet 10.0.2.0/24 中间层应用程序逻辑。 仅接受来自 Web 子网的流量。 Azure Functions(VNet 集成),运行业务逻辑的 VM
data-subnet 10.0.3.0/24 数据存储库。 仅接受来自应用子网的流量。 无直接 Internet 访问。 Azure SQL 托管实例、Azure SQL 数据库或 Cosmos DB 的专用终结点

此布局允许将 NSG 应用到每个子网,该子网将流量限制为仅该层所需的流量。 Web 子网允许入站 HTTPS(端口 443)。 应用子网仅允许来自 Web 子网 IP 范围的入站流量。 数据子网仅允许来自应用子网 IP 范围的入站流量。

对于基于 AKS 的现代化架构模式,在部署 Azure CNI Overlay 时,可以使用 aks-nodes 子网(例如 10.0.4.0/24)作为群集节点池的子网。 在该模型中,只有节点使用子网中的 VNet IP 地址。 Pod 使用单独的覆盖网络 CIDR,这使你能够将节点子网保持得比平面网络 AKS 设计更小。

常见模式

以下子网布局涵盖最常见的Azure部署方案:

图案 Subnets 何时使用
简单 Web 应用 web + data 具有前端和数据库的两层应用程序。 复杂性最低。
三层企业 web + app + data + management 具有不同层的传统企业工作负荷和用于管理的跳转盒或 Bastion 子网。
具有共享服务的 AKS aks-nodes + aks-ingress + appgw + shared 具有专用入口控制器子网和 WAF 应用程序网关的 Kubernetes 工作负荷。
中心辐射出口 AzureFirewallSubnet + GatewaySubnet + AzureBastionSubnet + management 中心辐射型拓扑中的中心 VNet。 辐射 VNet 的共享服务通过路由流量。 请参阅 中心辐射拓扑
数据工作负荷 compute + data + private-endpoints + management 分析和数据平台工作负载,其中面向存储和数据库的专用终结点需要各自独立的子网,以便更清晰地规划 IP。

有多少个 VNet 和子网?

指导原则非常简单: 每个应用程序使用一个虚拟网络每个组件(层)使用一个子网 。 此默认值使每个工作负荷保持隔离,使层之间的流量易于控制网络安全组,并留出增长空间。 在此基础上,再根据共享服务、隔离要求和规模进行调整。

使用此决策表来确定 VNet 和子网策略:

你的情况 建议的方法
单个工作负荷、单个团队、不需要共享服务 一个 VNet,其中每个应用程序组件分别使用一个子网(Web、应用程序逻辑、数据)。 请参阅 单工作负荷拓扑
共享网关或防火墙的多个独立工作负荷 用于共享服务的中心 VNet + 每个工作负载对应一个辐射式 VNet。 请参阅 中心辐射拓扑
工作负荷之间的严格隔离(爆炸半径、符合性要求) 每个工作负载对应一个 VNet,彼此之间没有对等互连。
包含多个订阅和区域的大规模环境 具有自动化中心管理功能的 Azure 虚拟 WAN 请参阅虚拟 WAN拓扑

专用子网规模确定参考

许多Azure平台服务需要具有特定名称和最小大小的自己的专用子网。 下图显示了专用平台子网的命名要求和最小大小:

显示五个专用平台子网(包括网关、防火墙、堡垒机和路由服务器)最小子网大小的示意图

规划地址空间时使用此表:

Azure服务 最小子网大小 所需的子网名称 注释
Azure 防火墙 /26 (59 个可用 IP) AzureFirewallSubnet 所有防火墙 SKU 均需要此项。 请参阅Azure 防火墙设计
VPN 网关 /27 (27 个可用 IP) GatewaySubnet Azure 建议使用 /27 或更大的子网,以预留扩展余量。
Azure Bastion /26 (59 个可用 IP) AzureBastionSubnet 2021 年 11 月之后创建的所有部署的最小值为 /26。
应用程序网关 v2 推荐使用 /24(251 个可用 IP 地址) 名称非必填 强烈建议使用 /24 网段,以支持自动扩缩容。 最小值按以下公式计算(实例数 + 5 个保留值 + 1 个专用前端 IP 地址)。
应用服务环境 /24(生产),/23(最大规模) 名称非必填 缩放会占用子网中的 IP 地址。 如果计划扩展到接近 200 个实例的上限,请使用 /23。
Azure 路由服务器 /26 (59 个可用 IP) RouteServerSubnet 与 NVA 进行 BGP 路由交换所必需的。
Azure DNS 专用解析程序 每个终结点子网至少为 /28 专用入站子网和出站子网 入站和出站终结点分别需要独立的子网。 无法与其他资源共享。
AKS (Azure Kubernetes 服务) 基于公式(依赖于 CNI) 名称非必填 请参阅 AKS 大小调整指南

注释

专用终结点使用现有子网中的 IP 地址。 它们不需要专用子网。 将此 IP 地址消耗纳入子网规模规划中。 有关详细的 IP 规划,请参阅 IP 地址规划

AKS 子网大小调整

AKS 子网大小取决于容器网络接口(CNI)插件选择。 没有统一的最小尺寸:

  • Azure CNI 叠加网络:子网只需容纳节点,因为 Pod 使用单独的专用 CIDR(无类别域间路由)网段。 与平面网络相比,可以接受小得多的子网。
  • Azure CNI(平面网络):子网必须同时容纳节点和 Pod。 公式: (nodes + surge) × (max_pods + 1). 对于具有 50 个或更多节点的群集,通常为 /21 或更大。
  • Kubenet:只有节点会占用 VNet 子网 IP 地址。 Pod 会获得集群内部 IP 地址。

有关各个 CNI 选项的规模估算公式,请参阅 为 AKS 群集规划 IP 寻址

子网对等互连约束

子网对等互连在 VNet 之间连接特定子网,而不是整个地址空间。 此方法提供对哪些子网参与对等互连关系的精细控制。

Important

子网对等互连当前处于预览阶段,并有以下限制:

  • 要求将订阅添加到已批准的列表(而不是自助注册)
  • 仅限 CLI、ARM 模板、Terraform 或 PowerShell(无门户支持)
  • 为避免较旧一代 SKU 上的已知缺陷,生产环境中必须使用基于 Intel 的 V5 SKU(或基于 AMD Genoa/Cobalt 100 的 SKU);有关当前硬件要求,请参阅 配置子网对等互连
  • 每个对等互连链路的每一端最多支持 200 个子网
  • 每个 VNet 的所有对等互连链路中的子网总数最多为 1,000 个
  • 子网必须属于唯一的非重叠地址空间

有关当前限制和注册要求,请参阅 配置子网对等互连

注释

Azure Virtual Network Manager(AVNM)无法区分子网对等互连和 VNet 对等互连。 如果使用 AVNM 管理对等互连配置,请注意,子网级对等互连关系在 AVNM 中显示为标准 VNet 对等互连。

设计注意事项

直接迁移 VNet 和子网设计重点

  • 重现本地环境中的分段:将每个 VLAN 或安全区域映射到一个子网,以便在尽量减少重新设计的情况下,延续现有的防火墙边界和运维职责归属。
  • 使用空余空间调整子网大小。 迁移后重新编址会造成中断,因此应分配比当前主机数量所需更大的 CIDR 范围,以便为未来增长留出空间,并考虑 Azure 每个子网保留的五个地址。
  • 尽可能使Azure地址空间与本地范围保持一致,以简化路由,并在通过 VPN 网关 或 ExpressRoute 进行连接时避免重叠。
  • 默认为每个迁移的应用程序一个 VNet,每个层有一个子网。 该设计仿照了典型的三层本地部署架构,使迁移过程更具可预测性。

实现 VNet 和子网设计现代化的重点

  • 首先围绕平台服务设计子网:为 Azure 防火墙、Application Gateway 和 Bastion 配置专用子网,并根据所选的 CNI 为 AKS 配置大小合适的子网。
  • 使用 AKS 的 Azure CNI Overlay 可让节点子网保持较小规模,因为 Pod 地址是从单独的 Overlay CIDR 网段中分配的,而不是来自 VNet 地址空间。
  • 为专用终结点保留专用子网,以便在采用更多Azure PaaS 服务时,IP 消耗保持可预测性。
  • 尽早采用 Azure Virtual Network Manager,以便随着跨订阅的 VNet 数量不断增加,仍能统一应用网络组、连接和安全配置。

跨云 VNet 和子网设计重点

  • 在创建任何 VNet 之前建立全局地址计划。 为 Azure 预留与现有 AWS VPC 或 Google Cloud VPC 网络不冲突的非重叠 CIDR 块。 对于路由 VPN 或互连,此预留是必需的。
  • 将每个云的网络基元映射到Azure:AWSVP 或 Google CloudVP 网络对应于Azure VNet,安全组对应于 NSG。
  • 为跨云连接组件预留子网空间,例如用于 VPN 网关 的 GatewaySubnet 或 Azure 虚拟 WAN 使用的枢纽,以便传输基础设施有扩展空间。
  • 标准化跨云的子网命名和标记,以便运营团队在排查多云流量问题时可以关联等效层。

先决条件

在设计虚拟网络和子网布局之前,请确保具备:

  • Azure 订阅:具有创建网络资源权限的有效 Azure 订阅(需具备“网络参与者”角色或更高级别的角色)。
  • 资源组:目标区域中要包含 VNet 资源的资源组。
  • 区域决策:根据用户、符合性要求和服务可用性,选择主要Azure区域。
  • 地址空间规划:确定一个与本地部署网络或你打算建立对等互连的其他 VNet 不重叠的 IP 地址范围(CIDR 块)。 有关指南,请参阅 IP 地址规划

安全注意事项

虚拟网络和子网是网络分段的第一层。 应用以下安全做法:

  • 网络安全组(NSG):将 NSG 与每个子网相关联,以筛选入站和出站流量。 定义特定于每个子网角色的允许规则,并默认拒绝其他所有规则。 有关详细指南,请参阅 网络安全组和应用程序安全组
  • 使用 UDR 实现强制隧道:如果合规要求规定所有发往 Internet 的流量都必须通过本地部署的检查设备或云防火墙,请使用包含用户定义路由的路由表来覆盖默认的 Internet 路由。 请参阅出站连接和出口连接
  • 子网隔离:将具有不同信任级别的资源放置在单独的子网中。 例如,将数据库保留在仅允许来自应用程序层子网的入站流量的子网中。 如果攻击者入侵一个组件,则此分离会限制横向移动。
  • 平台服务的专用子网:许多Azure平台服务(Azure 防火墙、应用程序网关、Bastion)部署到专用子网中。 这种隔离可确保平台服务路由和安全规则不会干扰工作负荷子网。

NSG 和子网的交互

将 NSG 与子网相关联时,NSG 规则将应用于该子网中的所有资源。 了解这些交互行为:

  • 累积评估:如果 VM 的 NIC 也具有 NSG,则Azure评估子网级 NSG 和 NIC 级 NSG。 对于入站流量,Azure首先评估子网 NSG,然后评估 NIC NSG。 对于出站流量,Azure首先评估 NIC NSG,然后评估子网 NSG。
  • 默认拒绝:Azure 包含一些默认规则,允许 VNet 内部流量和出站互联网访问。 添加自定义拒绝规则后,请确认合法流量(例如来自 IP 地址 168.63.129.16 的 Azure 负载均衡器 运行状况探测)未被意外阻止。
  • 服务标记和 ASG:在 NSG 规则中使用服务标记(如 AzureLoadBalancerInternetVirtualNetwork)和应用程序安全组(ASG),而不是原始 IP 地址。 此方法简化了规则管理,并在AZURE IP 范围发生变化时自动进行调整。
  • 流日志以实现可见性:在每个子网级别 NSG 上启用 NSG 流日志,以捕获已接受和拒绝的流量。 流日志可帮助你验证安全规则是否按预期工作,并提供合规性审核的证据。 有关设置说明,请参阅 NSG 流日志

Azure网络设计指南中的以下文章涵盖了相关主题:

Learn more

有关Azure虚拟网络的详细信息,请参阅以下资源:

后续步骤

Tip

自行探索? 返回到 概述导航器 ,按功能查找下一篇文章。

接下来是直接迁移过程中的下一步:

规划 IP 地址空间:分配一个 /16 CIDR 池,避免与本地地址范围重叠。

现代化之旅的下一步:

规划 IP 地址空间:为主动-主动对等互连分配跨两个区域且地址范围不重叠的 IP 池。

跨云之旅的下一步:

规划 IP 地址空间:设计跨 Azure、Amazon Web Services(AWS)和 Google Cloud 的非重叠地址。