规划VPC网络架构
文档难度: 中级
预计阅读时间: 15 分钟
适用环境: AWS 商业账户、生产环境规划
前置条件: 已创建 AWS 账户,了解基本网络概念 (IP 地址、子网、路由)
任务目标: 根据业务场景选择合适的 VPC 架构方案,避免常见的规划错误
1. 理解 VPC 规划的核心决策点
Section titled “1. 理解 VPC 规划的核心决策点”VPC 规划的本质是回答三个问题:
- IP 地址空间如何分配? (CIDR 规划)
- 流量如何进出? (公有/私有子网 + 网关选择)
- 多 VPC 如何互联? (网络拓扑)
错误的规划会导致: IP 地址耗尽、无法与其他网络对等互联、成本失控。
2. 规划 CIDR 地址空间
Section titled “2. 规划 CIDR 地址空间”最佳实践: 使用 /16 VPC + 预留扩展空间
Section titled “最佳实践: 使用 /16 VPC + 预留扩展空间”为什么这么做:
- VPC 创建后 CIDR 无法修改,只能追加 (最多 5 个)
- /16 提供 65,536 个 IP,足够大多数场景
- 预留空间避免未来与 VPC Peering 或 Direct Connect 冲突
RFC 1918 私有地址范围 (来源: VPC CIDR blocks):
| 范围 | 可用空间 | 推荐场景 |
|---|---|---|
| 10.0.0.0/8 | 16,777,216 IP | 最佳实践 - 地址空间最大 |
| 172.16.0.0/12 | 1,048,576 IP | 可用,但避免 172.17.0.0/16 (与 Docker 冲突) |
| 192.168.0.0/16 | 65,536 IP | 仅用于小型测试环境 |
规划示例 (多环境):
生产环境 VPC: 10.0.0.0/16预生产环境 VPC: 10.1.0.0/16开发环境 VPC: 10.2.0.0/16共享服务 VPC: 10.10.0.0/16子网划分原则
Section titled “子网划分原则”AWS 保留地址: 每个子网的前 4 个和最后 1 个 IP 不可用 (来源: Subnet sizing)。
最佳实践子网分配:
| 子网类型 | 推荐 CIDR | 可用 IP | 说明 |
|---|---|---|---|
| 公有子网 | /24 | 251 | 放置 NAT Gateway、ALB、Bastion |
| 私有子网-应用层 (可出站) | /22 或 /23 | 1019 或 507 | 主要工作负载,通过 NAT 访问互联网 |
| 私有子网-数据层 (隔离) | /24 | 251 | RDS、ElastiCache,无互联网路由 |
跨可用区部署: 至少使用 2 个 AZ,生产环境建议 3 个 AZ。
使用 “VPC and more” 快速创建
Section titled “使用 “VPC and more” 快速创建”对于常规场景,AWS 控制台提供的 “VPC and more” 向导可一键完成完整的 VPC 架构部署,无需手动逐一创建组件。
向导自动创建的资源:
- VPC (含指定 CIDR)
- 公有子网和私有子网 (可选 1-3 个 AZ)
- Internet Gateway 并自动关联
- NAT Gateway (可选每个 AZ 一个或共享一个)
- 路由表并自动关联子网
- S3 Gateway Endpoint
- DNS 解析 (enableDnsHostnames, enableDnsSupport)
操作路径: VPC 控制台 → 创建 VPC → 选择 “VPC等”
[VPC等 向导界面]


