Kod: Zaznacz cały
#!/bin/sh
# htb.sh -- prosty i łatwy skrypt do zarządzania pasmem
lan="eth0"
wan="eth1"
ip_zew="89.x.x.x"
sp_up="72kbit"
sp_down="660kbit"
max_up="440kbit"
max_down="3600kbit"
if [ "$1" == "stop" ]
then
echo "Zatrzymujemy shapera"
tc qdisc del root dev imq0 2>/dev/null
tc qdisc del root dev imq1 2>/dev/null
exit
fi
if [ "$1" == "start" ]
then
# To co bylo wczesniej -- do pieca! :)
echo "Uruchamiamy shapera"
echo "Podnoszwenie IMQ..."
modprobe imq
ip link set imq0 up
ip link set imq1 up
echo "Przekierowanie do IMQ"
iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 0 # Download
iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 1 # Upload
tc qdisc del root dev imq0 2>/dev/null
tc qdisc del root dev imq1 2>/dev/null
########## DOWNLOAD
tc qdisc add dev imq0 root handle 1:0 htb
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 90000kbit ceil 90000kbit
tc class add dev imq0 parent 1:1 classid 1:2 htb rate $max_down ceil $max_down #wan
tc class add dev imq0 parent 1:1 classid 1:3 htb rate 85000kbit ceil 85000kbit #lan
tc class add dev imq0 parent 1:2 classid 1:4 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:5 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:6 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:7 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:8 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:9 htb rate $sp_down ceil $max_down
tc class add dev imq0 parent 1:2 classid 1:10 htb rate 20kbit ceil $max_down
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.2 flowid 1:4
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.3 flowid 1:5
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.4 flowid 1:6
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.5 flowid 1:7
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.6 flowid 1:8
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst 192.168.1.7 flowid 1:9
tc filter add dev imq0 protocol ip preference 1 parent 1:0 u32 match ip \
dst $ip_zew flowid 1:10
tc qdisc add dev imq0 parent 1:3 handle 3:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:5 handle 5:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:6 handle 6:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:7 handle 7:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:8 handle 8:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:9 handle 9:0 sfq perturb 10
tc qdisc add dev imq0 parent 1:10 handle 10:0 sfq perturb 10
########## UPLOAD
tc qdisc add dev imq1 root handle 1:0 htb default 9
tc class add dev imq1 parent 1:0 classid 1:1 htb rate $max_up ceil $max_up #quantum 15
tc class add dev imq1 parent 1:1 classid 1:9 htb rate 2kbit ceil $max_up #quantum 15
tc class add dev imq1 parent 1:1 classid 1:3 htb rate $sp_up ceil $max_up #quantum 16
tc class add dev imq1 parent 1:1 classid 1:4 htb rate $sp_up ceil $max_up #quantum 16
tc class add dev imq1 parent 1:1 classid 1:5 htb rate $sp_up ceil $max_up #quantum 16
tc class add dev imq1 parent 1:1 classid 1:6 htb rate $sp_up ceil $max_up #quantum 16
tc class add dev imq1 parent 1:1 classid 1:7 htb rate $sp_up ceil $max_up
tc class add dev imq1 parent 1:1 classid 1:8 htb rate $sp_up ceil $max_up
tc qdisc add dev imq1 parent 1:3 handle 3:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:5 handle 5:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:6 handle 6:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:7 handle 7:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:8 handle 8:0 sfq perturb 10
tc qdisc add dev imq1 parent 1:9 handle 9:0 sfq perturb 10
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.2 flowid 1:3
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.3 flowid 1:4
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.4 flowid 1:5
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.5 flowid 1:6
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.6 flowid 1:7
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src 192.168.1.7 flowid 1:8
tc filter add dev imq1 protocol ip preference 1 parent 1:0 u32 match ip \
src $ip_zew flowid 1:9
exit
fi
if [ "$1" == "status" ]
then
echo $lan ": "
tc -s qdisc show dev $lan
echo $wan ": "
tc -s qdisc show dev $wan
echo "IMQ"
iptables -L -v -t mangle | grep IMQ
exit
fi
echo "$0 start|stop|status"
## KONIEC
Kod: Zaznacz cały
update-rc.d htb defaults 20