£ącze to 9MB/700KB, dzielone na dwie karty eth1 i eth2 (karty od lan - sieć wifi przez przezroczyste AP) eth0 karta WAN - nie robiłem jeszcze politykę wysyłania plików (upload).
Poniżej mój skrypt, chodzi o to żeby zrobić tak, że jak któraś usługa nie wykorzystuje pasma to wszystko idzie na port 80 i 8080. Czy trzeba jeszcze coś wpisywać w firewallu?
Kod: Zaznacz cały
#!/bin/bash
#skrypt do kolejkowania po usługach
#tworzę główne klasy dla eth1
tc qdisc del root dev eth1
tc qdisc add dev eth1 root handle 1:0 htb default 40
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 50mbit
#tworzenie podklasy z podziałem na zakres pasma dla poszczególnej podklasy do 1:30 trafia niezdefiniowany ruch
tc class add dev eth1 parent 1:1 classid 1:10 htb rate 2.3mbit ceil 2.9mbit prio 1
tc class add dev eth1 parent 1:1 classid 1:20 htb rate 1.4mbit ceil 1.6mbit prio 2
tc class add dev eth1 parent 1:1 classid 1:30 htb rate 0.6mbit ceil 0.8mbit prio 3
tc class add dev eth1 parent 1:1 classid 1:40 htb rate 0.2mbit ceil 0.4mbit prio 4
tc class add dev eth1 parent 1:1 classid 1:50 htb rate 50mbit ceil 50mbit prio 5
#podział pasma użytkowników na równy przy otwarciu przez nich kilku stron.
tc qdisc add dev eth1 parent 1:10 handle 10:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:20 handle 20:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:30 handle 30:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:40 handle 40:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:50 handle 50:0 sfq perturb 10
#prędkość dla poszczególnych portów
#lokalne połączenia
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip src 127.0.0.1 flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 127.0.0.1 flowid 1:50
#proxy
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 3127 0xffff flowid 1:50
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 3127 0xffff flowid 1:50
#www
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 80 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 8080 0xffff flowid 1:10
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 8080 0xffff flowid 1:10
#skype, gg
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 443 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 1550 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 1550 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 53 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 53 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 22 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 22 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip sport 23 0xffff flowid 1:20
tc filter add dev eth1 protocol ip parent 1:0 prio 2 u32 match ip dport 23 0xffff flowid 1:20
#tworzę główne klasy dla eth2
tc qdisc del root dev eth2
tc qdisc add dev eth2 root handle 1:0 htb default 40
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 50mbit
#tworzenie podklasy z podziałem na zakres pasama dla poszczególnej podklasy do 1:30 trafia niezdefiniowany ruch
tc class add dev eth2 parent 1:1 classid 1:10 htb rate 2.3mbit ceil 2.9mbit prio 1
tc class add dev eth2 parent 1:1 classid 1:20 htb rate 1.4mbit ceil 1.6mbit prio 2
tc class add dev eth2 parent 1:1 classid 1:30 htb rate 0.6mbit ceil 0.8mbit prio 3
tc class add dev eth2 parent 1:1 classid 1:40 htb rate 0.2mbit ceil 0.4mbit prio 4
tc class add dev eth2 parent 1:1 classid 1:50 htb rate 50mbit ceil 50mbit prio 5
#podział pasma użytkowników na rowny przy otwarciu przez nich kilku stron
tc qdisc add dev eth2 parent 1:10 handle 10:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:20 handle 20:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:30 handle 30:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:40 handle 40:0 sfq perturb 10
tc qdisc add dev eth2 parent 1:50 handle 50:0 sfq perturb 10
#prędkość dla poszczególnych portów
#lokalne połączenia
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dst 192.168.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip src 127.0.0.1 flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 1 u32 match ip dst 127.0.0.1 flowid 1:50
#proxy
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 3127 0xffff flowid 1:50
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 3127 0xffff flowid 1:50
#www
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 80 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 80 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 8080 0xffff flowid 1:10
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 8080 0xffff flowid 1:10
#skype,gg
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 443 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 443 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 1550 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 1550 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 53 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 53 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 22 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 22 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 23 0xffff flowid 1:20
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 23 0xffff flowid 1:20
#gry
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 5400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 5400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 28000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 28000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 23000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 23000 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 1102 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 1102 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 15400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 15400 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip sport 29300 0xffff flowid 1:30
tc filter add dev eth2 protocol ip parent 1:0 prio 2 u32 match ip dport 29300 0xffff flowid 1:30