黄芪

首页 » 常识 » 问答 » 服务器网络之iptables概念
TUhjnbcbe - 2024/5/12 16:35:00

iptables不是真正的防火墙,可以理解成一个客户端代理,位于用户空间,通过这个代理,可以执行到对应的安全框架中,这个安全框架是真正的防火墙,这个框架叫作NetFilter,位于内核空间,它的主要功能是网络地址转换、数据包修改、数据包过滤。

当一个数据包进入到主机之前,会先经NetFilter进行检查,而这个就是iptables的规则。检查通过则接受(Accept)进入主机取得资源,如果检查不通过,则可能会被丢弃。

基础

iptabes是一组规则,定义为如果数据包头符合哪个规则,就按哪个规则进行处理数据包,这些规则存储在内核空间的信息包过滤表中,这些规则指定了源地址,目标地址,传输协议和服务类型等,当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(ACCEPT),拒绝(REJECT),丢弃(DROP)等。

当在服务器上部署一个web应用时,客户端访问这个web应用时,防火墙要对于所有的流量进行检查,符合条件的入放行,符合阻拦的要被阻止,这就出现了INPUT和OUTPUT的链。

也有可能客户端发来的报文访问的目标地址并不是本机,而是其他服务器,当本机的内核支持IP_FORWARD时,可以将报文转发给其他服务器,这时就会有“路由前”(PREROUTING)、“转发”(FORWARD)、“路由后”(POSTROUTING),如图:

由上图可以知道,报文的流向

进入本机

PREROUTING-INPUT

本机转发

PREROUTING-INPUT-POSTROUTING

本机的进程发出的报文

OUTPUT-POSTROUTING

每条链中的规则又可以有多条,如下图,多条规则之前是有顺序的,只要有一个匹配,则会忽略后面的规则,故而当顺序排列错误,有可能会产生比较严重的错误。

在每条链上都存储了一串的规则,但这些规则有些很相似,如A类规则都是对ip或者端口进行过滤,B类规则是修改报文,那么能不能把实现相同功能的规则放在一起呢,这就是表的功能。

iptables定义了4种表,所有自定义的规则,都是在这四类规则

filter表负责过滤功能,防火墙;内核模块:iptable_filter

nat表网络地址转换功能;内核模块:iptable_nat

mangle表拆解报文,做出修改,并重新封装;内核功能:iptable_mangle

raw表关闭nat表上启用的连接追踪机制;iptable_raw

链与表的关系

优先级次序(由高而低):

raw–mangle–nat–filter

数据流如下图

1
查看完整版本: 服务器网络之iptables概念