2. Azure虚拟网络规划与设计

Azure虚拟网络(VNet)是Azure中所有私有网络能力的承载底座。它既是虚拟机、容器、数据库、应用网关等资源的网络边界,也是混合连接、服务发布、访问控制与DNS解析的统一作用域。规划阶段做出的地址空间、子网、对等互联、终结点与DNS决策,会直接决定后续能否平滑扩展、能否与本地数据中心互通、能否满足安全合规要求。本节围绕五个相互关联的设计维度展开:地址空间划分、子网设计、VNet对等互联、服务端点与私有终结点、DNS解析策略。

地址空间划分:先定边界,再谈细分

VNet的地址空间使用RFC 1918私有地址段,常见选择是10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。规划的第一步不是“选一个网段”,而是建立全局地址规划表,把Azure区域、本地数据中心、分支机构、其他云环境都纳入同一张表,避免重叠。地址重叠是VNet对等互联和VPN/ExpressRoute互通最常见的失败原因,一旦重叠,后续只能通过NAT或重建网络来补救。

建议按“区域—环境—用途”三层结构分配。例如企业总部本地为10.10.0.0/16,Azure东亚生产环境使用10.20.0.0/16,Azure东亚测试环境使用10.21.0.0/16,Azure东南亚生产环境使用10.30.0.0/16。每个VNet内部再按子网用途细分。地址空间可以在创建后追加,但不能删除已分配的前缀,因此预留增长空间比一次性精确分配更重要。一个实用经验是:单个VNet地址空间至少预留一倍增长余量,子网则按预计IP消耗量的2~3倍规划。

需要特别注意的是,Azure会从每个子网中保留5个IP地址:网络地址、默认网关、DNS映射、网络地址转换和广播地址。例如/24子网有256个地址,实际可用251个。若子网需要承载大量Pod或弹性伸缩实例,应按可用地址而非总地址计算。

子网设计:按职责隔离,而非按资源堆叠

子网是VNet内应用安全策略、路由和委派的基本单位。设计原则是“按职责划分”,而不是把所有虚拟机塞进一个默认子网。典型分层包括:Web/应用网关子网、应用服务子网、数据层子网、管理跳板机子网、AzureBastion子网、私有终结点子网、GatewaySubnet等。

其中GatewaySubnet是保留名称,用于VPN网关或ExpressRoute网关,必须命名为GatewaySubnet,且建议使用/27或更大前缀,以支持未来双活网关和更多连接。AzureBastionSubnet同样是保留名称,建议至少/26。私有终结点通常集中放在专用子网中,便于统一管理私有IP分配和NSG策略。

子网设计还要考虑委派。例如Azure Container Instances、Azure NetApp Files、应用服务环境等需要将子网委派给特定服务。委派后的子网不能再用于其他用途,因此应在规划阶段单独预留。下面给出一个可直接参考的规划示例表:

子网名称示例前缀用途关键约束
GatewaySubnet10.20.0.0/27VPN/ExpressRoute网关保留名称,不可部署业务资源
AzureBastionSubnet10.20.0.32/26Bastion安全跳板保留名称,至少/26
snet-web10.20.1.0/24应用网关与前端可关联NSG与UDR
snet-app10.20.2.0/24应用服务器按需委派
snet-data10.20.3.0/24数据库与缓存限制入站来源
snet-pe10.20.4.0/24私有终结点集中管理私有IP

VNet对等互联:打通而不重叠

VNet对等互联(VNet Peering)让两个VNet通过Azure骨干网私网互通,流量不经过公网。对等互联分为区域内对等和全局对等,后者跨区域但延迟仍由Azure骨干网保证。对等互联是非传递的:A与B对等、B与C对等,A与C默认不通,需要显式建立A-C对等或使用中心辐射(Hub-Spoke)加网关/路由设备。

