VPC 与子网设计
把 VPC、子网、路由、安全组、ACL 的职责边界划清,避免设计缺陷导致的安全与可用性问题。本技能给出从网段规划、多 AZ 分布、公私网分离、安全组最小权限到对等连接、云专线的完整可执行链路。
一、核心原理
VPC 是云上的私有网络边界,内部再分子网、路由表、安全组、网络 ACL 四层控制:
- 子网(Subnet):VPC 内的 IP 分段,绑定可用区(AZ),是资源部署的最小网络单元。
- 路由表(Route Table):决定子网内流量「往哪走」,公私网分离靠它实现。
- 安全组(Security Group):实例级、有状态过滤,默认拒绝入站、允许出站。
- 网络 ACL:子网级、无状态过滤,默认全放行,入出站需分别配。
flowchart TB
VPC[VPC 10.0.0.0/16] --> PubA[公有子网 10.0.1.0/24<br/>AZ-a]
VPC --> PubB[公有子网 10.0.2.0/24<br/>AZ-b]
VPC --> PrivA[私有子网 10.0.3.0/24<br/>AZ-a]
VPC --> PrivB[私有子网 10.0.4.0/24<br/>AZ-b]
PubA --> IGW[互联网网关]
PrivA --> NAT[NAT 网关]
PrivB --> NAT
NACL[网络 ACL 子网级] -.-> PubA
SG[安全组 实例级] -.-> PubA
二、参考架构(多 AZ 公私网分离)
flowchart LR
subgraph AZ-a
W1[Web 10.0.1.0/24] --> A1[App 10.0.3.0/24]
A1 --> D1[DB 10.0.5.0/26]
end
subgraph AZ-b
W2[Web 10.0.2.0/24] --> A2[App 10.0.4.0/24]
A2 --> D2[DB 10.0.6.0/26]
end
LB[负载均衡] --> W1 & W2
W1 -->|NAT| IGW[互联网]
配套 ASCII 网段分配图(用于方案文档):
VPC 10.0.0.0/16(预留 50% 扩展)
├── AZ-a
│ ├── 10.0.1.0/24 公有 Web(互联网可达)
│ ├── 10.0.3.0/24 私有 App
│ └── 10.0.5.0/26 私有 DB
├── AZ-b
│ ├── 10.0.2.0/24 公有 Web
│ ├── 10.0.4.0/24 私有 App
│ └── 10.0.6.0/26 私有 DB
└── 10.1.0.0/16 ← 预留扩展(对等连接/新业务)
三、关键参数决策表
3.1 多 AZ 网段分配(真实数值)
| 子网用途 | 网段(示例) | 掩码 | 可用 IP | 公网 | 安全组典型端口 |
|---|---|---|---|---|---|
| Web-a | 10.0.1.0/24 | /24 | 254 | 是 | 80/443 对公网 |
| Web-b | 10.0.2.0/24 | /24 | 254 | 是 | 80/443 对公网 |
| App-a | 10.0.3.0/24 | /24 | 254 | 否 | 8080 仅 Web 源 |
| App-b | 10.0.4.0/24 | /24 | 254 | 否 | 8080 仅 Web 源 |
| DB-a | 10.0.5.0/26 | /26 | 62 | 否 | 3306 仅 App 源 |
| DB-b | 10.0.6.0/26 | /26 | 62 | 否 | 3306 仅 App 源 |
3.2 安全组 vs 网络 ACL 职责边界
| 维度 | 安全组 SG | 网络 ACL |
|---|---|---|
| 作用范围 | 实例/网卡级 | 子网级 |
| 状态 | 有状态(回包自动放行) | 无状态(出入都要配) |
| 默认规则 | 拒绝入站、允许出站 | 全部放行 |
| 典型用途 | 应用端口白名单 | 子网边界黑名单(封网段) |
3.3 对等连接 vs 云专线
| 互联方式 | 适用 | 传递性 | 成本 |
|---|---|---|---|
| VPC 对等连接 | 云内 VPC 间 | 不可传递(点到点) | 低/免费(跨区收流量费) |
| 云联网/Transit Gateway | 多 VPC 网状 | 可传递 | 按带宽包 |
| 云专线 | 云上云下 | — | 按带宽包月,较高 |
四、分步 SOP
- 确定 VPC 划分粒度:按环境(生产/测试)或业务域划分,粒度合理。
- 网段规划:跑
vpc_cidr_planner.py分配不重叠网段,预留 ≥50% 扩展,避免与其他 VPC/线下冲突。 - 多 AZ 分布:业务子网跨 AZ,避免单 AZ 风险。
- 公私网分离:需公网访问的资源放公有子网,其余走 NAT 出网。
- 路由表设计:按子网用途区分路由表(public-rt / private-rt),无冗余错误路由。
- 安全组最小权限:按应用开放必要端口,禁止 0.0.0.0/0 全通。
- 对等/专线:VPC 间用对等连接(点到点)或云联网(网状),云下用专线。
五、真实配置示例
5.1 AWS VPC + 对等连接 + 云专线
# 对等连接(VPC 间)
aws ec2 create-vpc-peering-connection --vpc-id vpc-a --peer-vpc-id vpc-b
aws ec2 accept-vpc-peering-connection --vpc-peering-connection-id pcx-xxx
# 双向路由
aws ec2 create-route --route-table-id rtb-a \
--destination-cidr-block 10.2.0.0/16 --vpc-peering-connection-id pcx-xxx
# 云专线(Direct Connect)虚拟接口
aws directconnect create-private-virtual-interface \
--connection-id dxcon-xxx --new-private-virtual-interface \
'{"virtualInterfaceName":"vif-prod","vlan":101,"asn":65001,"addressFamily":"ipv4"}'
5.2 阿里云 VPC + 高速通道(云专线)
# 创建边界路由器 VBR(接入专线)
aliyun vpc CreateVirtualBorderRouter --PhysicalConnectionId pc-xxx \
--VlanId 101 --CircuitCode vbr-prod
# 创建专线关联 VPC 的对等连接(CEN 云企业网)
aliyun cbn CreateCen --Name prod-cen
5.3 华为云 VPC + 安全组
# 创建安全组并放行 443
# (华为云 Console/API 等价概念)
# 安全组规则:入方向 TCP 443 源 0.0.0.0/0;TCP 22 源 <堡垒机IP>/32
> 完整可填空网段分配模板见 assets/vpc-cidr-template.txt,参数与公式详解见 references/vpc-design-parameters.md。
六、验证方法与达标阈值
# 网段规划 + 重叠检测
python vpc_cidr_planner.py --base 10.0.0.0/8 \
--existing "10.10.0.0/16,172.16.0.0/12" \
--vpcs "prod:5000,test:2000,shared:500"
# 审计安全组(AWS)
aws ec2 describe-security-groups --query 'SecurityGroups[].{Id:GroupId,Ingress:IpPermissions}'
| 验证指标 | 达标线(参考) | 采集方式 |
|---|---|---|
| 网段零重叠 | 所有 VPC/线下无重叠 | 脚本比对 |
| 业务跨 AZ | 每层至少 2 AZ | 控制台/API |
| 安全组最小权限 | 无 0.0.0.0/0 全通 | 安全组审计 |
| 公私网分离 | 私有子网无直接公网 | 路由表核对 |
七、常见故障排查表
| 现象 | 根因方向 | 首要动作 |
|---|---|---|
| 网段重叠导致路由冲突 | 未统一规划 CIDR | 重规划网段,规避重叠 |
| 对等连接不通 | 未双向加路由 | 核对双方路由表 |
| 私有子网无法出网 | NAT 网关未配/路由缺失 | 核对 private-rt 指向 NAT |
| 实例被安全组误拦 | 规则过严或方向错 | 审计安全组出入站 |
| 单 AZ 故障业务全挂 | 未跨 AZ 部署 | 补多 AZ 冗余 |
> 更多案例见 references/vpc-design-troubleshooting.md。
八、输出规范
交付时应产出:VPC 与子网规划表、多 AZ 网段分配图、路由表清单、安全组规则审计与收敛建议、对等连接/专线方案、流日志与可观测配置。
九、边界与风险
- 安全组不能替代防火墙,边界仍需网络层防护(云防火墙/WAF)。
- 对等连接不可传递,多 VPC 全互通需用云联网/Transit Gateway,否则要建 O(n²) 对等。
- 变更子网/路由/安全组前评估影响面,网段一旦上线再改代价极高。
配套资源
- 参数手册:
references/vpc-design-parameters.md - 配置对照:
references/vpc-design-configs.md - 故障案例库:
references/vpc-design-troubleshooting.md - 数据基线:
assets/multi-az-cidr-baseline.csv - 网段模板:
assets/vpc-cidr-template.txt - 脚本:
scripts/vpc_cidr_planner.py(VPC 网段规划器,规避重叠) - 配套检查清单:《VPC 与子网设计清单》