iptables 防火墙工作原理及知识点图文详解(2)

这样说可能并不容易理解,我们来换个容易理解的角度,从头说起
          当客户端访问服务器的web服务时,客户端发送报文到网卡,而tcp/ip协议栈是属于内核的一部分,所以,客户端的信息会通过内核的TCP协议传输到用户空间中的web服务
中,而此时,客户端报文的目标终点为web服务所监听的套接字(P:Por)上,当web服务需要响应客户端请求时,web服务发出的响应报文的目标终点则为客户端,这个时
候,web服务所监听的P与端囗反而变成了原点,我们说过, netfilter 才是真正的防火墙,它是内核的部分,所以,如果我们想要防火墙能够达到"防火"的目的,则需要在内
核中设置关卡,所有进出的报文都要通过这些关卡,经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止,于是,就出现了input关卡和 output关卡,而这些
关卡在 iptables中不被称为关卡"而被称为链"。

iptables 防火墙工作原理及知识点图文详解

其实我们上面描述的场景并不完善,因为客户端发来的报文访问的目标地址可能并不是本机,而是其他服务器,当本机的内核支持 IP FORWARD时,我们可以将报文转发给其
他服务器,所以,这个时候,我们就会提到 iptables中的其他”关卡,也就是其他链”,他们就是"路由前”、“转发”、"路由后”,他们的英文名是
PREROUTING、 FORWARD、 POSTROUTING
也就是说,当我们启用了防火墙功能时,报文需要经过如下关卡,也就是说,根据实际情况的不同,报文经过链可能不同。如果报文需要转发,那么报文则不会经过 Input链
发往用户空间,而是直接在内核空间中经过 forward链和 postrouting链转发出去的。

iptables 防火墙工作原理及知识点图文详解

所以,根据上图,我们能够想象出某些常用场景中,报文的流向
到本机某进程的报文: PREROUTING->|NPUT
由本机转发的报文: PREROUTING-> FORWARD-> POSTROUTING
由本机的某进程发出报文(通常为响应报文): OUTPUT-> POSTROUTING

1. 规则表

表的概念
我们再想想另外一个问题,我们对每个"链”上都放置了一串规则,但是这些规则有些很相似,比如,A类规则都是对ip或者端囗的过滤,B类规则是修改报文,那么这个时候,我
们是不是能把实现相同功能的规则放在一起呢,必须能的
我们把具有相同功能的规则的集合叫做表”,所以说,不同功能的规则,我们可以放置在不同的表中进行管理,而iptables已经为我们定义了4种表,每种表对应了不同的功
能,而我们定义的规则也都逃脫不了这4种功能的范围,所以,学习 iptables之前,我们必须先搞明白每种表的作用。

iptables为我们提供了如下规则的分类,或者说, iptables为我们提供了如下"表”:
filter表:负责过滤功能,防火墙;内核模块: iptables_filter
nat 表: network address translation,网络地址转换功能;内核模块: iptables_nat
mangle表:拆解报文,做出修改,并重新封装的功能; iptables_mangle
raw表:关闭nat表上启用的连接追踪机制; iptables_raw

也就是说,我们自定义的所有规则,都是这四种分类中的规则,或者说,所有规则都存在于这4张表中。

 

iptables 防火墙工作原理及知识点图文详解

raw:高级功能,如:网址过滤。

mangle:数据包修改(QOS),用于实现服务质量。

nat:地址转换,用于网关路由器。Nat地址转换

filter:包过滤,用于防火墙规则。过滤数据包,通还是不通

数据包经过防火墙的处理顺序

2. 规则链处理时机

链的概念
现在,我们想象一下,这些”关卡在 tables中为什么被称作"链呢?���们知道,防火墙的作用就在于对经过的报文匹配"规则”,然后执行对应的”动作“所以,当报文经过这些
关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了“链所以,我们
把每一个关卡"想象成如下图中的模样,这样来说,把他们称为链更为合适,每个经过这个关卡的报文,都要将这条链”上的所有规则匹配遍,如果有符合条件的规则,
则执行规则对应的动作。

iptables 防火墙工作原理及知识点图文详解

iptables 防火墙工作原理及知识点图文详解

INPUT:处理输入数据包。入站数据包处理

OUTPUT:处理输出数据包。出站数据包处理

PORWARD:处理转发数据包。

PREROUTING:用于目标地址转换(DNAT)进站进行的过滤。

POSTOUTING:用于源地址转换(SNAT)出站进行的过滤。

3.表链关系

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/12630.html