00:00
欢迎大家继续收看上硅谷的Linux云计算视频,大家好,我是万阳老师。这节课我们去学习一下IP的相关原理。首先,我们先看第一张图。这里呢,有个客户端,并且这个模式大家应该都不陌生了,对吧?这是我们的内核,它的net filter,我们分为用户空间和内核空间,那这是我们的一个工作在用户空间的阿帕奇服务。当有用户发起连接,连接是我们的阿帕奇的时候,它要经过这样的流程,我们先简单概述一下。发起数据报文。到我们的网卡处,对吧,这里会有一个叫什么。Tables,也就是我们的路由表,判断这个用户的请求到底是不是本机的,那如果是本地的,会交交给我们的net filter的一号位置,当然这一号接口并不真实存在,我们只是逻辑假象的,便于大家去理解。这个一号位置呢,会有对应的规则。这个规则可能是啊,如果目标目标端口是八零的话,我给他放行,那如果有这么一套规则的话,那这个数据报文就能进入到我们的阿帕奇内部去得到对应的响应数据报文。
01:12
能理解我的意思吗?也就意味着其实一号位置就是我们的IP的第一个,第一个。入口,也就是我们的input。他叫列。它叫练,这里我们出了一个新的概念叫练,对吧。首先我们刚才之前在讲我们的一些原理的时候,给大家强调过一个规则,就是什么是防火墙,防火墙是根据我们的书写的规则进行过滤操作的这么一个设备。也就意味着在这里书写规则非常重要的。那规则到底写在哪里呢?其实就是写在列上,就是写在列上,那input就是我们的存在的第一个列。那通过我刚才的描述,大家也发现了一个结果,就是所有的入站的数据报文要经过我们的input链。
02:05
才能到达我们上层的用户空间。当然经过input练的时候,这里面会存在对应的规则。有好多规则对吧,他匹配规则,如果是放行就放行,如果是拒绝就拒绝。这是第一个列,叫input。需要大家注意一下。好。第二个。这里呢,用户有个C命令。我们的内核依然是net filter对吧?诶,这里多了一个二号接口,外面呢有个web服务器。如果用户想发起请求的话,要把数据报文交到二号位置,二号位置转换到网卡处,当然这里要经过我们的就是tables对吧,并且发送到我们的对应的web服务器。其实这就是我们所谓的二号位置。Output output列。当在出去的时候,是不是也有对应的规则,如果说的是不允许访问这个web服务器的话,这里访问是访问不成功的。
03:07
也就意味着我们在这里net上有了一个第二个二号接口。这个二号结构的主要功能就是。对我们的出去的数据报文进行对应的过滤操作。第二条链展开水面了,对吧,好。下一个。这里呢,我的路由器。这里我的Linux对吧,充当的是一个路由器,那既然是路由器的话,应该有两块网卡零。一。依然是内核态和用户态,那并且这里开启了一个叫什么。IP。这个应该都不陌生了,对吧,叫什么路由转发对吧,那客户端发起数据报文,但是目标地址指的是web server的话,并且他俩处于一个连接关系的话,那因为开启了forward,所以这个数这个我们的服务器就会把这个数据包转发过去。
04:02
那只要是转发的话,就会走到三号接口。三号接口就是处理数据报文的转发功能。第三条链,Forward。Forward。处理我们的数据包的转发功能。好,接着我们看下一个。首先这里有个客户端,这里有个web服务器。我们假设现在这个客户端想访问这个web服务器。那他的数据报文是不是要经过这样的传递方式呢?这种的话应该是访问不到的,对吧,我们后期可以通过我们的防火墙对应的设置,可以达到这么一个目的。好,那这样我们也可以看到这个四号位置在我们的路由表之前,正常情况下我们的数据报文进来以后,是不是要经过路由表,路由表判断是本机的还是外部的,这里会进行一个判断,对吧。那如果是外部的话,是不是要交给我们之前学习到三号接口forward转发出去。那四号位的存在这里又有什么意义呢?
05:01
也就意味着,还没有进行路由表判断之前,我就对这个数据报文进行了对应的修改。那这个位置它的名称叫路由前。翻译过来,就是在路由表之前对数据报文处理的这么一个接口。具体有什么功能,我们在后面的课程中会学习到,我们先卖个关子。我们再看下一个叫pouting。五号接口。你会发现五号接口既不在这里,也不在这里,也不在这里对吧?不在这三个我们常见的位置,更不在这两边,而占了内部。也就意味着经过路由表判断以后,才到五号位置处理。那五号为什么把它叫做路由后陆游后。那翻译过来就一样的,对吧,在路由表之后进行处理的接口位置。叫post,对应的功能,我们同样卖关子,对吧,在后面我们会专门讲解它。
06:03
那在这里呢,其实就是我们防火墙里面的比较一个重要的组件,就是练练的功能,我们刚才也提到过了,对吧,就是承载我们书写的规则非常重要的这么一个概念。那在防火墙里有五条链,Input output forward。UT pout,这也就是我们所谓的五列。链的功能我们刚才说过了,对吧,存在规则,那链放在哪里呢?放在表上。那我们在防火墙里,如果学稍微接触过防火墙概念的话,都会听过四表五练,五练我们已经学习过了,那四表给大家看一下。第一个绕表。绕表的主要功能,确定是否对数据报文进行状态跟踪,这个怎么理解呢?就是一旦我们的数据包在经过我们的方向以后。其实正常情况下,我们都会对这个数据包进行跟踪,更多会消耗资源。我们可以在做表里跳出。
07:01
这是我们可以在这里去做的。第二个mango表。Man表被数据报文设置标记。其实标记有很多对吧,比如我们的TTL也是其中一个标记,比如我们这些所学习到的在我们的什么。IOS里面我还记还记不记得一个叫做持久连接。对吧,我们有一种连接方式,是不是可以通过我们的防火墙去做ma值的标记,然后再去做ipvs的负载均衡,还记得吗?那当时是不是就是在芒果表上打的标记MAS的标记?对吧,所以这是可以在我们为我们的数据包里打上固定标签的。这么一个表。下一个那。那它主要的目的就是修改数据包中的语言和目目标的目标的,也就是目的的IP地址或端口。功能有很多,比如端口映射,比如我们现在常用的我们的什么。
08:00
多个内网用户访问公网,同一公网地址的这么一个功能,S纳T对吧,和DT都是通过我们nat表去实现的。最后一个filter。菲特才是我们真正的技术类防火墙。最重要的一张表。在这张表里,我们才会对数据报文进行过滤。这个就是我们四张不同的表,我们在后面的课程中依然会重复重复去讲解到,所以大家不要去担心。只要进入四张表对应的功能以及一个概述即可。那在这里呢,最重要的两张表就是nat和filter,前两张表其实我们用的一般都不多。好,这就是我们完整的四表五列,当然还有一张对应的图,并不是每张表里都会有所有的列。这是我们一个防火墙的一个结构。四表RO mango nut filter,五列printut posut input output forward。
09:00
B、你发现不同的表下面,它用的链是不一样的。对吧。比如RA表有prollut和output prollut叫什么?路由前output。出战脸对吧。好,Mango所有的都有nott prout pouting路由线,路由后和出站,Filter入站转发出站。你说这里都需要记住他们的对应关系吗?这样是最好的,你说我实在记不住怎么办?这里的红色必须记住,红色才是我们学习的重点,或者这对于我们Linux运维来说是重点。前两前前两张表一般用的都比较少。尤其是这里的红色标记的非常重要,比如forward下面有input,有forward,有output,如果我们想对数据报文进行过滤的话,比如当1920168.1.1这个客户端访问目标端口是八零的话,我要把这个数据包给删了。那在哪里做呢?在filter表的。
10:00
For链如果是转发的话,如果是入站的话,那就在input,如果是出站的话,就在output。那我这样一说明的话,你是不是就可以想出来一个概念,就是只要我知道我干嘛呢?我只要匹配他们对应的什么功能,我再去选择对应的入账函、出账函转发,是不是就可以确定把规则写在哪条表的哪条列上了。T也一样,最常用的是root和root,一个是实现我们的ST功能,一个是实现功能,这两个大家可能听的没那么多,对吧?那先简单的听一下,我们在后面会详细的讲S奈和D的功能以及实现方式。那这个就是我们在防火墙里面比较重要的filter和nut这么两个概述。包括我们的防火墙的一个完整的结构,希望大家好好的把它记忆一下,还是非常重要的好。那这节课呢,咱们就先讲到这里,我们下节课再见。
我来说两句