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多台机器上网
页: 1 2 [3] 4 5 6
查看完整版本: 限制连接数与限制带宽的效果比较