找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: bfrader

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

[复制链接]
发表于 2007-10-14 17:47:59 | 显示全部楼层
原帖由 bfrader 于 2007-10-14 16:40 发表
回复zlin:你的限制已经生效了。你要限制2到9的连接数,实际上已经实现了,你只是没有限制他们的带宽而已。如果你想限制他们的带宽,只要绑定整个局域网的mac和ip,不让他们使用这些 ip。

不行啊!ip是事先每户分配好的,每家每户去说服更改工程太大!
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-14 18:51:50 | 显示全部楼层
那你就禁用minifw自带的qos脚本,然后自己编写限制带宽的脚本吧。附上《Coyote Linux 频宽管制 (QoS) 设定教学》一篇,可以供你参考。

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

Coyote Linux 频宽管制 (QoS) 设定教学.zip

293.16 KB, 下载次数: 2868, 下载积分: 铜板 -1

routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-14 19:36:06 | 显示全部楼层
原帖由 leit 于 2007-10-14 16:02 发表
我感觉tc限速的效率就是不高,,如果我有6个C的ip怎么办?上千条队列,,,系统受得了吗?


应该没问题,这只是判断并发连接数,超过部分拒绝通过,比每IP限制带宽要省资源。当然,带的机器多,内存也要多一些。我的是小局域网,带30多台机器,为防止用户修改IP来逃避限制,我将每个IP都进行限制(即253条规则),路由器只有40M内存,cpu是P120的,运行1周后,剩余内存还有60%。

有6个段可以用嵌套循环:

i=0
while [ $i -le 5 ] # 限制范围: 从192.168.0.0段到192.168.5.0段
do
  a=1   
  while [ $a -le 254 ]   
  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
  a=`expr $a "+" 1`
  done
i=`expr $i "+" 1`
done

[ 本帖最后由 bfrader 于 2007-10-14 19:42 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-10-14 19:46:43 | 显示全部楼层
楼主,我小声的问下。。MF里那个文件是用来绑定IP和MAC的?
虽然他用自带的DHCP能绑。。问题是我不想用DHCP
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-14 20:02:23 | 显示全部楼层
原帖由 xhb912 于 2007-10-14 19:46 发表
楼主,我小声的问下。。MF里那个文件是用来绑定IP和MAC的?
虽然他用自带的DHCP能绑。。问题是我不想用DHCP


那就要你自己编写一个文本文件,里面是mac与ip的对应。格式如下:

00:1a:4d:21:63:ba 172.18.196.126
00:11:5b:42:b2:31 172.18.196.127
00:e0:4c:01:12:ba 172.18.196.128
00:00:e8:a0:17:ce 172.18.196.129
00:e0:4a:ec:00:f8 172.18.196.130
00:16:ec:bd:4f:02 172.18.196.131

然后把这个文件保存在某个目录下,我是保存为/etc/macip.txt
然后运行命令:
arp -f /etc/macip.txt
就实现绑定了。为了让路由器启动后自动绑定,可以把这个命令加在防火墙自定义规则文件的最后一行。最后不要忘了备份。

注意:只对一部分ip进行绑定,客户自己修改了ip后仍能逃避限制,所以要将剩下不用的ip也绑定为一个不存在的mac。请看我的例子:(附件)

[ 本帖最后由 bfrader 于 2007-10-14 20:11 编辑 ]

macip.zip

1.1 KB, 下载次数: 173, 下载积分: 铜板 -1

routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-15 15:12:18 | 显示全部楼层
引用:zlin发表于 2007-10-13 22:27
这样是不是已经加载成功并生效了?

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
================================
你网内这么少的机器,连接数可以多分一些嘛!15个连接数太少了。你可能误解我的意思了,我说要把p2p电影的并发连接数设置在15以下,指的是在客户机上设置,以免这台客户机分配到的20个并发连接数被p2p电影软件用完,就不能边看电影边浏览网页了。
routeros
回复

使用道具 举报

发表于 2007-10-15 19:12:31 | 显示全部楼层
今天试了下你写的限制连接数与限制带宽,不知道是不是我们这网速问题。很卡``(我们这光纤有点不稳,网通没事天天升级)所以先把脚本删除了```等那天网速正常再来试下```
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-15 19:19:19 | 显示全部楼层
应该不会卡啊。现在我这里网络是前所未有的稳定和快速。
routeros
回复

使用道具 举报

发表于 2007-10-17 13:06:13 | 显示全部楼层
请问了。bfw 3.0的可以用这条语句吗?他带有connlimit的插件?
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-17 13:31:05 | 显示全部楼层
原帖由 fjwuming 于 2007-10-17 13:06 发表
请问了。bfw 3.0的可以用这条语句吗?他带有connlimit的插件?


当然可以,linux中iptables的语法都一样的——只要你的系统中有connlimt的插件并且加载了。bfw我不熟悉,你可以在诊断工具中查看“已加载的模块”,如果有“ipt_connlimit”,那么,恭喜你,可以限制并发连接数了。

[ 本帖最后由 bfrader 于 2007-10-17 13:35 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-10-17 13:57:44 | 显示全部楼层
Configuring firewall rules...
Configuring custom firewall rules...
/etc/rc.d/rc.firewall: /etc/coyote/firewall.local: 100: [2: not found
Configuring port forwarding for internal hosts...

这个是什么问题?
用了这个。
i=2
while [$i -le 5] # 限制范围: 从192.168.0.0段到192.168.5.0段
do
  a=1   
  while [$a -le 254]   
  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
  a='expr $a + 1'
  done
i='expr $i + 1'
done
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-17 14:20:23 | 显示全部楼层

回复 #26 fjwuming 的帖子

你不能把“[”后和“]”前的空格去掉!加号要用引号括起来!还有,a='expr $a + 1'里用的不是单引号,而是`,也就是“1”左边的那个键上的符号
[$i -le 5] ——> [ $i -le 5 ]
[$a -le 254] ——> [ $a -le 254 ]
a='expr $a + 1' ——> a=`expr $a "+" 1`
i='expr $i + 1' ——> i=`expr $i "+" 1`

你可以把我原来在#18帖子里那段原样复制过去,修改必要的数字,其他都别改。

[ 本帖最后由 bfrader 于 2007-10-17 14:33 编辑 ]
routeros
回复

使用道具 举报

发表于 2007-10-17 14:30:13 | 显示全部楼层
如果用你上面的就出现这个。
Configuring firewall rules...
Configuring custom firewall rules...
/etc/rc.d/rc.firewall: /etc/coyote/firewall.local: 100: expr: not found
[: 254: unknown operand
/etc/rc.d/rc.firewall: /etc/coyote/firewall.local: 100: expr: not found
[: 5: unknown operand
Configuring port forwarding for internal hosts...
routeros
回复

使用道具 举报

 楼主| 发表于 2007-10-17 14:41:41 | 显示全部楼层
我试过了,可以的,不过在编辑的时候要注意把每一行后面的空格都删掉
routeros
回复

使用道具 举报

发表于 2007-10-17 14:54:18 | 显示全部楼层
晕,还是不行。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-12-23 08:00 , Processed in 0.065875 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表