Chinaunix
标题:
问个netfilter写内核模块的问题,较急,大家帮下忙
[打印本页]
作者:
monkeygreg
时间:
2010-04-12 20:43
标题:
问个netfilter写内核模块的问题,较急,大家帮下忙
目前想写个内核模块实现对外面过来的访问,限制部分ip浏览部分url
其实现在问题还不在于程序,而是内核模块加载问题
我现在写了个最简单的程序,只要是tcp包就丢弃,挂在local_out的点上,按理说不能上网了,但一点用没有
make成功,insmod也没问题,还缺什么步骤吗,刚接触这个不久,希望大家多帮忙
代码如下
#define __KERNEL__
#define MODULE
#include <linux/module.h>
#include <linux/skbuff.h>
#include <linux/ip.h>
#include <linux/netfilter_ipv4.h>
static unsigned int sample(unsigned int hooknum,struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,int (*okfn)(struct sk_buff *))
{
struct iphdr *iph;
struct sk_buff *sb = *skb;
iph= ip_hdr(sb); //2.6的内核
printk("sample function success"); //系统日志里没打印
if(iph->protocol==6){
printk("TCP DROP"); //系统日志里没打印
return NF_DROP;
}
return NF_DROP;
}
static struct nf_hook_ops iplimitfilter
={ {NULL,NULL} ,sample,PF_INET,NF_IP_LOCAL_OUT,NF_IP_PRI_FILTER-1}; //优先级应该没错吧
int init_module(void)
{
printk("Load"); //系统日志里有打印
return nf_register_hook(&iplimitfilter);
}
void cleanup_module(void)
{
printk("Unload"); //系统日志里有打印
nf_unregister_hook(&iplimitfilter);
}
作者:
rain_fish
时间:
2010-04-12 21:57
看看这个:
http://blog.chinaunix.net/u2/89664/showart.php?id=2197652
作者:
monkeygreg
时间:
2010-04-13 15:29
找到原因了,应该是
={ {NULL,NULL} ,sample,
THIS_MODULE
,PF_INET,NF_IP_LOCAL_OUT,NF_IP_PRI_FILTER-1};
作者:
梅川内依酷
时间:
2010-04-13 16:12
你这个不会导致死机?
作者:
langue
时间:
2010-04-13 16:21
写模块多麻烦,-j QUEUE
作者:
monkeygreg
时间:
2010-04-13 16:48
wokao死机了,怎么回事
作者:
monkeygreg
时间:
2010-04-13 17:01
回复
5#
langue
放在用户态做吗,能否指点迷津,给点资料或例子
作者:
梅川内依酷
时间:
2010-04-13 17:27
回复
6#
monkeygreg
struct sk_buff *sb ;sb=skb;
作者:
langue
时间:
2010-04-13 18:34
回复
7#
monkeygreg
是在用户态,最简单的是用NF_QUEUE,你搜索libnetfilter_queue
作者:
doofy
时间:
2010-04-13 23:54
回复
6#
monkeygreg
难道楼主抓到arp报文了?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2