最近,我开始研究aws的网络知识,先根据关键字逐一记录要点。本文后续会慢慢逐渐补充内容,一方面是自我学习提升,另一方面也希望能给初学者以启发。
CIDR
CIDR是一个按位的、基于前缀的,用于解释IP地址的标准,通过在IP地址后面加上一个/,然后跟上一个数字表示IP地址段范围。
当创建 VPC 时,必须为这个 VPC 指定 IPv4 CIDR 块。VPC允许的CIDR大小介于 /16 网络掩码 (65,536 个 IP 地址) 和 /28 网络掩码 (16 个 IP 地址) 之间。
例子:
*/24允许2(32-24)=28=256个的IP
192.168.100.0/32->1个IP
0.0.0.0/0->所有IP
私有IP地址/公有IP地址
只能在私有网络中通信和访问的IP是私有IP,由RFC1918指定的私有IPv4地址范围为:
在以上这些范围之外的IP地址,就是公有IP地址,用于访问internet。
VPC
- VPC是 AWS 账户的虚拟网络,它在逻辑上与 AWS 中的其他虚拟网络隔离。
- 所有新帐户都有一个默认VPC:172.31.0.0/16
- 如果未指定子网,则会将新实例启动到默认VPC中;默认VPC具有internet连接,并且所有实例都具有公共IP(以便我们可以使用该实例执行类似于yum update…)
- 一个区域中可以有多个VPC(每个区域最多5个,但这是一个软限制,可以申请提高配额)
- 每个VPC的最大CIDR为5。对于每个CIDR:最小大小为/28:16个IP地址;最大大小为/16:65536个IP地址
VPC子网划分的例子
首先我们先了解默认VPC配置 CIDR=172.31.0.0/16 划分了三个子网
通过上面信息,我们可以推算得出172.31.0.0/16整个子网段的信息:
简单三层网络设计
VPC CIDR = 172.16.0.0/20
根据AWS 子网划分规定得出每个子网的 可用IP=512 – 5 = 507得出每个子网可以创建507台机器
web服务有两个子网段做高可用app服务有两个子网段做高可用 MySQL服务有两个子网段做高可用;预留两个子网段为后期业务扩张进行使用
子网
例如,如果CIDR块为10.0.0.0/24,则保留的IP为:
如果您需要EC2实例的xx个IP,在执行CIDR块时,请记住-5(四舍五入)例如,如果您需要29个IP,请选择/26(64个IP)而不是/27(32个IP)
公有子网、私有子网
公有子网的EC2实例访问网络的前提条件
- 创建 Internet 网关并将其附加到 VPC。
- 将路由添加到您子网的路由表,该路由表将 Internet 范围的流量定向到互联网网关。
- 确保您的子网中的实例具有全局唯一 IP 地址 (公有 IPv4 地址、弹性 IP 地址或 IPv6 地址)。
- 确保您的网络访问控制列表和安全组规则允许相关流量在您的实例中流入和流出。
路由表
- 路由表中包含一组被称为路由的规则
- 用于决定来自您的子网或网关的网络流量的流向何处。
- 主路由表以及自定义路由表,与子网进行关联。
- 在路由选择时,会使用路由表中与流量匹配的最具体的路由条目来路由流量,这也是最长前缀匹配原则。
Internet 网关(IGW)
NAT网关、NAT实例
SNAT (Source NAT)
由企业内网主机(ipA)发往一个互联网主机地址(ipC)的场景,端口不被替换。
DNAT (Destination NAT)
互联网主机(ipC)想访问处于企业内网服务器A(ipA)的场景。
网关收到请求报文并将请求报文内的目标地址和端口更换为局域网内的地址和端口,局域网内的站点收到请求报文后将响应报文发送给网关,网关再将响应报文中的源地址替换为外网地址,将报文发送回外网用户。
PNAT(Port NAT)
互联网主机(ipC)想访问处于企业内网服务器A(ipA)的场景 + 端口转换
以http服务为例,外网用户要访问内网的http服务请求的端口是80,而内网的httpd服务工作在非标准的端口8080上,此时用来作为DNAT转换的网关只将ip做了转换没有将端口进行转换就将报文发给了内网的web服务器,而内网服务器的80端口没有http服务,此时内网的http服务器就需要将发送给本机80端口的数据报文重新重定向至本机的8080端口,这就叫做PNAT也叫端口重定向或者端口映射
NAT实例
- NAT实例是需要部署在公有子网的一台实例。
- 使用NAT实例访问internet需要在私有子网的路由表中添加0.0.0.0/0 将所有其他流量路由至您的NAT实例。
- NAT实例不是高可用的,在出现故障时需要您自行处理故障转移。
- 它的带宽也是受限的,具体的带宽取决于选择的实例类型的带宽,但是价格可能会便宜一点。
NAT网关
- NAT网关的带宽可以自动扩展,费用包括NAT网关的每小时使用费率以及数据处理费率。
- NAT网关在每个可用区是高度可用的,就是说在每个可用区中的 NAT 网关都采用冗余方案,当底层硬件出现问题,AWS会管理迁移。但是如果这个可用区出问题了,那么NAT网关就无法在提供服务了。
- 可以通过在每个可用区中创建一个 NAT 网关可确保您的架构不依赖于可用区。每个可用区都需要一个,因为它们只在一个可用区中运行。
- NAT网关需要绑定一个弹性IP地址,是通过使用这个弹性 IP 地址作为源 IP 地址,将流量发送到 Internet 网关。在子网实例通过NAT网关访问外部服务时,在外部服务看到的请求的来源会是NAT网关的弹性IP地址。
- 它可以突增至 10 Gbps(NAT 实例受限于与 EC2 实例类型关联的带宽)。从5 Gbps开始,当前扩展到45 Gbps。自动缩放。
- 不需要跨AZ故障切换,因为如果AZ发生故障,则不需要NAT
网络ACL、安全组
一言以蔽之,NACL是黑名单,安全组是白名单。
网络ACL
NACL规则
安全组
VPC流日志、堡垒机
- 堡垒机是配置在公有子网的一台EC2实例。当需要SSH私有子网的实例时,可以通过先SSH堡垒机,在通过堡垒机登陆私有子网的实例,一般堡垒机还需要有安全审计的功能。
- AWS是没有堡垒机托管服务的,您需要自己配置和管理堡垒机,并自行负责堡垒机的故障迁移和安全性等工作。
- 可以使用SSM的会话管理服务登陆并管理实例,而不是通过SSH的方式。这种方式需要在实例上安装SSM代理。
IPv6
- 创建一个IPv6的CIDR块与该VPC关联,然后将互联网网关附加到您的VPC,互联网网关是支持IPv6的。
- 在公有子网中启动一台EC2实例并分配一个IPv6的地址,并在对应路由表中添加一个路由表条目,内容为将去往::/0的流量发送到互联网网关,将任何去往IPv6的流量发送到互联网网关。
- 对于私有子网中的实例,经由 IPv6 到 Internet 的出站通信,需要在公有子网中创建一个名为“仅出口互联网网关”,它只适用于IPv6的流量。同样,需要在对应私有子网路由表中添加一条规则,将去往::/0的IPv6流量发送到 “仅出口互联网网关”。