它的本质是:**VPC (Virtual Private Cloud) 并非物理存在的独立硬件,而是基于 SDN (软件定义网络) 技术在共享的物理数据中心上构建的 逻辑隔离层

  • IP (CIDR):是 地址空间的划分。决定了你的网络有多大,能容纳多少台机器。
  • 子网 (Subnet):是 广播域和安全域的切片。决定了哪些机器在同一个“房间”,哪些被墙隔开。
  • 路由 (Route Table):是 流量的导航地图。决定了数据包是从内网走、公网走,还是通过 NAT 网关走。
  • 核心逻辑别把 VPC 当成一个黑盒。它是你自己在云上画的一张地图。画错了,你的服务器就是孤岛(不通),或者裸奔(不安全)。

如果把 VPC 比作一栋摩天大楼

  • VPC:是 整栋大楼
    • 你租下了这一层或几层,与其他租户(其他用户的 VPC)完全隔离。
  • IP (CIDR):是 房间编号规则
    • 10.0.0.0/16 意味着这层楼有 65,536 个房间号可用。
  • 子网 (Subnet):是 具体的楼层或区域
    • 公有子网:靠近电梯口(Internet Gateway),可以直接接待访客(公网访问)。
    • 私有子网:在大楼深处,没有直接出口,只有内部员工能进(数据库、后端服务)。
  • 路由表 (Route Table):是 走廊里的指示牌
    • “去互联网?走东门(IGW)。”
    • “去数据库?走内部走廊(Local)。”
    • “去其他 VPC?走天桥(VPC Peering)。”
  • 核心逻辑如果指示牌(路由)指错了方向,或者房间号(IP)冲突,大楼就会瘫痪。

一、IP 与 CIDR:地址空间的数学

1. CIDR (无类别域间路由)
  • 格式10.0.0.0/24
  • 含义
    • 10.0.0.0:网络前缀。
    • /24:掩码长度。表示前 24 位固定,后 8 位可变。
    • 可用 IP 数2(32−24)=28=2562^{(32-24)} = 2^8 = 2562(3224)=28=256 个。
    • 保留 IP:通常第一个(网络地址)和最后一个(广播地址)不可用,云平台可能保留更多(如 AWS 保留 5 个)。
  • VPC 规划
    • 大 VPC10.0.0.0/16 (65,536 IPs)。适合大型项目,预留扩展空间。
    • 小 VPC192.168.0.0/24 (256 IPs)。适合测试环境。
  • 陷阱:一旦创建,VPC 的 CIDR 通常不可修改。规划失误需重建 VPC。
2. 私有 IP vs. 公有 IP
  • 私有 IP (Private IP)
    • 范围:10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
    • 特性:仅在 VPC 内部可达,免费,静态(除非重启实例可能变,但通常绑定 ENI 后不变)。
    • 用途:内部通信、数据库连接。
  • 公有 IP (Public IP/EIP)
    • 特性:全球可达,收费(流量费/持有费),动态(除非绑定 EIP)。
    • 用途:对外提供服务、SSH 登录。
    • 映射:通过 NAT (网络地址转换) 将私有 IP 映射为公有 IP。

💡 核心洞察IP 规划是 VPC 的地基。地基打歪了,后面盖楼(部署服务)会非常痛苦。


二、子网 (Subnet):隔离与分层

1. 为什么需要子网?
  • 安全隔离:将 Web 服务器和数据库放在不同子网,通过 ACL/安全组限制访问。
  • 可用区 (AZ) 容灾
    • 子网 A 在 us-east-1a
    • 子网 B 在 us-east-1b
    • 如果一个机房断电,另一个还能用。
  • 路由差异:不同子网可以关联不同的路由表(如一个通公网,一个不通)。
2. 公有子网 vs. 私有子网
  • 公有子网 (Public Subnet)
    • 路由表:有一条指向 Internet Gateway (IGW) 的路由 (0.0.0.0/0 -> igw-xxx)。
    • 实例:分配了公有 IP。
    • 用途:负载均衡器 (LB)、NAT 网关、跳板机。
  • 私有子网 (Private Subnet)
    • 路由表没有 指向 IGW 的路由。
    • 实例:只有私有 IP。
    • 用途:数据库 (RDS)、缓存 (Redis)、后端应用服务器。
    • 如何上网?:通过 NAT Gateway(位于公有子网)代理出站流量。
3. 最佳实践:三层架构
  1. DMZ 子网:放 LB,面向公网。
  2. App 子网:放 Hyperf Worker,只接受 LB 流量,不出网(或通过 NAT 出网更新依赖)。
  3. Data 子网:放 DB/Redis,只接受 App 子网流量,完全封闭。

