摘要:
典型的模块Makefile如下所示; 1 ifneq ($(KERNELRELEASE),) 2 obj-m := hello.o 3 else 4 KERNELDIR ?=/lib/modules/$(shell uname -r)/build 5 PWD :=$(shell pwd) 6 def 阅读全文
摘要:
注册helper nf_conntrack_ftp_init是连接跟踪ftp模块的初始化函数,可以看到其调用了nf_conntrack_helpers_register来注册helper; 1 static int __init nf_conntrack_ftp_init(void) 2 { 3 i 阅读全文
摘要:
初始化 iptable_mangle_table_init函数通过调用ipt_register_table完成mangle表注册和钩子函数注册的功能;该流程与iptable_filter的函数调用的函数一致,此处不再重复分析,详情请移步<iptable_filter分析>; 1 static int 阅读全文
摘要:
初始化 iptable_nat_table_init函数通过调用ipt_register_table完成NAT表注册和钩子函数注册的功能;该流程与iptable_filter的函数调用的函数一致,此处不再重复分析,详情请移步<iptable_filter分析>; 1 static int __net 阅读全文
摘要:
ipv4_conntrack_defrag ipv4_conntrack_defrag对输入包进行检查,如果是分片包,则调用nf_ct_ipv4_gather_frags函数进行重组; 1 static unsigned int ipv4_conntrack_defrag(void *priv, 2 阅读全文
摘要:
基础参数初始化 nf_conntrack_init_start函数完成连接跟踪基础参数的初始化,包括了hash,slab,扩展项,GC任务等; 1 int nf_conntrack_init_start(void) 2 { 3 int max_factor = 8; 4 int ret = -ENO 阅读全文
摘要:
Netfilter通过连接跟踪来记录和跟踪连接的状态,为状态防火墙和NAT提供基础支持; 钩子点与钩子函数 下图为钩子点和钩子函数的关系图,其中ipv4_conntrack_defrag、ipv4_conntrack_in、ipv4_helper、ipv4_confirm为连接跟踪相关的钩子函数,其 阅读全文
摘要:
概述 本文主要对filter表的初始化流程,以及钩子函数的规则match流程的源码进行分析; 源码分析 所在钩子点: 1 /* 在LOCAL_IN,FORWARD, LOCAL_OUT钩子点工作 */ 2 #define FILTER_VALID_HOOKS ((1 << NF_INET_LOCAL 阅读全文
摘要:
概述 通过钩子点和优先级的代码追溯,得到如下对应关系图,图中横坐标为钩子点,纵坐标为优先级,每个钩子点上的钩子函数按照优先级排布; 详细分析 5个钩子点如下所示,在这个五个钩子点上的钩子函数按照上面的优先级从小到大排列; 1 /* IP Hooks */ 2 /* After promisc dro 阅读全文
摘要:
概述 本文主要分析table,rule,match,target的作用和其数据结构之间的关系,为后面的匹配流程做铺垫,通过本文中代码流程的分析,可以得到如下的关系图: 详细分析 table iptables分为五种: filter:This is the default table (if no - 阅读全文