欢迎来到天天文库
浏览记录
ID:9513341
大小:97.50 KB
页数:17页
时间:2018-05-02
《netfliter状态跟踪之动态协议的实现浅析(tftp实现)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Netfliter状态跟踪之动态协议的实现浅析(tftp实现)~教育资源库 注:这些贴子,包括iptables,Netfilter的包过滤,Netfliter的状态检测,都只是笔记性质的贴子,供有共同兴趣的朋友一起讨论,其中有不少错误的地方,希望大家指正,(并不是谦虚,我自己也在不断地改正和完善:em02:)!另,照旧,源码版本是2.6.12 1、模块的注册 源码在ip_conntrack_tftp.c中: init函数中定义了staticstructip_conntrack_helpertftp[MAX_PORTS];
2、并初始化它,并注册它:memset(tftp,0,sizeof(structip_conntrack_helper));ret=ip_conntrack_helper_register(tftp); tftp是一个数组,最大允许MAX_PORTS个,并且变量ports_c决定其个数,因为它做为注册时for循环的终值,目前,只注册了一个tftp。 tftp是一个ip_conntrack_helper类型,我在后文中,会把它叫做helper模块,也就是说,初始化函数中,调用ip_conntrack_helper_register函数
3、注册了一个tftp的helper模块。 在tftp的成员的赋初始化值的时候,我们可以对照理解structip_conntrack_helper结构的许多重要的成员: tftp.tuple.dst.protonum=IPPROTO_UDP; //协议 tftp.tuple.src.u.udp.port=htons(ports); //目标端口,即69,这样,UDP:69成为认识tftp的唯一标志 tftp.mask.dst.protonum=0xFF; //目标地址掩码,以及下面一个源端口掩码,以做比较之
4、用 tftp.mask.src.u.udp.port=0xFFFF; tftp.max_expected=1; //最大expect,这是什么东东?后面会详解 tftp.timeout=5*60;/*5minutes*/ //超时时间 tftp.me=THIS_MODULE; tftp.help=tftp_help; //这个函数指针是最重要的东东了,后面再来分析它的具体作用 ip_conntrack_helper_register函数实质上是把该模块添加进以全局变量helpers为
5、首的链表中去:intip_conntrack_helper_register(structip_conntrack_helper*me){ BUG_ON(me->timeout==0); p;ip_conntrack_lock); list_prepend(helpers,me); p;ip_conntrack_lock); return0;} OK,tftp的helper模块被注册了,它什么时候被调用?以及它有什么用呢?? 回忆在连接跟踪的初时化时,注册的两个钩子:/*连接跟踪初始化时,注册helperHook
6、*/staticstructnf_hook_opsip_conntrack_helper_out_ops={.hook=ip_conntrack_help,.o=NF_IP_POST_ROUTING,.priority=NF_IP_PRI_CONNTRACK_HELPER,/*此优先级比同Hook上的ip_confirm的高*/};staticstructnf_hook_opsip_conntrack_helper_in_ops={.hook=ip_conntrack_help,.o=NF_IP_LOCAL_IN,.priority
7、=NF_IP_PRI_CONNTRACK_HELPER,}; 对于中转包过滤来讲,我们关心第一个钩子,它注册在NF_IP_POST_ROUTINGHook上,并且,比我们讲过的ip_confirm优先级要高。 这样,也就是数据包经过这个Hook点时,ip_conntrack_help函数将被调用。 2.我的例子 结合一个实际的tftp传输来分析代码,先来看这个例子(该例取自《TCP/IP详解卷一》p161)1. 192.168.0.1:1106 -> 192.168.1.1:69 udp 19 PRQ
8、 test1.c2. 192.168.1.1:1077 -> 192.168.0.1:1106 udp 5163. 192.168.0.1:1106 -> 192.168.1.1:1077 udp 44
此文档下载收益归作者所有