Kontrola ruchu w sieci (kolejkowanie HTB i IMQ)

Zadania kolejkowania :
- sprawiedliwy dostęp do internetu,
- ograniczanie sytuacji związanej ze ściąganiem plików przez niektórych użytkowników, obciążających łącze,
- zapewnienie gwarantowanej szybkości połączenia.

Teoria:
Kolejkowanie HTB (ograniczanie ruchu wychodzącego):
założenie:
mamy łącze internetowe 512 kbit/sek podpięte do interfejsu eth0 (WAN). Po stronie lokalnej router'a na eth1 (LAN) dokonamy podziału ruchu wychodzącego na 4 użytkowników przydzielając im odpowiednie prędkości.

#skasowanie i utworzenie kolejki głównej 1:0 i podpięcie jej do interfejsu eth1 (LAN)
tc qdisk del dev eth1 root handle 1:0 htb
tc qdisc add dev eth1 root handle 1:0 htb

#klasa główna - określenie prędkości całego łącza
tc class add dev eth1 parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit
#4 podklasy klasy 1:0 z podziałem całego łącza o określenie prędkości gwarantowanej i maksymalnej
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 256kbit ceil 512kbit
tc class add dev eth1 parent 1:1 classid 1:3 htb rate 128kbit ceil 256kbit
tc class add dev eth1 parent 1:1 classid 1:4 htb rate 64kbit ceil 256kbit
tc class add dev eth1 parent 1:1 classid 1:5 htb rate 64kbit ceil 128kbit

#powiązanie adresu IP i określonego wyżej pasma  
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.0.2 flowid 1:2
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.0.3 flowid 1:3
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.0.4 flowid 1:4
tc filter add dev eth1 protocol ip parent 1:0 u32 match ip dst 192.168.0.5 flowid 1:5

Powyższy zapis przedstawia np.
dla użytkownika np. o adresie IP 192.168.0.5 w łączu 1:0 jest ograniczenie w postaci zdefiniowanej klasy 1:5 ograniczającej prędkość gwarantowaną 64kbit/sek, w przypadku gdyby nie były wykorzystywane inne prędkości przydzielonego pasma to prędkość innych użytkowników przejdzie i będzie się maksymalnie zwiększać, ale nie więcej jak do 128 kbit/sek.

Kolejkowanie IMQ (ograniczanie ruchu przychodzącego)
Do ograniczenia  ruchu przychodzącego niezbędne jest wykorzystanie usługi IMQ. Aby podpiąć kolejkę IMQ do interfejsu eth1 należy wydać polecenie (lub zapisać do pliku):

iptables -t mangle -A PREROUTING -i eth1 -j IMQ 
ip link set imq0 up


pierwsza linia polecenia podpina IMQ pod eth1 na ruch wychodzący natomiast druga linkuje kolejkę pod imq0.

Polecenie ifconfig powinno nam wyświetlić nowy interfejs imq0.

Tak jak poprzednio w ruchu wychodzącym tak w ruchu przychodzącym definiujemy poszczególne sekcje z tym, że słowo eth1 zastępujemy interfejsem imq0, określającym ruch wychodzący. 

tc qdisc del root dev imq0 
tc qdisc add dev imq0 root handle 1:0 htb default 2 
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 512kbit ceil 512kbit 
tc class add dev imq0 parent 1:1 classid 1:2 htb rate 256kbit ceil 512kbit 
tc class add dev imq0 parent 1:1 classid 1:3 htb rate 256kbit ceil 512kbit 
tc filter add dev imq0 protocol ip parent 1:0 u32 match ip dst 192.168.0.2 flowid 1:2 
tc filter add dev imq0 protocol ip parent 1:0 u32 match ip dst 192.168.0.3 flowid 1:3

Powyższy przykład pokazuje równy przydział łącza na dwa komputery po 256 kbit/sek. W przypadku gdy jeden z nich nie będzie wykorzystywał pełnej swojej prędkości wówczas nadmiar zostanie przydzielony drugiemu, ale więcej jak 512 kbit/sek.

Brak komentarzy:

Prześlij komentarz