AWS VPC(Virtual Private Cloud)是 AWS 上最基础也最重要的网络概念。如果你刚开始接触 AWS,面对 VPC、CIDR、子网、路由表、IGW、NAT 这一串名词可能会感到困惑。这篇文章用类比帮你理清它们之间的关系。
VPC —— 一间独立的房间
VPC 是 AWS 云里的一个私有、隔离的虚拟网络。可以把云想象成一栋大楼,VPC 就是你在大楼里租的一个独立房间:
- 房间里的人默认出不去(无公网访问),外面的人也进不来
- 你自己决定房间怎么隔断(子网)、装不装门(Internet Gateway)、谁可以进出(路由表、安全组)
- 不同 VPC 默认完全隔离,互不相通
从零新建 VPC 时,默认什么都没有——没有公网网关、没有路由、外面的流量进不来,里面的流量也出不去。如果需要打通网络,你需要一步步添加组件。
CIDR —— 房间的面积规划
10.0.0.0/16 是这个房间的面积图。/16 表示有 65,536 个可用 IP 地址。当你规划多个 VPC 时,各自的 CIDR 不能重叠,否则无法通过 VPC Peering 或 Transit Gateway 连通(路由会冲突)。
常见的做法是给不同环境分配不同的网段:生产环境用 10.0.0.0/16,开发环境用 10.1.0.0/16,测试环境用 10.2.0.0/16,后续需要打通时互不干扰。
子网 —— 房间里的隔断
VPC 可以通过子网(Subnet)进一步划分区域。子网有三种常见类型:
| 子网类型 | 能否访问公网 | 用途 |
|---|---|---|
| Public 子网 | 有 IGW,可以 | 放 ALB、NAT Gateway 等需要公网访问的资源 |
| Private 子网 | 无直接公网访问 | 放后端应用、数据库,更安全 |
| VPN 子网 | 通过 VPN 隧道 | 连接本地数据中心 |
子网还和可用区(Availability Zone)绑定——你可以选择将子网放在 ap-northeast-1a 或 ap-northeast-1b。生产环境通常在不同可用区各建一个子网来实现高可用。
Internet Gateway —— 进出的大门
IGW(Internet Gateway)是 VPC 连接公网的门。VPC 默认没有这个门,需要手动创建并挂载到 VPC。挂载后,你还必须在路由表中添加一条指向 IGW 的路由,门才算真正打开。
当你启动 EC2 实例并分配了公网 IP,流量路径是:
1
EC2(公网 IP)→ 路由表(0.0.0.0/0 指向 IGW)→ IGW → Internet
为什么你之前在 AWS 上开的免费 EC2 可以直接上网? 因为 AWS 在每个 Region 自动创建了一个 Default VPC,已经配好了 IGW、Public 子网,并且默认给实例分配公网 IP。从零建自定义 VPC 时,这些都需要手动配置。
NAT Gateway —— Private 子网的出站通道
NAT Gateway 解决的是这样一个问题:Private 子网里的 EC2 没有公网 IP,但它可能需要下载软件包、访问外部 API。NAT Gateway 部署在 Public 子网中,为 Private 子网的实例提供出站公网访问能力,同时阻止外部主动入站连接到这些实例。
流量路径:
1
Private EC2(私有 IP)→ 路由表 → NAT Gateway(Public 子网)→ IGW → Internet
注意:NAT Gateway 只处理出站。如果 Public 子网的实例直接有公网 IP,它通过 IGW 上网不需要 NAT。NAT 只服务于没有公网 IP 的 Private 子网实例。
路由表 —— 交通规则
路由表告诉流量该怎么走。每个子网必须关联一张路由表(可以多个子网共用)。常见的路由条目:
| 目标网段 | 下一跳 | 说明 |
|---|---|---|
| 10.0.0.0/16 | local | VPC 内部通信,自动生成 |
| 0.0.0.0/0 | igw-xxx | Public 子网通过 IGW 上公网 |
| 0.0.0.0/0 | nat-xxx | Private 子网通过 NAT 出站 |
| 10.1.0.0/16 | pcx-xxx | 去往对端 VPC 的流量走 Peering 连接 |
路由匹配遵循最长前缀匹配原则——最具体的路由优先。
Security Group —— 门禁保安
Security Group(安全组)是附着在实例上的虚拟防火墙。它只支持 Allow 规则(默认全 Deny),并且是有状态的:如果你允许了入站 80 端口的流量,回包自动放行,不需要额外配置出站规则。
在 VPC 中规划安全组时,建议按角色划分——ALB、前端 EC2、后端 EC2 各一个安全组,后端安全组只允许来自 ALB 安全组的入站,而不是开放 IP 段。这样无论 ALB 的 IP 如何变化,规则依然有效。
把这些串起来
一个完整的 VPC 网络大概长这样:
1
2
3
4
5
6
7
8
9
10
VPC(10.0.0.0/16)
├── IGW(大门)
├── Public 子网
│ ├── ALB(用户访问入口)
│ └── NAT Gateway(Private 子网的出站通道)
├── Private 子网
│ ├── 前端 EC2 ← ALB 转发流量过来
│ └── 后端 EC2 ← 前端调用
├── 路由表(定义哪条路通向哪里)
└── 安全组(每台实例的门禁规则)
小结
VPC 的核心就是一台隔离的网络环境,IGW 是公网入口、NAT 是私有子网的出站通道、子网做网络划分、路由表做流量调度、安全组做访问控制。理解了这几者的关系,AWS 网络就不再神秘了。