免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ShadowStar
打印 上一主题 下一主题

[网络管理] IPP2P模块修改版,最新0.99.16 [复制链接]

论坛徽章:
0
411 [报告]
发表于 2008-03-12 16:27 |只看该作者
又仔细修改了一次,还是老问题 ~~~

看来只有耐心等lz升级到2.6.24 和 iptables 1.4.0 的时候了

尽管如此,依然非常感谢~~~ 希望lz同志能适当考虑用其他方式封锁bt ,比如限制其于著名种子连接器的连接(可以考虑把这部分做单独出来,把什么bt,emule等的服务器搞个列表,模块加载的时候读取它,定期可更新)

论坛徽章:
0
412 [报告]
发表于 2008-03-12 16:59 |只看该作者
原帖由 platinum 于 2008-3-12 16:21 发表
ShadowStar 对 ipp2p 修改了匹配机制,融入了类似 layer7 的状态追踪功能,提高了性能
如果再加上类似 layer7 那样可以很轻易增加新协议的功能就更好了


我想这么做,而且是结合正则表达式、逐字节匹配和条件匹配。
但是目前还没有考虑好特征库加载的问题。

论坛徽章:
0
413 [报告]
发表于 2008-03-12 17:01 |只看该作者
原帖由 skylove 于 2008-3-12 16:27 发表
又仔细修改了一次,还是老问题 ~~~

看来只有耐心等lz升级到2.6.24 和 iptables 1.4.0 的时候了

尽管如此,依然非常感谢~~~ 希望lz同志能适当考虑用其他方式封锁bt ,比如限制其于著名种子连接器的连接(可 ...


封服务器的技术难度是最低的,但是维护工作量很大。

论坛徽章:
0
414 [报告]
发表于 2008-03-13 10:38 |只看该作者

请教楼主

您的0.99.16的版本可以应用在内核为2.6.9的版本上吗?谢谢

论坛徽章:
0
415 [报告]
发表于 2008-03-14 17:40 |只看该作者

报错了

内核版本 2.6.18-8.el5
我的Makefile 文件内容如下
[root@hw ipp2p-0.99.16]# more Makefile
ifneq ($(KERNELRELEASE),)
obj-m := ipt_ipp2p.o

else
KERNEL_SRC = /usr/src/kernels/2.6.18-8.el5-i686/
#KERNEL_SRC ?= $(firstword $(wildcard /lib/modules/$(shell uname -r)/build /usr/src/linux))
ifeq ($(KERNEL_SRC),)
$(error You need to define KERNEL_SRC)
endif

ifneq ($wildcard $(KERNEL_SRC)/include/linux/modversions.h),)
MODVERSIONS = -DMODVERSIONS
endif

_KVER = $(strip $(shell cat $(KERNEL_SRC)/Makefile | grep -e '^VERSION' | cut -d"=" -f2))
_KPL = $(strip $(shell cat $(KERNEL_SRC)/Makefile | grep -e '^PATCHLEVEL' | cut -d"=" -f2))
_KSUB = $(strip $(shell cat $(KERNEL_SRC)/Makefile | grep -e '^SUBLEVEL' | cut -d"=" -f2))
KERNEL_SERIES=$(_KVER).$(_KPL)

ifeq ($(KERNEL_SERIES), 2.6)
        TARGET=ipt_ipp2p.ko
else
        TARGET=ipt_ipp2p.o
endif

SED = sed
IPTABLES_BIN = iptables
ifndef $(IPTABLES_SRC)
IPTVER = \
        $(shell $(IPTABLES_BIN) --version | $(SED) -e 's/^iptables v//')
#IPTABLES_SRC = $(wildcard /usr/src/iptables-$(IPTVER))
IPTABLES_SRC = /lib/iptables
endif

ifeq ($(IPTABLES_SRC),)
$(warning You need to install iptables sources and maybe set IPTABLES_SRC)
endif

IPTABLES_INCLUDE = -I$(IPTABLES_SRC)/include

