Skocz do zawartości

Podział Pasma W Domu


ergoline

Rekomendowane odpowiedzi

Witam!

 

Aktualnie nie ma mnie w domu, a już od jakiegoś czasu myślę, żeby doprowadzić serwer do porządku. Proszę o sprawdzenie, gdyż sam nie mam możliwości nie będąc w domu (a nie chcę próbować zdalnie).

 

"Sieć" wygląda tak:

- serwer to Slackware 12.0 (PII 400MHz, 256MB SDRAM, 4GB HDD)

- Neostrada 2048/256 (Sagem F@st 800)

- układ urządzeń: serwer -> switch -> router bezprzewodowy (działający jako "bezprzewodowy switch" -> chciałem mieć po Wi-Fi)

- komputer stacjonarny podłączony po kablu

- laptop łączy się bezprzewodowo z router-em

- działa serwer DHCP (komputer i laptop mają adresy na sztywno [w ustawieniach DHCP])

 

W każdym pokoju jest gniazdko RJ45, a dodatkowo w całym domu jest zasięg Wi-Fi.

 

Chciałbym uzyskać efekt:

- gwarantowane pasmo dla serwera (min. 12 kB/s upload-u, download nie gra roli)

- komputer i laptop mają gwarantowane 105 kB/s download-u i 8 kB/s upload-u

- urządzenia "dodatkowe" (czyli wszystkie poza serwerem, komputerem stacjonarnym i laptopem), które się podłączą mają dzielić się pasmem 37 kB/s download-u i 1 kB/s upload-u

 

Razem z google stworzyłem coś takiego:

#download
tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb default 5
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 2000kbit ceil 2000kbit


tc class add dev eth0 parent 1:1 classid 1:2 htb rate 20kbit ceil 2000kbit #serwer
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 840kbit ceil 2000kbit #komputer
tc class add dev eth0 parent 1:1 classid 1:4 htb rate 840kbit ceil 2000kbit #laptop
tc class add dev eth0 parent 1:1 classid 1:5 htb rate 300kbit ceil 2000kbit #reszta

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.1 flowid 1:2
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.2 flowid 1:3
tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.213 flowid 1:4

tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:5 handle 5:0 sfq perturb 15


#upload
tc qdisc del root dev ppp0

iptables -t mangle -D POSTROUTING -o ppp0 -j MYSHAPER-OUT 2>/dev/null
iptables -t mangle -F MYSHAPER-OUT 2>/dev/null
iptables -t mangle -X MYSHAPER-OUT 2>/dev/null


tc qdisc add dev ppp0 root handle 1:0 htb default 5
tc class add dev ppp0 parent 1:0 classid 1:1 htb rate 240kbit ceil 240kbit


tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 100kbit ceil 240kbit
tc class add dev ppp0 parent 1:1 classid 1:3 htb rate 65kbit ceil 140kbit
tc class add dev ppp0 parent 1:1 classid 1:4 htb rate 65kbit ceil 140kbit
tc class add dev ppp0 parent 1:1 classid 1:5 htb rate 10kbit ceil 64kbit

tc qdisc add dev ppp0 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev ppp0 parent 1:3 handle 3:0 sfq perturb 10
tc qdisc add dev ppp0 parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev ppp0 parent 1:5 handle 5:0 sfq perturb 15

tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 21 fw flowid 1:2
tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 22 fw flowid 1:3
tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 23 fw flowid 1:4
tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 20 fw flowid 1:5

iptables -t mangle -N MYSHAPER-OUT
iptables -t mangle -I POSTROUTING -o ppp0 -j MYSHAPER-OUT
iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.1 -j MARK --set-mark 21
iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.2 -j MARK --set-mark 22
iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.213 -j MARK --set-mark 23
iptables -t mangle -A MYSHAPER-OUT -m mark --mark 0 -j MARK --set-mark 20

 

Coś mi nie pasuje, ale nie wiem co (pewnie dlatego, że skończyłem to "tworzyć" o 03 w nocy).

 

Będę wdzięczny za pomoc i ewentualne poprawki..

Pozdrawiam...

 

P.S.

Dodam, że w sumie pierwszy raz mam styczność z czymś takim, więc proszę nie krzyczeć ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Witam!

 

Niestety po sprawdzeniu skrypt nie działa.

Podłączone do sieci 2 komputery + serwer. Uruchamiam skrypt. Ładuję na jednym z komputerów www.speedtest.net i robię test. Zaraz po rozpoczęciu testu jest ok - poziom 1Mb/s, jednak po sekundzie lub dwóch prędkość nagle skacze do 2Mb/s. Test upload-u wygląda podobnie - na początku OK, po chwili wskakuje na 0,16Mb/s. Podobnie przy ściąganiu - włączam na laptopie ściąganie pliku i automatycznie ściąga z prędkością 230kB/s - załadownie strony na drugim komputerze praktycznie niemożliwe.

