#!/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 POSTROUTING iptables -t mangle -F tc qdisc del dev eth1 root # Udkommenter naeste linje og koer scriptet for at nulstille #exit # # OPRET QDISC # # Lav root og indstil default classid til 30 tc 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 512kbit tc 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 upload tc qdisc add dev eth1 parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev eth1 parent 1:20 handle 20: sfq perturb 10 tc 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:10 iptables -t mangle -A POSTROUTING -o eth1 -p tcp --syn -m length --length 40:68 -j RETURN iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j CLASSIFY --set-class 1:10 iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j RETURN iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j CLASSIFY --set-class 1:10 iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j RETURN iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL RST -j CLASSIFY --set-class 1:10 iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL RST -j RETURN iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,RST -j CLASSIFY --set-class 1:10 iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,RST -j RETURN iptables -t mangle -A POSTROUTING -o eth1 -p tcp --tcp-flags ALL ACK,FIN -j CLASSIFY --set-class 1:10 iptables -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-pakker iptables -t mangle -A POSTROUTING -o eth1 -p tcp --sport 6622 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:10 iptables -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 traffik iptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 11000:11100 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:20 iptables -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 traffik iptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 9900:10000 -m state --state ESTABLISHED -j CLASSIFY --set-class 1:20 iptables -t mangle -A POSTROUTING -o eth1 -p tcp -m multiport --sport 9900:10000 -m state --state ESTABLISHED -j RETURN