ifneq ($(IPTVER),)
        IPTABLES_VERSION = $(IPTVER)
else
        IPTABLES_VERSION = $(shell cat $(IPTABLES_SRC)/Makefile | grep -e '^IPTABLES_VERSION:=' | cut -d"=" -f2)
endif

IPTABLES_OPTION = -DIPTABLES_VERSION=\"$(IPTABLES_VERSION)\"
#CC = x86_64-pc-linux-gnu-gcc-4.1.2
#CFLAGS = -march=k8 -msse3 -O2 -pipe -Wall
CC = gcc
CFLAGS = -O3 -Wall



all: modules libipt_ipp2p.so

modules: $(TARGET)

ipt_ipp2p.o: ipt_ipp2p.h ipt_ipp2p.c
        $(CC) $(CFLAGS) -I$(KERNEL_SRC)/include -c ipt_ipp2p.c -D__KERNEL__ -DMODULE $(MODVERSIONS)

ipt_ipp2p.ko: ipt_ipp2p.h ipt_ipp2p.c
        $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules


libipt_ipp2p.so: libipt_ipp2p.c ipt_ipp2p.h
        $(CC) $(CFLAGS) $(IPTABLES_OPTION) $(IPTABLES_INCLUDE) -fPIC -c libipt_ipp2p.c
        $(CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o
install:
        cp ipt_ipp2p.ko /lib/modules/$(shell uname -r)/kernel/net/ipv4/netfilter/
        cp libipt_ipp2p.so /lib/iptables/
        depmod -a
clean:
        -rm -rf *.o *.so *.ko .*.cmd *.mod.c .tmp_versions *~
endif
[root@hw ipp2p-0.99.16]#

然后我make

报错内容如下

[root@hw ipp2p-0.99.16]# make
make -C /usr/src/kernels/2.6.18-8.el5-i686/ M=/root/iptables/ipp2p-0.99.16 modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
  CC [M]  /root/iptables/ipp2p-0.99.16/ipt_ipp2p.o
In file included from /root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:6:
include/net/netfilter/nf_conntrack_core.h:42: 警告:‘struct nf_conntrack_tuple’ 在形参表内部声明
include/net/netfilter/nf_conntrack_core.h:42: 警告:它的作用域仅限于此定义或声明,这可能并不是您想要的
include/net/netfilter/nf_conntrack_core.h:48: 警告:‘struct nf_conntrack_tuple’ 在形参表内部声明
include/net/netfilter/nf_conntrack_core.h:53: 警告:‘struct nf_conn’ 在形参表内部声明
include/net/netfilter/nf_conntrack_core.h:53: 警告:‘struct nf_conntrack_tuple’ 在形参表内部声明
include/net/netfilter/nf_conntrack_core.h: 在函数 ‘nf_conntrack_confirm’ 中:
include/net/netfilter/nf_conntrack_core.h:64: 错误:隐式声明函数 ‘nf_ct_is_confirmed’
include/net/netfilter/nf_conntrack_core.h:66: 错误:隐式声明函数 ‘nf_ct_deliver_cached_events’
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c: 在函数 ‘match’ 中:
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:815: 错误:‘ctinfo’ 的存储大小未知
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:836: 错误:隐式声明函数 ‘nf_ct_get’
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:836: 警告:赋值时将整数赋给指针,未作类型转换
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:‘IP_CT_DIR_ORIGINAL’ 未声明 (在此函数内第一次使用)
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:所在的函数内只报告一次。)
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:841: 错误:‘IP_CT_DIR_REPLY’ 未声明 (在此函数内第一次使用)
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:842: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:844: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:845: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:847: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:847: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:847: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:878: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:900: 错误:提领指向不完全类型的指针
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:815: 警告:未使用的变量 ‘ctinfo’
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c: 在函数 ‘init’ 中:
/root/iptables/ipp2p-0.99.16/ipt_ipp2p.c:962: 错误:隐式声明函数 ‘need_conntrack’
make[2]: *** [/root/iptables/ipp2p-0.99.16/ipt_ipp2p.o] 错误 1
make[1]: *** [_module_/root/iptables/ipp2p-0.99.16] 错误 2
make[1]: Leaving directory `/usr/src/kernels/2.6.18-8.el5-i686'
make: *** [ipt_ipp2p.ko] 错误 2

我的iptables是安装系统时候自带的
iptables 1.3.5

请大家帮忙看看,谢谢

论坛徽章:
0
416 [报告]
发表于 2008-03-14 22:22 |只看该作者
[root@localhost ipp2p-0.99.15]# make
make -C /usr/src/linux-2.6.23.15 M=/root/ipp2p-0.99.15 modules
make[1]: Entering directory `/usr/src/linux-2.6.23.15'

  WARNING: Symbol version dump /usr/src/linux-2.6.23.15/Module.symvers
           is missing; modules will have no dependencies and modversions.

  CC [M]  /root/ipp2p-0.99.15/ipt_ipp2p.o
  Building modules, stage 2.
  MODPOST 1 modules
