2. VPC基础与生产级规划
Amazon VPC 是 AWS 上一切网络能力的容器。创建 VPC 时,你实际上是在定义一个独立的、逻辑隔离的虚拟网络,它拥有自己的地址空间、路由决策和边界控制。生产环境与实验环境最大的区别在于:实验环境可以随意创建、随意删除,而生产 VPC 一旦承载业务,其地址空间几乎不可能"推倒重来"。因此,VPC 规划的核心不是"怎么建",而是"怎么建得以后不用改"。
CIDR 规划:先定地址空间,再谈其他
VPC 的地址范围由 CIDR 块决定,AWS 允许的掩码长度在 /16 到 /28 之间,即最多 65536 个地址、最少 16 个地址。生产环境几乎总是选择 /16,原因不是"地址多",而是为后续子网划分、对等连接和混合云留出余量。
一个常见的错误是随手使用 10.0.0.0/16,然后第二个 VPC 用 10.1.0.0/16,第三个用 10.2.0.0/16。当 VPC 数量增长到十几个、并且需要互相打通时,地址冲突和路由聚合会变得非常棘手。更稳妥的做法是采用分层编址:
- 按环境划分大段:生产 10.10.0.0/16,预发 10.20.0.0/16,测试 10.30.0.0/16;
- 按区域或业务线再细分:生产-华东 10.10.0.0/16,生产-华北 10.11.0.0/16;
- 预留一段给未来:10.100.0.0/16 作为共享服务或灾备专用。
这样做的价值在于:任意两个 VPC 的地址段不会重叠,对等连接和 Transit Gateway 的路由表可以安全地做聚合,而不是逐条列举。同时,与本地数据中心互联时,也能通过一条 10.0.0.0/8 的汇总路由覆盖全部云上地址,避免在 VPN 或专线上维护几十条明细路由。
子网划分:公有、私有与隔离层
子网是 VPC 内的地址分段,必须落在 VPC 的 CIDR 范围内,且不能重叠。子网本身没有"公有"或"私有"属性,这个标签完全由路由表决定:如果子网的路由表有一条指向互联网网关(IGW)的 0.0.0.0/0 路由,它就是公有的;如果指向 NAT 网关,它就是私有的;如果只有本地路由,它就是隔离的。
以一个 10.10.0.0/16 的生产 VPC 为例,可以按可用区做对称划分。假设使用两个可用区 ap-southeast-1a 和 1b:
| 子网名称 | CIDR | 可用区 | 类型 | 用途 |
|---|---|---|---|---|
| public-1a | 10.10.0.0/20 | 1a | 公有 | ALB、NAT 网关、堡垒机 |
| public-1b | 10.10.16.0/20 | 1b | 公有 | ALB、NAT 网关 |
| app-1a | 10.10.32.0/20 | 1a | 私有 | 应用服务器 |
| app-1b | 10.10.48.0/20 | 1b | 私有 | 应用服务器 |
| data-1a | 10.10.64.0/20 | 1a | 隔离 | RDS、ElastiCache |
| data-1b | 10.10.80.0/20 | 1b | 隔离 | RDS、ElastiCache |
每个 /20 子网提供 4091 个可用 IP(AWS 会保留 5 个地址:网络地址、VPC 路由器、DNS、未来保留、广播地址)。这个规模足以支撑数百台实例,同时保留了后续扩展空间。数据层使用隔离子网,意味着它没有通往互联网的路由,只能被应用层通过安全组访问,这是生产环境的基本要求。
路由表:流量的决策中心
每个子网必须关联一张路由表,路由表由若干条路由组成,每条路由包含目标 CIDR 和目标(IGW、NAT 网关、对等连接、Transit Gateway、VPC 终端节点等)。路由匹配遵循最长前缀优先原则:如果一条流量同时匹配 0.0.0.0/0 和 10.10.0.0/16,后者优先。
生产环境通常至少需要三张路由表:
- 公有路由表:0.0.0.0/0 → IGW,本地路由 10.10.0.0/16 → local;
- 私有路由表:0.0.0.0/0 → NAT 网关(按可用区各建一个),本地路由 → local;
- 隔离路由表:只有本地路由 → local,不配置任何默认路由。
这里有一个容易被忽略的细节:NAT 网关必须放在公有子网中,并且需要为其分配弹性 IP。私有子网的路由指向 NAT 网关时,应使用同一可用区的 NAT 网关,避免跨 AZ 流量产生额外费用和延迟。如果两个可用区各有一个 NAT 网关,私有子网的路由表也应分别指向本 AZ 的 NAT。
互联网网关与 NAT 网关
互联网网关(IGW)是 VPC 与互联网之间的水平扩展、高可用组件,它本身不产生费用,但一旦挂载到 VPC,就为该 VPC 提供了双向互联网访问能力。公有子网通过 IGW 实现入站和出站。
NAT 网关则用于私有子网的出站访问。它位于公有子网,拥有弹性 IP,私有子网的实例通过它访问互联网,但互联网无法主动发起连接到这些实例。NAT 网关按小时和流量计费,生产环境建议每个 AZ 部署一个,避免单点故障。
VPC 对等连接与地址管理
当两个 VPC 需要互通时,VPC 对等连接是最直接的方式。它建立一条跨 VPC 的私有网络路径,流量不经过互联网。但有几个硬性约束必须记住:
- 对等连接的 CIDR 不能重叠,否则无法建立;
- 对等连接不具备传递性:A 对等 B、B 对等 C,A 和 C 之间不会自动互通;
- 需要在双方 VPC 的路由表中分别添加指向对端 CIDR 的路由;
- 安全组和网络 ACL 仍需放行相应流量。
对于少量 VPC(比如 3 到 5 个),对等连接是简单有效的。但当 VPC 数量增长到十几个甚至几十个时,全互联的对等连接数量会按 n(n-1)/2 增长,管理成本急剧上升。这时应考虑使用 AWS Transit Gateway 作为中心枢纽,各 VPC 只需连接到 TGW,由 TGW 的路由表控制互通关系。
地址管理方面,生产环境应建立一份"地址分配台账",记录每个 VPC、每个子网的 CIDR、所属环境、所属区域和用途。这份台账不需要复杂工具,一张表格即可,但它是避免地址冲突、支撑对等连接和混合云规划的基础。每次新建 VPC 或子网前,先查台账,再分配,最后更新台账。
总结来说,生产级 VPC 规划的顺序是:先定 CIDR 大框架,再按可用区划分子网,然后为不同层级的子网设计路由表,最后通过 IGW、NAT 网关和对等连接/Transit Gateway 实现连通性。每一步都应为后续扩展留出空间,而不是只满足当前需求。