|
楼主 |
发表于 2007-2-11 13:43
|
显示全部楼层
注释,查看效果可用上边的一些命令
#!/bin/sh
# local command init script
TCA="tc class add dev"
TFA="tc filter add dev"
PRD="police rate 32kbit mtu 12k burst 8k drop"
IPTI="iptables -t mangle -A PREROUTING"
IPTO="iptables -t mangle -A POSTROUTING"
# Download Setting
tc qdisc del dev br0 root 2>/dev/null
tc qdisc add dev br0 root handle 2:0 htb default 100
$TCA br0 parent 2:0 classid 2:1 htb rate 100000kbit burst 1000k # 注释 参考dd自带QOS设定端口
$TCA br0 parent 2:1 classid 2:100 htb rate 100000kbit burst 1000k # 注释 参考dd自带QOS设定端口
$TCA br0 parent 2:1 classid 2:2 htb rate 512kbit ceil 1220kbit burst 8k # 注释 总下载最大带宽1220,保证带宽512
$TCA br0 parent 2:2 classid 2:10 htb rate 120kbit ceil 120kbit burst 8k prio 1 # 注释 小包特殊端口优化通道
$TCA br0 parent 2:2 classid 2:20 htb rate 320kbit ceil 960kbit burst 8k prio 3 # 注释 单独固定IP地址通道自己用ip192.168.0.2
$TCA br0 parent 2:2 classid 2:30 htb rate 128kbit ceil 880kbit burst 8k prio 5 # 注释 单独固定IP地址通道
$TCA br0 parent 2:2 classid 2:3 htb rate 120kbit ceil 640kbit burst 8k prio 2 # 注释 DHCP客户共享最大带宽为640k
$TCA br0 parent 2:3 classid 2:50 htb rate 32kbit ceil 512kbit burst 8k prio 6 # 注释 Dhcp单台电脑带宽限制。
tc qdisc add dev br0 parent 2:10 handle 10: sfq perturb 10
tc qdisc add dev br0 parent 2:20 handle 20: sfq perturb 10
tc qdisc add dev br0 parent 2:30 handle 30: sfq perturb 10
tc qdisc add dev br0 parent 2:50 handle 50: sfq perturb 10
tc qdisc add dev br0 ingress
# 注释 对IP 规类走不同通道 根据数据包内的标签
tc filter add dev br0 parent 2:0 protocol ip prio 20 handle 1 fw classid 2:10
$TFA br0 parent 2:0 protocol ip prio 20 handle 8 fw classid 2:20
$TFA br0 parent 2:0 protocol ip prio 20 handle 16 fw classid 2:30
$TFA br0 parent 2:0 protocol ip prio 20 handle 32 fw classid 2:50
$TFA br0 parent ffff protocol ip u32 match ip src 192.168.0.128/25 flowid :2 $PRD
# Upload Setting
tc qdisc del dev ppp0 root 2>/dev/null
tc qdisc add dev ppp0 root handle 1:0 htb default 100
$TCA ppp0 parent 1:0 classid 1:1 htb rate 100000kbit burst 1000k # 注释 参考dd自带QOS设定端口
$TCA ppp0 parent 1:1 classid 1:100 htb rate 100000kbit burst 1000k # 注释 参考dd自带QOS设定端口
$TCA ppp0 parent 1:1 classid 1:2 htb rate 256kbit ceil 400kbit burst 8k # 注释 总上载最大带宽1220,保证带宽512
$TCA ppp0 parent 1:2 classid 1:10 htb rate 80kbit ceil 80kbit burst 8k prio 1 # 注释 小包&特殊端口优化通道
$TCA ppp0 parent 1:2 classid 1:20 htb rate 80kbit ceil 320kbit burst 8k prio 3 # 注释 单独固定IP地址通道自己用ip192.168.0.2
$TCA ppp0 parent 1:2 classid 1:30 htb rate 32kbit ceil 240kbit burst 8k prio 5 # 注释 单独固定IP地址通道
$TCA ppp0 parent 1:2 classid 1:3 htb rate 80kbit ceil 240kbit burst 8k prio 2 # 注释 DHCP客户共享最大带宽为240k
$TCA ppp0 parent 1:3 classid 1:50 htb rate 32kbit ceil 160kbit burst 8k prio 6 # 注释 Dhcp单台电脑带宽限制。
tc qdisc add dev ppp0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ppp0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ppp0 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev ppp0 parent 1:50 handle 50: sfq perturb 10
tc qdisc add dev ppp0 ingress
# 注释 对IP 规类走不同通道 根据数据包内的标签
tc filter add dev ppp0 parent 1:0 protocol ip prio 20 handle 1 fw classid 1:10
$TFA ppp0 parent 1:0 protocol ip prio 20 handle 8 fw classid 1:20
$TFA ppp0 parent 1:0 protocol ip prio 20 handle 16 fw classid 1:30
$TFA ppp0 parent 1:0 protocol ip prio 20 handle 32 fw classid 1:50
$TFA ppp0 parent ffff protocol ip u32 match ip src 192.168.0.128/25 flowid :1 $PRD
# Firewall Setting
iptables -t mangle -I PREROUTING -i ppp0 -j TTL --ttl-inc 1
iptables -t mangle -I POSTROUTING -o br0 -j TTL --ttl-inc 1
# Mark Setting
iptables -F -t mangle
iptables -X -t mangle
iptables -Z -t mangle
# 注释 小包&特殊端口数据打标签 为 1
$IPTI -m tos --tos Minimize-Delay -j MARK --set-mark 1
$IPTI -m tos --tos Minimize-Delay -j RETURN
$IPTI -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 1
$IPTI -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
$IPTI -p icmp -j MARK --set-mark 1
$IPTI -p icmp -j RETURN
$IPTI -p tcp -m length --length :64 -j MARK --set-mark 1
$IPTI -p tcp -m length --length :64 -j RETURN
$IPTI -p tcp -m tcp --dport 1720 -j MARK --set-mark 1
$IPTI -p tcp -m tcp --dport 1720 -j RETURN
$IPTI -p udp -m udp --dport 1720 -j MARK --set-mark 1
$IPTI -p udp -m udp --dport 1720 -j RETURN
$IPTI -p udp -m udp --dport 7707 -j MARK --set-mark 1
$IPTI -p udp -m udp --dport 7707 -j RETURN
$IPTI -p tcp -m tcp --dport 7070 -j MARK --set-mark 1
$IPTI -p tcp -m tcp --dport 7070 -j RETURN
$IPTO -m tos --tos Minimize-Delay -j MARK --set-mark 1
$IPTO -m tos --tos Minimize-Delay -j RETURN
$IPTO -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 1
$IPTO -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
$IPTO -p icmp -j MARK --set-mark 1
$IPTO -p icmp -j RETURN
$IPTO -p tcp -m length --length :64 -j MARK --set-mark 1
$IPTO -p tcp -m length --length :64 -j RETURN
$IPTO -p tcp -m tcp --dport 1720 -j MARK --set-mark 1
$IPTO -p tcp -m tcp --dport 1720 -j RETURN
$IPTO -p udp -m udp --dport 1720 -j MARK --set-mark 1
$IPTO -p udp -m udp --dport 1720 -j RETURN
$IPTO -p udp -m udp --dport 7707 -j MARK --set-mark 1
$IPTO -p udp -m udp --dport 7707 -j RETURN
$IPTO -p tcp -m tcp --dport 7070 -j MARK --set-mark 1
$IPTO -p tcp -m tcp --dport 7070 -j RETURN
# 注释 对不同IP地址数据打标签
iptables -t mangle -A PREROUTING -s 192.168.0.1/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.2/32 -j MARK --set-mark 8
iptables -t mangle -A PREROUTING -s 192.168.0.3/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.4/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.5/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.6/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.7/32 -j MARK --set-mark 16
iptables -t mangle -A PREROUTING -s 192.168.0.8/29 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.16/28 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.32/27 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.64/27 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.96/30 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.102/31 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.104/29 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.112/28 -j MARK --set-mark 32
iptables -t mangle -A PREROUTING -s 192.168.0.128/25 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.1/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.2/32 -j MARK --set-mark 8
iptables -t mangle -A POSTROUTING -d 192.168.0.3/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.4/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.5/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.6/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.7/32 -j MARK --set-mark 16
iptables -t mangle -A POSTROUTING -d 192.168.0.8/29 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.16/28 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.32/27 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.64/27 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.96/30 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.102/31 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.104/29 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.112/28 -j MARK --set-mark 32
iptables -t mangle -A POSTROUTING -d 192.168.0.128/25 -j MARK --set-mark 32
# 注释 由于我的网关地址为192.168.0.100,所以不对这个地址做任何限制,
# 注释 也可加上p2p限制,和连接数的限制。
# 注释 一定要确认路由器用的接口是那些,可用ip route 查看。 |
|