简介
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函数的处理。