中心辐射是常见拓扑:Hub VNet承载共享服务(防火墙、DNS、网关、Bastion),Spoke VNet承载业务。Spoke之间通过Hub中的防火墙或路由实现受控互通。对等互联建立后,还需检查地址空间不重叠、NSG允许相应流量、UDR路由正确指向防火墙。若使用网关传输,Hub网关可被Spoke借用,但需在 peering 上启用“允许网关传输”和“使用远程网关”。

VNet 地址规划与对等互联拓扑示意 Hub VNet 10.20.0.0/16 GatewaySubnet AzureBastion 共享DNS 防火墙 Spoke-Prod 10.21.0.0/16 snet-web snet-app snet-data snet-pe Spoke-Test 10.22.0.0/16 snet-web snet-app snet-data 本地数据中心 10.10.0.0/16 VPN / ExpressRoute VNet Peering VNet Peering 网关传输 Spoke 间默认不传递,需经 Hub 防火墙/UDR 受控互通

服务端点与私有终结点:两种不同的私网访问路径

服务端点(Service Endpoint)把VNet子网与Azure PaaS服务(如Storage、SQL Database、Key Vault)通过Azure骨干网直连,PaaS服务仍使用其公共DNS名称和公共IP,但流量不再经过公网。启用服务端点后,可在PaaS资源防火墙中限制“仅允许来自该子网的访问”。服务端点配置简单、无额外费用,但PaaS资源仍暴露公共终结点,且只支持部分服务。

私有终结点(Private Endpoint)则在VNet子网中为PaaS资源分配一个私有IP,通过Private Link把服务映射到该IP。访问时使用私有DNS名称解析到私有IP,公共终结点可被禁用。私有终结点适合对数据外泄敏感、需要完全私网访问、或需要跨VNet/本地访问的场景。两者对比如下:

维度服务端点私有终结点
访问入口PaaS公共IP,经骨干网子网内私有IP
DNS仍用公共DNS名称需私有DNS区域解析
本地访问不直接支持可通过VPN/ER访问
费用无额外费用按终结点和流量计费
适用快速限制来源完全私网、防外泄

DNS解析策略:名字解析决定流量走向

DNS是虚拟网络中最容易被低估的一环。Azure默认提供168.63.129.16的Azure DNS,可解析Azure公共域名和VNet内资源名称,但不解析私有终结点所需的私有DNS名称,也不解析本地AD域名。因此需要组合使用:

  • Azure DNS私有区域:为 privatelink.blob.core.windows.net、privatelink.database.windows.net 等创建私有区域,并把A记录指向私有终结点IP,再链接到需要解析的VNet。
  • 自定义DNS服务器:在VNet中指定本地DNS或Azure DNS Private Resolver,实现本地与Azure域名互解。
  • DNS转发:本地DNS把Azure私有区域查询转发到Azure DNS,Azure DNS把本地域名查询转发到本地DNS,形成双向解析。

一个常见做法是:Hub VNet部署DNS Private Resolver或自定义DNS虚拟机,所有Spoke VNet的DNS服务器指向Hub;私有DNS区域链接到Hub和所有Spoke;本地DNS配置条件转发器,把privatelink相关区域转发到Hub DNS。这样无论从Azure还是本地访问,私有终结点名称都能解析到正确私有IP。

规划检查要点:地址空间是否与本地及其他VNet重叠;GatewaySubnet与AzureBastionSubnet是否按保留名称和足够前缀创建;对等互联是否明确传递性需求;私有终结点是否配套私有DNS区域并链接到所有需要解析的VNet;本地DNS是否配置了到Azure私有区域的条件转发。

综合来看,Azure虚拟网络规划不是一次性配置,而是一套需要持续维护的地址与解析体系。地址空间决定可扩展边界,子网决定安全与委派粒度,对等互联决定拓扑连通性,服务端点与私有终结点决定PaaS访问路径,DNS决定名称到IP的最终映射。五者一致,网络才能既通又可控。