Są trzymane górne limity (głównych kolejek - 2Mb/s i 0,16Mb/s dla komputerów klienckich) natomiast nie działają kolejki dla poszczególnych komputerów.

 

Po zatrzymaniu skryptu i uruchomieniu ponownie dostaję:

root@SERWER:/serwer# ./htb start
HTB start
root@SERWER:/serwer# ./htb stop
HTB stop
root@SERWER:/serwer# bash -x ./htb start
+ '[' 1 -eq 1 ']'
+ '[' start == stop ']'
+ '[' start == start ']'
+ echo 'HTB start'
HTB start
+ tc qdisk del root dev eth0
+ tc qdisk del root dev ppp0
+ iptables -t mangle -D POSTROUTING -o ppp0 -j MYSHAPER-OUT
+ iptables -t mangle -F MYSHAPER-OUT
+ iptables -t mangle -X MYSHAPER-OUT
+ tc qdisc add dev eth0 root handle 1:0 htb default 5
RTNETLINK answers: File exists
+ tc class add dev eth0 parent 1:0 classid 1:1 htb rate 2000kbit ceil 2000kbit
RTNETLINK answers: File exists
+ tc class add dev eth0 parent 1:1 classid 1:2 htb rate 20kbit ceil 2000kbit
RTNETLINK answers: File exists
+ tc class add dev eth0 parent 1:1 classid 1:3 htb rate 840kbit ceil 2000kbit
RTNETLINK answers: File exists
+ tc class add dev eth0 parent 1:1 classid 1:4 htb rate 840kbit ceil 2000kbit
RTNETLINK answers: File exists
+ tc class add dev eth0 parent 1:1 classid 1:5 htb rate 300kbit ceil 2000kbit
RTNETLINK answers: File exists
+ tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.1 flowid 1:2
+ tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.2 flowid 1:3
+ tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.213 flowid 1:4
+ tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev eth0 parent 1:4 handle 4:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev eth0 parent 1:5 handle 5:0 sfq perturb 15
RTNETLINK answers: File exists
+ tc qdisc add dev ppp0 root handle 1:0 htb default 5
RTNETLINK answers: File exists
+ tc class add dev ppp0 parent 1:0 classid 1:1 htb rate 240kbit ceil 240kbit
RTNETLINK answers: File exists
+ tc class add dev ppp0 parent 1:1 classid 1:2 htb rate 100kbit ceil 240kbit
RTNETLINK answers: File exists
+ tc class add dev ppp0 parent 1:1 classid 1:3 htb rate 65kbit ceil 140kbit
RTNETLINK answers: File exists
+ tc class add dev ppp0 parent 1:1 classid 1:4 htb rate 65kbit ceil 140kbit
RTNETLINK answers: File exists
+ tc class add dev ppp0 parent 1:1 classid 1:5 htb rate 10kbit ceil 64kbit
RTNETLINK answers: File exists
+ tc qdisc add dev ppp0 parent 1:2 handle 2:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev ppp0 parent 1:3 handle 3:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev ppp0 parent 1:4 handle 4:0 sfq perturb 10
RTNETLINK answers: File exists
+ tc qdisc add dev ppp0 parent 1:5 handle 5:0 sfq perturb 15
RTNETLINK answers: File exists
+ tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 21 fw flowid 1:2
RTNETLINK answers: File exists
We have an error talking to the kernel
+ tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 22 fw flowid 1:3
RTNETLINK answers: File exists
We have an error talking to the kernel
+ tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 23 fw flowid 1:4
RTNETLINK answers: File exists
We have an error talking to the kernel
+ tc filter add dev ppp0 protocol ip preference 1 parent 1:0 handle 20 fw flowid 1:5
RTNETLINK answers: File exists
We have an error talking to the kernel
+ iptables -t mangle -N MYSHAPER-OUT
+ iptables -t mangle -I POSTROUTING -o ppp0 -j MYSHAPER-OUT
+ iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.1 -j MARK --set-mark 21
+ iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.2 -j MARK --set-mark 22
+ iptables -t mangle -A MYSHAPER-OUT -p tcp -s 192.168.0.213 -j MARK --set-mark 23
+ iptables -t mangle -A MYSHAPER-OUT -m mark --mark 0 -j MARK --set-mark 20
+ exit
root@SERWER:/serwer# bash -x ./htb stop
+ '[' 1 -eq 1 ']'
+ '[' stop == stop ']'
+ echo 'HTB stop'
HTB stop
+ tc qdisk del root dev eth0
+ tc qdisk del root dev ppp0
+ iptables -t mangle -D POSTROUTING -o ppp0 -j MYSHAPER-OUT
+ iptables -t mangle -F MYSHAPER-OUT
+ iptables -t mangle -X MYSHAPER-OUT
+ exit

 

Jakieś pomysły?

 

Pozdrawiam...

Edytowane przez WalDo
zmiana znaczników code → codebox
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...