- 论坛徽章:
- 0
|
netfilter的架构就是,在网络协议栈上放置一些检测点(HOOK),而在检测点放置一些处理函数,当数据经过这些检测点时触发这些处理函数。
ipv4在IP层的HOOK点有5个:- ipv4在IP层的HOOK点有5个:
- enum nf_inet_hooks {
- NF_INET_PRE_ROUTING,
- NF_INET_LOCAL_IN,
- NF_INET_FORWARD,
- NF_INET_LOCAL_OUT,
- NF_INET_POST_ROUTING,
- NF_INET_NUMHOOKS
- };
复制代码 他们的先后顺序如下图所示:
1、对于进入的数据包,首先触发NF_INET_PRE_ROUTING HOOK点;然后查找路由信息,判定是进入本机的数据包还是需要转发的数据包
a)对于进入本机的数据包,触发NF_NET_LOCAL_IN HOOK点,交给上层协议继续进行处理
b)对于需要转发的数据包,触发NF_INET_FORWARD HOOK点;然后根据路由信息决定怎样发出数据,并触发NF_INET_POST_ROUTING HOOK点,然后交给下层协议做数据包的发出操作
2、对于由本机发出的数据包,首先查找路由信息(决定怎样发出数据等);然后触发NF_INET_LOCAL_OUT HOOK点;根据路由信息决定怎样发出数据,并触发NF_INET_POST_ROUTING HOOK点,然后交给下层协议做数据包的发出操作
可使用netfilter框架在IP层的HOOK点上注册hook_operation,来完成不同的功能;如filter,nat,mangle,conntrack等 |
评分
-
查看全部评分
|