zy3680 发表于 2006-12-9 15:50:37

有两种做coyote的限速,哪种更适合网吧用!!

1.

#!/bin/sh
#
# Coyote local command init script

# 清除 eth1 所有队列规则
tc qdisc del dev eth1 root 2>/dev/null

# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth1 root handle 10: htb default 70

# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth1 parent 10: classid 10:1 htb rate 64kbps ceil 64kbps

# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 2kbps ceil 4kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:20 htb rate 2kbps ceil 4kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:30 htb rate 32kbps ceil 40kbps prio 3


tc class add dev eth1 parent 10:1 classid 10:40 htb rate 8kbps ceil 16kbps prio 0
tc class add dev eth1 parent 10:1 classid 10:50 htb rate 4kbps ceil 12kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:60 htb rate 4kbps ceil 12kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:70 htb rate 4kbps ceil 12kbps prio 1


# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
# 由于采用 fw 过滤器,所以此处使用 pfifo 的队列规则即可
tc qdisc add dev eth1 parent 10:10 handle 101: pfifo
tc qdisc add dev eth1 parent 10:20 handle 102: pfifo
tc qdisc add dev eth1 parent 10:30 handle 103: pfifo
tc qdisc add dev eth1 parent 10:40 handle 104: pfifo
tc qdisc add dev eth1 parent 10:50 handle 105: pfifo
tc qdisc add dev eth1 parent 10:60 handle 106: pfifo
tc qdisc add dev eth1 parent 10:70 handle 107: pfifo

# 设定过滤器
# 指定贴有 10 标签 (handle) 的封包,归类到 10:10 类别,以此类推
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 20 fw classid 10:20
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 30 fw classid 10:30
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 40 fw classid 10:40
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 50 fw classid 10:50
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 60 fw classid 10:60
tc filter add dev eth1 parent 10: protocol ip prio 100 handle 70 fw classid 10:70



# QoS eth0下载方面
#

# 清除 eth0所有队列规则
tc qdisc del dev eth0 root 2>/dev/null

# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth0 root handle 10: htb default 70

# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth0 parent 10: classid 10:1 htb rate 256kbps ceil 256kbps

# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 2kbps ceil 32kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:20 htb rate 2kbps ceil 32kbps prio 2
tc class add dev eth0 parent 10:1 classid 10:30 htb rate 32kbps ceil 212kbps prio 3

tc class add dev eth0 parent 10:1 classid 10:40 htb rate 16kbps ceil 196kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:50 htb rate 8kbps ceil 188kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:60 htb rate 8kbps ceil 188kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:70 htb rate 8kbps ceil 188kbps prio 1

# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
tc qdisc add dev eth0 parent 10:10 handle 101: pfifo
tc qdisc add dev eth0 parent 10:20 handle 102: pfifo
tc qdisc add dev eth0 parent 10:30 handle 103: pfifo
tc qdisc add dev eth0 parent 10:40 handle 104: pfifo
tc qdisc add dev eth0 parent 10:50 handle 105: pfifo
tc qdisc add dev eth0 parent 10:60 handle 106: pfifo
tc qdisc add dev eth0 parent 10:70 handle 107: pfifo

# 设定过滤器
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 10 fwclassid 10:10
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 20 fwclassid 10:20
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 30 fwclassid 10:30
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 40 fwclassid 10:40
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 50 fwclassid 10:50
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 60 fwclassid 10:60
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 70 fwclassid 10:70
=====================================================================

2.

首先不要用web管理开启qos,QOS Init Configuration中QOS init type 一定要是QOS Disabled,不使用自带的qos脚本。
2.如果想限制一个ip的带宽在/etc/rc.d/rc.local文件中加入以下内容:
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 50kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.111.168 flowid 1:1
就可以限制192.168.111.168的带宽为50k了,实际下载速度为8k左右。

3.如果想限制一段ip的带宽在/etc/rc.d/rc.local文件中加入以下内容:
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 400kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32
match ip dst 192.168.111.0/24 flowid 1:1

就可以限制192.168.111.0 到255 的带宽为400k了,实际下载速度为50k左右。
这种情况下,这个网段所有机器共享这50k的带宽。
由于限制单个ip的带宽比较麻烦,所以我限制了一段ip的带宽,又给本地网卡加了一个ip地址,加的ip的网段带宽没有限制
在web管理LAN Configuration的(Optional) Secondary IP Address and Netmask里设定的。

详细的讲一下:tc qdisc add dev eth0 root handle 1: htb r2q 1
加一个没有default的root,
使整个网络的带宽没有限制。
tc class add dev eth0 parent 1: classid 1:1 htb rate 400kbit burst 10k
设定一个类默认带宽是400kbit

tc filter add dev eth0 parent 1: protocol ip prio 16 u32
match ip dst 192.168.111.0/24 flowid 1:1

设定192.168.111.0整个网段使用类1:1,从而限制带宽。

而默认不限制带宽,只有指定那个ip或段才去限制。

芝麻 发表于 2006-12-11 15:31:42

第一种是用QOS方式,我正在用,效果不错.
第二种用HTB方式,好象说技术已经落后了,反正没用过

zy3680 发表于 2006-12-11 16:00:05

第一种应该也是HTB方式,第一种还少标签规则没有加如下!!!!
iptables 指令,过滤器 (编辑自定义防火墙规则) :

# uploads
# 设定上传方面,先利用 iptables 给封包贴标签,再交由 fw 过滤器进行过滤
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto dns -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto smtp -j MARK --set-mark 20
iptables -t mangle -A PREROUTING -s 192.168.1.6 -m layer7 --l7proto http -j MARK --set-mark 30
iptables -t mangle -A PREROUTING -s 192.168.1.1 -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -s 192.168.1.2 -j MARK --set-mark 50
iptables -t mangle -A PREROUTING -s 192.168.1.3 -j MARK --set-mark 60
# downloads
# 下载方面
iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto dns -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto smtp -j MARK --set-mark 20
iptables -t mangle -A POSTROUTING -d 192.168.1.6 -m layer7 --l7proto http -j MARK --set-mark 30
iptables -t mangle -A POSTROUTING -d 192.168.1.1 -j MARK --set-mark 40
iptables -t mangle -A POSTROUTING -d 192.168.1.2 -j MARK --set-mark 50
iptables -t mangle -A POSTROUTING -d 192.168.1.3 -j MARK --set-mark 60

楼上的兄弟QQ多少,有几个问题想请教一下!!!

[ 本帖最后由 zy3680 于 2006-12-11 16:08 编辑 ]

芝麻 发表于 2006-12-12 08:18:36

100568,加我时请注明routerclub上的会员,有空交流

zidragon 发表于 2006-12-13 17:29:19

这就去试,顶一个先
页: [1]
查看完整版本: 有两种做coyote的限速,哪种更适合网吧用!!