何时使用向导 vs 手动创建:
| 场景 | 推荐方式 |
|---|---|
| 标准三层架构、快速启动 | VPC等 向导 |
| 需要自定义 CIDR 分配逻辑 | 手动创建 |
| 基础设施即代码 (IaC) | CloudFormation / Terraform |
| 与现有网络集成、复杂路由 | 手动创建 |
最佳实践: 即使使用向导,也建议先规划好 CIDR 分配方案,在向导中展开 “Customize subnet CIDR blocks” 手动指定每个子网的 CIDR,避免使用默认值导致后续扩展困难。
3. 选择子网类型与网关组合
Section titled “3. 选择子网类型与网关组合”子网类型定义
Section titled “子网类型定义”AWS 官方文档仅定义 Public Subnet 和 Private Subnet 两种类型 (来源: Subnets for your VPC)。传统数据中心的 “DMZ” 概念在 AWS 中通过路由表和安全组实现,而非独立的子网类型。
| 类型 | 路由目标 | 实例是否有公网 IP | 典型用途 |
|---|---|---|---|
| 公有子网 | Internet Gateway (IGW) | 是 | ALB、NAT Gateway、Bastion |
| 私有子网 (可出站) | NAT Gateway | 否 | 应用服务器、需要访问外部 API 的服务 |
| 私有子网 (隔离) | 无默认路由 | 否 | 数据库、敏感数据、合规工作负载 |
以下所有架构方案均采用此分类方式。
网关选择与成本对比
Section titled “网关选择与成本对比”成本数据来源: Amazon VPC Pricing、AWS PrivateLink Pricing (2024年12月)
| 组件 | 小时费用 (us-east-1) | 数据处理费 | 适用场景 |
|---|---|---|---|
| Internet Gateway | 免费 | 仅出站流量费 | 公有子网出站 |
| NAT Gateway | $0.045/小时 (~$32.85/月) | $0.045/GB | 私有子网访问互联网 |
| Gateway Endpoint (S3/DynamoDB) | 免费 | 免费 | 访问 S3、DynamoDB |
| Interface Endpoint | $0.01/小时/AZ (~$7.30/月/AZ) | $0.01/GB | 访问其他 AWS 服务 |
| Transit Gateway Attachment | $0.05/小时 (~$36/月) | $0.02/GB | 多 VPC 互联 |
最佳实践: 优先使用 Gateway Endpoint
Section titled “最佳实践: 优先使用 Gateway Endpoint”为什么这么做:
- S3 和 DynamoDB 流量通过 NAT Gateway 会产生 $0.045/GB 的数据处理费
- Gateway Endpoint 完全免费,且流量不离开 AWS 网络
决策流程:
私有子网需要访问 AWS 服务? ├── S3 或 DynamoDB → 创建 Gateway Endpoint (免费) ├── 其他 AWS 服务 (ECR、CloudWatch、SSM 等) │ └── 流量 > 500GB/月? │ ├── 是 → Interface Endpoint 更经济 │ └── 否 → NAT Gateway 更简单 └── 需要访问互联网 → NAT Gateway4. 常用 VPC 架构方案
Section titled “4. 常用 VPC 架构方案”方案 A: 单 VPC 三层架构 (入门推荐)
Section titled “方案 A: 单 VPC 三层架构 (入门推荐)”适用场景: 单一应用、小型团队、开发测试环境
三层隔离原则:
- 公有子网: 直接通过 IGW 访问互联网,暴露面最大
- 私有子网 (可出站): 通过 NAT Gateway 出站,可调用外部 API,不可从互联网直接访问
- 私有子网 (隔离): 无互联网路由,仅通过 VPC Endpoint 访问 AWS 服务
VPC: 10.0.0.0/16├── 公有子网 (10.0.1.0/24, 10.0.2.0/24)│ └── ALB, NAT Gateway, Bastion (路由: 0.0.0.0/0 → IGW)├── 私有子网-应用层 (10.0.10.0/23, 10.0.12.0/23)│ └── 应用服务器, ECS, Lambda (路由: 0.0.0.0/0 → NAT Gateway)└── 私有子网-数据层 (10.0.20.0/24, 10.0.21.0/24) └── RDS, ElastiCache (路由: 无默认路由,仅 VPC Endpoint)月度成本估算 (2 AZ):
- NAT Gateway: $32.85 x 2 = $65.70 + 数据处理费
- Gateway Endpoint (S3): $0
公有子网访问结构
Section titled “公有子网访问结构”
私有子网访问结构
Section titled “私有子网访问结构”
路由表配置要点:
| 路由表 | 目标 | 下一跳 |
|---|---|---|
| 公有子网 RT | 0.0.0.0/0 | IGW |
| 私有子网-应用层 RT | 0.0.0.0/0 | NAT Gateway |
| 私有子网-数据层 RT | 0.0.0.0/0 | 不配置 (无互联网访问) |
| 所有子网 | pl-xxxxxx (S3) | Gateway Endpoint |
方案 B: Hub-Spoke 多 VPC 架构 (企业推荐)
Section titled “方案 B: Hub-Spoke 多 VPC 架构 (企业推荐)”适用场景: 多团队/多应用隔离、生产与非生产分离、合规要求
核心组件: Transit Gateway
共享服务 VPC (Hub): 10.10.0.0/16├── VPC Endpoints (集中式)├── NAT Gateway (可选共享)└── Transit Gateway
生产 VPC (Spoke): 10.0.0.0/16开发 VPC (Spoke): 10.1.0.0/16为什么使用 Transit Gateway:
- VPC Peering 是点对点连接,N 个 VPC 需要 N(N-1)/2 个连接
- Transit Gateway 提供星型拓扑,简化管理
- 支持跨账户、跨区域
月度成本估算 (3 个 VPC):
- Transit Gateway: $0.05/小时 x 3 attachments = $108/月 + 数据处理费
- 集中式 Interface Endpoints: 比分布式部署节省 60-70%
%%{init: {"flowchart": {"defaultRenderer": "elk"}}}%%
flowchart TB
subgraph SharedVPC["共享服务 VPC 10.10.0.0/16"]
EP["VPC Endpoints<br/>(ECR, SSM, CloudWatch)"]
NATG["NAT Gateway"]
end
TGW["Transit Gateway"]
subgraph ProdVPC["生产 VPC 10.0.0.0/16"]
PROD["生产工作负载"]
end
subgraph DevVPC["开发 VPC 10.1.0.0/16"]
DEV["开发工作负载"]
end
Internet((Internet))
SharedVPC --> TGW
ProdVPC --> TGW
DevVPC --> TGW
NATG --> Internet
PROD -.-> EP
DEV -.-> EP
方案 C: 混合云架构
Section titled “方案 C: 混合云架构”适用场景: 本地数据中心与 AWS 互联、灾备、渐进式迁移
连接选项:
| 方式 | 带宽 | 延迟 | 成本 | 适用场景 |
|---|---|---|---|---|
| Site-to-Site VPN | 最高 1.25 Gbps/隧道 | 不稳定 | ~$36/月 + 数据费 | 临时连接、备份链路 |
| Direct Connect | 1-100 Gbps | 稳定低延迟 | 端口费 + 数据费 | 生产环境、大数据传输 |
CIDR 规划注意事项:
- 必须确保 VPC CIDR 与本地网络不重叠
- 规划时收集所有现有网络的 IP 范围
- 预留地址空间用于未来扩展
5. 成本优化检查清单
Section titled “5. 成本优化检查清单”- 为 S3 和 DynamoDB 创建 Gateway Endpoint (免费)
- 开发/测试环境考虑单 AZ NAT Gateway (节省 50%)
- 非工作时间可删除开发环境 NAT Gateway (使用 IaC 自动创建/删除)
- AWS 服务流量 > 500GB/月 → 评估 Interface Endpoint
- 多 VPC 环境 → 评估集中式 VPC Endpoints
- 跨 AZ 流量 → 评估是否可将资源放置在同一 AZ
6. 常见问题
Section titled “6. 常见问题”Q: VPC CIDR 规划错了怎么办?
Section titled “Q: VPC CIDR 规划错了怎么办?”可以添加辅助 CIDR (最多 5 个),但不能修改已有 CIDR。如需完全重新规划,需创建新 VPC 并迁移资源。
Q: 开发环境需要每个 AZ 都部署 NAT Gateway 吗?
Section titled “Q: 开发环境需要每个 AZ 都部署 NAT Gateway 吗?”不需要。开发环境可使用单 AZ NAT Gateway,通过路由表将所有私有子网指向该 NAT Gateway。高可用性在开发环境通常不是必须的。
Q: Interface Endpoint 和 NAT Gateway 如何选择?
Section titled “Q: Interface Endpoint 和 NAT Gateway 如何选择?”计算公式: 如果 (Interface Endpoint 月费 x AZ 数) < (NAT Gateway 月费 + 预期流量 x $0.045),选择 Interface Endpoint。
示例: 访问 ECR (3 个 Endpoint),2 AZ,每月 100GB 流量
- Interface Endpoint: $7.30 x 3 x 2 = $43.80/月
- NAT Gateway: $32.85 + (100 x $0.045) = $37.35/月
- 结论: 此场景 NAT Gateway 更经济
Q: 172.17.0.0/16 为什么要避免?
Section titled “Q: 172.17.0.0/16 为什么要避免?”Docker 默认使用此网段作为 bridge 网络。AWS Cloud9、SageMaker 等服务内部使用 Docker,会与此网段冲突。
- VPC with public and private subnets - AWS 官方子网设计指南
- Transit Gateway - 多 VPC 互联
- One to Many: Evolving VPC Design - AWS 架构博客
- AWS Pricing Calculator - 成本估算工具