#!/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