2.6.30内核Netfilter的简单例子、一(DropAll) http://blog.csdn.net/sahusoft/article/details/4540886
来源:互联网 发布:网线转换器选择 知乎 编辑:程序博客网 时间:2024/05/20 19:28
2.6.30内核Netfilter的简单例子、一(DropAll)
版权声明:本文为博主原创文章,未经博主允许不得转载。
今天在Linux kernel 2.6.30.5内核上进行了一个简单的Netfilter例子,记录下来“以 飨 读者 ” ,哈哈!
模块的功能是丢弃所有的进入内核的IP数据包,够邪恶吧?!嘿嘿。
1、首先,保证您在/usr/src/ 目录下有和当前内核版本一致 的内核源码!并建立有符合连接“linux”
ln -s /usr/src/linux-2.6.30.5/ /usr/src/linux
2、源文件:dropAll.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/skbuff.h>
#include <linux/ip.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
MODULE_LICENSE("GPL");
/* This is the structure we shall use to register our function */
static struct nf_hook_ops nfho;
/* This is the hook function itself */
unsigned int hook_func(unsigned int hooknum,
struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
return NF_DROP; /* Drop ALL packets */
}
/* Initialisation routine */
int init_module()
{
/* Fill in our hook structure */
nfho.hook = hook_func; /* Handler function */
nfho.hooknum = NF_INET_PRE_ROUTING; /* First hook for IPv4 */
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST; /* Make our function first */
nf_register_hook(&nfho);
pr_info("dropAll install into kernel!/n");
return 0;
}
/* Cleanup routine */
void cleanup_module()
{
nf_unregister_hook(&nfho);
pr_info("dropAll removed from kernel!/n");
}
3、Makfile文件
obj-m +=dropAll.o
all:
make -C /lib/modules/`uname -r`/build M=`pwd`
clean:
make -C /lib/modules/`uname -r`/build M=`pwd` cleaninstall:
/sbin/insmod dropAll.ko
remove:
/sbin/rmmod dropAll
4、编译模块
make
5、安装模块
make install
6、测试
ping 127.0.0.1
可以发现,ping不通,哈哈!
7、卸载模块
make remove
8、清理
make clean
9、注意 :使用SSH登录目标机器的谨慎使用,因为连接会断开的!
10、下载 http://download.csdn.net/source/1651542
- 2.6.30内核Netfilter的简单例子、一(DropAll) http://blog.csdn.net/sahusoft/article/details/4540886
- 2.6.30内核Netfilter的简单例子、一(DropAll)
- 两个netfilter的例子 http://blog.csdn.net/CaspianSea/article/details/43730021
- Linux内核中Netfilter架构介绍http://blog.csdn.net/wuruixn/article/details/7957368
- proc编程的一个简单例子 http://blog.csdn.net/mailbox2005/article/details/3881538
- 查找(一)史上最简单清晰的红黑树讲解 http://blog.csdn.net/yang_yulei/article/details/26066409
- 使用信号实现异步通知机制的例子 http://blog.csdn.net/buaa_shang/article/details/9103155
- suspend造成死锁的例子和原因分析 http://blog.csdn.net/magictong/article/details/4161571
- Linux下使用netfilter进行IP包解析 http://blog.csdn.net/kingskyleader/article/details/7701140
- Linux内核大讲堂 (三) 解不开的"/"情结 http://blog.csdn.net/z2007b/article/details/6575809
- 详解Linux内核红黑树算法的实现 http://blog.csdn.net/npy_lp/article/details/7420689
- 内核线程与用户线程的区别 http://blog.csdn.net/wangkechuang/article/details/7883170
- Linux-2.6 open()打开文件涉及的内核处理和数据结构分析 http://blog.csdn.net/ordeder/article/details/24420637
- 管道的应用(pipe)《深入分析Linux内核源码》 http://blog.csdn.net/wangpengqi/article/details/7996182
- 文件结构体struct file(Linux 2.6.23内核) (转) http://blog.csdn.net/wangchaoxjtuse/article/details/6036684
- 编写一个简单的proc文件 http://blog.csdn.net/mockbird/article/details/6674017
- QT线程(一):线程类 http://blog.csdn.net/calm_agan/article/details/6300709
- 根文件系统的构建与分析(一)之流程分析 http://blog.csdn.net/jianchi88/article/details/7682901
- 剩余定理
- svn 仓库地址
- JavaScript的祖师爷-----布兰登艾奇
- JAVA设计模式之代理模式(静态代理和动态代理)
- 画板涂鸦和时钟(Quartz2D,核心动画)
- 2.6.30内核Netfilter的简单例子、一(DropAll) http://blog.csdn.net/sahusoft/article/details/4540886
- VisualSVN Server仓库迁移到Linux(包含所有版本, 权限,用户信息)
- Selenium的高级应用
- Android 中自定义控件和属性(attr.xml,declare-styleable,TypedArray)的方法和使用
- ios 多线程开发 GCD
- java小小工具第四弹 计算器(括号运算)
- js没有strstr, 而应该用indexOf函数
- C#随机排序
- 工厂模式