网络编程:iptable和netfilter

结构图:

网络编程:iptable和netfilter

iptable是用户层的网络工具

netfilter工作在IP层,在IP层中设置了5个钩子函数,实现对数据包过滤

网络编程:iptable和netfilter

目前Linux2.6内核的netfilter支持IPv4和IPv6以及DECnet等协议栈。

netfilter可以在每个关键点上预先注册钩子函数。

网络编程:iptable和netfilter

在数据包流经整个内核协议栈的整个过程中,在一些已预定义的关键点上 PRE_ROUTING,LOCAL_IN,FORWARD,LOCAL_OUT,POST_ROUTING 会根据数据包的协议族到这些关键点检查是否有钩子函数,没有则直接返回。有则调用相关的钩子函数,根据钩子函数返回的返回值决定下一步操作。