3. VPC 作为企业网络隔离基石
VPC(Virtual Private Cloud)是 AWS 上一切网络隔离的起点。它不是一个“防火墙”,而是一块由你完全掌控地址空间的私有网络:你决定它有多大、切成几块、每块放在哪个可用区、谁能进出、流量走哪条路。理解 VPC,本质上是理解四件事的边界语义——地址边界(CIDR)、位置边界(子网与可用区)、路径边界(路由表)、内外边界(IGW 与 NAT)。这四层叠加起来,才构成企业网络隔离的基石。
一、CIDR 规划:先定地址边界,再谈隔离
创建 VPC 时必须指定一个 IPv4 CIDR 块,例如 10.0.0.0/16。这个块决定了 VPC 内所有资源的私有地址范围,也决定了它与其他 VPC、本地数据中心是否可能冲突。企业规划 CIDR 的核心原则是:全局唯一、预留充足、按环境/区域分段。
一个常见的示例规划(属于教学假设,非实测结果)如下:
| 用途 | CIDR | 可用地址数 | 说明 |
|---|---|---|---|
| 生产 VPC(东京) | 10.10.0.0/16 | 65536 | 主生产环境 |
| 生产 VPC(新加坡) | 10.20.0.0/16 | 65536 | 灾备/多区域 |
| 开发 VPC | 10.30.0.0/16 | 65536 | 与生产隔离 |
| 本地数据中心 | 172.16.0.0/16 | 65536 | 通过 VPN/DX 互联 |
注意两个易错点。第一,AWS 会保留每个子网的前 4 个和后 1 个地址(网络地址、VPC 路由器、DNS、未来保留、广播),所以 /24 子网实际可用 251 个地址,而不是 256。第二,CIDR 一旦创建不能修改,只能通过关联辅助 CIDR 扩展,因此规划时要为未来 3~5 年留出余量。若企业已有大量本地网段,建议先用 10.0.0.0/8 做整体切分,避免后期与本地冲突导致无法建立 VPN。
二、子网分层:把“位置”和“角色”同时编码进去
子网是 VPC 内的地址段切片,且必须绑定一个可用区。这意味着子网天然带有“位置”属性:同一个子网内的资源在同一 AZ,跨 AZ 通信要经过 VPC 路由器。企业通常按“层级 + AZ”二维切分,例如:
- 公有子网:路由指向 Internet Gateway,承载 ALB、NAT Gateway、堡垒机等需要公网入口或出口的组件。
- 私有应用子网:无公网路由,承载 ECS、EKS 节点、Lambda(VPC 模式)等业务计算。
- 私有数据子网:无公网路由,承载 RDS、ElastiCache、OpenSearch,仅允许来自应用子网的安全组访问。
以 10.10.0.0/16 为例,可切分为:公有 10.10.0.0/20(每 AZ 一个 /20,约 4091 可用)、应用 10.10.16.0/20、数据 10.10.32.0/20,并预留 10.10.48.0/20 给未来扩展。每个层级在 3 个 AZ 各建一个子网,形成“三可用区 × 三层”的矩阵。这种分层让安全组和 NACL 的规则可以按层收敛,而不是逐台机器配置。
三、路由表:决定“流量往哪走”的路径边界
路由表是 VPC 内流量的“导航系统”。每个子网必须关联一张路由表,路由表由若干条路由组成,每条路由包含目标 CIDR 和下一跳(target)。VPC 创建时会自动生成一张主路由表,其中包含一条 local 路由,覆盖整个 VPC CIDR,用于 VPC 内部通信——这条路由不可删除,也是 VPC 内默认互通的根源。
公有子网的路由表通常包含:
目标 CIDR 下一跳
10.10.0.0/16 local
0.0.0.0/0 igw-xxxxxxxx ← 指向 Internet Gateway
私有子网的路由表则把默认路由指向 NAT Gateway:
目标 CIDR 下一跳
10.10.0.0/16 local
0.0.0.0/0 nat-xxxxxxxx ← 指向 NAT Gateway(位于公有子网)
这里有一个关键边界语义:路由表只决定“能不能到达”,不决定“允不允许通过”。能否通过由安全组(有状态、实例级)和网络 ACL(无状态、子网级)决定。因此常见排障顺序是:先看路由表是否有目标路由,再看安全组是否放行,最后看 NACL。若私有子网实例无法访问外网,第一检查项就是它的路由表里有没有 0.0.0.0/0 → nat-xxx,以及 NAT Gateway 是否在公有子网且其路由表指向 IGW。
四、IGW 与 NAT:内外边界的两种语义
Internet Gateway(IGW)是 VPC 与公网之间的双向边界。它有两个语义:一是作为公有子网默认路由的下一跳,二是为绑定了公网 IP 或弹性 IP 的实例提供双向 NAT。注意:子网是否“公有”,取决于它的路由表是否有指向 IGW 的默认路由,而不是子网名字。一个子网即使叫“public-subnet”,只要路由表没有 IGW 路由,它依然是私有的。
NAT Gateway解决的是“私有子网需要出网、但不允许入网”的需求。它部署在公有子网,拥有弹性 IP,私有子网通过路由表把 0.0.0.0/0 指向它。NAT Gateway 的关键语义是单向发起:内部实例可以主动访问互联网,但互联网无法主动发起连接到内部实例。这与 IGW 的双向能力形成互补。企业实践中,NAT Gateway 应按 AZ 部署(每个 AZ 一个),避免跨 AZ 流量费用和单点故障;同时它按小时和流量计费,需纳入成本监控。
五、把四层边界串起来看
回到企业隔离目标:CIDR 规划保证地址不冲突,是“可互联”的前提;子网分层把安全等级不同的资源放到不同地址段和不同 AZ,是“可收敛”的基础;路由表控制每个子网的流量路径,是“可管控”的开关;IGW 与 NAT 定义内外边界,是“可出网但不可被入网”的保障。四层缺一不可,且顺序不能颠倒——先有地址规划,才有子网切分;先有子网角色,才有路由差异;先有路由差异,IGW 和 NAT 才有意义。
实际落地时,建议用基础设施即代码(如 Terraform)把 VPC、子网、路由表、IGW、NAT 一次性声明,避免控制台手工操作导致路由表关联错乱。一个最小可用的生产级 VPC 通常包含:1 个 VPC、3 个 AZ × 3 层 = 9 个子网、1 个 IGW、3 个 NAT Gateway、3 张公有路由表、3 张私有路由表。这个结构既满足高可用,又为后续的安全组分层、VPC 端点、流日志留出了清晰的边界。