/bin/sh: scripts/mod/modpost: 没有那个文件或目录
make[2]: *** [__modpost] 错误 127
make[1]: *** [modules] 错误 2
make[1]: Leaving directory `/usr/src/linux-2.6.23.15'
make: *** [ipt_ipp2p.ko] 错误 2


帮忙说说,上面怎么有这样的错误啊

论坛徽章:
0
417 [报告]
发表于 2008-03-15 08:41 |只看该作者
原帖由 ShadowStar 于 2008-3-12 16:59 发表


我想这么做,而且是结合正则表达式、逐字节匹配和条件匹配。
但是目前还没有考虑好特征库加载的问题。

其实特征库加载的问题我觉得倒是相对简单,我通过学习你的 nicmirror 代码得到的灵感
在 ipt_ipp2p.c 主模块里可以调用一个函数指针指向的函数,而另一个真正负责数据匹配的模块从属于 ipp2p
每当需要升级的时候只需重编附加模块、卸载、重新加载即可,无需卸载 ipp2p 以及删除之前的所有与 ipp2p 有关的策略

我现在 ipt_ipp2p 就是这样做的,升级只需要几步:
compile new extra_ipp2p.ko
rmmod extra_ipp2p
modprobe extra_ipp2p
升级协议库很方便 ^_^

相反,我倒觉得结合正则式、逐字节匹配和条件匹配倒是个难点,不知道 ShadowStar 有什么好的想法没有

论坛徽章:
0
418 [报告]
发表于 2008-03-15 11:33 |只看该作者
请教楼主,您的0.99.16的版本对内核版本有要求吗?或者对于系统环境有要求吗?

安装了几次,结果都是上面的报错提示,请您指教一下。谢谢

论坛徽章:
0
419 [报告]
发表于 2008-03-16 19:32 |只看该作者
原帖由 lxc521 于 2008-3-14 22:22 发表
[root@localhost ipp2p-0.99.15]# make
make -C /usr/src/linux-2.6.23.15 M=/root/ipp2p-0.99.15 modules
make[1]: Entering directory `/usr/src/linux-2.6.23.15'

  WARNING: Symbol version dump /usr ...


你这个是因为内核没有配置和预编译导致的。

论坛徽章:
0
420 [报告]
发表于 2008-03-16 19:35 |只看该作者
原帖由 platinum 于 2008-3-15 08:41 发表

其实特征库加载的问题我觉得倒是相对简单,我通过学习你的 nicmirror 代码得到的灵感
在 ipt_ipp2p.c 主模块里可以调用一个函数指针指向的函数,而另一个真正负责数据匹配的模块从属于 ipp2p
每当需要升级的 ...


可能是我说的比较混乱。

我得意思是采用类似L7-filter的方式加载特征库。

而且主要是加载的特征库如何区分是正则表达式还是逐字节匹配。

再一个就是需要设定一种用于描述逐字节匹配和条件匹配的“语言”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP