回复zlin:你的限制已经生效了。你要限制2到9的连接数,实际上已经实现了,你只是没有限制他们的带宽而已。如果你想限制他们的带宽,只要绑定整个局域网的mac和ip,不让他们使用这些 ip。
不行啊!ip是事先每户分配好的,每家每户去说服更改工程太大! 那你就禁用minifw自带的qos脚本,然后自己编写限制带宽的脚本吧。附上《Coyote Linux 频宽管制 (QoS) 设定教学》一篇,可以供你参考。
[ 本帖最后由 bfrader 于 2007-10-14 18:54 编辑 ] 原帖由 leit 于 2007-10-14 16:02 发表 http://bbs.routerclub.com/images/common/back.gif
我感觉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 编辑 ] 楼主,我小声的问下。。MF里那个文件是用来绑定IP和MAC的?
虽然他用自带的DHCP能绑。。问题是我不想用DHCP 原帖由 xhb912 于 2007-10-14 19:46 发表 http://bbs.routerclub.com/images/common/back.gif
楼主,我小声的问下。。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 编辑 ] 引用: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电影软件用完,就不能边看电影边浏览网页了。 今天试了下你写的限制连接数与限制带宽,不知道是不是我们这网速问题。很卡``(我们这光纤有点不稳,网通没事天天升级)所以先把脚本删除了```等那天网速正常再来试下``` 应该不会卡啊。现在我这里网络是前所未有的稳定和快速。 请问了。bfw 3.0的可以用这条语句吗?他带有connlimit的插件? 原帖由 fjwuming 于 2007-10-17 13:06 发表 http://bbs.routerclub.com/images/common/back.gif
请问了。bfw 3.0的可以用这条语句吗?他带有connlimit的插件?
当然可以,linux中iptables的语法都一样的——只要你的系统中有connlimt的插件并且加载了。bfw我不熟悉,你可以在诊断工具中查看“已加载的模块”,如果有“ipt_connlimit”,那么,恭喜你,可以限制并发连接数了。
[ 本帖最后由 bfrader 于 2007-10-17 13:35 编辑 ] 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
回复 #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 编辑 ] 如果用你上面的就出现这个。
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... 我试过了,可以的,不过在编辑的时候要注意把每一行后面的空格都删掉 晕,还是不行。