首页 kernel正文

netfilter在IPV4中的5个HOOK

helight0 kernel 2011-02-19 52 0 protobufwsgi

之前就知道在内核中netfilter的工作原理是:在协议流程中加入hook函数,从而达到对协议流中的数据进行抓取,今天对IPV4中的这几个点在内核中找了下,终于定位了。先在这里分析一下,还需要分析,数据包在内核中是如何路由的!!!哈呵呵 115  net/ipv4/ip_forward.c <<ip_forward>> return NF_HOOK(NFPROTO_IPV4, NF_INET_FORWARD, skb, skb->dev, 264  net/ipv4/ip_input.c <<ip_local_deliver>> return NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, skb, skb->dev, NULL, 443  net/ipv4/ip_input.c <<ip_rcv>> return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL, 275  net/ipv4/ip_output.c <<ip_mc_output>> NF_HOOK(NFPROTO_IPV4, NF_INET_POST_ROUTING, 291  net/ipv4/ip_output.c <<ip_mc_output>> NF_HOOK(NFPROTO_IPV4, NF_INET_POST_ROUTING, newskb, 94  net/ipv4/ip_output.c <<__ip_local_out>> return nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL, 从上面看出了其中有5个点:NF_INET_FORWARD,NF_INET_LOCAL_IN, NF_INET_PRE_ROUTING, NF_INET_POST_ROUTING,NF_INET_LOCAL_OUT。 这5个点之间的流程关系如下: NF_INET_PRE_ROUTING | | v route---->NF_INET_FORWARD----->NF_INET_POST_ROUTING |                                                                | |                                                                | v                                                                v NF_INET_LOCAL_IN                                  NF_INET_LOCAL_OUT |                                                                | |                                                                | v                                                                v ocal process                                      local process

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论