htb dziala na interfejsach wirtualnych
configi wygladaja tak:
#!/bin/bash
stop()
{
tc qdisc del root dev imq0 2> /dev/null
tc qdisc del root dev imq1 2> /dev/null
tc qdisc del root dev imq2 2> /dev/null
tc qdisc del root dev imq3 2> /dev/null
iptables -t mangle -D POSTROUTING -o eth1 -j IMQ --todev 0
iptables -t mangle -D PREROUTING -i eth1 -j IMQ --todev 1
iptables -t mangle -D POSTROUTING -o ppp0 -j IMQ --todev 2
iptables -t mangle -D PREROUTING -i ppp0 -j IMQ --todev 3
/sbin/ifconfig imq0 down
/sbin/ifconfig imq1 down
/sbin/ifconfig imq2 down
/sbin/ifconfig imq3 down
}
start()
{
stop # dla bezpieczeństwa
#Podnosimy interfejsy imq
/sbin/modprobe imq numdevs=7 behaviour=ba
/sbin/ifconfig imq0 up #upload SYMETRYK
/sbin/ifconfig imq1 up #download SYMETRYK
/sbin/ifconfig imq2 up #upload DSL
/sbin/ifconfig imq3 up #download DSL
#upload SYMETRYK
iptables -t mangle -A POSTROUTING -o eth1 -j IMQ --todev 0
#download SYMETRYK
iptables -t mangle -A PREROUTING -i eth1 -j IMQ --todev 1
#upload DSL
iptables -t mangle -A POSTROUTING -o ppp0 -j IMQ --todev 2
#download DSL
iptables -t mangle -A PREROUTING -i ppp0 -j IMQ --todev 3
#imq0 --- upload SYMETRYK - 4096kbit
usuwamy kolejke glowna z imq0
tc qdisc del dev imq0 root
tc qdisc add dev imq0 root handle 1: htb default 2
tc class add dev imq0 parent 1: classid 1:1 htb rate 3950kbit ceil 3950kbit
tc class add dev imq0 parent 1:1 classid 1:2 htb rate 128kbit ceil 256kbit
tc qdisc add dev imq0 parent 1:2 handle 2:0 sfq perturb 10
#pasmo priorytetowe dla ICMP
tc class add dev imq0 parent 1:1 classid 1:3 htb rate 128kbit ceil 128kbit prio 1
tc qdisc add dev imq0 parent 1:3 handle 3:0 sfq perturb 2
tc filter add dev imq0 protocol ip prio 2 parent 1:0 u32 match ip protocol 1 0xff flowid 1:3
#imq1 --- download SYMETRYK - 4096kbit
tc qdisc del dev imq1 root
tc qdisc add dev imq1 root handle 2: htb default 2
tc class add dev imq1 parent 2: classid 2:1 htb rate 3950kbit ceil 3950kbit
tc class add dev imq1 parent 2:1 classid 2:2 htb rate 128kbit ceil 256kbit
#imq2 --- upload DSL - 512kbit
tc qdisc del dev imq2 root
tc qdisc add dev imq2 root handle 3: htb default 2
tc class add dev imq2 parent 3: classid 3:1 htb rate 490kbit ceil 490kbit
tc class add dev imq2 parent 3:1 classid 3:2 htb rate 16kbit ceil 64kbit
tc qdisc add dev imq2 parent 3:2 handle 2:0 sfq perturb 10
#imq3 --- download DSL - 6144kbit
tc qdisc del dev imq3 root
tc qdisc add dev imq3 root handle 4: htb default 2
tc class add dev imq3 parent 4: classid 4:1 htb rate 5900kbit ceil 5900kbit
tc class add dev imq3 parent 4:1 classid 4:2 htb rate 128kbit ceil 2048kbit
tc qdisc add dev imq3 parent 4:2 handle 2:0 sfq perturb 10
}
case "$1" in
'start')
echo -n "Tworze glowne kolejki HTB, podnosze imq..."
start
echo " wykonano."
;;
'stop')
echo -n "Kasuje glowne kolejki HTB, kasuje imq..."
stop
echo " wykonano."
;;
esac
#!/bin/sh
stop()
{
iptables -t mangle -D PREROUTING -i eth4 -p tcp --dport ! 0:554 -j SYMETRYK-OUT 2>/dev/null
iptables -t mangle -D PREROUTING -i eth4 -p udp --dport ! 0:554 -j SYMETRYK-OUT 2>/dev/null
iptables -t mangle -F SYMETRYK-OUT 2>/dev/null
iptables -t mangle -X SYMETRYK-OUT 2>/dev/null
iptables -t mangle -D PREROUTING -i eth4 -p tcp --dport 0:554 -j DSL-OUT 2>/dev/null
iptables -t mangle -D PREROUTING -i eth4 -p udp --dport 0:554 -j DSL-OUT 2>/dev/null
iptables -t mangle -F DSL-OUT 2>/dev/null
iptables -t mangle -X DSL-OUT 2>/dev/null
iptables -t mangle -D PREROUTING -i eth4 -j ONLY-SYMETRYK-OUT
iptables -t mangle -F ONLY-SYMETRYK-OUT 2>/dev/null
iptables -t mangle -X ONLY-SYMETRYK-OUT 2>/dev/null
}
start()
{
#stop # dla bezpieczeństwa
iptables -t mangle -N SYMETRYK-OUT
iptables -t mangle -I PREROUTING -i eth4 -p tcp --dport ! 0:554 -j SYMETRYK-OUT
iptables -t mangle -I PREROUTING -i eth4 -p udp --dport ! 0:554 -j SYMETRYK-OUT
iptables -t mangle -N DSL-OUT
iptables -t mangle -I PREROUTING -i eth4 -p tcp --dport 0:554 -j DSL-OUT
iptables -t mangle -I PREROUTING -i eth4 -p udp --dport 0:554 -j DSL-OUT
iptables -t mangle -N ONLY-SYMETRYK-OUT
iptables -t mangle -I PREROUTING -i eth4 -j ONLY-SYMETRYK-OUT
}
case "$1" in
'start')
echo -n "Tworze lancuchy "
start
echo " wykonano."
;;
'stop')
echo -n "Kasuje lancuchy "
stop
echo " wykonano."
;;
esac
i dla poszczegolnych hostow:
#!/bin/bash
#192.168.1.17 Basia
#768/256
komp="192.168.1.17"
upl_min_sym="128kbit"
upl_max_sym="256kbit"
dow_min_sym="256kbit"
dow_max_sym="530kbit"
upl_min_dsl="128kbit"
upl_max_dsl="300kbit"
dow_min_dsl="512kbit"
dow_max_dsl="3072kbit"
nrk="17"
mark_upl_syme="0x17a" #markowanie UPLOAD SYEMTRYK
mark_upl_dsl="0x17b" #markowanie UPLOAD DSL
porttcp="60000"
portudp="60000"
start()
{
#stop # dla bezpieczeństwa
#Jezeli dzielimy ruch na 2 lacza nalezy odplotkowac
ip rule add fwmark $mark_upl_dsl table DSL
#Jezeli ruch dzielimy na 2 lacza nalezy zaplotkowac linijke
# 3 a odplotkowac linijke 1 i 2
iptables -t mangle -A DSL-OUT -s $komp -j MARK --set-mark $mark_upl_dsl
iptables -t mangle -A SYMETRYK-OUT -s $komp -j MARK --set-mark $mark_upl_syme
#iptables -t mangle -A ONLY-SYMETRYK-OUT -s $komp -j MARK --set-mark $mark_upl_syme
#SYMETRYK-UPLOAD
tc class add dev imq0 parent 1:1 classid 1:$nrk htb rate $upl_min_sym ceil $upl_max_sym
tc filter add dev imq0 protocol ip preference 1 parent 1:0 handle $mark_upl_syme fw flowid 1:$nrk
tc qdisc add dev imq0 parent 1:$nrk handle $nrk:0 sfq perturb 10
#SYMETRYK-DOWNLOAD
tc class add dev imq1 parent 2:1 classid 2:$nrk htb rate $dow_min_sym ceil $dow_max_sym
tc filter add dev imq1 parent 2: protocol ip prio 1 u32 match ip dst $komp flowid 2:$nrk
tc qdisc add dev imq1 parent 2:$nrk handle $nrk:0 sfq perturb 10
#DSL-UPLOAD Jezeli dzielimy ruch na 2 lacza nalezy odploktowac ponizsze linijki
tc class add dev imq2 parent 3:1 classid 3:$nrk htb rate $upl_min_dsl ceil $upl_max_dsl
tc filter add dev imq2 protocol ip preference 1 parent 3:0 handle $mark_upl_dsl fw flowid 3:$nrk
tc qdisc add dev imq2 parent 3:$nrk handle $nrk:0 sfq perturb 10
#DSL-DOWNLOAD Jezeli dzielimy ruch na 2 lacza nalezy odploktowac ponizsze linijki
tc class add dev imq3 parent 4:1 classid 4:$nrk htb rate $dow_min_dsl ceil $dow_max_dsl
tc filter add dev imq3 parent 4: protocol ip prio 1 u32 match ip dst $komp flowid 4:$nrk
tc qdisc add dev imq3 parent 4:$nrk handle $nrk:0 sfq perturb 10
#Przekierowanie portu TCP jak caly ruch idzie przez SYMETRYK
#iptables -t filter -A FORWARD -d $komp -p tcp -m tcp --dport $porttcp -j ACCEPT
#iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport $porttcp -j DNAT --to-destination $komp
#Dodatkowy wpis gdy ruch idzie SYMETRYK, DSL
#iptables -t nat -A PREROUTING -i ppp0 -p tcp -m tcp --dport $porttcp -j DNAT --to-destination $komp
#Przekierowanie portu UDP jak caly ruch idzie przez SYMETRYK
#iptables -t filter -A FORWARD -d $komp -p udp -m udp --dport $portudp -j ACCEPT
#iptables -t nat -A PREROUTING -i eth1 -p udp -m udp --dport $portudp -j DNAT --to-destination $komp
#Dodatkowy wpis gdy ruch idzie SYMETRYK, DSL
#iptables -t nat -A PREROUTING -i ppp0 -p udp -m udp --dport $portudp -j DNAT --to-destination $komp
}
stop()
{
#Jezeli dzielimy ruch na 2 lacza SYMETRYK i DSL nalezy odplotkowac
ip rule del fwmark $mark_upl_dsl table DSL
}
case "$1" in
'start')
echo -n "Uruchamiamy skrypt dla hosta $komp... "
start
echo " wykonano."
;;
'stop')
echo -n "Zatrzymujemy skrypt dla hosta $komp... "
stop
echo " wykonano."
;;
esac