VPC 把【隔开一台机器】升级成【隔开一整张网】;而一个子网是公有还是私有,只在路由表里那一行。
上一节说私有云要独占机器。但在公有云上,也有一块【属于你的网】——这就是 VPC。教材 6-4 的并列关键词只有【VPC】,但它是理解云上安全的第一块砖。
一、VPC 是什么
VPC(虚拟私有云):在公有云上,用软件划出来的一块逻辑上独占的网。
注意【逻辑上】三个字。 底下的物理机器还是厂商的、还是与别人共用的——但在这张网里,从外面看进来,它就是你自己的一整张内网。
VPC 里的六个关键词:
- VPC:你在云上的一块私有网,网段自己定(比如 10.0.0.0/16)。
- 子网:从 VPC 里切出来的一段,绑在某个可用区上。
- 公有子网:路由表里有
0.0.0.0/0指向互联网网关。 - 私有子网:路由表里没有通往互联网的路由。
- 安全组:挂在机器上,只写允许规则,有状态。
- 网络 ACL:挂在子网上,允许和拒绝都能写,无状态。
默认是隔离的,连通要自己开。 这句话是整个 VPC 设计的前提——新建一个 VPC,外面进不来;想让什么通,自己加一条规则。 这和自己机房那种【一张大网谁都看得见谁】是完全相反的设计。
二、公有子网与私有子网:差别只在路由表
这是 VPC 里最常被误解的一点。
【公有】和【私有】不是子网的属性,是路由表的属性。 同一个子网,把 0.0.0.0/0 → 互联网网关 那条路由删掉,它立刻就变成私有;加回去,它又变回公有。子网的名字不起任何作用。
一台机器要能被公网访问,三件事缺一不可:
- 它所在子网的路由表里,有
0.0.0.0/0 → 互联网网关这一行 - 它自己有一个公网 IP
- 它的安全组放行了对应的端口
反过来也成立:把数据库放进私有子网、不给公网 IP——外面就是摸不到它。 这是云上保住数据库最常用的一招。
三、CIDR:网段怎么写、能装多少地址
VPC 和子网都用 CIDR 表示,斜杠后面的数字表示【前多少位是网络号】:
- 10.0.0.0/16:主机位 32 − 16 = 16 位,共 2^16 = 65536 个地址
- 切成 /20:主机位 32 − 20 = 12 位,每个 2^12 = 4096 个地址
- 65536 ÷ 4096 = 16——一个 /16 最多切 16 个 /20
但云厂商每个子网还要预留 5 个地址(网络号、网关、DNS、广播等),所以 /20 子网实际可用 4096 − 5 = 4091 个。
这个【扣 5 个】的细节很重要:给子网划得太小,比如 /28(16 个地址),扣掉 5 个只剩 11 个可用——一台上数据库、一台跑应用、一台做跳板机,就快满了。
四、安全组与网络 ACL:两层闸门
都是【防火墙】,但挂的位置和脾气不一样:
- 挂在哪:安全组挂机器(网卡)上,网络 ACL 挂子网上。
- 规则类型:安全组只有允许,没有拒绝(没写就是拒绝);网络 ACL 允许和拒绝都能写。
- 有没有状态:安全组有状态——放行出去,回包自动放行;网络 ACL 无状态——回包要单独写规则。
- 匹配方式:安全组把全部规则看一遍;网络 ACL 按编号从小到大,命中就停。
日常主要用安全组,网络 ACL 当子网级的兜底。 为什么要有两层?因为纵深防御——万一某台机器起的时候忘了挂安全组,子网那一层的 ACL 还能拦一道。
安全组的【有状态】是最省事的一点:你写一条【允许 443 进来】,回程流量不用再写规则,自动就通了。这一点和传统防火墙不一样,很多新手会在这里多写一条没用的规则。
五、VPC 和私有云,别搞混
这两个词很像,但说的是两件事:
- VPC:公有云里逻辑隔离的一段网。机器还是厂商的,还是与别人共用,只是网络被隔开了。
- 私有云:资源专属一套环境。机器(物理或虚拟)就是你一个组织在用。
所以 VPC 不是私有云。 它是一个在公有云上【把网隔开】的工具——隔开的是网络,不是硬件。
顺序上,通常是先选公有云还是私有云(6-3),再在公有云上划 VPC(6-4)。 这个层次关系搞清楚了,云的架构图就看得懂了。
六、动手 Demo:VPC 到底隔开了什么
把网段的算法自己跑一遍,再看一句话——一个子网的公有与私有,只在路由表里那一行。
total = 2 ** (32 - 16)
sub = 2 ** (32 - 20)
print(" 10.0.0.0/16 -> 2^(32-16) = %d 个地址" % total)
print(" 切成 /20 -> 2^(32-20) = %d 个地址" % sub)
print(" 最多切 %d 个 /20" % (total // sub))
print(" 每个 /20 实际可用 = %d - 5 = %d 个" % (sub, sub - 5))
print()
print(" 公有还是私有,就看路由表里有没有这一行:")
print(" 0.0.0.0/0 -> 互联网网关")
print(" 有 = 公有子网;没有 = 私有子网。名字不算数。")
实跑输出:
--------------------------------------------------------------------
VPC 里的六个词
--------------------------------------------------------------------
词 一句话
--------------------------------------------------------
VPC 你在云上的一块私有网,网段自己定
子网 从 VPC 里切出来的一段,绑一个可用区
公有子网 路由表里有 0.0.0.0/0 → 互联网网关
私有子网 路由表里没有通往互联网的路由
安全组 挂在机器上,只写允许,有状态
网络 ACL 挂在子网上,可写允许与拒绝,无状态
记住一句话:公有还是私有,不是子网的属性,是【路由表】的属性。
同一个子网,把 0.0.0.0/0 → 互联网网关 那条路由删掉,它立刻就变私有。
一个 /16 的网段能装多少地址:
10.0.0.0/16 → 2^(32-16) = 2^16 = 65536 个地址
切成 4 个 /20 的子网,每个:
2^(32-20) = 2^12 = 4096 个地址
但云厂商每个子网要预留 5 个地址(网络号、网关、DNS 等):
4096 - 5 = 4091 个可用
65536 ÷ 4096 = 16——一个 /16 最多切 16 个 /20。
一台机器什么时候能被公网访问?三件事缺一不可:
① 它所在子网的路由表里,有 0.0.0.0/0 → 互联网网关
② 它自己有一个公网 IP
③ 它的安全组放行了对应的端口
反过来说:把数据库放进私有子网、不给公网 IP——外面就是摸不到它。
对比项 安全组 网络 ACL
------------------------------------------------------------
挂在哪 机器上(网卡) 子网上
规则类型 只有允许,没有拒绝 允许和拒绝都能写
有没有状态 有,回包自动放行 无,回包要单独写
匹配方式 全部规则都看一遍 按编号从小到大
看第三行:一个 /16 能切 16 个 /20。规划网段的时候,先算这一步,能避免后面【子网不够用、又要重建】的麻烦——在云上,网段一旦定下来,改起来很贵。 看第四行:每个子网要扣掉 5 个地址。小网段(/28、/29)扣完之后所剩无几,这是新手最容易踩的坑。 看最后三行:公有私有取决于路由表,不取决于名字。记住这句,任何 VPC 的问题都能从【看路由表】开始查——这也是排障时最有效的一步。
30 秒实验
- 打开云厂商控制台(或者找一张它的架构图),看 VPC 和子网画在哪一层。
- 看它的安全组默认规则——默认是不是【拒绝一切入站】。
- 自己算一下:10.0.0.0/24 能装多少个地址?扣掉预留的 5 个还剩多少?
常见误区
- 错误:VPC 就是私有云。——纠正:不是。 VPC 是公有云里逻辑隔离的一段网,物理机器还是厂商的、还是与别人共用。它隔开的是网络,不是硬件。
- 错误:把机器放进私有子网,它就安全了。——纠正:私有子网只是第一步。 安全组、IAM 权限、磁盘加密、系统补丁,一个都不能少。私有子网解决的是【外面连不上】,不是【里面就安全】。
- 错误:安全组和网络 ACL 功能重复,配一个就行。——纠正:它们挂的位置不同(机器 vs 子网),规则特性也不同(有状态 vs 无状态)。日常主要用安全组,ACL 当子网级的兜底,这就是纵深防御。
自测三问(点开对答案)
1. 一个子网是公有还是私有,由什么决定? —— **路由表。** 有 `0.0.0.0/0 → 互联网网关` 的是公有子网,没有的是私有子网。**子网的名字不起任何作用。** 2. 安全组和网络 ACL 最大的两个差别是什么? —— ① **挂在哪**——安全组挂机器、网络 ACL 挂子网;② **有没有状态**——安全组有状态(回包自动放行),网络 ACL 无状态(回包要单独写)。另外安全组只有允许规则,网络 ACL 允许和拒绝都能写。 3. 10.0.0.0/16 切成 /20,能切几个?每个多少个地址? —— 2^(32−16) = 65536,2^(32−20) = 4096,**65536 ÷ 4096 = 16 个**。注意每个子网云厂商还要预留 5 个地址,**实际可用 4091 个**。- ☐ 下一节(6-5 云服务供应商的概述:知名企业、合作伙伴)
相关笔记
- 分配IP地址 —— 网段怎么划分,DHCP 怎么发地址
- IP地址与MAC地址的区别 —— 网络层的隔离是怎么实现的
- 云服务的两大类型 —— 上一节说机器归谁,这一节说网归谁
- VPC的构建 —— VPC 具体怎么建
- 互联网中使用的地址与私有网络中使用的地址(全局地址、私有地址) —— 10.x 这类私有地址的来历
- 从私有网络到互联网间的通信(NAT) —— NAT 网关就是从这里来的
- 🕸️ Web技术原理 · 索引