我有一个内核模块,可以检查请求的IP地址,如果请求中包含不良数据(垃圾邮件关键字),则将其添加到“黑名单”变量中。
我声明黑名单的方式如下:
#define blacklist (uint32_t[3]) { \
2071690107, \
168430090, \
4294967295 \
}
我已经完成了一些初步测试(过滤IPv4,printk日志),并且必须已经阻止了我需要测试的请求之一的ip地址。
之所以这样说,是因为当我进行一次make clean,make并重新插入模块时,我会自动看到IP地址被阻止。
应该发生的情况是,数据打印首先显示一个垃圾邮件字,然后阻止IP地址,然后它将打印它在任何后续请求中都已被阻止(我知道不久后将进行处理)。
Mar 16 18:43:33 deadsupra-VirtualBox kernel: [36594.961054] Module insertion completed successfully!
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186539] ip checking: 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186541] ip is already blacklisted 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186546] ip checking: 127.0.0.1
Mar 16 18:43:46 deadsupra-VirtualBox kernel: [36607.186547] ip is already blacklisted 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190103] ip checking: 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190108] ip is already blacklisted 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190119] ip checking: 127.0.0.1
Mar 16 18:43:51 deadsupra-VirtualBox kernel: [36612.190121] ip is already blacklisted 127.0.0.1
我的make文件如下:
obj-m += wander.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
all:
make -C $(KERNELDIR) -Wno-declaration-after-statement M=$(PWD) modules
clean:
make -C $(KERNELDIR) M=$(PWD) clean
insert:
-sudo rmmod wander
sudo dmesg -C
sudo insmod wander.ko
dmesg
test:
curl "http://www1.udel.edu/registrar/graduation-diplomas/diplomas.html" | grep -i -o -P '.{0,10}university.diploma.{0,20}'
log:
cat /var/log/kern.log
我不能正确清理项目空间吗?我想每次刷新测试场景,而忘记重建源代码时以前阻塞的任何IP地址。
我在想,当我清洁模块时,它会删除它,但是出于某种原因必须保留数据。