免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
41 [报告]
发表于 2008-01-03 22:35 |只看该作者
springwind426兄,能否解决一下hashspeed在iptables-1.4.0下的编译,谢谢先
内核2.6.23,iptables-1.4.0,内核模块编译通过,iptables模块编译错误如下

[root@qq hashspeed-0.1]# make
make -C /usr/src/linux-2.6.23 M=/usr/src/pom/hashspeed-0.1 modules
make[1]: Entering directory `/usr/src/linux-2.6.23'
  CC [M]  /usr/src/pom/hashspeed-0.1/ipt_hashspeed.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/pom/hashspeed-0.1/ipt_hashspeed.mod.o
  LD [M]  /usr/src/pom/hashspeed-0.1/ipt_hashspeed.ko
make[1]: Leaving directory `/usr/src/linux-2.6.23'
cc -O2 -Wall -DIPTABLES_VERSION=\"1.4.0\" -I/usr/src/iptables-1.4.0/include -fPIC -c libipt_hashspeed.c
在包含自 /usr/src/iptables-1.4.0/include/libiptc/libiptc.h:7 的文件中,
                 从 /usr/src/iptables-1.4.0/include/iptables.h:5,
                 从 libipt_hashspeed.c:13:
/usr/src/iptables-1.4.0/include/linux/netfilter_ipv4/ip_tables.h:18:28: 错误:linux/compiler.h:没有那个文件或目录
In file included from /usr/src/iptables-1.4.0/include/libiptc/libiptc.h:7,
                 from /usr/src/iptables-1.4.0/include/iptables.h:5,
                 from libipt_hashspeed.c:13:
/usr/src/iptables-1.4.0/include/linux/netfilter_ipv4/ip_tables.h:190: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘*’ token
make: *** [libipt_hashspeed.so] 错误 1

论坛徽章:
0
42 [报告]
发表于 2008-01-04 10:43 |只看该作者
原帖由 dzb_01 于 2008-1-3 22:35 发表
springwind426兄,能否解决一下hashspeed在iptables-1.4.0下的编译,谢谢先
内核2.6.23,iptables-1.4.0,内核模块编译通过,iptables模块编译错误如下

[root@qq hashspeed-0.1]# make
make -C /usr/src/l ...



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

还有,我修改了一下Makefile,修正了可能检测错误iptables版本的情况
(比如,我当前的系统安装的iptables版本是1.3.8,可是我想编译供1.4.0的iptables运行的模块,虽然指定了iptables的源代码所在路径,可是,版本检测却是当前的版本。)

论坛徽章:
0
43 [报告]
发表于 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
44 [报告]
发表于 2008-01-04 10:52 |只看该作者
原帖由 5639863 于 2008-1-4 10:50 发表



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



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

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

论坛徽章:
0
45 [报告]
发表于 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
46 [报告]
发表于 2008-01-04 11:17 |只看该作者

回复 #42 springwind426 的帖子

严重感谢springwind426兄,下载新版之后成功编译,无错误和警告
过程如下

[root@qq hashspeed-0.1]# make
make -C /usr/src/linux-2.6.23 M=/usr/src/pom/hashspeed-0.1 modules
make[1]: Entering directory `/usr/src/linux-2.6.23'
  CC [M]  /usr/src/pom/hashspeed-0.1/ipt_hashspeed.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/src/pom/hashspeed-0.1/ipt_hashspeed.mod.o
  LD [M]  /usr/src/pom/hashspeed-0.1/ipt_hashspeed.ko
make[1]: Leaving directory `/usr/src/linux-2.6.23'
cc -O2 -Wall -DIPTABLES_VERSION=\"1.4.0\" -I/usr/src/iptables-1.4.0/include -I/usr/src/linux-2.6.23/include -fPIC -c libipt_hashspeed.c
cc -shared -o libipt_hashspeed.so libipt_hashspeed.o

论坛徽章:
0
47 [报告]
发表于 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
48 [报告]
发表于 2008-01-04 12:03 |只看该作者
原帖由 5639863 于 2008-1-4 11:12 发表
springwind426 兄,我没有想通在有代理的情况下,应该怎么做限制,因为有代理的时候走的是INPUT链,将如何控制呢?

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

iptables -I INPUT   -s 192.168.0.8 ...


你可以试试:

iptables -t nat -I POSTROUTING 1 -o 内网网卡 -m hashspeed \! --hashspeed-bytes 256K --hashspeed-mode dstip --hashspeed-name dlimit -j DROP

就是在NAT链上做控制,在内网卡的发包上做控制,能够控制内网的下载速度

iptables -t nat -I PREROUTING 1 -i 内网网卡 -m hashspeed \! --hashspeed-bytes 256K --hashspeed-mode srcip --hashspeed-name slimit -j DROP

这个是在内网网卡的收包上做控制,能够控制内网的上传速度

因为数据包进入的时候,是先进入nat表的PREROUTING链,然后经过filter表,而出去的时候,是先经过filter,然后再经过nat表的POSTROUTING链

只是有人说,在nat表中做访问控制,可能会影响效率,我没有试过。

论坛徽章:
0
49 [报告]
发表于 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
50 [报告]
发表于 2008-01-04 13:40 |只看该作者
原帖由 5639863 于 2008-1-4 12:34 发表
iptables -t nat -I POSTROUTING 1 -o 内网网卡 -m hashspeed \! --hashspeed-bytes 256K --hashspeed-mode dstip --hashspeed-name dlimit -j DROP

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


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

能够把通过代理访问的内网主机的下载速度限制在64K/S

你试试,只是不知道这样做以后,效率上有多大影响,通常情况下,都不在mangle表中做控制
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP