最近看火线社区有好多云安全的文章,还有公众号上,学习到了好多,自己也开始学习一下,做一下记录,如果有不对的欢迎大佬指出!
1、VPC(Virtaul Private Cloud)
首先说一下自己的理解,VPC相当于一个局域网,相较于传统的网络,局域网下面有路由,子网等,在VPC中一样存在这些,所以我觉得这些交换机,路由,ACL就与传统网络类似
首先我们来看一下在亚马逊Aws上对VPC的解释

VPC的组成

我们再来看一下阿里云对于VPC的解释

2、Switch
首先看看常见的交换机都是用来做什么

在阿里云中交换机叫vSwitch,可能是virtaul的意思

可以通过创建交换机为专有网络划分一个或多个子网。同一专有网络内的不同交换机之间内网互通。云资源必须部署在交换机内,您可以将应用部署在不同可用区的交换机,提高应用的可用性。交换机不支持组播和广播。
3、NAT
我们常见在渗透中说的NAT,内网穿透 NAT网关可以提供公网地址转换功能,使您VPC内的ECS实例能够访问互联网和为互联网提供服务

在NAT中还有两个名次,一个是SNAT,还有一个是DNAT
3.1、SNAT
首先看一下阿里云官网的SNAT的架构图

您可以通过公网NAT网关的SNAT功能,配置SNAT条目,使得VPC内无公网IP的ECS实例可以通过公网NAT网关绑定的EIP访问互联网
3.2、DNAT
我们再来了解一下DNAT 官方解释:公网NAT网关支持DNAT功能,将公网NAT网关上的公网IP通过端口映射或IP映射两种方式映射给ECS实例使用,使ECS实例能够对外提供公网访问服务 在下面VPC创建中会演示关于DNAT的作用
4、ACL
*访问控制*网络ACL是专有网络VPC中的网络访问控制功能。您可以在专有网络VPC中创建网络ACL并添加入方向和出方向规则。创建网络ACL后,您可以将网络ACL与交换机绑定,实现对交换机中ECS实例流量的访问控制。
5、安全组
比较常见的一个功能,我们在配置ECS的时候,可以配置入站出站的规则

出站方向默认都是全放的(很少会改出站)

入站方向,换个比较好理解的
1、我们部署好Web网站之后需要放通80,开启了SSL,需要放通443,不然访问不了我们的网站
2、NC开启监听之后,还要在安全组中放通该端口即可

6、EIP
EIP全称(Elastic IP Address),中文:弹性公网IP
弹性公网IP(Elastic IP Address,简称EIP)是可以独立购买和持有的公网IP地址资源。目前,EIP支持绑定到专有网络类型的ECS实例、专有网络类型的私网SLB实例、专有网络类型的辅助弹性网卡、NAT网关和高可用虚拟IP上。
7、询问AWS客服
虽然在写下这一篇文章之前,我就已经把VPC叫成局域网了,但是既然需要写给别人看,我觉得就还是确认一下,不要误人子弟 首先我询问了客服:能否将VPC理解为局域网


8、负载均衡(SLB)
负载均衡SLB(Server Load Balancer)是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务器来扩展应用系统的吞吐能力,并且可以消除系统中的单点故障,提升应用系统的可用性

8.1、ALB
应用型负载均衡ALB(Application Load Balancer)是阿里云推出的专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模应用层流量处理能力。ALB具备处理复杂业务路由的能力,与云原生相关服务深度集成,是阿里云官方提供的云原生Ingress网关。

