简介
1.Netfilter
Netfilter是linux内核的一个子系统。它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制。netfilter提供了一系列的接口,将一个到达本机的数据包或者经本机转发的数据包流程中添加了一些可供用户操作的点,这些点被称为HOOK点。
Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。当我们希望过滤特定的数据包或者需要修改数据包的内容再发送出去,这些动作主要都在netfilter中完成。
IPTables工具就是用户空间和内核的Netfilter模块通信的手段,IPTables命令提供很多选项来实现过滤数据包的各种操作,所以,我们在定义数据包过滤规则时,并不需要去直接修改内核中的netfilter模块。Netfilter的实质就是定义一系列的hook点(挂钩),每个hook点上可以挂载多个hook函数,hook函数中就实现了我们要对数据包的内容做怎样的修改、以及要将数据包放行还是过滤掉。数据包进入netfilter框架后,实际上就是依次经过所有hook函数的处理。

Netfilter主要通过表、链实现规则,Netfilter是表的容器,表是链的容器,链是规则的容器,最终形成对数据报处理规则的实现。

表:
Filter 过滤数据,

本文介绍了Netfilter作为Linux内核的子系统,提供了数据包处理的hook点,允许用户编写hook函数来过滤或修改数据包。Netfilter通过表、链和规则实现功能,包括Filter、NAT、Mangle、Raw和Security表。文中详细讲解了表的类型、链的概念以及规则的定义。此外,还给出了示例代码,展示如何编写hook函数打印数据包的源和目的IP地址,并指导了模块的编译、加载、查看和卸载步骤。

6003

被折叠的 条评论
为什么被折叠?



