#!/bin/sh
# standardowy początek, z odpowiednimi szybkościami
echo -n $"Kolejkowanie dla sieci LAN (eth1)"
tc qdisc del root dev eth1
tc qdisc add dev eth1 root handle 1:0 htb
# podział całego pasma najpierw jako ze mam lokal na 10mbit to obcinam
#troche zeby maxa nigdy nie mozna bylo zrobic
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 9900kbit ceil 9900kbit
tc class add dev eth1 parent 1:1 classid 1:3 htb rate 9000kbit ceil 9000kbit
## ustawienie ruchu dla wychodzacych lacze 512download
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 500kbit ceil 500kbit
#daje ip .3 i .2 pasmo po rowno tzn jesli jest puste to leca maxem jesli
#jest zapchane
# to leca max 250
tc class add dev eth1 parent 1:2 classid 1:4 htb rate 250kbit ceil 500kbit
tc class add dev eth1 parent 1:2 classid 1:5 htb rate 250kbit ceil 500kbit
#przycinam gnojowi ktorego nie lubie tylko 100kbit max ;)
tc class add dev eth1 parent 1:2 classid 1:6 htb rate 100kbit ceil 100kbit
# filtry ip - teraz to co napisalem u gory przedkladam odpowiednim
matchem tu akurat lece przez ip
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 10.0.0.2
flowid 1:4
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 10.0.0.3
flowid 1:5
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 10.0.0.4
flowid 1:6
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip src 10.0.0.1
flowid 1:3
# sprawiedliwy dostęp do kabla wielu jednoczesnych połączeń czyli sfq w
akcji zeby se sami nie zapychali
tc qdisc add dev eth1 parent 1:3 handle 3:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:5 handle 5:0 sfq perturb 10
#podzial calego pasma - uplad :www,ftp,pakiety wychodzace na porty ze
znacznikami #z iptables
tc class add dev eth0 parent 2:1 classid 2:23 htb rate 60kbit ceil
180kbit prio 1 quantum 4
tc class add dev eth0 parent 2:1 classid 2:24 htb rate 70kbit ceil
220kbit prio 3 quantum 4
tc class add dev eth0 parent 2:1 classid 2:25 htb rate 180kbit ceil
400kbit prio 4 quantum 4
#tera daje filtera jak zwykle
tc filter add dev eth0 protocol ip preference 1 parent 2:0 handle 0x14
fw flowid 2:23
tc filter add dev eth0 protocol ip preference 1 parent 2:0 handle 0x15
fw flowid 2:24
tc filter add dev eth0 protocol ip preference 1 parent 2:0 handle 0x16
fw flowid 2:25
#no i sfq po sprawiedliwosci na koniec
tc qdisc add dev eth0 parent 2:23 handle 23:0 sfq perturb 10
tc qdisc add dev eth0 parent 2:24 handle 24:0 sfq perturb 10
tc qdisc add dev eth0 parent 2:25 handle 25:0 sfq perturb 10
#Ok teraz co mam w iptables
#overhead pakiety maja najwyzszy priorytet odpowiada to linijce z prio 1
iptables -A PREROUTING -i eth1 -t mangle -p tcp --syn -m length --length
40:68 -j MARK --set-mark 20
iptables -A PREROUTING -i eth1 -t mangle -p tcp --tcp-flags ALL SYN,ACK
-m length --length 40:68 -j MARK --set-mark 20
iptables -A PREROUTING -i eth1 -t mangle -p tcp --tcp-flags ALL ACK -m
length --length 40:100 -j MARK --set-mark 20
iptables -A PREROUTING -i eth1 -t mangle -p tcp --tcp-flags ALL RST -j
MARK --set-mark 20
iptables -A PREROUTING -i eth1 -t mangle -p tcp --tcp-flags ALL ACK,RST
-j MARK --set-mark 20
iptables -A PREROUTING -i eth1 -t mangle -p tcp --tcp-flags ALL ACK,FIN
-j MARK --set-mark 20
#tera leci ssh odpowiada temu linijka z prio 3
iptables -A PREROUTING -i eth0 -t mangle -p tcp --dport ssh -m length
--length 40:100 -j MARK --set-mark 21
iptables -A POSTROUTING -o eth0 -t mangle -p tcp --sport ssh -m length
--length 40:100 -j MARK --set-mark 21
#znaczniki dla mail i www prio 4 z tc
iptables -A PREROUTING -i eth1 -t mangle -p tcp -m multiport --dport
https,8080,ftp,8064 -j MARK --set-mark 22
iptables -A POSTROUTING -o eth0 -t mangle -p tcp -m multiport --sport
110,25,995 -j MARK --set-mark 22
iptables -A POSTROUTING -o eth0 -t mangle -p tcp -m multiport --sport
80,21 -j MARK --set-mark 22
iptables -A PREROUTING -i eth1 -t mangle -p tcp -m multiport --dport
80,25,110,995 -j MARK --set-mark 22