首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?

Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能...Netfilter使用NF_HOOK(include/linux/netfilter.h)宏在协议栈内部切入到Netfilter框架中。...在include/linux/socket.h中IP协议AF_INET(PF_INET)的序号为2,因此我们就可以得到TCP/IP协议族的钩子函数挂载点为: PRE_ROUTING: nf_hooks...小节:整个Linux内核中Netfilter框架的HOOK机制可以概括如下: 在数据包流经内核协议栈的整个过程中,在一些已预定义的关键点上PRE_ROUTING、LOCAL_IN、FORWARD、LOCAL_OUT...和POST_ROUTING会根据数据包的协议簇PF_INET到这些关键点去查找是否注册有钩子函数。

1.8K20

Netfileter & iptables 实现(一)— Netfilter实现

Netfilter挂载点) 在 图1 中,蓝色部分就是 Netfilter 挂载钩子函数的位置,所以 Netfilter 定义了 5 个常量来表示这 5 个位置,如下代码: // 文件:include/linux...pf:协议类型,用于指定钩子函数挂载在 nf_hooks 数组第一维的位置,如 IPv4 协议设置为 PF_INET。...skb), (indev), (outdev), (okfn))) 首先介绍一下 NF_HOOK 宏的各个参数的作用: pf:协议类型,就是 nf_hooks 数组的第一个维度,如 IPv4 协议就是 PF_INET...return NF_HOOK(PF_INET, NF_IP_PRE_ROUTING, skb, dev, NULL, ip_rcv_finish); } 如上代码所示,在 ip_rcv 函数中调用了 NF_HOOK...六、总结 本文主要介绍了 Netfilter 的实现,因为 Netfilter 是 Linux 网络数据包过滤的框架,而 iptables 就是建立在 Netfilter 之上的。

1.3K20
领券