netfilter框架之hook点

1. Netfilter中hook的所在位置

在这里插入图片描述

  • 当网络上有数据包到来时,由驱动程序将数据包从网卡内存区通过DMA转移到设备主存区(内存区), 之后触发中断通知CPU进行异步响应,之后ip_rcv函数会被调用到;
  • ip_rcv函数首先对报文进行检验,最后调用NF_HOOK函数将控制权交给在NF_IP_PRE_ROUTING注册的规则进行处理,之后数据到达ip_rcv_finish函数并进行路由标的查询,确定该报文是发往本地还是转发。
    • 如果该报文是发往本地的,则调用ip_local_deliver函数进行处理,之后将控制权交给在NF_IP_LOCAL_IN注册的规则进行处理, 处理完毕后由ip_local_deliver_finish将数据报文发送到传输层;
    • 如果该报文是转发报文,则先后经过NF_IP_FORWARDNF_IP_POST_ROUTING注册的规则,最后交由驱动程序发送到网络中;
  • 对于本地外发报文会先后经过NF_IP_LOCAL_OUTNF_IP_POST_ROUTING注册的规则,最后同样交由驱动程序发送到网络中。
发布了81 篇原创文章 · 获赞 69 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/s2603898260/article/details/103839076