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)是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 规则中使用服务标记(如
AzureLoadBalancer、Internet、VirtualNetwork)和应用程序安全组(ASG),而不是原始 IP 地址。 此方法简化了规则管理,并在AZURE IP 范围发生变化时自动进行调整。 - 流日志以实现可见性:在每个子网级别 NSG 上启用 NSG 流日志,以捕获已接受和拒绝的流量。 流日志可帮助你验证安全规则是否按预期工作,并提供合规性审核的证据。 有关设置说明,请参阅 NSG 流日志 。
相关文章
Azure网络设计指南中的以下文章涵盖了相关主题:
- IP 地址规划:设计地址空间,避免重叠,并规划增长。
- 网络安全组和应用程序安全组:在子网和 NIC 级别定义流量筛选规则。
- 单工作负荷拓扑:为没有共享服务的一个工作负荷设计简单的网络。
- 中心辐射拓扑:通过共享服务中心连接多个工作负载 VNet。
- 虚拟 WAN拓扑:使用自动化中心路由大规模管理连接。
- 跨区域连接:使用全局对等互连或虚拟 WAN跨Azure区域连接 VNet。
- 集中式网络管理:使用Azure Virtual Network Manager跨订阅管理 VNet 配置。
Learn more
有关Azure虚拟网络的详细信息,请参阅以下资源:
后续步骤
Tip
自行探索? 返回到 概述导航器 ,按功能查找下一篇文章。
接下来是直接迁移过程中的下一步:
规划 IP 地址空间:分配一个 /16 CIDR 池,避免与本地地址范围重叠。
现代化之旅的下一步:
规划 IP 地址空间:为主动-主动对等互连分配跨两个区域且地址范围不重叠的 IP 池。
跨云之旅的下一步:
规划 IP 地址空间:设计跨 Azure、Amazon Web Services(AWS)和 Google Cloud 的非重叠地址。