Why VPC
Why VPC
什么是VPC
虚拟私有云(Virtual Private Cloud),为云服务提供了虚拟网络环境,是绕不开的云服务基础设施。
从云服务器说起
早期的云服务器就是虚拟机搭配公网IP,用户租用的是一个允许直接从互联网访问的虚拟计算环境,但缺少更高级的网络配置选项。例如早期的云服务器倾向于通过配置iptables防火墙来控制网络流量。随着云计算的发展,也出现了更灵活复杂的网络架构。例如在阿里云购买ECS实例,可以看到如下自动创建的配置:
并产生了如下网络拓扑:
试着解释一下这些配置:
**专有网络:**即VPC,一套隔离的、可由用户自主配置的虚拟网络环境。
私网(Private Network)保留的IP地址范围
根据RFC 1918,以下三个IP地址块被预留用于私有网络内部使用,这些地址不会在全球互联网上路由,因此可以重复使用于不同的私有网络中。
- 10.0.0.0/8: 范围:10.0.0.0 到 10.255.255.255 特点:提供约16,777,216个IP地址。
- 172.16.0.0/12: 范围:172.16.0.0 到 172.31.255.255 特点:提供约1,048,576个IP地址。
- 192.168.0.0/16: 范围:192.168.0.0 到 192.168.255.255 特点:提供约65,536个IP地址。
本实例中VPC使用的主网段是172.16.0.0/12。
**虚拟路由器:**每个VPC都有一个默认的虚拟路由器,负责管理和转发VPC内部以及VPC与外部网络之间的流量。并没有直接出现在实例配置中,在VPC控制台的资源管理中可以维护路由表。
本实例中默认创建的1个路由表,包含2条系统路由条目,目标分别指向
172.19.112.0/20
(下挂虚拟交换机)和100.64.0.0/10
,并且绑定了1个VSwitch
。
虚拟交换机:虚拟路由器可下挂若干虚拟交换机,可以配置具体的子网划分。
本实例中自动创建的虚拟交换机的网段为172.19.112.0/20,它是主网段172.16.0.0/12一个子网。实例分配到了该子网内的一个内网IP地址172.19.120.77(主私网IP)。
安全组:安全组控制了网络出入双向的规则,一个VPC下可以创建多个安全组,每一安全组下可添加多个ECS实例。现在通常使用安全组来控制谁能访问某台ECS的服务,将流量控制的配置从ECS中抽象了出来。因此,安全组是基于主机级别的访问控制。
为什么子网前缀与主网不同?子网是如何计算的?
IPv4是由32位二进制组成的,分为4段8位用点号隔开,通常也使用十进制简化表示。传统的有类寻址按照固定长度的8位、16位、24位分为A、B、C类。然而,使用了CIDR(无类别域间路由)则脱离的这种限制,它使用可变长子网掩码(VLSM)来灵活的分配主机地址位与网络地址位,即斜线后的后缀,如172.19.112.0/20
最后的20
,也就是主网具备20位的子网掩码,使用二进制表示为10101100.00010011.0111XXXX.XXXXXXXX
,它的确实主网段172.16.0.0/12
二进制表示10101100.0001XXXX.XXXXXXXX.XXXXXXXX
的一个子网。
参考:什么是 CIDR? - CIDR 块和表示法简介 - AWS
VPC的原理
VPC基于网络Overlay,即在Underlay的基础上又构建了一层软件定义的逻辑网络,也就是所谓的大二层网络。之所以叫大二层(L2 over IP)就是因为它实际上基于原有OSI模型中的三层网络(即IP网络),将原二层网络的报文封装后通过IP网络传输,到达目标网络后再解封装还原报文并转发给目标主机。这样做可以突破二层网络的作用范围限制,跨域实现二层网络通信。