bfrader 发表于 2007-10-11 10:48:04

限制连接数与限制带宽的效果比较

以前使用coyote2.24软路由,参照一些教程,写了Qos脚本限制局域网内每台机器的带宽,限制了p2p,甚至把迅雷、狗狗的网站给屏蔽了,可就是没有什么效果。在测试流量的时候发现,整个局域网使用带宽远远没有达到电信分给我们的带宽,可就是网速慢,估计电信已经限制了我们的并发连接数,而我们局域网内有很多人在同时看p2p电影,无效连接很多,所以,虽然带宽没用多少,连接数却用完了。我曾经想过用限制连接数,但coyote2.24不支持。
    后来改用了minifw36,里面有connlimit的插件,可以限制连接数,于是创建了以下脚本,限制每ip的连接数为20:
a=2   
while [ $a -le 254 ]    #从192.168.0.2开始到192.168.0.254限制连接数
do
iptables -I FORWARD -p tcp -s 192.168.0.$a -m connlimit --connlimit-above 20 -j REJECT
iptables -I INPUT -p tcp -s 192.168.0.$a -m connlimit --connlimit-above 20 -j REJECT
a=`expr $a "+" 1`
done
除了限制连接数,其他都不限制,其效果是浏览网页速度如飞,比以前这限制那限制的要快多了——限制的东西多了,必然会占用路由器更多资源,速度自然就不快了。到现在,整个局域网上网都很稳定。
    有些人会认为限制连接数会浪费带宽,其实这是一种误解。用网际快车下载时,最多也不过用10个连接,下载速度足以占用整个带宽了。相反,象我以前没有限制连接数时,明明带宽远远没有用尽,却上不了网,那才叫浪费带宽。
    另外说明一下,20个连接数用来看pplive等p2p电影也很流畅了,不过同一机器在看电影的同时,就无法浏览网页了,因为这台机器分配到的连接数已用完。如果想边看电影边浏览网页,只能把p2p电影的最大并发连接数设为20以下(最好是15以下)。

add1132 发表于 2007-10-11 23:30:14

谢谢分享,希望有效果。:)

bfrader 发表于 2007-10-12 08:30:25

绝对有效果。本来我这里一到晚上很多人看p2p电影,网页基本上就别想浏览了;限制连接数以后,从未出现过此类现象。我做过试验,让很多人同时观看p2p电影,这时上行带宽很大,有时比下行带宽还要大很多,浏览网页速度却基本不受影响。

stockcrack 发表于 2007-10-12 09:54:16

这是个好方法,谢谢你!

add1132 发表于 2007-10-12 14:37:05

20是不是太少了,有谁帮测试一下.

bfrader 发表于 2007-10-12 18:22:22

对一般应用来说(比如浏览网页、普通下载、网络游戏),20个连接数已经够用了,如果你知道你的服务商提供你的并发连接数,你可以根据你的局域网上网机器数量,平均分配给他们,这样应该最合理。因为我到电信查询,他们技术人员也不知道提供给我们的并发连接数是多少,为了保险起见,我限制到20,即使这样,有些机器的上行速度还能达到150KByte/s以上,而我用网际快车下载软件,用足10个线程(也就是10个并发连接),下载速度可达到1MByte/s以上。

[ 本帖最后由 bfrader 于 2007-10-12 18:36 编辑 ]

zlin 发表于 2007-10-13 21:28:44

请问!是加在“防火墙规则配置”--“编辑配置文件”里吗?

hsyihao 发表于 2007-10-13 21:36:55

请问下minifw3.7能用吗?我刚用了3.7的```

bfrader 发表于 2007-10-13 21:45:27

原帖由 zlin 于 2007-10-13 21:28 发表 http://bbs.routerclub.com/images/common/back.gif
请问!是加在“防火墙规则配置”--“编辑配置文件”里吗?


应该加在“防火墙规则配置”--“编辑自定义防火墙规则”里,或者其它自动运行脚本文件里

注意:要备份配置后,重新启动路由器才能生效!

[ 本帖最后由 bfrader 于 2007-10-13 21:49 编辑 ]

bfrader 发表于 2007-10-13 21:46:55

原帖由 hsyihao 于 2007-10-13 21:36 发表 http://bbs.routerclub.com/images/common/back.gif
请问下minifw3.7能用吗?我刚用了3.7的```

可以的,只要有connlimit模块就行,而minifw里都有这个模块

希望各位试过以后,能回来交流心得。万分感谢!

[ 本帖最后由 bfrader 于 2007-10-13 21:51 编辑 ]

zlin 发表于 2007-10-13 22:27:16

这样是不是已经加载成功并生效了?

Chain INPUT (policy DROP 85 packets, 8619 bytes)
pkts bytes target   prot opt in   out   source               destination         
    0   0 REJECT   tcp--*      *       192.168.2.9          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.8          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.7          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.9          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.6          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.8          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.5          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.4          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.3          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.2          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.7          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.6          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.5          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.4          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.3          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.2          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
496 58747 remote-admin0    --*      *       0.0.0.0/0            0.0.0.0/0         
346 46590 ACCEPT   0    --*      *       0.0.0.0/0            0.0.0.0/0         state RELATED,ESTABLISHED
   653538 ACCEPT   0    --eth0   *       0.0.0.0/0            0.0.0.0/0         state NEW
    0   0 ACCEPT   0    --lo   *       0.0.0.0/0            0.0.0.0/0         state NEW

Chain FORWARD (policy DROP 9 packets, 360 bytes)
pkts bytes target   prot opt in   out   source               destination         
    0   0 DROP       0    --*      *       0.0.0.0/0            0.0.0.0/0         ipp2p v0.8.2 --ipp2p
    0   0 REJECT   tcp--*      *       192.168.2.9          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.8          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.7          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.9          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.6          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.5          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.8          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.4          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.3          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.2          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.7          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.6          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.5          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.4          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.3          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable
    0   0 REJECT   tcp--*      *       192.168.2.2          0.0.0.0/0         #conn/32 > 15 reject-with icmp-port-unreachable

add1132 发表于 2007-10-14 00:10:52

我今天也 m0n0wall 的shellcmd加了句:
/sbin/ipfw add allow tcp from 192.168.1.1/24 to any setup limit src-addr 20

确实有效果,哈哈。

zlin 发表于 2007-10-14 11:45:48

minifw3.6的流量整形里ip小于20的客户机没有速度限制, 可我需要限制ip为2到9的带宽,有什么脚本配合这个限制连接数的脚本。

leit 发表于 2007-10-14 16:02:41

我感觉tc限速的效率就是不高,,如果我有6个C的ip怎么办?上千条队列,,,系统受得了吗?

bfrader 发表于 2007-10-14 16:40:29

回复zlin:你的限制已经生效了。你要限制2到9的连接数,实际上已经实现了,你只是没有限制他们的带宽而已。如果你想限制他们的带宽,只要绑定整个局域网的mac和ip,不让他们使用这些 ip。
页: [1] 2 3 4 5 6
查看完整版本: 限制连接数与限制带宽的效果比较