首页 > 系统相关 >安全:iptables中的表和链的区别

安全:iptables中的表和链的区别

时间:2024-08-31 11:16:42浏览次数:4  
标签:iptables 表和链 匹配 区别 防火墙 raw 规则 数据包

一,什么是链?

1,一个防火墙中通常针对不同的来源设置很多规则,多个规则形成一个链,其实也可以理解成是分组的概念,
在Iptables防火墙中针对不同的链路共分为五种不同的链。

如下图所示,当数据报文进入链之后,首先匹配第一条规则,如果第一条规则通过则访问,如果不匹配,则接着向下匹配,
如果链中的所有规则都不匹配,那么就按照链的默认规则处理数据报文的动作。

2,三表五链之五链

Iptables有五种不同的链,分别是INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。

INPUT:从外界进入防火墙的数据包会应用此规则链中的策略。
OUTPUT:当前服务器从防火墙外出的数据表会应用此规则链中的策略。
FORWARD:转发数据包时会应用此规则链中的策略。
PREROUTING:主机外的报文要进入防火墙,所有的数据包进来的时候都会由PREROUTING链进行处理。
POSTROUTING:主机内的报文要从防火墙出去,需要经过POSTROUTING链进行处理。

五链的示意图

二,什么是表?

虽然每一条链上有多条规则,但有些规则的作用(功能)很相似,多条具有相同功能的规则合在一起就组成了一个“表”。

iptables提供了四种“表”:
– filter表:主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG),
所谓的防火墙其实基本上是指这张表上的过滤规则,对应内核模块iptables_filter;
– nat表:network address translation,网络地址转换功能,主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT)。
属于一个流的包(因为包的大小限制导致数据可能会被分成多个数据包)只会经过这个表一次,如果第一个包被允许做NAT或Masqueraded,
那么余下的包都会自动地被做相同的操作,也就是说,余下的包不会再通过这个表。对应内核模块iptables_nat;
– mangle表:拆解报文,做出修改,并重新封装,主要用于修改数据包的TOS(Type Of Service,服务类型)、
   TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,以实现Qos(Quality Of Service,服务质量)调整以及策略路由等应用,
    由于需要相应的路由设备支持,因此应用并不广泛。对应内核模块iptables_mangle;(应用少)
– raw表:是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理,
    在匹配数据包时,raw表的规则要优先于其他表,对应内核模块iptables_raw。(应用少)

我们最终定义的防火墙规则,都会添加到这四张表中的其中一张表中

三,表和链的关系:

每条链上各个表被匹配的优先级:raw→mangle→nat→filter
raw最先被匹配,
filter最后被匹配

我们最终定义的防火墙规则,都会添加到这四张表中的其中一张表中,
所以我们实际操作是对“表”进行操作的,
每种表都能用于哪些链? 看图:

内容引用了来自csdn的博客,可见图片水印,在此表示感谢

标签:iptables,表和链,匹配,区别,防火墙,raw,规则,数据包
From: https://www.cnblogs.com/architectforest/p/18390002

相关文章

  • [Python知识点]list列表append()和extend()的区别
    在Python中,list.append()和list.extend()都是列表(list)的方法,用于添加元素,但它们的工作方式有所不同:list.append(x):这个方法将对象x添加到列表的末尾。x可以是任何数据类型,包括列表。如果x是一个列表,那么这个列表会被作为一个单个元素添加到原列表的末尾。list.extend(itera......
  • python文件打开方式详解——a、a+、r+、w+、rb、rt区别
    在做深度学习大作业的时候看到了这个代码:一开始以为“rb”是相对路径的意思,搜了一下结果不是。1.排除文件打开方式错误:r只读,r+读写,不创建,即需要事先存在一个文件以供读/读写,若不存在文件会报错w新建只写,w+新建读写,二者都会将文件内容清零,即事先不需要有该文件存在,若已经存在......
  • libtorch 版本 Pre-cxx11 ABI 和 cxx11 ABI 区别
    libtorch的Pre-CXX11ABI和CXX11ABI版本主要区别在于它们使用的C++ABI(ApplicationBinaryInterface)。ABI定义了编译后的二进制文件在不同模块之间的接口。C++11引入了一些新的语言特性,导致ABI发生变化,因此有两个版本的ABI来保持与现有代码的兼容性。主要区别:AB......
  • 【iptables系列】一句话安全修复漏洞
    原创龚诗嘉运维前沿安全漏洞对于开发和运维人员来说总是灾难,而且总是来的猝不及防CVE-2022-22947GET/actuator/gateway/routesHTTP/1.1Host:127.0.0.1:8080Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(WindowsNT10.0......
  • C#之中SqlConnection的Close和Dispose的区别和在使用using语句管理SqlConnection对象
    SqlConnection的Close和Dispose的区别在C#中,SqlConnection对象的Close和Dispose方法都可以用来释放数据库连接资源,但它们的作用和使用场景有所不同。Close方法SqlConnection.Close方法用于关闭与数据库的连接。当你调用这个方法时,它会关闭连接,但不会释放与连接关联的所有......
  • 【React】React事件和HTML事件的区别
    React写法<buttononClick={handleClick}>测试</button>HTML写法<buttononclick="handleClick()">测试</button>区别ReactHTML原生事件绑定方式小驼峰命名法,事件处理函数通过JSX语法直接绑定全小写形式定义事件处理函数函数引用内联的字符串表达式事件对象基于Ev......
  • FineBI与FineReport的区别
    在企业信息化的浪潮中,数据分析和报表工具的需求日益增加。FineBI与FineReport是帆软公司旗下两款常见的数据分析和报表工具,它们各自有着不同的特点和应用场景。本文将从功能、适用场景和用户体验等方面分析FineBI与FineReport的区别。一、功能对比FineBI数据分析:FineBI......
  • 顺序表和链表知识点
    1顺序表顺序表是指用一段物理地址连续的空间去存储数据的线性结构。顺序表有两种:静态顺序表,动态顺序表。1.1静态顺序表结构体定义typedefintElemDataSL;typedefstructSequeList{ ElemDataSLarr[100]; intsize;}SL;静态顺序表在创建结构体的时候就已经把......
  • DAX 及 M语言的区别
    用途和功能不同‌M和DAX的主要区别在于它们的用途和功能不同。‌M主要用于数据清洗和转换,而DAX用于数据建模和分析。‌M是PowerQuery的脚本语言,用于查询数据源、清理数据并加载到PowerBI或Excel中。它主要用于数据清洗和转换,帮助用户从各种数据源中提取、转换和加载数据。......
  • 在odoo中fetchall() 和 dictfetchall()的区别
    1.简介在Odoo中,执行SQL查询后可以使用 fetchall() 或 dictfetchall() 方法来获取查询结果。fetchall() 返回的是一个包含元组的列表,而 dictfetchall() 返回的是一个包含字典的列表。两者的主要区别在于数据访问的方式:fetchall() 通过索引访问数据,而 dictfetchall() ......