一直以来在用AWS搭建一些分布式的服务,要知其然,知其所以然,抽空对相关的理论进行了梳理和总结,特在此记录和分享。
Amazon VPC是AWS的虚拟网络,实现了AWS云的物理隔离,我们可以将EC2放置于VPC内。
创建VPC时,需要以CIDR (Classless Inter-Domain Routing)块形式指定一个IPv4地址范围; 例如,10.0.0.0/16。
一个VPC可以跨越区域内所有的可用分区。 下图以新建带有IPv4 CIDR块的VPC为例进行说明。
创建一个 VPC后可以附加一个或多个subnet到每个Availability zone.
什么是IPv4 CIDR块?
它是无类别域间路由 (Classless Inter-Domain Routing) 的缩写。
这就是要指定IP范围的方式。
符号是 / 。
先以10.0.0.0/16为例。
数字16为掩码,它决定IP范围。
这里的IP是IPv4。它由32位组成,每次按8位(八位位组)分组,用点分隔。因此,在示例10.0.0.0中,二进制表示为:00001010.00000000.00000000.00000000。
16作为掩码,从左到右用数字“1”表示,形成一个IP地址格式。结果是11111111.11111111.00000000.00000000。
可以在网络内使用掩码上有0的位置。这意味着,如果将最后两个八位字节中的所有剩余位用于网络,IP范围将是00001010.00000000.00000000.00000000至00001010.00000000.11111111.11111111,或小数位10.0.0.0至10.0.255.255。
如果掩码为24或11111111.11111111.11111111.00000000,则只获取最后一个八位字节。
顾名思义,为了使VPC能够访问互联网,就必须将其连接上互联网的网关。
internet gateway是可水平扩展的、冗余的、高可用的VPC组件,用于VPC与internet之间的通信。
作用:
子网是 VPC 内的 IP 地址范围,可以在指定子网内启动AWS资源。对必须连接互联网的资源使用公有子网,而对将不会连接到互联网的资源使用私有子网。
每个子网必须完全位于一个可用分区内,不能跨越多个可用分区。
指定掩码“24”。
转换为二进制的24掩码是11111111.11111111.11111111.00000000。因此,前三个八位字节已经保留,唯一的空间是最后一个八位字节。子网的IP范围是从10.0.0.1到10.0.0.255的范围。
当VPC内只有一个subnet时,subnet的CIDR block可以于VPC的相等;
当VPC内有多个subnet时,subnet的CIDR block是VPC的子集,多个subnet的CIDR blocks不可重复。
For example, if you create a VPC with CIDR block 10.0.0.0/24
, it supports 256 IP addresses. You can break this CIDR block into two subnets, each supporting 128 IP addresses. One subnet uses CIDR block 10.0.0.0/25
(for addresses 10.0.0.0
- 10.0.0.127
) and the other uses CIDR block 10.0.0.128/25
(for addresses 10.0.0.128
- 10.0.0.255
).
例如:我们创建一个VPC 的CIDR block 10.0.0.0/24,支持256个IP地址。我们将这个CIDR block分为两个subnet,每个subnet支持128个IP地址。
subnet-01 的CIDR block:10.0.0.0/25 (25掩码是11111111.11111111.11111111.10000000,可以使用的IP:
10.0.0.0 - 10.0.0.127 =》
00001010.00000000.00000000.00000000 - 00001010.00000000.00000000.10000000
subnet-02 的CIDR block:10.0.0.128/25 (25掩码是11111111.11111111.11111111.10000000,可以使用的IP:
10.0.0.128 - 10.0.0.255 =》
00001010.00000000.00000000.10000001 - 00001010.00000000.00000000.11111111
NACL允许用户指定网络的入站和出站流量规则。
可以根据协议类型(如HTTP,TCP,UDP等)和端口号为网络设置任何规则。
由最低到最高给每个规则一个数字。
创建VPC时会自动创建一个NACL
路由表包含一组称为“路由”的规则,它们用于确定将网络流量从您的 VPC 发送到何处。您可以将子网与特定路由表显式关联。否则,子网将与主路由表隐式关联。
路由表中的每个路由都指定了您希望将流量传输到的 IP 地址范围(目的地)以及发送流量所通过的网关、网络接口或连接(目标)。
网关路由表 — 与互联网网关或虚拟私有网关关联的路由表。
要使子网能够通过互联网网关访问 Internet,请将以下路由添加到子网路由表中。路由的目的地为 0.0.0.0/0
,表示所有 IPv4 地址。目标是连接到您的 VPC 的互联网网关。
目标 | 目标 |
---|---|
0.0.0.0/0 | igw-id |
创建两个路由表,将其命名为RT1和RT2。
对于RT1,打开“路线选项卡”,然后单击“编辑路线”。添加目标为0.0.0.0/0的路由,目标是刚创建的互联网网关。
这意味着0.0.0.0/0将其他流量引导到互联网网关,以便它可以访问互联网。单击“保存路由”,然后转到“子网关联选项卡”。
单击“编辑子网关联”并添加之前创建的名为Ellen-subnet-public-01的子网
这就是如何使子网公开;将它与一个路由表关联,该路由表的目的地是互联网网关。
当VPC中的子网中的实例能够访问internet时,需要执行以下操作。
创建 internet gateway ,并将其attach到VPC中
将路由添加到subnet的route table 中,将internet绑定的流量定向到internet网关。
确保子网中的实例具有全局唯一的IP地址(公共IPv4地址、弹性IP地址或IPv6地址)。
确保network access control lists和security group规则允许相关流量进出您的实例。