当前位置: 技术问答>linux和unix
用netfilter钩子函数统计输出包的个数,出错了!
来源: 互联网 发布时间:2016-03-26
本文导语: 我在netfilter的post_routing挂载点上注册了一个处理函数post_handler,这个处理函数每执行一次就对一个全局变量count自加1(在程序的其他地方没有对count的操作),然后返回NF_ACCEPT.我将这个模块加载后执行ping -c 10 127.0.0...
我在netfilter的post_routing挂载点上注册了一个处理函数post_handler,这个处理函数每执行一次就对一个全局变量count自加1(在程序的其他地方没有对count的操作),然后返回NF_ACCEPT.我将这个模块加载后执行ping -c 10 127.0.0.1后,count的值为20.我的问题是用ping发了10个包后为什么count的值不是10而是20.如果我把post_handler的返回值改为NF_DROP或着NF_STOLEN,count的值就是10.哪位能不能帮我把这个问题分析下,谢谢了!!!
|
postrouting在mangle表和nat表中, 在对packet进行ACCEPT时,你得到的count会被计算两次.
而如果是DROP或者STOLEN,则在mangle时就被丢弃了,当然不会重复计算.
而如果是DROP或者STOLEN,则在mangle时就被丢弃了,当然不会重复计算.
|
有可能是你的ping的时回环地址,然后又进入到这个函数了,你试试ping其他的地址是不是也会出现这样的情况。
|
不知道你怎么写的代码
如果是写一个netfilter的match或者target模块再使用的话是不会出现这个问题
如果是写一个netfilter的match或者target模块再使用的话是不会出现这个问题
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。