VPC 是 AWS 中最基础也是应用最广泛的一个服务,然而大多数人对 VPC 却不甚了解,以至于经常遇到一些奇怪的网络问题。
计算机网络是一门既复杂又晦涩难懂的学科,就连 VPC 的官方文档也是写得云里雾里,这让很多没有网络背景的人根本无从下手。本系列文章旨在从实战的角度出发介绍 VPC 的基本概念,让没有网络背景的人也可以轻松玩转 VPC。
本文会介绍 VPC 最基础的几个概念:可用区、子网、Internet 网关和 NAT 网关。尤其是子网,在创建很多资源的时候都要指定。-摘自 AWS 官方文档
换句话说,VPC 是 AWS 为你开辟的一块专属空间,这个 VPC 就是你的专属领地,其他人无法入侵。
-摘自 AWS 官方文档
可用区的作用是增强可用性。如果一个可用区出现了故障(例如断网、断电),其他可用区可以继续提供服务,用户完全无感知。可用区之间的网络延迟极低,就像大学校园里的局域网一样。因此不同的可用区就像在同一个大的局域网中,可以通过内网 IP 直接访问。
-摘自 AWS 官方文档
简单来说,子网就是在可用区内基于 IP 地址再划分出的专属区域,每个子网的 IP 地址段互不重叠。下图展示了 VPC、可用区和子网的关系。该示例中的 VPC 总共包含三个可用区,每个可用区划分出了若干个子网。
子网子网存在的意义是什么?为什么要在可用区里创建子网?要回答这个问题,首先要知道有哪几种类型的子网。
VPC 总共有三种类型的子网:公有子网带有 NAT 网关的私有子网被隔离的私有子网有的子网可以访问外网,有的则不能;有的子网可以被外网访问,而有的则不能。听着有些拗口,像绕口令一样,下面具体看看这 3 种子网都有什么特性。
公有子网具有最大的连通性,既可以访问 Internet 也可以被 Internet 访问。公有子网中的资源有两个 IP 地址:外网 IP 和内网 IP,Internet 网关作为桥梁,连接了 Internet 和公有子网。
公有子网需要注意的是每个 VPC 只有一个 Internet 网关,而且 Internet 网关只是 VPC 和 Internet 之间的一个逻辑连接,不是一个物理设备。因此 Internet 网关的带宽并不由 Internet 网关本身决定,而是由 EC2 的带宽决定。
如果没有 Internet 网关,VPC 将失去和 Internet 的连接。
最后再总结一下 Internet 网关的作用:让公有子网内的资源连接 Internet,同时也让 Internet 连接公有子网内的资源。NAT 网关介于私有子网和 Internet 网关之间,能够将私有子网内的多个私有 IP 映射到一个公有 IP,从而让私有子网内的资源可以访问 Internet。下图展示了一个 NAT 网关的使用案例。
私有子网NAT 网关是和 EC2 平级的位于公有子网内的计算资源,负责私有 IP 和公有 IP 的转换及流量转发。
可用区 1 中的 EC2 通过 NAT 网关访问 Internet。而可用区 2 没有 NAT 网关,因此该可用区内的 EC2 无法访问 Internet。NAT 网关和 Internet 网关有以下几个区别:
NAT 网关负责让私有子网访问 Internet;Internet 网关负责让公有子网访问 Internet。NAT 网关的连接是单向的,私有子网可以访问 Internet,但是 Internet 无法访问私有子网(除非显示地允许该访问,但不在本文的讨论范围之内);Internet 网关的连接是双向的。NAT 网关工作在可用区,Internet 网关工作在 VPC。NAT 网关运行于具体的物理设备,带宽从 5Gbps 至 45Gbps 不等,因此使用 NAT 网关会产生额外费用;Internet 网关只是个逻辑连接,没有带宽限制,也不会产生费用。隔离的私有子网就是没有 NAT 网关的私有子网,上图中可用区 2 的私有子网就是一个隔离的私有子网。隔离的私有子网无法访问或被 Internet 访问,只能和 VPC 内的资源相互连接。
下图是融合了公有子网、带有 NAT 的私有子网以及隔离的私有子网的使用案例。
融合案例上图涉及到 5 类参与方,分别是:
公有子网的外网 IP公有子网的内网 IP带有 NAT 网关的私有子网的内网 IP隔离的私有子网的内网 IPInternet下边的表格总结了这 5 方的连通性(Y 表示可联通,N 表示不可联通)。
该表格的行为连接的发起方,列为连接的接收方。例如从 Internet 发起向公有子网外网 IP 的连接,对应表格的最后一行第一列,该格的值是 Y,表示可连通。通信方公有子网外网 IP公有子网内网 IP带有 NAT 网关的私有子网内网 IP隔离的私有子网内网 IPInternet公有子网YYYYY带有 NAT 网关的私有子网YYYYY隔离的私有子网NYYYNInternetYNNNY回到最开始的问题,子网存在的意义是什么?答案是为了安全。诚然,将所有资源都放置在公有子网中完全不影响功能性。但是这样一来,VPC 内的所有资源就都暴露在了互联网之上,随时有遭到攻击的可能。因此将敏感的资源(例如数据库)放置在私有子网内,和外界彻底隔离,从而提升系统的安全性。
通过一个典型的 API 案例来说明如何正确地使用这 3 种子网类型。为了清晰起见,略去 Internet 网关和 NAT 网关。
API 实战案例公有子网中的 Load Balancer 作为 Internet 的唯一入口,接收来自客户端的请求并转发给私有子网内的 WEB App。WEB App 接到 Load Balancer 转发过来的请求后查询数据库生成响应结果,并通过 Load Balancer 返回给客户端。
以上就是关于可用区、子网、Internet 网关和 NAT 网关的基本介绍,希望这篇文章能帮助你了解 VPC 最基础的概念。更详尽的介绍请参阅 AWS 的官方文档。
相关标签: