CIDR 与子网规划:从容量到跨网络互联

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

CIDR(Classless Inter-Domain Routing,无类别域间路由)写成 地址/前缀长度。先规划公司可能互联的全部网络,再分配 VPC;不要每个项目都从 10.0.0.0/16 开始。

1. /16、/20、/24 到底意味着什么#

IPv4 总地址数为 2^(32-前缀长度);前缀越长,地址越少。下表的可用数量针对普通 AWS IPv4 子网,扣除 AWS 保留的五个地址,不适用于按整个 VPC 一次扣五个。

CIDR 地址范围示例 总数 子网可分配地址
10.64.0.0/16 10.64.0.0–10.64.255.255 65,536 65,531
10.64.0.0/20 10.64.0.0–10.64.15.255 4,096 4,091
10.64.0.0/22 10.64.0.0–10.64.3.255 1,024 1,019
10.64.0.0/24 10.64.0.0–10.64.0.255 256 251
10.64.0.0/28 10.64.0.0–10.64.0.15 16 11

普通 IPv4 VPC CIDR 与子网范围为 /16–/28。CIDR 必须按边界对齐:10.64.1.0/20 实际落在 10.64.0.0/20,不是从第三段 1 开始的一块新 /20。VPC 限制、子网与保留地址

2. 决策顺序#

  1. 收集冲突范围:所有 AWS/GCP 网络、数据中心、办公网、客户端 VPN(虚拟专用网络)地址池、合作方网络、容器/集群 Service 网段。跨账号、跨区域并不消除冲突。
  2. 确定隔离边界:按环境、责任团队、监管要求和故障范围决定 VPC;不必每个服务一个 VPC,也不要为了省地址把生产与测试混在一起。
  3. 计算每个 AZ(Availability Zone,可用区)的峰值:实例主/附加地址、容器地址、负载均衡器、Endpoint、数据库替换节点均要计算。
  4. 加入重建空间:滚动升级或蓝绿期间新旧并存;一个 AZ 故障后,其他 AZ 能承接负载;保留未来增长和服务预留量。
  5. 分配连续地址池并登记:小型团队使用统一分配表;多账号使用 IPAM(IP Address Manager,地址管理)维护归属、占用、回收与冲突检测。预留块不是先建满子网。

私网通常从 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 中统一选取。172.16.0.0/12 只包含第二段 16–31;192.168 常与家庭 VPN 冲突。任何私网段都不能凭名称认定“安全无冲突”。

3. 企业示例:三 AZ 订单平台#

以下为规划示例,需先确认企业库存中未占用:区域地址池 10.64.0.0/12;生产订单 VPC 分配 10.64.0.0/18,测试分配 10.64.64.0/20,共享服务分配 10.64.80.0/20。地址池不是单个 VPC CIDR。

生产 VPC 共 16,384 个地址;按三个 AZ 各预留一个 /20,最后一个 /20 留作扩展:

用途 AZ-A AZ-B AZ-C
应用 /21 10.64.0.0/21 10.64.16.0/21 10.64.32.0/21
数据 /24 10.64.8.0/24 10.64.24.0/24 10.64.40.0/24
公网入口 /24 10.64.9.0/24 10.64.25.0/24 10.64.41.0/24
Interface Endpoint /24 10.64.10.0/24 10.64.26.0/24 10.64.42.0/24
保留,不创建子网 第三段 11–15 第三段 27–31 第三段 43–47

10.64.48.0/20 整块保留。AZ-A/B/C 是逻辑槽位;跨账号定位同一物理 AZ 应使用 AZ ID,不依赖各账号的 us-east-1a 名称映射。

假设应用稳定总需求 1,800 个地址,失去一个 AZ 后每个剩余 AZ 承接 900;发布重叠按 1.5 倍、增长预算按 1.3 倍,则每 AZ 需要 900 × 1.5 × 1.3 = 1,755。/22 的 1,019 不够;/21 的 2,043 可作为起点,再扣平台占用与地址预留。系数应来自本项目的发布策略和容量模型,不能照抄。

4. 容器与扩容的特殊情况#

EKS(Elastic Kubernetes Service,托管 Kubernetes)默认 VPC CNI(Container Network Interface,容器网络接口)会消耗 VPC 地址,不能只数节点。ENI(Elastic Network Interface,弹性网卡)限制、warm pool、prefix delegation 的连续地址块与升级额外节点都要纳入。Prefix delegation 提高每节点密度,不会凭空增加 VPC 地址。EKS 地址优化

/16 适合有实测规模需求的平台,不应是默认答案;小工作负载可从 /20 或更小开始。子网建好后不能原地扩大 CIDR,通常要新建子网并迁移。VPC 可以按限制增加 secondary CIDR,但不能修改 primary CIDR,也不能靠添加一个不冲突的 secondary CIDR 消除已有 Peering 冲突;互联规则会检查所有地址块。

IPv6 要单独设计地址、路由和安全策略;IPv4 的 0.0.0.0/0 不覆盖 IPv6,Kubernetes Service CIDR 也不能当成可直接路由的 VPC 子网。

5. 本地 hands-on:验证规划#

无需云账号。保存为 check_cidr.py,运行 python3 check_cidr.py:

from ipaddress import ip_network
from itertools import combinations

vpc = ip_network("10.64.0.0/18")
subnets = [ip_network(f"10.64.{base + offset}.0/{prefix}")
           for base in (0, 16, 32)
           for offset, prefix in ((0, 21), (8, 24), (9, 24), (10, 24))]
# 必须替换为完整的企业已占用地址库存。
external = [ip_network("10.64.64.0/20"), ip_network("10.64.80.0/20")]
assert all(n.subnet_of(vpc) for n in subnets)
assert all(not a.overlaps(b) for a, b in combinations(subnets, 2))
assert all(not vpc.overlaps(n) for n in external)
assert min(n.num_addresses - 5 for n in subnets if n.prefixlen == 21) >= 1755
print("PASS: containment, overlap and app capacity")

反向验收:在 external 加入 10.64.32.0/20,应因重叠失败;把容量阈值调到 2,100,应因容量不足失败。输出 PASS 只证明已输入的数据满足约束,不能替代完整库存与真实服务配额检查。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