写在前面

云上的网络模型在不同厂商名字不同但思路一致——AWS 叫 VPC,GCP 叫 VPC,Azure 叫 VNet,阿里 / 腾讯都叫 VPC。本篇讲思路,具体语法看各家文档。

4 个核心概念

概念 一句话
VPC(Virtual Private Cloud) 你在云上的"独立网络",自己定义网段(CIDR)
子网(Subnet) VPC 内的一段网段,绑定具体可用区
路由表(Route Table) "去某网段走哪个网关"的规则
安全组 / 网络 ACL 防火墙——控制哪些包能进 / 出

公网子网 vs 私网子网

   Internet
      │
   ┌──┴────┐
   │  IGW  │  Internet Gateway(VPC 的对外口)
   └──┬────┘
      │
┌─────┼─────────────────────────────┐
│ VPC │                             │
│  ┌──┴──────┐    ┌────────────┐    │
│  │ Public  │    │ Private    │    │
│  │ Subnet  │    │ Subnet     │    │
│  │  - LB   │    │  - DB      │    │
│  │  - Bastion │  │  - 应用    │    │
│  └─────────┘    └────────────┘    │
│       │              │            │
│       │              ↓            │
│       │          ┌─────────┐      │
│       │          │   NAT   │ ← 私网通过 NAT 出网(只出不进)
│       │          └────┬────┘      │
│       └───────────────┘            │
└────────────────────────────────────┘
  • 公网子网:路由表里有 IGW → 内部资源能直接被公网访问(如负载均衡)
  • 私网子网:路由表只走 NAT → 资源只能主动出网,公网不能反向连入

数据库永远在私网子网——这条规则没有例外。

安全组 vs 网络 ACL(NACL)

很多人混淆这两个:

维度 安全组(Security Group) 网络 ACL(NACL)
作用范围 实例级(每张网卡) 子网级
状态 有状态(出去的回包自动放行) 无状态(要单独配出入)
规则 只能 allow,没有 deny allow + deny
默认 默认拒绝所有入站 默认允许所有

实操原则

  • 90% 流量控制用安全组(够用且好理解)
  • NACL 只在需要"整子网级 deny"时用(如黑名单 IP 段)

几条网络设计原则

1. 多 AZ 部署

一个 VPC 跨多个可用区,关键资源每 AZ 都有副本。整个 AZ 挂了你还活着。

2. CIDR 规划要预留

新建 VPC 用 /16(65536 个 IP),子网用 /20/24——别图小用 /24 VPC,子网都没法分。

3. 子网命名 = 角色 + AZ

public-az1  / public-az2  / public-az3
private-app-az1 / private-app-az2 / private-app-az3
private-db-az1  / private-db-az2  / private-db-az3

4. 跨 VPC 互联

场景 方案
同账号同区域多 VPC VPC Peering
多 VPC + 多账号 Transit Gateway / Cloud Hub
跨云 / 公司内网 VPN / Direct Connect / 专线

5. 入口要收敛

所有公网流量经过 LB / API Gateway / WAF——不要让应用 Pod 直接暴露公网。

零信任(Zero Trust)

传统:"VPC 内是可信的,重点防外。" 零信任:"任何流量都要鉴权——VPC 内也不例外。"

落地方式:

  • 服务间用 mTLS(手动或 Service Mesh 自动)
  • SPIFFE/SPIRE 给每个服务分 Workload Identity
  • 短期凭据 + 临时令牌(STS / GCP Workload Identity Federation)

零信任不是工具,是设计原则——不能突击买一套零信任产品就完。逐步把"信任 VPC 边界"换成"信任身份"。

反模式

  • 整 VPC 都是 public 子网:所有 Pod 都有公网 IP——攻击面巨大
  • 数据库 0.0.0.0/0 开 5432:见过太多次扫描入侵报告
  • 安全组规则上百条没人维护:定期审,把名字写清楚(如 prod-app-from-lb
  • NACL 当主防火墙:无状态难维护

推荐阅读

下一篇:让密钥不再裸奔——Secrets 管理。