fjwuming
发表于 2007-10-17 14:55:12
那个“i"能不能改。
bfrader
发表于 2007-10-17 14:58:00
你用的是minifw吗?刚才我试了3个网段,结果多占了9M内存。估计6个网段需要18M内存。
我的QQ是609118349,如果信任我,可以通过远程协助看下你的配置吗?
bfrader
发表于 2007-10-17 15:03:05
原帖由 fjwuming 于 2007-10-17 14:55 发表 http://bbs.routerclub.com/images/common/back.gif
那个“i"能不能改。
可以改啊,但那个$i也要改了。比如i改成k,那所有的$i也要改成$k了
DreamCat
发表于 2007-10-17 15:37:23
对于 P2P 软件,限制连接数是最明智的选择了,这与限速是两个概念。
bfrader
发表于 2007-10-17 18:50:57
今天用虚拟机装了个bfw3.0,结果发现根本没有ipt_connlimit模块。所以,如果不另安装ipt_connlimit模块的话,是无法实现限制并发连接数这一功能的。
fjwuming
发表于 2007-10-17 19:56:04
ipt_quota 388 0 (unused)
ipt_random 452 0 (unused)
ipt_physdev 580 0 (unused)
ipt_tos 256 0 (unused)
ipt_time 916 0 (unused)
ipt_multiport 392 0 (unused)
ipt_iprange 356 0 (unused)
ipt_connlimit 1096 2
8139too 12156 2
mii 1788 0
sch_ingress 1152 0 (unused)
sch_sfq 2752 0 (unused)
sch_htb 17344 0 (unused)
BFW3.0 有呀。就是只有限一个IP,好像是循环语句不起作用一样。
Chain FORWARD (policy ACCEPT 462M packets, 33G bytes)
pkts bytes target prot opt in out source destination
0 0 REJECT tcp--* * 192.168.2.1 0.0.0.0/0 #conn/32 > 20 reject-with icmp-port-unreachable
21G 9953G accountingall--* * 0.0.0.0/0 0.0.0.0/0
21G 9953G access-aclall--* * 0.0.0.0/0 0.0.0.0/0
21G 9953G autofw-aclall--* * 0.0.0.0/0 0.0.0.0/0
21G 9953G portfw-aclall--* * 0.0.0.0/0 0.0.0.0/0
21G 9952G user-filterall--* * 0.0.0.0/0 0.0.0.0/0
21G 9952G port-filterall--* * 0.0.0.0/0 0.0.0.0/0
bfrader
发表于 2007-10-18 08:46:12
bfw的shell中expr语句的语法不知是怎样要求的,总不能成功。只好想了个笨方法,用for语句。
先在/etc中建立两个文本文件num1(用于网段数循环)和num2(用于段内ip循环)
num1内容:1 2 3 4 5 (这里用哪几个网段,就写那几个数字)
num2内容:1 2 3 4 5 6 (这里比较繁,要一直写到254)
数字之间要有空格
然后用以下脚本:
for i in `cat /etc/num1`
do
for a in `cat /etc/num2`
do
iptables -I FORWARD -p tcp -s 192.168.$i.$a -m connlimit --connlimit-above 20 -j REJECT
iptables -I INPUT -p tcp -s 192.168.$i.$a -m connlimit --connlimit-above 20 -j REJECT
done
done
[ 本帖最后由 bfrader 于 2007-10-18 08:53 编辑 ]
bfrader
发表于 2007-10-18 09:23:52
原来bfw3.0中根本就没有expr这个表达式命令,所以从minifw中复制出来,ftp到bfw的/usr/bin中,执行chmod +x /usr/bin/expr ,然后就可以使用 a=`expr $a "+" 1`这样的shell语句了。
我已经把expr打包上传,请下载后在windows中解压,然后将解压的文件放到ftp服务器上。最后,在bfw的命令界面中分别执行以下命令:
cd /usr/bin
wget ftp://xxxx.xxxx.xxxx.xxxx/expr
chmod +x expr
最后别忘了在web管理界面中对系统进行备份。
[ 本帖最后由 bfrader 于 2007-10-18 11:59 编辑 ]
fjwuming
发表于 2007-10-18 14:31:30
ding 呵呵,谢谢bfrader了
bfrader
发表于 2007-10-19 08:47:20
总结:
限制连接数是一种以不变应万变的方法。目前,各种p2p下载软件、p2p在线电影播放软件使用了各种各样的自编协议,很难根据它们的协议特征,彻底消除这些软件对网络资源的不合理占用。但是它们有一个共同特点,就是贪得无厌地占用连接数。所以,只要限制了并发连接数,协议再怎样变化,都逃脱不了限制。限制连接数并没有把p2p应用逼入绝境,它们还可以在一定的范围内应用,这也是一种两全其美的方法。
另外,如果网内客户机很多的话,可以配合使用带宽限制,效果会更好。不过用不上每机限制带宽了,可以用限制网段带宽的方法。
a99456820
发表于 2007-10-19 10:34:50
bfrader
发表于 2007-10-19 11:42:26
connlimit是针对单独ip的,要是象iptables -I FORWARD -p tcp -m connlimit --connlimit-above 20 -j REJECT的话,整个网段只能用20个连接数了。
a99456820
发表于 2007-10-19 13:54:45
bfrader
发表于 2007-10-19 14:16:49
对指定端口来说,又是每ip了,但是在不指定端口(也就是说,每台机器用所有端口)时,只能一个一个ip限制了。我做过实验的,确实是这样。恳请你做一下实验,如果证明我的方法是错误的,欢迎来交流一下。
[ 本帖最后由 bfrader 于 2007-10-19 17:18 编辑 ]
bfrader
发表于 2007-10-19 17:26:49
而且,我的路由器就用这种方法带30多台机器上网