1 / 41
文档名称:

filter源代码分析详解.docx

格式:docx   大小:72KB   页数:41页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

filter源代码分析详解.docx

上传人:小果冻 2022/7/26 文件大小:72 KB

下载得到文件列表

filter源代码分析详解.docx

相关文档

文档介绍

文档介绍:Netfilter源代码分析详解
一、概述
1. Netfilter/IPTables框架简介
          Netfilter/、,再传输到网络上。本地产生的数据经过HOOK函数NF_IP_LOCAL_OUT 处理后,进行路由选择处理,然后经过NF_IP_POST_ROUTING处理后发送出去。
    总之,这五个HOOK所组成的Netfilter-IPv4数据报筛选体系如图: 〔注:下面所说Netfilter/IPTables均基于IPv4,不再赘述〕
详细地说,各个HOOK及其在IP数据报传递中的具体位置如图
NF_IP_PRE_ROUTING (0)
    数据报在进入路由代码被处理之前,数据报在IP数据报接收函数ip_rcv()〔位于net/ipv4/,Line379〕的最后,也就是在传入的数据报被处理之前经过这个HOOK。在ip_rcv()中挂接这个HOOK之前,进行的是一些与类型、长度、版本有关的检查。
    经过这个HOOK处理之后,数据报进入ip_rcv_finish()〔位于net/ipv4/,Line306〕,进行查路由表的工作,并判断该数据报是发给本地机器还是进行转发。
    在这个HOOK上主要是对数据报作报头检测处理,以捕获异常情况。
涉及功能〔优先级顺序〕:Conntrack(-200)、mangle(-150)、DNAT(-100)
NF_IP_LOCAL_IN (1)
    目的地为本地主机的数据报在IP数据报本地投递函数ip_local_deliver()〔位于net/ipv4/,Line290〕的最后经过这个HOOK。
    经过这个HOOK处理之后,数据报进入ip_local_deliver_finish()〔位于net/ipv4/,Line219〕
    这样,IPTables模块就可以利用这个HOOK对应的INPUT规那么链表来对数据报进行规那么匹配的筛选了。防火墙一般建立在这个HOOK上。
涉及功能:mangle(-150)、filter(0)、SNAT(100)、Conntrack(INT_MAX-1)
NF_IP_FORWARD (2)
    目的地非本地主机的数据报,包括被NAT修改正地址的数据报,都要在IP数据报转发函数ip_forward()〔位于net/ipv4/,Line73〕的最后经过这个HOOK。
    经过这个HOOK处理之后,数据报进入ip_forward_finish()〔位于net/ipv4/,Line44〕
    另外,在net/ipv4/()函数〔Line1119〕最后也会经过这个HOOK。〔ipmr为多播相关,估计是在需要通过路由转发多播数据时的处理〕
    这样,IPTables模块就可以利用这个HOOK对应的FORWARD规那么链表来对数据报进行规那么匹配的筛选了。
涉及功能:mangle(-150)、filter(0)
NF_IP_LOCAL_OUT (3)
    本地主机发出的数据报在IP数据报构建/发送函数ip_queue_xmit()〔位于net/ipv4/,Line339〕、以及ip_build_and_send_pkt()〔位于net/ipv4/,Line122〕的最后经过这个HOOK。〔在数据报处理中,前者最为常用,后者用于那些不传输有效数据的SYN/ACK包〕
    经过这个HOOK处理后,数据报进入ip_queue_xmit2()〔位于net/ipv4/,Line281〕
    另外,在ip_build_xmit_slow()〔位于net/ipv4/,Line429〕和ip_build_xmit()〔位于net/ipv4/,Line638〕中用于进行错误检测;在igmp_send_report()〔位于net/ipv4/,Line195〕的最后也经过了这个HOOK,进行多播时相关的处理。
    这样,IP