虚拟私有云 VPC
推荐阅读《云数据中心网络(一):VPC》
1.前言
VPC 全称是 Virtual Private Cloud
,翻译成中文是 虚拟私有云。但是在有些场合也被翻译成 私有网络 或者 专有网络 等。这里不免会让人产生疑惑,VPC 究竟是指云还是网络?其实,VPC 既是一种云,也是一种网络模式,不过这应该从服务和技术的角度分别来看。
1.1 基本介绍
从服务角度来看,VPC 指的是一种云,是一种云计算服务,是一种运行在公有云上,将一部分公有云资源为某个用户隔离出来,让这个用户私有使用的资源的集合。它由公有云管理,运行在公共资源上,但是保证每个用户之间的资源是隔离,用户在使用的时候不受其他用户的影响,感觉像是在使用自己的私有云一样。
从这种意义上看,VPC 不是网络,我们可以将 VPC 和它一个字面上相近的概念做对比:VPN
(Virtual Private Network
)。VPN 在公共的网络资源上虚拟隔离出一个个用户网络,例如 IPsec VPN
可以是在互联网上构建连接用户私有网络的隧道,MPLS VPN
更是直接在运营商的 PE 设备上划分隔离的 VRF 给不同的用户。从提供服务的角度来说,如果 VPC 指的只是网络的话,那它跟 VPN 的概念是重复的。所以,从公有云所提供的服务来说,VPC 应该理解成,向用户提供的隔离资源的集合。
用户可以在公有云上创建一个或者多个 VPC,每个部门一个 VPC。对于需要连通的部门创建 VPC 连接。同时,用户也可以通过 VPN 将自己内部的数据中心与公有云上的 VPC 连接,构成混合云。不论哪种用例,VPC 都以更加直观形象让用户来设计如何在公有云上存放自己的数据。
从技术角度来看,VPC 是用户专属的一个二层网络。
1.2 VPC 的作用
用户可以通过 VPC 方便地管理、配置内部网络,进行安全、快捷的网络变更。同时,用户可以自定义安全组内与组间弹性云服务器的访问规则,加强弹性云服务器的安全保护。
1.3 VPC 的适用人群
VPC 专门针对那些有兴趣利用云计算优势,但对云的某些方面存在顾虑的客户而推出。为了满足客户需求,许多公共云供应商设计了一个 VPC,它提供了供应商公共基础设施的一部分,但具有为 VPC 客户保留的专用云服务器,虚拟网络,云存储和私有 ID 地址。
总的来说,VPC 是一种云计算服务,它有时还被称为 “私有云”,但由于 VPC 是通过第三方供应商基础架构而非企业 IT 基础架构提供的私有云,因此存在细微差别。
虚拟私有云为云服务器、云容器、云数据库等云上资源构建隔离、私密的虚拟网络环境。您可以完全掌控自己的专有网络,VPC 丰富的功能帮助您灵活管理云上网络,包括创建子网、设置安全组和网络 ACL、管理路由表、申请弹性公网 IP 和带宽等。此外,您还可以通过云专线、VPN 等服务将 VPC 与传统的数据中心互联互通,灵活整合资源,构建混合云网络。
VPC 使用网络虚拟化技术,通过链路冗余,分布式网关集群,多 AZ 部署等多种技术,保障网络的安全、稳定、高可用。
2.VPC 基本概念
虚拟私有网络(Virtual Private Cloud
,VPC
)是用户构建的专属网络空间,云上的资源可以部署到虚拟网络中,和数据中心中运行的传统网络极其相似。不同私有网络间完全逻辑隔离。用户可以自定义网络环境、包括选择自己的 IP 地址范围、创建子网以及配置路由表和网络网关等,同时私有网络支持多种方式连接 Internet、连接其他 VPC、连接本地数据中心。
2.1 VPC 相关基本概念
VPC CIDR:无类别域间路由(Classless Inter-Domain Routing
)是一个用于给用户分配 IP 地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。云厂商 VPC 的 CIDR 一般要求为 RFC 1918 中指定的私有(非公有可路由)IP 地址范围。
同时云厂商也支持 IPV6 的网络地址。为了限制私有网络的 IP 规模,一般是支持 16 位的地址,例如 10.0.0.0/16
或 192.168.0.0/16
,为了扩大单个 VPC 空间的 IP 数目,部分云厂商支持一个 VPC 多个 CIDR 的功能,如下图,VPC 从 10.0.0.0/16
,扩展为 10.0.0.0/16
和 10.2.0.0/16
。
子网:VPC 内的一个 IP 地址范围,子网一般从 VPC CIDR 内分配 Subnet CIDR,例如 VPC 的 CIDR 为 10.0.0.0/16
,分配给子网为 10.0.0.0/24
,10.0.1.0/24
。
弹性网络接口:IP 地址使 VPC 中的资源能够相互通信以及与 Internet 上的资源进行通信。VPC 中的每个实例都有一个默认网络接口(主网络接口),系统会为该接口在 VPC 的 IPv4 地址范围内指定一个私有 IPv4 地址。一般情况,用户无法从实例(例如,子机)断开主网络接口,但可以创建其他网络接口并将其挂载至 VPC 中的任何实例,当将一个网络接口从一个实例移动到另一个实例时,网络流量也会重导向到新的实例。在 VPC 的实例中包括如下的虚拟网络接口:
- 一个主要私有 IPv4 地址
- 一个或多个辅助私有 IPv4 地址
- 每个私有 IPv4 地址一个弹性 IP 地址
- 一个公有 IPv4 地址,可在启动实例时自动分配给
eth0
的网络接口 - 一个或多个 IPv6 地址
- 一个或多个安全组
- MAC 地址
路由表:一组称为 “路由” 的规则,它们用于确定将网络流量发送到何处。每个子网都必须关联一个路由表,这个路由表可指定允许出站流量离开子网的可用路由,每个子网都会自动关联 VPC 的主路由表,如下表所示。
Destination | Target |
---|---|
10.0.0.0 / 16 10.0.0.0/16 10.0.0.0/16 | local |
用户也可以自定义路由表和路由策略来控制流量的转发,如下图不同的路由表网络流量的转发路径不同。其中 igw-id
表示 Internet 网关 ID。
网络网关:连接到 VPC 的网关,用于启用 VPC 中的资源与互联网之间的通信。例如 互联网网关、NAT 设备 连接 VPC 和互联网,VPN 连接 或 Direct Connect 连接 是连接 VPC 和用户的本地网络。
VPC 终端节点(endpoint
):将 VPC 私密地连接到支持的云服务和 VPC 终端节点服务(由 PrivateLink 提供支持),而无需互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。VPC 中的实例无需公有 IP 地址便可与服务中的资源通信。
2.2 其他相关基本概念
Region:区域或者大区,之间相互隔离,实现最大程度的容错能力和稳定性。
Availability Zones:每个区域都有多个相互隔离的位置,称为 可用区。当启动实例时,用户可以自己选择一个可用区。如果实例分布在多个可用区且其中的某个实例发生故障,则可对应用程序进行相应设计,以使另一可用区中的实例可代为处理相关请求。
Local Zones:目前 AWS 支持 Local Zones。本地区域 是在地理上靠近用户的 AWS 区域的扩展。本地区域拥有自己的 Internet 连接并支持 AWS Direct Connect,因此在本地区域中创建的资源可以为本地用户提供超低延迟的通信。
Wavelength Zones:目前 AWS 支持 Wavelength Zones。利用 AWS Wavelength,开发人员可以为移动设备和最终用户打造具有超低延迟的应用程序。Wavelength 可以将 AWS 标准计算和存储服务部署到电信运营商的 5G 网络边缘。开发人员可以将 VPC 扩展到一个或多个 Wavelength 区域,然后使用 Amazon EC2 实例等 AWS 资源来运行需要超低延迟并连接到区域中的 AWS 服务的应用程序。
3.VPC 通信场景
本章节主要介绍 VPC 的通信的场景。
3.1 VPC 内部互通
默认情况下,同 VPC 下的子网的子机是可以互通。例如 VPC 的 10.0.0.0/16
的子网 10.0.0.0/24
、10.0.1.0/24
关联的路由表会有一个目的网段为 10.0.0.0/16
,Target 为 Local 的路由策略。
Destination | Target |
---|---|
10.0.0.0 / 16 10.0.0.0/16 10.0.0.0/16 | local |
2001 : d b 8 : 1234 : 1 a 00 : : / 56 2001:db8:1234:1a00::/56 2001:db8:1234:1a00::/56 | tgw-id |
可以配置安全组(Security Group
)和 ACL 使得同 VPC 的机器之间不互通。
3.2 VPC 间互通
3.2.1 对等连接
VPC 对等连接 是两个 VPC 之间的网络连接,通过此连接,用户可以使用私有 IPv4 地址或 IPv6 地址在两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。用户可以在自己的 VPC 之间创建 VPC 对等连接,或者在自己的 VPC 与其他账户中的 VPC 之间创建连接。VPC 可位于不同区域(Region
)内。
3.2.2 Transit Gateway 或者云联网
AWS 的 Transit Gateway 是网络中转中心,可用它来 互连 VPC 和本地网络。阿里云类似的产品为 云企业网,腾讯云类似的产品为 云联网。
每个 VPC 具有一个路由表,并且 Transit Gateway 具有一个路由表。
(1)VPC 路由表
每个 VPC 具有一个包含 2 个条目的路由表。第一个条目是 VPC 中本地 IPv4 路由的默认条目;此条目允许此 VPC 中的实例相互通信。第二个条目将所有其他 IPv4 子网流量路由到 Transit Gateway。
Destination | Target |
---|---|
10.1.0.0 / 16 10.1.0.0/16 10.1.0.0/16 | local |
0.0.0.0 / 0 0.0.0.0/0 0.0.0.0/0 | tgw-id |
(2)Transit Gateway 路由表
默认路由,其中启用了路由传播。
Destination | Target | Route Type |
---|---|---|
10.1.0.0 / 16 10.1.0.0/16 10.1.0.0/16 | Attachment for VPC A | propagated |
10.2.0.0 / 16 10.2.0.0/16 10.2.0.0/16 | Attachment for VPC B | propagated |
10.3.0.0 / 16 10.3.0.0/16 10.3.0.0/16 | Attachment for VPC C | propagated |
10.99.99.0 / 24 10.99.99.0/24 10.99.99.0/24 | Attachment for VPN connection | propagated |
阿里云云企业网互通
腾讯云云联网互通
3.3 访问 Internet
3.3.1 Internet 网关
此场景的配置包含一个有单一公有子网的 VPC,以及一个 Internet 网关以启用 Internet 通信。
3.3.2 NAT 网关
公有子网中的实例可直接将出站流量发往 Internet,私有子网中的实例可使用位于公有子网中的 网络地址转换(NAT
)网关访问 Internet。例如,公有子网运行面向公众的 Web 应用程序,数据库服务器则位于私有子网之内而不想暴露后端服务,这样数据库服务器可以使用 NAT 网关连接到 Internet 进行软件更新,但 Internet 不能建立到数据库服务器的连接。
3.4 访问本地网络
3.4.1 VPN 连接
站点到站点 VPN 连接 由云端的 虚拟私有网关 或 中转网关 与位于数据中心的 客户网关设备 之间的两条 VPN 隧道组成。客户网关设备是站点到站点 VPN 连接在用户这一端配置的实体设备或软件设备。
3.4.2 专线接入
Direct Connect 通过标准的以太网光纤电缆将用户的内部网络链接到 Direct Connect 位置。电缆的一端接到 用户的路由器,另一端接到 Direct Connect 路由器。有了此连接以后,用户就可以创建直接连接到云上服务,从而绕过网络路径中的 Internet 服务提供商。目前云厂商一般是支持两种接入,一种是用户直接连接到云厂商的 专线接入点;另外一种是用户连接到云厂商的 Partner,再由 Partner 连接到云厂商的专线接入点。
3.4.3 SD_WAN 接入服务
SD-WAN 接入服务(SD-WAN Access Service
)助力多分支轻松实现与云、数据中心的任意互联,具有即插即用、全球覆盖、智能管控等特性,为企业多分支提供更简单、可靠、智能的一站式的上云体验。
AWS 的 SD-WAN 是把合作伙伴的 SD-WAN 服务部署在 VPC 的机器中并且提供 Transit Gateway 和云网络的其他实例互通,阿里云和腾讯云会单独的售卖 SD-WAN 设备。
其中,Edge 设备为硬件设备形态,在用户 IDC、分支和门店安装 Edge 设备后,可自动与云网络连接。
3.5 将本地网络扩展到云中
注:本章节主要使用 AWS 的云服务进行介绍。
3.5.1 将 VPC 资源扩展到本地扩展区
把 VPC 的子网分配到 Local Zone 中,可以在靠近最终用户的地理位置运行各种云服务。本地区域具有本地 Internet 出入口,以降低延迟。本地区域还支持 Direct Connect,使用户有机会通过专用网络连接路由流量。
3.5.2 将 VPC 资源扩展到 Outposts 中
AWS Outposts 是一项完全托管的服务,可提供相同的云基础设施、云服务、API 和工具到几乎任何数据中心、主机托管空间或本地设施,以实现真正一致的混合体验。
Outposts 提供一套云的硬件和服务,对于私有网络 VPC 分配子网到 Outposts 中,其中有两种互通模型,一种是专线接入,另外一种是提供 Internel 互通。
(1)专线模式
(2)Internet 模式
3.5.3 将 VPC 资源扩展到 Wavelength 区域
Wavelength 可以将 AWS 标准计算和存储服务部署到电信运营商的 5G 网络边缘。开发人员可以将 Amazon VPC 扩展到一个或多个 Wavelength 区域,然后使用 Amazon Elastic Compute Cloud(EC2
)实例等 AWS 资源来运行需要超低延迟并连接到区域中的 AWS 服务的应用程序。
3.6 PrivateLink 和 VPC Endponit
VPC 终端节点使用户能够将 VPC 私密地连接到支持的云服务和 VPC 终端节点服务(由 PrivateLink 提供支持),而无需互联网网关、NAT 设备、VPN 连接或 Direct Connect 连接。VPC 中的实例无需公有 IP 地址便可与服务中的资源通信。VPC 和其他服务之间的通信不会离开云网络。例如云服务商提供的 DNS 服务,可以不需要通过访问 Internet 的 DNS 服务,可以在云服务商的内部环境完成 DNS 服务的访问。
3.6.1 VPC Endpoint
通过 VPC 终端节点可在用户的 VPC 与云服务以及由 PrivateLink 支持的 VPC 终端节点服务之间建立私有连接。
Interface Endpoints:一个弹性网络接口,具有来自子网 IP 地址范围的私有 IP 地址,用作发送到受支持的服务的通信的入口点。
子网 1 中的实例可以使用其默认 DNS 名称,通过 AWS 区域中的公有 IP 地址空间与 Amazon Kinesis Data Streams 通信。
在上图中,为终端节点启用私有 DNS。任一子网中的实例都可以使用默认的 DNS 主机名或特定于终端节点的 DNS 主机名,通过接口终端节点向 Amazon Kinesis Data Streams 发送请求。
Gateway Load Balancer Endpoints:是一个网关,作为在路由表中指定的路由的目标,用于发往受支持的云服务的流量,例如 AWS 的 Amazon S3,DynamoDB,腾讯云的 COS,CDB 等服务。
子网 2 中的实例可通过网关终端节点访问 Amazon S3。
3.6.2 PrivateLink
服务提供方在 VPC 中创建自己的应用程序并将其配置为 PrivateLink 支持的服务(也称作终端节点服务)。其他用户可以使用接口 VPC 终端节点,在他们的 VPC 和你的终端节点服务之间创建连接。
PrivateLink 服务提供商配置在其 VPC 中运行服务的实例,并以 Network Load Balancer 为前端,将 区域内 VPC 对等连接(VPC 在同一区域中)和 区域间 VPC 对等连接(VPC 在不同的区域中)与 PrivateLink 结合使用,可允许跨 VPC 对等连接对使用者进行私有访问。
4.云厂商 VPC 的对比
对于 VPC,主流的云厂商基本上的功能和实现类似。在 VPC 的连接方面,云厂商的基本功能也类似,细节有细微的产品,产品的能力有部分差异。
4.1 私有网络的差别
Google Cloud Platform
(GCP
)的私有网络和其他云厂商有差别。GCP VPC 的特点:
- VPC 网络(包括其关联的路由和防火墙规则)属于全球性资源,它们与任何特定地区或区域均无关联。
- 子网属于地区性资源。每个子网都会定义一个 IP 地址范围。
4.2 专线接入的差别
国内的云厂商阿里云和腾讯云等会支持专线接入的静态路由和 BGP 动态路由,AWS 只支持 BGP 动态路由。而专线接入也有是否支持 NAT 的差别。
4.3 Transit Gateway 或者云联网
目前 Transit Gateway 是负责本地网络实例的连接和互通,跨地域需要借助 Transit Gateway Peering,而腾讯云的云联网,阿里云的云企业网可以支持不同地域的网络实例连接和互通。在路由控制方便,AWS 的使用多路由表,控制粒度更细。
4.4 SD-WAN 接入服务
AWS 的 SD-WAN 是把合作伙伴的 SD-WAN 服务部署在 VPC 的机器中并且提供 Transit Gateway 和云网络的其他实例互通,阿里云和腾讯云会单独的售卖 SD-WAN 设备。
5.总结和展望
私有网络 VPC 作为 IaaS 层基础设施之一,类似高速公路或高铁的在国民经济的作用,一直在不断的追求高速上云,全球互联的愿景,而云上私有网络 VPC 的发展是云基础设施和服务不断的扩张和完善的真实写照。相信未来私有网络 VPC 也能继续的扩展新的应用场景和服务,助力云上和云下的服务的高效智能的互联互通。