Strona 1 z 2

Ograniczenie pasma dla poszczególnych hostów

: 12 października 2010, 17:17
autor: Pablik
Witam.
Mam mini sieć na Debianie około 10 hostów.

Konfiguracja adresów IP:

Kod: Zaznacz cały

/etc/network/interfaces
auto lo iface lo inet loopback  

iface eth0 inet static 
address 83.19.28.220
netmask 255.255.255.248
gateway 83.19.28.217

iface eth1 inet static 
address 192.168.0.1
netmask 255.0.0.0
Jak ograniczyć przepustowość dla danego hosta np. do 100 kb/s. Interesuje mnie również jak zrobić podgląd ile transferu wykorzystują wszystkie hosty w sieci
(dla każdego hosta przypisane jego zużycie).

: 12 października 2010, 23:30
autor: Pacek
Jeżeli chcesz to sobie ładnie podzielić to zainteresuj się łatką IMQ oraz filtrem Layer7 (tzw. warstwa7). Wymaga to niestety nakładania łatki i rekompilacji jądra oraz nakładania łatki na iptables. Jednakże można wtedy ograniczyć transfer wychodzący jak i przychodzący na każdym z interfejsów.

: 13 października 2010, 08:27
autor: LordRuthwen
Czy warstwa7 wam działa?
Bo ja próbowałem to skonfigurować u siebie i efekt jest taki, że rozpoznaje jakieś 10% ruchu a reszta idzie jako ,,nieznany''.

: 13 października 2010, 09:22
autor: Pacek
Może wkleisz jakieś konfiguracje? Może się okazać, że filtr warstwy7 jakichś usług nie rozpoznaje poprawnie i stąd problemy.

: 13 października 2010, 18:11
autor: grzesiek
Da się to zrobić przy użyciu iptables z modułem quota. Problem polega tylko na tym, że regułę tą trzeba będzie resetować co jakiś czas np. przy użyciu crona. Nie musisz resetować całej zapory, wystarczy określone reguły, po numerze.

Kod: Zaznacz cały

iptables -A FORWARD -s 0/0 -d [IP] -m quota --quota 1073741824 -j ACCEPT
Polecenie

Kod: Zaznacz cały

iptables -L -n --line-number
pokaże, jaki numer ma reguła. Aby wstawić (przeładować) regułę np. 12-tą co miesiąc w cronie wstawiamy polecenie:

Kod: Zaznacz cały

iptables -I FORWARD 12 -s 0/0 -d [IP] -m quota --quota 1073741824 -j ACCEP
W ten sposób ją zmieniamy, nadpisujemy, w wyniku czego jej licznik jest kasowany.

Pisałem to wszystko teoretycznie, więc może coś przeoczyłem, ale ogólnie powinno działać.

Ehh pomyliło mi się - nie o to Ci chodziło. Ale to też da się zrobić bez dodatków :)
Np. chcemy uciąć pobieranie dla 192.168.4.50 na eth1 do 1mbit:

Kod: Zaznacz cały

tc qdisc add dev eth1 root handle 1: htb default 4
tc class add dev eth1 parent 1: classid 1:1 htb rate 1mbit
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.4.50/32 flowid 1:1
Aby to zatrzymać

Kod: Zaznacz cały

tc qdisc del dev eth1 root

: 13 października 2010, 19:58
autor: Pacek
HTB nie jest w stanie filtrować pakietów przychodzących. Więc Twoje rozwiązanie może nie działać. HTB może jedynie priorytetować pakiety wychodzące. Do tego właśnie służą interfejsy pośrednie IMQ. Jest też również coś takiego jak IFB (Intermediate Functional Block) i to jest chyba standardowo w jądrze (nie trzeba łatać jądra). Jednakże nie stosowałem tego. Można powiedzieć, że jest to oficjalny zamiennik IMQ.

: 13 października 2010, 20:12
autor: grzesiek
HTB nie jest w stanie filtrować pakietów przychodzących. Więc Twoje rozwiązanie może nie działać.
To jak może, czy nie może? :)
Działa, dział, możesz wybierać kierunek przepływu pakietów: dsc, src ;)

: 13 października 2010, 20:15
autor: Pacek
To jak może, czy nie może? Obrazek
Nie może
Przeczytaj pierwszy akapit:
http://luxik.cdi.cz/~devik/qos/htb/htbfaq.htm

: 13 października 2010, 20:19
autor: grzesiek
A próbowałeś?

: 13 października 2010, 21:53
autor: bzyk
Może.
Wskazówka: imq ifb
Ten drugi (ifb) nie wymaga rekompilacji jajca w Debianie. Działa od strzału. U mnie kiedyś parę komputerów z tego korzystało. Sprawowało się toto świetnie.