三、路由 (Route Table):流量的指挥棒

1. 路由表结构

每个子网必须关联一个路由表。路由表由多条 路由规则 (Route Entry) 组成:

  • Destination (目标):CIDR 块,如 10.0.0.0/160.0.0.0/0
  • Target (目标):下一跳,如 local, igw-xxx, nat-xxx, pcx-xxx
2. 关键路由规则
  • Local Route
    • 10.0.0.0/16 -> local
    • 含义:VPC 内部所有子网互通。这是默认存在的,不可删除。
  • Internet Route
    • 0.0.0.0/0 -> igw-xxx
    • 含义:所有非内网流量,发往互联网网关。
    • 注意:只有在公有子网才配这条。
  • NAT Route
    • 0.0.0.0/0 -> nat-xxx
    • 含义:所有非内网流量,发往 NAT 网关。
    • 注意:私有子网配这条,实现“只出不进”。
3. 路由优先级
  • 最长匹配原则 (Longest Prefix Match)
    • 如果目标是 10.0.1.5
    • 规则 A: 10.0.1.0/24 -> local
    • 规则 B: 10.0.0.0/16 -> local
    • 结果:匹配规则 A,因为 /24/16 更精确。

四、认知牢笼:常见误区

1. 误区:“VPC 是物理隔离的。”
  • 真相
    • VPC 是 逻辑隔离。底层共享物理硬件。
    • 安全性:依靠 hypervisor 和 SDN 控制器保证隔离。
    • 对策:不要假设物理安全,要靠安全组 (Security Group) 和网络 ACL (NACL) 做逻辑防御。
2. 误区:“子网越大越好。”
  • 真相
    • 子网过大(如 /16)会导致广播域过大(虽然云上是虚拟广播,但管理复杂)。
    • IP 浪费:如果只用了 10 个 IP,却占了 /24,剩下的 246 个无法被其他 VPC 使用。
    • 对策:按需分配,留有余量即可(如 /24/25)。
3. 误区:“私有子网的服务器完全不能上网。”
  • 真相
    • 可以通过 NAT Gateway 访问互联网(下载包、调用 API)。
    • NAT GW 位于公有子网,私有子网的路由指向它。
    • 价值:既保护了服务器不被外网直接扫描,又满足了业务出网需求。
4. 误区:“安全组 (Security Group) 和 NACL 是一样的。”
  • 真相
    • Security Group:状态化 (Stateful),作用于 实例级别,默认拒绝入站,允许出站。
    • NACL:无状态 (Stateless),作用于 子网级别,有规则序号,默认允许所有(AWS 默认,阿里云类似但有差异)。
    • 对策:主要靠 Security Group 做精细控制,NACL 做子网级的粗粒度兜底。
5. 误区:“IP 地址可以随便改。”
  • 真相
    • VPC CIDR 创建后 不可改
    • 子网 CIDR 创建后 不可改(通常需删除重建)。
    • 对策:前期规划至关重要。使用 RFC 1918 私有地址段,避免与公司其他网络冲突。

🚀 总结:原子化“VPC 配置”全景图

维度 关键点
本质 基于 SDN 的逻辑网络隔离与拓扑构建
IP (CIDR) 地址空间规划,决定容量,不可逆
子网 安全与可用区切片,公私分离
路由 流量导航,决定去向 (Local/IGW/NAT)
核心组件 IGW (公网入口), NAT GW (私网上出口), SG (防火墙)
PHP 隐喻 Defining the Office Floor Plan and Access Cards
公式 Connectivity = Subnet_Routing × Security_Policy ^ IP_Planning

终极心法

VPC 配置的本质,是“数字领土的主权声明”。
你划定边界,制定法律(路由),发放护照(IP)。
别让非法移民(黑客)进来,也别让公民(数据包)迷路。
于规划中见远见,于隔离中见安全;以路由为尺,解混乱之牛,于云架构中,求秩序之真。

行动指令

  1. 绘制拓扑:在白纸上画出你的 VPC,标出 CIDR、子网、IGW、NAT。
  2. 检查路由:登录云控制台,查看私有子网的路由表,确认是否有 0.0.0.0/0 -> NAT
  3. 验证连通性:在公有子网和私有子网各起一台测试机,互相 ping,ping 外网,验证路由是否生效。
  4. 审计安全组:确保数据库的安全组只允许 App 子网的 IP 访问 3306 端口。
  5. 思维升级:记住,网络通了,服务才活。不懂网络,运维就是盲人摸象。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