假设路由器下有4个用户,分别拥有IP地址192.168.1.11 ~ 192.168.1.14。
1。打开QoS界面,选择“WAN”、“HTB”,填入带宽的80%左右。假设是2M ADSL,这里就填上行200,下行1600
2。在Netmask Priority中,添加IP地址(把不同IP设置为不同的优先级,以便后续修改):
192.168.1.11/32 (Premium)
192.168.1.12/32 (Express)
192.168.1.13/32 (Standard)
192.168.1.14/32 (Bulk)
3。点击Apply Settings,保存一下QoS页面的设置
4。打开Administration,Management,启用Cron,然后在后面的文本框中填入下面的代码:
* * * * * root tc class replace dev imq0 parent 1:2 classid 1:10 htb rate 400kbit ceil 1600kbit
* * * * * root tc class replace dev imq0 parent 1:2 classid 1:20 htb rate 400kbit ceil 1600kbit
* * * * * root tc class replace dev imq0 parent 1:2 classid 1:30 htb rate 400kbit ceil 1600kbit
* * * * * root tc class replace dev imq0 parent 1:2 classid 1:40 htb rate 400kbit ceil 1600kbit
* * * * * root tc class replace dev ppp0 parent 1:2 classid 1:10 htb rate 50kbit ceil 200kbit
* * * * * root tc class replace dev ppp0 parent 1:2 classid 1:20 htb rate 50kbit ceil 200kbit
* * * * * root tc class replace dev ppp0 parent 1:2 classid 1:30 htb rate 50kbit ceil 200kbit
* * * * * root tc class replace dev ppp0 parent 1:2 classid 1:40 htb rate 50kbit ceil 200kbit
5。点击Apply Settings,然后点击Reboot重启路由器,于是大功告成了,限速设置完毕
6。一点说明:
注意一下上面的代码中的红色数字,左边是保障的带宽,而右边是最大限制带宽。上4行定义的是下载流量,下4行定义的是上传流量。4行分别重新定义了Premium / Express / Standard / Bulk的具体设置。所以读者只要按需更改数值就行了。
路由器要控制上传流量很容易,但是控制下载流量,尤其是基于UDP的下载流量,本质上就是非常困难的,这也是QoS并不那么简单,也常常并不十分有效的原因。
简单的脚本命令来实现DD-WRT上的DoS保护
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/ip_forward
# 下面两个注释掉的参数会影响eMule等软件, 请自行调试后决定是否开启.
#echo 1024 > /proc/sys/net/ipv4/ipfrag_high_thresh
#echo 512 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 64000 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 48000 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 10 > /proc/sys/net/ipv4/ipfrag_time
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/eth1/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/eth1/log_martians
echo 10 > /proc/sys/net/ipv4/neigh/eth1/locktime
echo 0 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
#!/bin/sh
# Coyote local command init script
#脚本里面的kbps非服务提供商所说的kbps。这里的kbps=kb
# 定义进出设备(如果不是ADSL拨号用户可以把ppp0改为eth1)
ODEV="ppp0"
IDEV="eth0"
# 定义总的上下带宽
UP="64kbps"
DOWN="220kbps"
# 定义每个受限制的IP上下带宽
UPLOAD="10kbps"
DOWNLOAD="45kbps"
# 定义内网IP段
INET="192.168.5."
# 定义限制的IP范围
IPS="250"
IPE="254"
# 定义限制的IP范围以外的共享速度outdown为下行outup为上行
outdown="10kbps"
outup="10kbps"
##############################################################################################
#以下部分无须修改
# 清除 ppp0 eth0 所有队列规则
tc qdisc del dev $ODEV root 2>/dev/null
tc qdisc del dev $IDEV root 2>/dev/null
# 定义最顶层(根)队列规则,并指定 default 类别编号
tc qdisc add dev $ODEV root handle 10: htb default 2254
tc qdisc add dev $IDEV root handle 10: htb default 2254
# 定义第一层的 10:1 类别 (上行/下行 总频宽)
tc class add dev $ODEV parent 10: classid 10:1 htb rate $UP ceil $UP
tc class add dev $IDEV parent 10: classid 10:1 htb rate $DOWN ceil $DOWN
##############################################################################################
##############################################################################################
#定义特殊IP按实际添加和修改
#如使用经常BT的的用户或自己
#例如 我这里把自己用的192.168.5.250 设置为下行设置为2048k上行64k,还可以按实际增加或删除下面五行
NIP="10"
NIPDOWN="220kbps"
NIPUP="64kbps"
tc class add dev $ODEV parent 10:1 classid 10:2$NIP htb rate $NIPUP ceil $NIPUP prio 1
tc class add dev $IDEV parent 10:1 classid 10:2$NIP htb rate $NIPDOWN ceil $NIPDOWN prio 1
#经常BT 的192.168.5.250设置下行10k 上行10k 如果不需要可以删除下面五行
NIP="252"
NIPDOWN="10kbps"
NIPUP="10kbps"
tc class add dev $ODEV parent 10:1 classid 10:2$NIP htb rate $NIPUP ceil $NIPUP prio 1
tc class add dev $IDEV parent 10:1 classid 10:2$NIP htb rate $NIPDOWN ceil $NIPDOWN prio 1
##############################################################################################
##############################################################################################
#以下部分无须修改
# rate 保证频宽,ceil 最大频宽,prio 优先权
i=$IPS;
while [ $i -le $IPE ]
do
tc class add dev $ODEV parent 10:1 classid 10:2$i htb rate $UPLOAD ceil $UPLOAD prio 1
tc qdisc add dev $ODEV parent 10:2$i handle 100$i: pfifo
tc filter add dev $ODEV parent 10: protocol ip prio 100 handle 2$i fw classid 10:2$i
tc class add dev $IDEV parent 10:1 classid 10:2$i htb rate $DOWNLOAD ceil $DOWNLOAD prio 1
tc qdisc add dev $IDEV parent 10:2$i handle 100$i: pfifo
tc filter add dev $IDEV parent 10: protocol ip prio 100 handle 2$i fw classid 10:2$i
iptables -t mangle -A PREROUTING -s $INET$i -j MARK --set-mark 2$i
iptables -t mangle -A POSTROUTING -d $INET$i -j MARK --set-mark 2$i
i=`expr $i + 1`
done
#定义default 类别编的上行 (上面没定义带宽的IP上行速度)
tc class add dev $ODEV parent 10:1 classid 10:2254 htb rate $outup ceil $outup prio 1
tc qdisc add dev $ODEV parent 10:2254 handle 100254: pfifo
tc filter add dev $ODEV parent 10: protocol ip prio 100 handle 2254 fw classid 10:2254
#定义default 类别编的下行 (上面没定义带宽的IP下行速度)
tc class add dev $IDEV parent 10:1 classid 10:2254 htb rate $outdown ceil $outdown prio 1
tc qdisc add dev $IDEV parent 10:2254 handle 100254: pfifo
tc filter add dev $IDEV parent 10: protocol ip prio 100 handle 2254 fw classid 10:2254
##############################################################################################
用法我就不教了 你们懂得。




