免费注册 查看新帖 |

Chinaunix

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

[网络管理] 发布一个速度匹配的内核模块(hashspeed) [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-01-02 19:08 |显示全部楼层
需要编绎内核不?我是MAKE成功了,但再现iptables: Unknown error 4294967295

论坛徽章:
0
2 [报告]
发表于 2008-01-03 14:29 |显示全部楼层
dmesg看到如下信息:
ipt_hashspeed: Unknown symbol xt_unregister_matches
ipt_hashspeed: Unknown symbol ipt_unregister_matches
ipt_hashspeed: Unknown symbol ipt_register_matches
这是什么意思?

论坛徽章:
0
3 [报告]
发表于 2008-01-03 19:16 |显示全部楼层
原帖由 springwind426 于 2008-1-3 18:30 发表



有可能是没有加载相依赖的内核模块,比如 x_tables 和 ip_tables

是不是手动加载内核模块了?(比如  insmod ./ipt_hashspeed.ko)


应该是手动加载了一下,但没有成功,所以出现上面的提示。我depmod -a 然后在insmod,但还是不行。只好重新编译,但出现下面的问题:
make -C /lib/modules/2.6.18.8/build M=/root/hashspeed-0.1 modules
make[1]: Entering directory `/usr/src/linux-2.6.18.8'
  CC [M]  /root/hashspeed-0.1/ipt_hashspeed.o
/root/hashspeed-0.1/ipt_hashspeed.c:606: 警告:从不兼容的指针类型初始化
/root/hashspeed-0.1/ipt_hashspeed.c: 在函数 ‘ipt_hashspeed_init’ 中:
/root/hashspeed-0.1/ipt_hashspeed.c:728: 警告:隐式声明函数 ‘ipt_register_matches’
/root/hashspeed-0.1/ipt_hashspeed.c:754: 警告:隐式声明函数 ‘xt_unregister_matches’
/root/hashspeed-0.1/ipt_hashspeed.c: 在函数 ‘ipt_hashspeed_fini’ 中:
/root/hashspeed-0.1/ipt_hashspeed.c:767: 警告:隐式声明函数 ‘ipt_unregister_matches’
  Building modules, stage 2.
  MODPOST
WARNING: "xt_unregister_matches" [/root/hashspeed-0.1/ipt_hashspeed.ko] undefined!
WARNING: "ipt_register_matches" [/root/hashspeed-0.1/ipt_hashspeed.ko] undefined!
WARNING: "ipt_unregister_matches" [/root/hashspeed-0.1/ipt_hashspeed.ko] undefined!
  CC      /root/hashspeed-0.1/ipt_hashspeed.mod.o
  LD [M]  /root/hashspeed-0.1/ipt_hashspeed.ko
make[1]: Leaving directory `/usr/src/linux-2.6.18.8'
cc -O2 -Wall -DIPTABLES_VERSION=\"1.3.5\" -I/usr/src/iptables-1.3.5/include -fPIC -c libipt_hashspeed.c
cc -shared -o libipt_hashspeed.so libipt_hashspeed.o
libipt_hashspeed.o: In function `_init':
libipt_hashspeed.c.text+0x50): multiple definition of `_init'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crti.o.init+0x0): first defined here
collect2: ld 返回 1
make: *** [libipt_hashspeed.so] 错误 1

停止了。

论坛徽章:
0
4 [报告]
发表于 2008-01-03 20:56 |显示全部楼层
make -C /lib/modules/2.6.18.8/build M=/root/hashspeed-0.1 modules
make[1]: Entering directory `/usr/src/linux-2.6.18.8'
  CC [M]  /root/hashspeed-0.1/ipt_hashspeed.o
/root/hashspeed-0.1/ipt_hashspeed.c:607: 警告:从不兼容的指针类型初始化
  Building modules, stage 2.
  MODPOST
  CC      /root/hashspeed-0.1/ipt_hashspeed.mod.o
  LD [M]  /root/hashspeed-0.1/ipt_hashspeed.ko
make[1]: Leaving directory `/usr/src/linux-2.6.18.8'
cc -O2 -Wall -DIPTABLES_VERSION=\"1.3.5\" -I/usr/src/iptables-1.3.5/include -fPIC -c libipt_hashspeed.c
cc -shared -o libipt_hashspeed.so libipt_hashspeed.o
libipt_hashspeed.o: In function `_init':
libipt_hashspeed.c.text+0x50): multiple definition of `_init'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../crti.o.init+0x0): first defined here
collect2: ld 返回 1
make: *** [libipt_hashspeed.so] 错误 1

我已经下载你的最新的了,但还是出现如上错误。请问更改的是哪个文件。对于不懂编程的我可以更改吗?谢谢

论坛徽章:
0
5 [报告]
发表于 2008-01-04 10:50 |显示全部楼层
原帖由 springwind426 于 2008-1-4 10:43 发表



你到我的主页上下载最新的吧,我看了一下iptables-1.4.0的头文件,需要把linux的include也包含到-I中才行

还有,我修改了一下Makefile,修正了可能检测错误iptables版本的情况
(比如,我当前的系统安 ...



哈哈,太感谢了啊,我刚刚下载你最新的修改版本,并把里面的$(cc) -share 改成ld -share编译成功。

论坛徽章:
0
6 [报告]
发表于 2008-01-04 11:12 |显示全部楼层
springwind426 兄,我没有想通在有代理的情况下,应该怎么做限制,因为有代理的时候走的是INPUT链,将如何控制呢?

我根据前面的例子写了一个针对我自己机器的规则:

iptables -I INPUT   -s 192.168.0.88  -p tcp -m hashspeed \! --hashspeed-bytes 256K --hashspeed-mode dstip --hashspeed-name dlimit -j DROP

但没有看到任何变化。

[ 本帖最后由 5639863 于 2008-1-4 11:27 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-01-04 11:18 |显示全部楼层
原帖由 springwind426 于 2008-1-4 10:52 发表



我没有修改成ld也是编译成功的,而且也能够正常运行

我的环境:
linux 2.6.22
iptables-1.4.0
gcc 4.1.3 20071209


我又重新编译了一下,如果不更改$(cc) -share 为 ld -share 的话就无法完成。
我的环境是:
linux 2.6.18
iptables-1.3.5
gcc 版本 4.1.1 20070105

论坛徽章:
0
8 [报告]
发表于 2008-01-04 12:34 |显示全部楼层
iptables -t nat -I POSTROUTING 1 -o 内网网卡 -m hashspeed \! --hashspeed-bytes 256K --hashspeed-mode dstip --hashspeed-name dlimit -j DROP

我用这个规则试了一下,还是没有任何效果。
我用的是SQUID

论坛徽章:
0
9 [报告]
发表于 2008-01-07 09:20 |显示全部楼层
原帖由 springwind426 于 2008-1-4 13:40 发表


我用这个:
iptables -t mangle -A POSTROUTING -o 内网网卡 -m hashspeed --hashspeed-name squid --hashspeed-mode dstip \! --hashspeed-bytes 64K -j DROP

能够把通过代理访问的内网主机的下载速度 ...


在mangle上做规则确实可以了。
但如果将下载限制到100K的话,那对浏览网页有没有影响呢,这个咋测试,用感观还是其他什么软件?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP