装了coyote硬盘版后,网络确实比以前用TP-R402M的时候稳定多了。
单位里有15台办公电脑,还有教师宿舍里近20台个人电脑都连在同一局域网里,共享电信光纤接入10M带宽。后来,用pplive、ppstream看电影的人多了,导致其他人无法浏览网页。办公电脑都装上了还原精灵,很好管理,可教师宿舍里的电脑就没法管理了,只好用tc和iptables限制带宽。刚开始还行,后来一段时间后又出现无法浏览网页了。查看带宽使用情况,远远没有达到爆满的水平。出现这种情况,应该是连接数太多了——带宽限制也管不了了。下载了一个mimifw的ipt_connlimit.o,但是coyote加载不了,可能内核不支持吧。
不想把coyote换成minifw,太麻烦了。苦思了几天后,终于解决了问题:给每台电脑分配上传带宽和下载带宽,上传优先权很低,然后专门为http、dns、smtp、pop3开辟一个公共的上传通道,优先权为0。这样,用户用P2P时,用他们的低优先权上传通道,浏览网页时用高优先权的公共上传通道,下载时都用自己的下载通道。
qos脚本
-----------------------------------
# 清除 eth1 所有队列规则
tc qdisc del dev eth1 root 2>/dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth1 root handle 10: htb default 50
# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth1 parent 10: classid 10:1 htb rate 128kbps ceil 128kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 8kbps ceil 40kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:11 htb rate 8kbps ceil 40kbps prio 1
tc class add dev eth1 parent 10:1 classid 10:12 htb rate 4kbps ceil 12kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:15 htb rate 4kbps ceil 12kbps prio 2
tc class add dev eth1 parent 10:1 classid 10:61 htb rate 2kbps ceil 4kbps prio 3
tc class add dev eth1 parent 10:1 classid 10:62 htb rate 2kbps ceil 4kbps prio 3
……
#下面一行是为浏览网页开辟一条高优先权的上传通道
tc class add dev eth1 parent 10:1 classid 10:40 htb rate 8kbps ceil 40kbps prio 0
# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
# 由于采用 fw 过滤器,所以此处使用 pfifo 的队列规则即可
tc qdisc add dev eth1 parent 10:10 handle 100: pfifo
tc qdisc add dev eth1 parent 10:11 handle 101: 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 11 fw classid 10:11
……
# QoS eth0 下载方面
#
# 清除 eth0所有队列规则
tc qdisc del dev eth0 root 2>/dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev eth0 root handle 10: htb default 50
# 定义第一层的 10:1 类别 (总频宽)
tc class add dev eth0 parent 10: classid 10:1 htb rate 1280kbps ceil 1280kbps
# 定义第二层叶类别
# rate 保证频宽,ceil 最大频宽,prio 优先权
tc class add dev eth0 parent 10:1 classid 10:10 htb rate 30kbps ceil 300kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:11 htb rate 30kbps ceil 150kbps prio 0
tc class add dev eth0 parent 10:1 classid 10:12 htb rate 10kbps ceil 90kbps prio 1
tc class add dev eth0 parent 10:1 classid 10:70 htb rate 10kbps ceil 90kbps prio 1
……
# 定义各叶类别的队列规则
# parent 类别编号,handle 叶类别队列规则编号
tc qdisc add dev eth0 parent 10:10 handle 100: pfifo
tc qdisc add dev eth0 parent 10:11 handle 101: pfifo
……
# 设定过滤器
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 10 fw classid 10:10
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 11 fw classid 10:11
tc filter add dev eth0 parent 10: protocol ip prio 100 handle 12 fw classid 10:12
……
-----------------------------------
iptables脚本
------------------------------------
iptables -t mangle -A PREROUTING -m layer7 --l7proto http -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -m layer7 --l7proto dns -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -m layer7 --l7proto pop3 -j MARK --set-mark 40
iptables -t mangle -A PREROUTING -m layer7 --l7proto smtp -j MARK --set-mark 40
#DHCP机,每2台分配带宽:下载10K-90K,优先权:1 上传2-4k,优先权:3
iptables -t mangle -A PREROUTING -s 172.18.196.61 -j MARK --set-mark 61
iptables -t mangle -A POSTROUTING -d 172.18.196.61 -j MARK --set-mark 61
iptables -t mangle -A PREROUTING -s 172.18.196.62 -j MARK --set-mark 61
iptables -t mangle -A POSTROUTING -d 172.18.196.62 -j MARK --set-mark 61
……
#办公电脑10台,每2台分配下载带宽:10K-90K,优先权:1 上传4-12k,优先权:2
iptables -t mangle -A PREROUTING -s 172.18.196.117 -j MARK --set-mark 12
iptables -t mangle -A POSTROUTING -d 172.18.196.117 -j MARK --set-mark 12
……
#其他有固定IP的电脑,每2台分配下载带宽:10K-90K,优先权:1 上传4-12k,优先权:2
iptables -t mangle -A PREROUTING -s 172.18.196.109 -j MARK --set-mark 22
iptables -t mangle -A POSTROUTING -d 172.18.196.109 -j MARK --set-mark 22
……
#服务器,分配下载带宽:30K-150K,优先权:0 上传8-40k,优先权:1
iptables -t mangle -A PREROUTING -s 172.18.196.100 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -d 172.18.196.100 -j MARK --set-mark 10
……
#特殊用途,分配带宽:30K-300K,优先权:0 上传8-40k,优先权:1
iptables -t mangle -A PREROUTING -s 172.18.196.11 -j MARK --set-mark 11
iptables -t mangle -A POSTROUTING -d 172.18.196.11 -j MARK --set-mark 11
#剩余电脑使用下载带宽:20K-150K,优先权:1 上传8-16k,优先权:2








TAG:
评分(