2. VCN规划与设计实战

在上一节中,我们已经理解了VCN是Oracle Cloud Infrastructure中区域级的软件定义网络边界。本节不再停留在概念层面,而是直接进入一个可落地的规划任务:假设一家中型企业要在OCI上部署一套三层Web应用,我们需要为它规划CIDR块、划分子网、设计路由表与安全列表,最终形成一张多层级VCN拓扑。

先明确业务需求。该企业应用包含三个层次:面向公网的Web前端、仅内网访问的应用服务、以及只允许应用层访问的数据库。此外还需要一个用于运维跳板和堡垒机的管理子网。企业希望未来能扩展到多可用域,并保留与本地数据中心通过FastConnect或Site-to-Site VPN互联的能力。这些需求直接决定了VCN的地址规划不能随意,必须预留足够的扩展空间。

一、CIDR块规划:从企业地址空间出发

CIDR规划的第一步不是打开控制台,而是先确定VCN的地址范围。OCI允许VCN使用RFC 1918私有地址,也支持部分公有地址段,但企业内网通常使用10.0.0.0/8、172.16.0.0/12或192.168.0.0/16。考虑到未来与本地数据中心互联,必须避免地址重叠。假设企业本地数据中心已使用10.0.0.0/16,那么OCI侧应选择不冲突的地址段,例如10.10.0.0/16。

这里有一个关键判断:VCN的CIDR块一旦创建,虽然可以添加辅助CIDR,但主CIDR不能修改。因此规划时要为未来留出余量。10.10.0.0/16可提供65536个地址,足够支撑多个子网和后续扩展。如果企业规模更大,也可以直接使用10.10.0.0/14,但要注意子网划分时的粒度。

接下来是子网划分。OCI子网是区域级或可用域级的,分为公共子网和私有子网。公共子网中的资源可以拥有公网IP,并通过Internet Gateway访问互联网;私有子网中的资源默认不能直接访问互联网,但可以通过NAT Gateway出站,或通过Service Gateway访问OCI服务。对于三层应用,建议按功能划分四个子网:

  • 公共Web子网:10.10.1.0/24,用于负载均衡器和Web服务器,允许来自互联网的HTTP/HTTPS流量。
  • 私有应用子网:10.10.2.0/24,用于应用服务器,只接受来自Web子网的流量。
  • 私有数据库子网:10.10.3.0/24,用于数据库,只接受来自应用子网的特定端口。
  • 私有管理子网:10.10.4.0/24,用于堡垒机或运维跳板,通过VPN或FastConnect访问。

每个子网使用/24,可提供251个可用地址(OCI会保留前三个和最后一个地址)。如果未来需要跨可用域部署,可以在每个可用域中重复划分子网,例如10.10.11.0/24、10.10.12.0/24等,但要注意保持地址规划的可读性。

二、路由表设计:控制流量走向

路由表决定了子网内流量的下一跳。OCI中每个子网必须关联一个路由表,默认路由表只允许VCN内部通信。我们需要为不同子网创建不同的路由表,实现最小权限的流量控制。

公共Web子网的路由表需要一条默认路由指向Internet Gateway,使Web服务器可以响应公网请求。私有应用子网和数据库子网不需要直接访问互联网,但应用服务器可能需要下载补丁或调用外部API,因此可以配置一条指向NAT Gateway的默认路由,实现单向出站访问。管理子网则需要指向VPN或FastConnect的路由,以便与本地数据中心通信。

此外,所有子网都需要一条本地路由,用于VCN内部子网之间的通信。OCI会自动添加这条路由,但我们需要通过安全列表和NSG来控制具体哪些流量被允许。

三、安全列表与NSG:定义访问边界

安全列表作用于子网级别,是子网内所有实例的默认防火墙规则;NSG作用于VNIC级别,可以更精细地控制实例之间的访问。对于三层应用,建议采用“安全列表做粗粒度隔离,NSG做细粒度控制”的组合策略。

公共Web子网的安全列表应允许来自0.0.0.0/0的TCP 80和443入站,以及来自VCN内部的SSH或管理端口。私有应用子网的安全列表应拒绝所有来自互联网的入站流量,只允许来自Web子网CIDR的特定应用端口,例如8080。数据库子网的安全列表只允许来自应用子网CIDR的1521端口(Oracle数据库)或3306端口(MySQL)。管理子网则只允许来自本地数据中心CIDR的SSH端口。

出站规则同样重要。默认安全列表允许所有出站流量,但为了安全,可以限制数据库子网只能向应用子网发起响应流量,禁止主动外联。NSG可以进一步细化到具体实例,例如只允许Web服务器实例访问应用服务器实例的8080端口。

四、多层级VCN拓扑设计示例

下面这张SVG图展示了完整的VCN拓扑结构。图中包含一个VCN(10.10.0.0/16),四个子网分别位于不同的可用域或同一可用域内,通过Internet Gateway、NAT Gateway、Service Gateway和VPN Gateway与外部网络连接。路由表和安全列表的关联关系也在图中标注。

VCN: 10.10.0.0/16(区域级) 公共 Web 子网 10.10.1.0/24 负载均衡器 · Web 服务器 安全列表:允许 0.0.0.0/0 → TCP 80/443 路由表:0.0.0.0/0 → Internet Gateway NSG:Web 实例仅开放 80/443 私有应用子网 10.10.2.0/24 应用服务器 · 中间件 安全列表:仅允许 10.10.1.0/24 → TCP 8080 路由表:0.0.0.0/0 → NAT Gateway NSG:仅接受 Web 子网 8080 入站 私有数据库子网 10.10.3.0/24 Oracle DB · MySQL 安全列表:仅允许 10.10.2.0/24 → TCP 1521 路由表:无默认路由,仅 VCN 内部 NSG:仅接受应用子网 1521 入站 私有管理子网 10.10.4.0/24 堡垒机 · 运维跳板 安全列表:仅允许 10.0.0.0/16 → TCP 22 路由表:10.0.0.0/16 → VPN Gateway NSG:仅接受本地数据中心 SSH 网关与外部连接 Internet Gateway NAT Gateway Service Gateway VPN / FastConnect 公共子网 私有子网 数据库子网 管理子网 网关连接

这张拓扑图清晰地展示了四个子网的功能定位、地址范围、安全策略和路由指向。公共Web子网通过Internet Gateway暴露服务,私有应用子网通过NAT Gateway实现出站访问,数据库子网完全封闭在VCN内部,管理子网通过VPN与本地数据中心打通。每个子网的安全列表和NSG规则都遵循最小权限原则,形成层层递进的访问控制。

五、规划检查清单与常见陷阱

在实际操作中,建议在创建资源前完成以下检查:VCN CIDR是否与本地数据中心或其他VCN重叠;子网CIDR是否在VCN范围内且不重叠;每个子网是否关联了正确的路由表和安全列表;公共子网是否只放置必须暴露的资源;私有子网是否配置了NAT Gateway或Service Gateway以满足出站需求;安全列表的入站和出站规则是否成对考虑。

常见的陷阱包括:将数据库子网错误地关联到公共路由表,导致数据库意外暴露;安全列表只配置入站规则而忽略出站规则,导致响应流量被阻断;子网CIDR划分过小,后续无法扩展;以及忘记为管理子网配置VPN路由,导致运维通道不通。这些问题在规划阶段通过表格和拓扑图逐一核对,可以大幅降低后期返工成本。

提示:OCI的VCN CIDR块支持添加辅助CIDR,但主CIDR不可修改。如果企业未来可能合并或拆分网络,建议在初始规划时就预留足够的地址空间,并保持子网命名和标签的规范性,便于自动化管理和审计。