#!/bin/sh -x# Brug 'tc -d class ls dev eth1' til at tjekke# Brug 'tc -s class ls dev eth1' til at tjekke## Scriptet koerer paa en maskine med to netkort.# eht1 er WAN# eht0 er LAN## RESET#iptables -t mangle -F POSTROUTINGiptables -t mangle -Ftc qdisc del dev eth1 root# Udkommenter naeste linje og koer scriptet for at nulstille#exit## OPRET QDISC## Lav root og indstil default classid til 30tc qdisc add dev eth1 root handle 1: htb default 30# Lav en ny parent med max rate paa 410kbit (Internet)# Dette vil limit al udgaaende internet-traffik til 410kbit ud af mine tilgaengelige 512kbittc class add dev eth1 parent 1:1 classid 1:2 htb rate 410000bit# Lav et leaf med minimum 50kbit og hoejste priotet (0)# Dette leaf vil senere blive indstillet til at sende ACK pakker fra.# Det betyder jeg kan udnytte min download maksimalt, selvom# Min upload koere paa fuld tryk.# Desuden vil dette leaf blive brugt til at sende FTP-kontrol data.tc class add dev eth1 parent 1:2 classid 1:10 htb rate 50000bit ceil 410000bit prio 0# Lav et leaf med minimum 360kbit og et loft paa 410kbit (Lav priotet)# Dette leaf vil der blive sendt FTP-data fra.# Den har en lav priotet for at min websurfing kan komme foran FTP-dataen.tc class add dev eth1 parent 1:2 classid 1:20 htb rate 360000bit ceil 410000bit prio 2# Default leaf (Prio 1)# Det leaf der sender al udgaaende data som standard (se linje 25).# Dette leaf har lavere priotet end ACK-pakker, men hoejere priotet end FTP-data.# Dette vil sikre mig lav ping ved websurfing eller download af data.tc class add dev eth1 parent 1:2 classid 1:30 htb rate 360000bit ceil 410000bit prio 1# Brug Stochastic Fairness Queueing# Dette vil hjaelpe mod at en enkelt forbindelse aeder hele ens uploadtc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10tc qdisc add dev eth1 parent 1:30 handle 30: sfq perturb 10## FILTER## Placerer pakker i de rigtige leafs# Giv hoejeste priotet til ACK-pakker# Livrem og seler :-)iptables -t mangle -A POSTROUTING -o eth1 -p tcp --syn -m length --length 40:68 -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --syn -m length --length 40:68 -j RETURNiptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j RETURNiptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j RETURNiptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL RST -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL RST -j RETURNiptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,RST -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,RST -j RETURNiptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,FIN -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,FIN -j RETURN# Giv hoejeste priotet til FTP kontrol-data# Port 6622 : deler 50kbit med ACK-pakkeriptables -t mangle -A POSTROUTING -o eth1 -p tcp --sport 6622 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:10iptables -t mangle -A POSTROUTING -o eth1 -p tcp --sport 6622 -m state --state ESTABLISHED -j RETURN# Giv tredje hoejeste riotet til direkte FTP data# Port 11000-11100 : deler de 410kbit med al anden traffikiptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 11000:11100 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:20iptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 11000:11100 -m state --state ESTABLISHED -j RETURN#iptables -t mangle -A POSTROUTING -p tcp --dport 11000:11100 --syn -m state --state ESTABLISHED -j CLASSIFY --set-class 1:20# Giv tredje hoejeste priotet til passiv FTP data# Port 9900-10000 : deler de 410kbit med al anden traffikiptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 9900:10000 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:20iptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 9900:10000 -m state --state ESTABLISHED -j RETURN