8.2、CLB
传统型负载均衡CLB(Classic Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(ECS实例)的流量分发控制服务。CLB扩展了应用的服务能力,增强了应用的可用性。

8.3、ALB与CLB的区别
首先作用的层不一样
ALB作用于七层,·针对的协议都是HTTP,HTTPS
CLB作用于四层,针对的协议主要是TCP,UDP这四层
算法上的区别
最直观的就是,HTTP/HTTPS中会有一些请求头,例如Cookie,Session这些请求标头来粘性会话,但是在TCP协议就不会有这些HTTP标头
8.4、常见负载均衡算法
8.4.1、Random 随机
这是最简单的一种,使用随机数来决定转发到哪台机器上。
优点:简单使用,不需要额外的配置和算法。
缺点:随机数的特点是在数据量大到一定量时才能保证均衡,所以如果请求量有限的话,可能会达不到均衡负载的要求。
8.4.2、Round Robin轮询
这个也很简单,请求到达后,依次转发,不偏不向。每个服务器的请求数量很平均。
缺点:当集群中服务器硬件配置不同、性能差别大时,无法区别对待。引出下面的算法。
8.4.3、随机轮询
所谓随机轮询,就是将随机法和轮询法结合起来,在轮询节点时,随机选择一个节点作为开始位置index,此后每次选择下一个节点来处理请求,即(index+1)%size。
这种方式只是在选择第一个节点用了随机方法,其他与轮询法无异,缺点跟轮询一样。
8.4.4、Weighted Round Robin 加权轮询
这种算法的出现就是为了解决简单轮询策略中的不足。在实际项目中,经常会遇到这样的情况。
比如有5台机器,两台新买入的性能等各方面都特别好,剩下三台老古董。这时候我们设置一个权重,让新机器接收更多的请求。物尽其用、能者多劳嘛!
这种情况下,“均衡“就比较相对了,也没必要做到百分百的平均。
Nginx的负载均衡默认算法是加权轮询算法。
8.4.5、Nginx负载均衡算法
有三个节点{a, b, c},他们的权重分别是{a=5, b=1, c=1}。发送7次请求,a会被分配5次,b会被分配1次,c会被分配1次。
一般的算法可能是:
- 1、轮训所有节点,找到一个最大权重节点;
- 2、选中的节点权重-1;
- 3、直到减到0,恢复该节点原始权重,继续轮询;
这样的算法看起来简单,最终效果是:{a, a, a, a, a, b, c},即前5次可能选中的都是a,这可能造成权重大的服务器造成过大压力的同时,小权重服务器还很闲。
Nginx的加权轮询算法将保持选择的平滑性,希望达到的效果可能是{a, b, a, a, c, a, a},即尽可能均匀的分摊节点,节点分配不再是连续的。
Nginx加权轮询算法
1、概念解释,每个节点有三个权重变量,分别是:
- (1) weight: 约定权重,即在配置文件或初始化时约定好的每个节点的权重。
- (2) effectiveWeight: 有效权重,初始化为weight。 在通讯过程中发现节点异常,则-1; 之后再次选取本节点,调用成功一次则+1,直达恢复到weight; 此变量的作用主要是节点异常,降低其权重。
- (3) currentWeight: 节点当前权重,初始化为0。

观察到七次调用选中的节点顺序为{a, b, a, c, a, b, a},a节点选中4次,b节点选中2次,c节点选中1次,算法保持了currentWeight值从初始值{c=0,b=0,a=0}到7次调用后又回到{c=0,b=0,a=0}。
8.4.6、Weighted Random 加权随机
加权随机法跟加权轮询法类似,根据后台服务器不同的配置和负载情况,配置不同的权重,不同的是,它是按照权重来随机选取服务器的,而非顺序。
8.4.7、Least Connections 最少连接
这是最符合负载均衡算法的一个。需要记录每个应用服务器正在处理的连接数,然后将新来的请求转发到最少的那台上。
8.4.8、Latebcy-Aware
与方法6类似,该方法也是为了让性能强的机器处理更多的请求,只不过方法6使用的指标是连接数,而该方法用的请求服务器的往返延迟(RTT),动态地选择延迟最低的节点处理当前请求。该方法的计算延迟的具体实现可以用EWMA算法来实现,它使用滑动窗口来计算移动平均耗时。
Twitter的负载均衡算法基于这种思想,不过实现起来更加简单,即P2C算法。首先随机选取两个节点,在这两个节点中选择延迟低,或者连接数小的节点处理请求,这样兼顾了随机性,又兼顾了机器的性能,实现很简单。
8.4.9、Source Hashing 源地址散列
根据请求的来源ip进行hash计算,然后对应到一个服务器上。之后所有来自这个ip的请求都由同一台服务器处理。
二、VPC搭建与实践
登录阿里云控制台直接搜索VPC

创建一个VPC

随后创建一个Switch

这里需要注意,在创建的时候要有ECS,不然无法创建NAT网关,此时我们去选择购买ECS
这里需要注意一下可用区,因为如果交换机跟ECS不在同一个可用区是无法分配的

此时我们需要去创建一个新的交换机,然后放在可用区K


随后这里就可以正常选择了

最后需要确认一下自己的配置是否存在错误
购买成功后,我们可以看到ECS当前是没有公网地址的

并且我们也无法用SSH连接该服务器,只能使用阿里云控制台登录

登录之后我们也可以发现其实当前ECS是没有网络的
此时我们就需要去创建NAT网关



随后等待资源创建即可


然后我们可以在SNAT条目中看到一条记录

此时我们回到ECS,发现可以通外网了

我们在一台服务器上启动NC监听,然后wget看一下服务器的出口地址,会发现就是我们配置的地址
不过此时就有一个疑问,那么我如果再给这台机器分配一个弹性公网IP,那出口地址应该是NAT的网关地址还是弹性公网IP呢

我们给ECS绑定一个弹性公网IP



随后我们设置一个密码就可以登录服务器了


然后我们可以看到当前的地址为绑定的弹性IP地址

我们来看一下DNAT的作用
首先我们首先创建一个DNAT

并且映射ECS的80对应NAT的80端口

然后我们登录阿里云的账户控制台直接连接服务器

开启一个python的简易HTTP服务,然后使用另外的服务器wget 阿里云的ECS

我们会发现根本访问不到80,因为我们没有开安全组

然后我们再telnet就会发现通了

然后ECS也受到了请求

三、总结
- 1、SNAT
- - 用来给服务器配置访问外网的权限
- 2、DNAT
- - 用来将服务器的某个端口映射给公网
- 可以将VPC理解为一个相较于传统的局域网,但是传统的为物理的局域网设备,并且在本地,但是VPC在云上