ChinaUnix.net
相关文章推荐:

netfilter HOOK点的关系

首先说一说netfilter的几个hook关系。目前总共有5个hook:PREROUTING POSTROUTING INPUT FORWARD OUTPUT.与2.2的ipchains相比,多了PRTEROUTING和POSTROUTING,它们的出现与对NAT的支持有关。 现在假设物理网络上来了一个ip分组。这个分组有ip_rcv函数接收,该函数最后一个宏将控制权交给PREROUTING规则链处理。如果该分组没有被过滤,则ip_rcv_finish()函数查路由表,并且判断该分组是发给本地机器还是转发给另一个网络。 如果...

by leigaiting - Linux文档专区 - 2007-03-07 10:06:47 阅读(719) 回复(0)

相关讨论

netfilter的架构就是,在网络协议栈上放置一些检测(hook),而在检测放置一些处理函数,当数据经过这些检测时触发这些处理函数。 ipv4在IP层的hook有5个:[code]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 };[/code]他们的先后顺序如下图所示: 1、对...

by Morphad - 内核源码 - 2013-04-25 16:34:44 阅读(1682) 回复(3)

netfilter中定义了五个关于IPv4的hook hook 调用的时机 NF_IP_PRE_ROUTING 在完整性校验之后,选路确定之前 NF_IP_LOCAL_IN 在选路确定之后,且数据包的目的是本地主机 NF_IP_FORWARD 目的地是其它主机地数据包 NF_IP_LOCAL_OUT 来自本机进程的数据包在其离开本地主机的过程中 NF_IP_POST_ROUTING 在数据包离开本地主机“上线”之前 netfilter返回值 返回值 含义 NF_...

by kinwin - 网络技术文档中心 - 2009-04-02 20:56:16 阅读(1270) 回复(1)

不明白netfilter 对APR 时hook时挂接的设置? netfilter一共有5个挂接,但是对AF_INET family ,对ARP的没发现有说明? 钩子名称 调用时机 NF_IP_PRE_ROUTING 完整性校验之后,路由决策之前 NF_IP_LOCAL_IN 目的地为本机,路由决策之后 NF_IP_FORWARD 数据包要到达另外一个接口去 NF_IP_LOCAL_OUT 本地...

by chary8088 - 内核源码 - 2013-10-25 10:41:38 阅读(2561) 回复(8)

本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。 msn: [email=yfydz_no1@hotmail.com]yfydz_no1@hotmail.com[/email] 来源: http://yfydz.cublog.cn 1. 5个挂接 以下内核代码版本2.6.17.11。 1.1 PREROTING /* net/ipv4/ip_input.c */ int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { ....

by where23 - 网络技术文档中心 - 2009-04-04 11:24:17 阅读(1283) 回复(0)

小弟在做一个项目,为了针对特殊的数据包进行转发, 我在NF_IP_PRE_ROUTING这个hook上注册了两个函数, 第一个函数getskb,它的优先级是NF_IP_PRI_FIRST,getskb这个函数的作用是获取特殊的skb数据包,例如代理数据包。 第二个函数是forward,它的优先级是NF_IP_PRI_NAT_DST-1,forward这个函数是针对这个特殊的数据包进行转发处理。 现在的问题是,内核和这个模块都通过编译,但我无法在forward函数里定位getskb那个skb, 例如我...

by andyxu163 - 内核源码 - 2010-05-30 22:08:17 阅读(3648) 回复(11)

之前的版本是这样: #ifndef __KERNEL__ /* IP Cache bits. */ /* Src IP address. */ #define NFC_IP_SRC 0x0001 /* Dest IP address. */ #define NFC_IP_DST 0x0002 /* Input device. */ #define NFC_IP_IF_IN 0x0004 /* Output device. */ #define NFC_IP_IF_OUT 0x0008 /* TOS. */ #define NFC_IP_TOS 0x0010 /* Protocol. */ #define NFC_IP_PROTO 0x0020 /* IP options. */ #define NFC_IP_OPTIONS 0x0040 /* Frag & ...

by cablink - 内核源码 - 2013-04-11 15:15:21 阅读(2162) 回复(4)

本帖最后由 li_freedom 于 2014-06-25 09:08 编辑 各位大神: 小弟遇到一个很奇怪的问题。希望大神能给提意见; 是这样的: 自己编写了一个客户端/服务器程序分别放在PC端(客户端)和开发板(服务器)上通讯, 注册netfilterhook函数(在开发板上,在pre_routing上)把经过客户端服务器通讯的数据包打印出来,并且在开发板上使用tcpdump抓取数据包比较是否和hook函数打印出来的一致。 发现一切都是正常的。打印...

by li_freedom - 内核源码 - 2014-06-25 09:02:53 阅读(1313) 回复(3)

我所理解的nat,只是在做路由器上才会有这个功能。 但看源代码,发现在LOCAL_IN和LOCAL_OUT这两个上也有对nat的处理。按理说,在router中,packet是不应该进入这两个hook的。 比如在kernel version 2.6.8中有这样的代码: [code] #ifdef CONFIG_IP_NF_NAT_LOCAL /* Before packet filtering, change destination */ static struct nf_hook_ops ip_nat_local_out_ops = { .hook = ip_nat_local_fn, .owner = THIS_MODULE...

by new_learner - 内核源码 - 2009-02-03 12:17:48 阅读(3033) 回复(7)

static unsigned nfhkfun(int hooknum,struct sk_buff **skb,const struct net_device *in,const struct net_device *out,int (*okfn)(struct sk_buff *)) { printk("I'm watch_out\n");//问题在此处 return NF_ACCEPT; } static int init(void) { nfhk.hook=nfhkfun; nfhk.hooknum=NF_IP_PRE_ROUTING; nfhk.pf=PF_INET; nfhk.priority=NF_IP_PRI_FIRST; nf_register_hook(&nfhk); return 0; } 这样是正常的。 但把上面...

by xiaoQ008 - C/C++ - 2009-09-07 22:24:05 阅读(1017) 回复(0)