|
原地址:https://www.d4e.org/showthread.php?t=127161
更新了下以前的脚本, 以下是范例,并不适合所有人,自己调整。
我的是DD-WRT v22-r2
以下适合 576kbits/2304kbits adsl。 带宽使用要设置为略小85%, 下面为480kbits/1900kbits.
解释下:
TCP封包长度不大于64字节的为队列1 (队列号码越小越高优先权)
SYN/ACK位只有SYN的TCP封包为队列1
TOS低延迟封包为队列1
icmp封包(例如ping)队列2
dns查询(53端口 udp)队列2
ssh连接(22端口 tcp)队列2
SSL连接(443端口 tcp)队列3
MSN连接(1863 tcp)队列3
mysql连接(3306 tcp)队列3
远程桌面(3389 tcp)队列3
wow(3724 tcp)队列3
其余队列4
这样就达到cfosspeed的效果。更详细的自己研究iptables和tc命令。
#!/bin/sh
# cat > my.sh
# nvram set rc_firewall="$(cat my.sh)"
# nvram commit
TC=/usr/sbin/tc
IPTABLES=/usr/sbin/iptables
$IPTABLES -t mangle -F
$TC qdisc del dev ppp0 root
$TC qdisc del dev ppp0 ingress
$TC qdisc add dev ppp0 root handle 1: htb default 14
$TC class add dev ppp0 parent 1: classid 1:1 htb rate 480kbit burst 4k prio 0
$TC class add dev ppp0 parent 1:1 classid 1:11 htb rate 16kbit ceil 480kbit burst 4k prio 1
$TC class add dev ppp0 parent 1:1 classid 1:12 htb rate 32kbit ceil 480kbit burst 4k prio 2
$TC class add dev ppp0 parent 1:1 classid 1:13 htb rate 64kbit ceil 480kbit burst 4k prio 3
$TC class add dev ppp0 parent 1:1 classid 1:14 htb rate 16kbit ceil 480kbit burst 4k prio 4
$TC qdisc add dev ppp0 parent 1:11 handle 11: pfifo
$TC qdisc add dev ppp0 parent 1:12 handle 12: sfq perturb 10
$TC qdisc add dev ppp0 parent 1:13 handle 13: sfq perturb 10
$TC qdisc add dev ppp0 parent 1:14 handle 14: sfq perturb 10
$TC filter add dev ppp0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
$TC filter add dev ppp0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
$TC filter add dev ppp0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
$TC filter add dev ppp0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:14
$TC qdisc add dev ppp0 handle ffff: ingress
$TC filter add dev ppp0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate 1900kbit burst 8k drop flowid :1
$IPTABLES -t mangle -A OUTPUT -p tcp -m length --length :64 -j MARK --set-mark 0x1
$IPTABLES -t mangle -A OUTPUT -p tcp -m length --length :64 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,ACK SYN -j MARK --set-mark 0x1
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,ACK SYN -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -m tos --tos Minimize-Delay -j MARK --set-mark 0x1
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -m tos --tos Minimize-Delay -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p icmp -j MARK --set-mark 0x2
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p icmp -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p udp -m udp --dport 53 -j MARK --set-mark 0x2
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p udp -m udp --dport 53 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 22 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 22 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 443 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 443 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 1863 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 1863 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3306 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3306 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3389 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3389 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3724 -j MARK --set-mark 0x3
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -p tcp -m tcp --dport 3724 -j RETURN
$IPTABLES -t mangle -A POSTROUTING -o ppp0 -m mark --mark 0 -j MARK --set-mark 0x4 |
|