# [SOLVED]Podział pasma przy użyciu algorytmu HTB.

## lukpio3

Witam.

Napisałem już konfigurację HTB. Wygląda to następująco: Sieć LAN - serwer + 10 klientów. Oczywiście nie wszyscy są podłączeni. Na stałem z sieci będzie korzystało 5 klientów, pozostałe 5 adresów dałem na zapas bo planuje że będą podłączać się do sieci również inne hosty ale to sporadycznie. HTB ma przydzielać pasmo w ten sposób że gdy w sieci jest tylko jeden host dostaje od 100% pasma, gdy jest dwóch pasmo jest dzielone po połowie dla każdego hosta, gdy trzech pasmo na 3 itd. Poniżej zamieszczam swoją konfigurację. Pierwszy raz mam styczność z HTB zatem proszę o wyrozumiałość. Czy jest na forum osoba która mogła by zerknąć w kod i powiedzieć czy dobrze to zrobiłem? Bardzo proszę. Dodam że serwer nie ma wyjścia na internet. Oto kod:

```

CALE=8700kbit

ETH_CEIL=8000kbit

USER=16kbit

USER_CEIL=100kbit 

IP_SERWER=192.168.0.2

IP_USER1=192.168. 0.10

IP_USER2=192.168. 0.11

IP_USER3=192.168. 0.12

IP_USER4=192.168. 0.13

IP_USER5=192.168. 0.14

IP_USER6=192.168. 0.15

IP_USER7=192.168. 0.16

IP_USER8=192.168. 0.17

IP_USER9=192.168. 0.18

IP_USER10=192.168. 0.19

tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb 

tc class add dev eth0 parent 1:0 classid 1:1 htb rate $CALE ceil $CALE

tc class add dev eth0 parent 1:1 classid 1:2 htb rate $ETH_CEIL ceil $ETH_CEIL

tc class add dev eth0 parent 1:2 classid 1:3 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:4 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:5 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:6 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:7 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:8 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:9 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:10 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:11 htb rate $USER ceil $USER_CEIL

tc class add dev eth0 parent 1:2 classid 1:12 htb rate $USER ceil $USER_CEIL

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:3

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:4

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:5

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:6

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:7

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:8

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:9

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:10

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:11

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:12

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER1 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER2 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER3 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER4 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER5 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER6 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER7 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER8 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER9 flowid 1:4

tc filter add dev eth0 protocol ip preference 2 parent 1:0 u32 match ip dstS $IP_USER10 flowid 1:4

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 10

tc qdisc add dev eth0 parent 1:6 handle 6:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:7 handle 7:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:8 handle 8:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:9 handle 9:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:10 handle 10:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:11 handle 11:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:12 handle 12:0 sfq perturb 10

tc qdisc add dev eth0 parent 1:13 handle 13:0 sfq perturb 10

```

Te wielkości przepustowości są narazie takie czysto teoretyczne bo muszę jeszcze porobić dokładne pomiary łącza. Bardzo proszę o ewentualne uwagi odnośnie kodu. Zależy mi na czasie ponieważ robię to jako projekt który muszę na wtorek skończyć.

Pozdrawiam.Last edited by lukpio3 on Wed Aug 10, 2011 10:46 pm; edited 1 time in total

----------

## Belliash

To nie ma prawa zadzialac

1. Nie ustawiasz predkosci dla LANu

2. Nie wprowadzasz priorytetow

3. Ostatecznie wcale nie ograniczasz przeplywnosc. Tworzysz tylko jakies klasy ktorych wcale nie wykorzystujesz.

Tyle co zauwazylem na szybko

----------

## lukpio3

A mogę prosić o jakieś konkretne uwagi? Jak wspomniałem z HTB mam styczność poraz pierwszy, pisałem to przy pomocy różnych how to i zdaje sobie sprawę z tego że to nie jest napisane idealnie dobrze ale może da radę jakoś to poprawić dlatego chciałem prosić Was o pomoc.

----------

## Belliash

 *lukpio3 wrote:*   

> A mogę prosić o jakieś konkretne uwagi? Jak wspomniałem z HTB mam styczność poraz pierwszy, pisałem to przy pomocy różnych how to i zdaje sobie sprawę z tego że to nie jest napisane idealnie dobrze ale może da radę jakoś to poprawić dlatego chciałem prosić Was o pomoc.

 

Napisalem wyzej

----------

## lukpio3

A czy parametr CALE przypadkiem nie wyznacza przepustowości całej sieci lokalnej? Według How To przy pomocy którego to pisałem było napisane że CALE właśnie określa przepustowość całej sieci LAN.

----------

## Belliash

 *lukpio3 wrote:*   

> A czy parametr CALE przypadkiem nie wyznacza przepustowości całej sieci lokalnej? Według How To przy pomocy którego to pisałem było napisane że CALE właśnie określa przepustowość całej sieci LAN.

 

Rozumiem ze masz LAN 8.7mbps?

Ja myslalem ze sa sieciowki 10/100/1000mbps...

Ograniczasz dostepne pasmo na interfejsie WAN, a nie LAN. Jezeli masz internet 8 mega, to CALE=8192kbit

----------

## lukpio3

Kolego, te wartości są czysto przykładowe ale mniejsza o to. Skrypt pisałem wzorując się na pewnym gotowcu a w zasadzie na artykule z magazynu Linux+. To jest stary artykuł z 2004. Prenumerowałem kiedyś to czasopismo, teraz prenumeruje Linux Magazine. Ale nie o to mi chodzi. Poczytałem trochę o HTB i napisałem nowy skrypt. Mam nadzieję że tym razem będzie lepiej. Bardzo bardzo proszę o ocenę. Komentarze porobiłem w skrpycie. Założenie jest następujące. Serwer na Linuxie do niego przy pomocy switcha podłączone hosty. 5 hostów na stałe natomiast 5 jest dodatkowo (dla gości). Dlatego w HTB dzieliłem na 10 hostów. Serwer bez dostępu do internetu. Wyłącznie sieć lokalna. Przyjąłem wielkości następujące: przepustowość sieci 100mbit, do podziału wziąłem 90% czyli 90mbit, 10 hostów dla każdego po 9mbit. Bardzo proszę o komentarze czy to co zrobiłem ma szanse zadziałać czy dalej robię błędy.

```

# kasuję poprzednie ustawienia kolejek, filtrów itd.

tc qdisc del root dev eth0

# zakładam główną kolejkę na interfejsie eth0.

tc qdisc add dev eth0 root handle 1:0 htb

# zakładam główną klasę z maksymalną możliwą przepustowością na głównej kolejce.

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit ceil 90mbit

# tworzę właściwe podklasy (z odpowiednią przepustowością) dla poszczególnych komputerów

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:6 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:7 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:8 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:9 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 9mbit ceil 90mbit

# kieruję pakiety do odpowiednich kolejek

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.10 flowid 1:2

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.11 flowid 1:3

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.12 flowid 1:4

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.13 flowid 1:5

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.14 flowid 1:6

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.15 flowid 1:7

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.16 flowid 1:8

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.17 flowid 1:9

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.18 flowid 1:10

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.19 flowid 1:11

```

----------

## Belliash

W dalszym ciagu to nie ma prawa dzialac. Powielasz ciagle te same bledy. Tworzysz tylko klasy, nawet bez priorytetow, ale ich nigdzie nie wykorzystujesz.

Podpowiem Ci:

1) Jak chcesz aby to dzialalo, to powinienes wykorzystac IPTABLES

2) Powinienes zrobic to 2x: raz dla download i raz dla upload

----------

## lukpio3

Ale czy te priorytety muszą koniecznie być? Czytałem w jednym z poradników że nie ma potrzeby ich stosowania. Stosujemy je tylko wtedy gdy chcemy jakiegoś użytkownika wyróżnić przydzielając mu całe wolne pasmo a jeśli priorytety nie zostaną zastosowane to wówczas wolne pasmo rozdzielane jest pomiędzy wszystkich użytkowników korzystających z sieci po równo czyli taki efekt o jaki mi chodzi. 

Masz może jakiś przykład jak to powinno wyglądać i co mam zrobić w IPTABLES. Zupełnie nie wiem o co chodzi. Wszystkie how to jakie czytam mają reguły podobne do moich i nie piszą tam nic o iptables.

----------

## Belliash

Wtedy priorytety powinny byc takie same dla wszystkich. Nie chce mi sie pisac niczego wyszukanego, wiec pokaze Ci poprostu co stosuje do podzialu lacza w domu (4mbps down, 512kbps up):

```
tc qdisc del dev br0 root

tc qdisc add dev br0 root handle 1:0 htb

tc class add dev br0 parent 1:0 classid 1:1 htb rate 1024Mbit

tc class add dev br0 parent 1:1 classid 1:2 htb rate 1000Mbit

tc class add dev br0 parent 1:1 classid 1:3 htb rate 4040kbit

tc class add dev br0 parent 1:3 classid 1:10 htb rate 1000kbit ceil 3990kbit prio 1

tc class add dev br0 parent 1:3 classid 1:11 htb rate 1000kbit ceil 3990kbit prio 1

tc class add dev br0 parent 1:3 classid 1:12 htb rate 500kbit ceil 1090kbit prio 4

tc class add dev br0 parent 1:3 classid 1:13 htb rate 250kbit ceil 1090kbit prio 0

tc class add dev br0 parent 1:3 classid 1:14 htb rate 250kbit ceil 1990kbit prio 4

tc qdisc add dev br0 parent 1:2 handle 2: sfq perturb 10                                                                                                                                                           

tc qdisc add dev br0 parent 1:10 handle 10: sfq perturb 10                                                                                                                                                         

tc qdisc add dev br0 parent 1:11 handle 11: sfq perturb 10                                                                                                                                                         

tc qdisc add dev br0 parent 1:12 handle 12: sfq perturb 10                                                                                                                                                         

tc qdisc add dev br0 parent 1:13 handle 13: sfq perturb 10                                                                                                                                                         

tc qdisc add dev br0 parent 1:14 handle 14: sfq perturb 10

tc qdisc add dev br0 parent 1:15 handle 15: sfq perturb 10

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 2 fw flowid 1:2

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 12 fw flowid 1:12

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 13 fw flowid 1:13

tc filter add dev br0 parent 1:0 prio 2 protocol ip handle 14 fw flowid 1:14

iptables -t mangle -A POSTROUTING -s 172.16.0.0/16 -d 172.16.0.0/16 -j MARK --set-mark 2

iptables -t mangle -A POSTROUTING ! -s 172.16.0.0/16 -d 172.16.0.2 -j MARK --set-mark 10

iptables -t mangle -A POSTROUTING ! -s 172.16.0.0/16 -d 172.16.0.3 -j MARK --set-mark 11

iptables -t mangle -A POSTROUTING ! -s 172.16.0.0/16 -d 172.16.0.4 -j MARK --set-mark 12

iptables -t mangle -A POSTROUTING ! -s 172.16.0.0/16 -d 172.16.0.5 -j MARK --set-mark 13

iptables -t mangle -A POSTROUTING ! -s 172.16.0.0/16 -d 172.16.0.6 -j MARK --set-mark 14

tc qdisc del dev ppp0 root

tc qdisc add dev ppp0 root handle 2:0 htb

tc class add dev ppp0 parent 2:0 classid 2:1 htb rate 450kbit

tc class add dev ppp0 parent 2:1 classid 2:10 htb rate 100kbit ceil 420kbit prio 1

tc class add dev ppp0 parent 2:1 classid 2:11 htb rate 100kbit ceil 420kbit prio 1

tc class add dev ppp0 parent 2:1 classid 2:12 htb rate 50kbit ceil 100kbit prio 4

tc class add dev ppp0 parent 2:1 classid 2:13 htb rate 50kbit ceil 150kbit prio 0

tc class add dev ppp0 parent 2:1 classid 2:14 htb rate 50kbit ceil 100kbit prio 4

tc qdisc add dev ppp0 parent 2:10 handle 10: sfq perturb 10

tc qdisc add dev ppp0 parent 2:11 handle 11: sfq perturb 10

tc qdisc add dev ppp0 parent 2:12 handle 12: sfq perturb 10

tc qdisc add dev ppp0 parent 2:13 handle 13: sfq perturb 10

tc qdisc add dev ppp0 parent 2:14 handle 14: sfq perturb 10

tc qdisc add dev ppp0 parent 2:15 handle 15: sfq perturb 10

tc filter add dev ppp0 parent 2:0 prio 2 protocol ip handle 10 fw flowid 2:10

tc filter add dev ppp0 parent 2:0 prio 2 protocol ip handle 11 fw flowid 2:11

tc filter add dev ppp0 parent 2:0 prio 4 protocol ip handle 12 fw flowid 2:12

tc filter add dev ppp0 parent 2:0 prio 0 protocol ip handle 13 fw flowid 2:13

tc filter add dev ppp0 parent 2:0 prio 2 protocol ip handle 14 fw flowid 2:14

tc filter add dev ppp0 parent 2:0 prio 2 protocol ip handle 15 fw flowid 2:15

iptables -t mangle -A PREROUTING ! -d 172.16.0.0/16 -s 172.16.0.2 -j MARK --set-mark 10

iptables -t mangle -A PREROUTING ! -d 172.16.0.0/16 -s 172.16.0.3 -j MARK --set-mark 11

iptables -t mangle -A PREROUTING ! -d 172.16.0.0/16 -s 172.16.0.4 -j MARK --set-mark 12

iptables -t mangle -A PREROUTING ! -d 172.16.0.0/16 -s 172.16.0.5 -j MARK --set-mark 13

iptables -t mangle -A PREROUTING ! -d 172.16.0.0/16 -s 172.16.0.6 -j MARK --set-mark 14
```

----------

## lukpio3

Przepraszam że muszę zawracać Ci głowę ale po prostu nie wiem skąd mogę czerpać informacje na temat. Swoje skrypty pisałem na podstawie artykułu z magazynu Linux+ z czerwca 2004r. Korzystałem również z tego How To: http://stary.dug.net.pl/texty/htb.pdf i niestety okazuje się że jednak i tam są błędy. Nie ma się na czym uczyć. A znowu w necie te przykłady które są to są tak mega rozbudowane że zupełnie się w nich gubię.

A czy ten Twój przykład który podałeś służy do podziału internetu tzn komputer z linuxem służy jako router i rozdziela internet na poszczególne komputery?

Ps. na ile komputerów dzielisz to łącze? Wyliczyłem 6 hostów. Dobrze widzę?  :Smile: Last edited by lukpio3 on Mon Aug 08, 2011 9:37 pm; edited 1 time in total

----------

## Belliash

 *lukpio3 wrote:*   

> Przepraszam że muszę zawracać Ci głowę ale po prostu nie wiem skąd mogę czerpać informacje na temat. Swoje skrypty pisałem na podstawie artykułu z magazynu Linux+ z czerwca 2004r. Korzystałem również z tego How To: http://stary.dug.net.pl/texty/htb.pdf i niestety okazuje się że jednak i tam są błędy. Nie ma się na czym uczyć. A znowu w necie te przykłady które są to są tak mega rozbudowane że zupełnie się w nich gubię.
> 
> A czy ten Twój przykład który podałeś służy do podziału internetu tzn komputer z linuxem służy jako router i rozdziela internet na poszczególne komputery?

 

Ten skrypt nie dziala wlasnie na komputerze, tylko na ruterze - oczywiscie pod kontrola Linuksa.

Ale na studiach robilem tez projekt na BSI (Bezpieczenstwo Systemow Informatycznych) w ramach ktorego mialem odpowiednio skonfigurowac iptables i takze wykorzystywalem tam HTB do ograniczania pasma.

Jak widzisz tam masz adresy zrodlowe i docelowe, bo ograniczam tylko internet. Gdybym nie mial negacji, to taki transfer obowiazywal by takze w obrebie LANu.

Do tego mozna jeszcz skorzystac z IMQ dla uploadu, ale to moze sprawiac problemy wiec wykorzstalem wszedzie HTB, ale bylem zmuszony skorzystac z 2 roznych interfejsow - br0 i ppp0

Ponadto wykorzystanie iptables daje jeszcze 1 przewage: mozesz ustawiac klasy nie tylko per IP ale takze per port. Wiec warto sotosowac iptables. A te pozostale poradniki to o kant stolu rozbic, bo ucza tylko kiepskich praktyk.

Poszukaj sobie generatora robsona (wymaga windowsa) i zerknij tez na to (choc widze stosuje nieco inna skladnie):

* http://lartc.org/howto/lartc.cookbook.fullnat.intro.html

* http://robert.nowotniak.com/en/security/htb/

----------

## lukpio3

Czyli z Twojego przykładu który podałeś raczej nic nie uda mi się przerobić?

----------

## Belliash

 *lukpio3 wrote:*   

> Czyli z Twojego przykładu który podałeś raczej nic nie uda mi się przerobić?

 

Dlaczego nie?

Nie ma nawet duzo roboty  :Wink: 

----------

## lukpio3

A czy teraz jestem już bliżej poprawnie napisanego skryptu?

```

# kasuję poprzednie ustawienia kolejek, filtrów itd.

tc qdisc del root dev eth0

# zakładam główną kolejkę na interfejsie eth0.

tc qdisc add dev eth0 root handle 1:0 htb

# zakładam główną klasę z maksymalną możliwą przepustowością na głównej kolejce.

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit ceil 90mbit

# tworzę właściwe podklasy (z odpowiednią przepustowością) dla poszczególnych komputerów

tc class add dev eth0 parent 1:1 prio 2 classid 1:2 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:3 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:4 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:5 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:6 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:7 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:8 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:9 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:10 htb rate 9mbit ceil 90mbit

tc class add dev eth0 parent 1:1 prio 2 classid 1:11 htb rate 9mbit ceil 90mbit

# kieruję pakiety do odpowiednich kolejek

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.10 flowid 1:2

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.11 flowid 1:3

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.12 flowid 1:4

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.13 flowid 1:5

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.14 flowid 1:6

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.15 flowid 1:7

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.16 flowid 1:8

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.17 flowid 1:9

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.18 flowid 1:10

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip src 192.168.0.2 match ip dst 192.168.0.19 flowid 1:11

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.10 -j MARK --set-mark 2

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.11 -j MARK --set-mark 3

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.12 -j MARK --set-mark 4

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.13 -j MARK --set-mark 5

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.14 -j MARK --set-mark 6 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.15 -j MARK --set-mark 7

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.16 -j MARK --set-mark 8 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.17 -j MARK --set-mark 9 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.18 -j MARK --set-mark 10 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.19 -j MARK --set-mark 11 

```

Wiem że jest źle ale lepiej niż poprzednio czy jeszcze gorzej?  :Smile: 

----------

## Belliash

```

# zakładam główną klasę z maksymalną możliwą przepustowością na głównej kolejce.

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit ceil 90mbit 
```

Po co ceil? Masz mu w tym miejscu "powiedziec" tylko jaka przepustowoscia dysponujesz. Nic ponad to. Widzisz cos takiego u mnie?

Od razu widac golym okiem, ze w dalszym ciagu bazujesz na tym samym.

Na dobra sprawe mozna sie tu zamknac w kilku linijkach skoro masz takie same predkosci i priorytety (<10). Na szybkiego:

```
tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit prio 2

tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 2 fw flowid 1:2

iptables -t mangle -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j MARK --set-mark 2
```

Trzeba by jednak potestowac jeszcze. Teoria teoria a w praktyce rozne cuda juz widzialem. Wez tez pod uwage pozna juz pore  :Wink: 

Musisz tylko pamietac ze jak wepniesz wiecej kompow to bedzie problem. Dlatego najlepiej jest robic pojedyncze regoly, a na koniec mozna dorzucic jakas zbiorowa zeby ograniczylo przepustowosc tym ktore nie sa na "liscie" (ustawic im rate i ceil na jakas mala wartosc). Powinno to skutecznie zabezpieczyc przed pania Krysia ktora sobie samowolnie podlacza laptopa i wysyca cale dostepne lacze.

----------

## lukpio3

No nic, póki co dziękuje ślicznie za pomoc. Będę męczył to jutro od rana bo faktycznie pora już późna i nie myśle  :Smile: . Dobrej nocy. Pozdrawiam.

----------

## Belliash

Najlepiej jak zaczniesz to poczatku, najlepiej od zapoznania sie ze stronkami do ktorych linki Ci dalem. Dopiero potem zacznij pisac ten skrypt jeszcze raz od nowa.

----------

## lukpio3

Rozbudowałem to co napisałeś nieco wyżej. Rano to przetestuję tc-viewer-em  zobaczę czy działa. Mam nadzieję że będzie ok  :Smile: 

```

tc qdisc del root dev eth0 

tc qdisc add dev eth0 root handle 1:0 htb 

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit 

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:6 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:7 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:8 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:9 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 9mbit ceil 90mbit prio 2

tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10 

tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10

tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10 

tc qdisc add dev eth0 parent 1:5 handle 5: sfq perturb 10

tc qdisc add dev eth0 parent 1:6 handle 6: sfq perturb 10 

tc qdisc add dev eth0 parent 1:7 handle 7: sfq perturb 10

tc qdisc add dev eth0 parent 1:8 handle 8: sfq perturb 10 

tc qdisc add dev eth0 parent 1:9 handle 9: sfq perturb 10

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 

tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 2 fw flowid 1:2 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 3 fw flowid 1:3

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 4 fw flowid 1:4 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 5 fw flowid 1:5

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 6 fw flowid 1:6 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 7 fw flowid 1:7

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 8 fw flowid 1:8 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 9 fw flowid 1:9

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:210 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.10 -j MARK --set-mark 2 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.11 -j MARK --set-mark 3 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.12 -j MARK --set-mark 4 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.13 -j MARK --set-mark 5 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.14 -j MARK --set-mark 6 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.15 -j MARK --set-mark 7 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.16 -j MARK --set-mark 8 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.17 -j MARK --set-mark 9 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.18 -j MARK --set-mark 10 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.19 -j MARK --set-mark 11

```

----------

## Belliash

To tez nie bedzie dzialac.

```
tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:210 
```

Co to jest 1:210?

```
iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.10 -j MARK --set-mark 2 
```

Czyli oznaczone ma byc wszystko co NIE przychodzi z 192.168.0.0/24 a skierowane jest do 192.168.0.10. Raczej zaden pakiet w ta regolke nie trafi.

----------

## lukpio3

Masz rację, tam faktycznie była jedna literówka. Już ją poprawiłem. IPTABLES też zmieniłem ale nie wiem czy dobrze.

```

tc qdisc del root dev eth0 

tc qdisc add dev eth0 root handle 1:0 htb 

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit 

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:6 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:7 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:8 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:9 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 90mbit prio 2 

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 9mbit ceil 90mbit prio 2

tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10 

tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10

tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10 

tc qdisc add dev eth0 parent 1:5 handle 5: sfq perturb 10

tc qdisc add dev eth0 parent 1:6 handle 6: sfq perturb 10 

tc qdisc add dev eth0 parent 1:7 handle 7: sfq perturb 10

tc qdisc add dev eth0 parent 1:8 handle 8: sfq perturb 10 

tc qdisc add dev eth0 parent 1:9 handle 9: sfq perturb 10

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 

tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 2 fw flowid 1:2 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 3 fw flowid 1:3

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 4 fw flowid 1:4 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 5 fw flowid 1:5

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 6 fw flowid 1:6 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 7 fw flowid 1:7

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 8 fw flowid 1:8 

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 9 fw flowid 1:9

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:10

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 2 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 3 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 4 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 5 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 6 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 7 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 8 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 9 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 10 

iptables -t mangle -A POSTROUTING ! -s 192.168.0.2/24 -d 192.168.0.2 -j MARK --set-mark 11

```

----------

## Belliash

Przeczytaj jeszcze raz dokladnie moj poprzedni post. Klaniaja sie podstawy adresacji IP.

----------

## lukpio3

Nie zauważyłem negacji. Nie wiem czy teraz będzie ok  :Sad: .

```

tc qdisc del root dev eth0

tc qdisc add dev eth0 root handle 1:0 htb

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:3 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:4 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:5 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:6 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:7 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:8 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:9 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:10 htb rate 9mbit ceil 90mbit prio 2

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 9mbit ceil 90mbit prio 2

tc qdisc add dev eth0 parent 1:2 handle 2: sfq perturb 10

tc qdisc add dev eth0 parent 1:3 handle 3: sfq perturb 10

tc qdisc add dev eth0 parent 1:4 handle 4: sfq perturb 10

tc qdisc add dev eth0 parent 1:5 handle 5: sfq perturb 10

tc qdisc add dev eth0 parent 1:6 handle 6: sfq perturb 10

tc qdisc add dev eth0 parent 1:7 handle 7: sfq perturb 10

tc qdisc add dev eth0 parent 1:8 handle 8: sfq perturb 10

tc qdisc add dev eth0 parent 1:9 handle 9: sfq perturb 10

tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10

tc qdisc add dev eth0 parent 1:11 handle 11: sfq perturb 10

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 2 fw flowid 1:2

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 3 fw flowid 1:3

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 4 fw flowid 1:4

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 5 fw flowid 1:5

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 6 fw flowid 1:6

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 7 fw flowid 1:7

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 8 fw flowid 1:8

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 9 fw flowid 1:9

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 10 fw flowid 1:210

tc filter add dev eth0 parent 1:0 prio 2 protocol ip handle 11 fw flowid 1:11

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.10 -j MARK --set-mark 2

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.11 -j MARK --set-mark 3

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.12 -j MARK --set-mark 4

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.13 -j MARK --set-mark 5

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.14 -j MARK --set-mark 6

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.15 -j MARK --set-mark 7

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.16 -j MARK --set-mark 8

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.17 -j MARK --set-mark 9

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.18 -j MARK --set-mark 10

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.19 -j MARK --set-mark 11

```

----------

## Belliash

Po prostu poczytaj o adresacji IP, bo masz spore braki w tym zakresie  :Wink: 

Aktualnie masz oznaczane pakiety, ktore pochodza z jakiegokolwiek adresu w sieci i przeznaczone na okreslony IP

-s oznacza adres zrodlowy

-d oznacza adres docelowy

Jezeli chcesz ograniczac przepustowosc tylko pomiedzy serwerem a pozostalymi komputerami, to nie rozumiem po co uzywasz notacji CIDR? W dodatku blednie bo uzywasz adresu hosta zamiast adresu podsieci - oczywiscie komputerowi to nie sprawi roznicy, bo on to sobie przeliczy i wyjdzie na to samo, ale tak sie po prostu nie robi. Odsylam do lektury.

----------

## lukpio3

A mógłbyś mi jeszcze powiedzieć w jaki sposób można sprawdzić poprawność działania HTB? Czy to w ogóle można jakoś sprawdzić czy działa poprawnie czy się nie da?

----------

## Belliash

Przeslac cos przez siec, najlepiej cos duzego.

HTB dziala w oparciu o mechanizm okna przesuwnego, wiec transfer nie musi sie ksztaltowac idealnie na takim poziomie jak chcemy, ale nie powinien byc tez wyzszy. Mowa oczywiscie o sredniej predkosci. Szczytowa moze byc wyzsza, ale wlasnie HTB powinien dazyc do tego by byl mniejszy badz rowny ustawionej wartosci (mniej lub bardziej skutecznie). Pamietac nalezy ze tak na prawde nie pobiera sie danych - nie Ty sciagasz strony WWW z serwera, tylko serwer wysyla je do Ciebie, wiec to od serwera zalezy z jaka predkoscia to robi a Ty masz ograniczone mozliwosci by na to wplynac. Po wiecej informacji odsylam do ksiazek, badz dokumentu RFC 1323

----------

## lukpio3

Kolego, jeszcze mam jedno pytanie natury czysto teoretycznej. Za co odpowiada ta linie:

```

iptables -t mangle -A POSTROUTING  -s 192.168.0.2/24 -d 192.168.0.10 -j MARK --set-mark 2 

```

Chodzi mi o to co robi ta regułka. Wydaje mi się że kieruje ona pakiety do odpowiednich klientów ale pewności nie mam więc wolę zapytać.

I jeszcze jedno pytanie. Uruchamiam swój skrypt. Wszystko przechodzi prawidłowo natomiast w momencie wczytywania linii gdzie jest ta sekcja z iptables dostaję info:

```

Try 'iptables -h' or 'iptables --help' for more information.

'ad argument `

```

Wiesz może co może być nie tak?

----------

## SlashBeast

Dodaj set -x na szczycie skryptu i zobacz co dokladnie sie wywala. Pewnie nie masz jakiegos matcha netfiltera w kernelu.

----------

## Belliash

iptables to firewall, wiec odwala tutaj brudna robote. Przepuszcza albo odrzuca pakiety. Poza tym, jakbys chcial to juz dawno znalazl bys odpowiedz na to pytanie.

Co do problemu, obstawiam 1 z 2 mozliwosci:

1) Brakuje Ci czegos w jajku

2) iptables nie radzi sobie jednak z adresem hosta w notacji CIDR

Zreszta po co ja to wszystko pisze, skoro i tak w dalszym ciagu robisz wszystko po swojemu  :Rolling Eyes: 

----------

## lukpio3

Robię tak ja umiem  :Neutral: . Nie wiem jak mam to zrobić. W jajku raczej nic nie brakuje bo jeśli chodzi o QoS to było zaznaczone wszystko. Na opcjach związanych z siecią raczej nie oszczędzałem.

Zmieniłem również notację tzn usunąłem informację ilu bitowa jest maska "/24" i jest nadal to samo.

----------

## Belliash

Wystarczy troche poczytac. Napisalem, zebys nie stosowal notacji CIDR w polaczeniu z adresem hosta. Albo podajesz adres hosta (1 fizyczne urzadzenie) albo adres podsieci w notacji CIDR ktory wskazuje na wszystkie urzadzenia w obrebie tej konkretnej podsieci. Zrobiles cos z tym? NIE.

SlashBeast napisal Ci o netfilter, a Ty wyjezdzasz z qos. Nie widzisz roznicy?

Wiec czego oczekujesz? Cudu?

Gotowca tutaj na pewno nie dostaniesz. Jak sie sam tym nie zainteresujesz, to nikt tego za Ciebie nie zrobi.

----------

## lukpio3

Problem już został rozwiązany. Powodem były spacje które znajdowały się na końcu każdej linii iptables. Teraz mam taki błąd:

```

iptables v1.4.12: MARK: trailing garbage after value for option "--set-mark".

```

----------

## Belliash

To dowodzi tylko temu ze kopiujesz wszystko bezmyslnie...

EOT bo szkoda czasu i nerwow.

----------

## Raku

 *Belliash wrote:*   

> To dowodzi tylko temu ze kopiujesz wszystko bezmyslnie...
> 
> EOT bo szkoda czasu i nerwow.

 

dość arogancko się odnosiłeś do kolegi w tym wątku, więc trochę cię wyrównam do poziomu:

 *Quote:*   

> 
> 
> To nie ma prawa zadzialac
> 
> [...]
> ...

 

2. po co priorytety? Bez nich cięcie pasma też działa doskonale. Czyżbyś nie do końca rozumiał, o co w tym wszystkim chodzi?

3. pierwotny skrypt ma trochę bzdur, ale na pierwszy rzut oka widać tam klasy limitujące prędkość maksymalną i filtry wrzucające tam ruch z docelowym IP komputerów z LAN. Śmiem strzelać (bo nie chce mi się tego dokładnie debugować), że skrypt by nawet coś przycinał, przy założeniu że eth0 to interfejs od strony LAN i przycinany ma być ruch download. Oczywiście piszę to ze świadomością, że przeglądam pierwotny skrypt po edycji postu z 11 sierpnia, a wątek zaczął się wcześniej, więc nie wiem co było w wersji z 7 sierpnia.

 *Quote:*   

> 
> 
> Rozumiem ze masz LAN 8.7mbps?
> 
> Ja myslalem ze sa sieciowki 10/100/1000mbps...
> ...

 

jeśli serwer ma działać wyłącznie w LAN i ma jeden interfejs (nigdzie nie pisze, że to router), to jak ograniczać pasmo na interfejsie WAN?

8 MB to 8192 kB.

8Mbit to 8000 kbit,

http://pl.wikipedia.org/wiki/Megabit

Bo dlaczego sieciówka 1Gbit ma u ciebie 1000Mbit a nie 1024Mbit?

I z tego co pamiętam, tc stosuje właśnie przelicznik 1Mbit = 1000 kbit.

 *Quote:*   

> 
> 
> W dalszym ciagu to nie ma prawa dzialac. Powielasz ciagle te same bledy. Tworzysz tylko klasy, nawet bez priorytetow, ale ich nigdzie nie wykorzystujesz. 
> 
> 

 

Jak nie wykorzystuje, jak ja w poście wcześniej widzę, że są klasy i filtry wrzucające coś do tych klas:

```

tc class add dev eth0 parent 1:1 classid 1:2 htb rate 9mbit ceil 90mbit 

...

tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.10 flowid 1:2 

```

No chyba że nie było tego w pierwotnej wersji pierwszego posta  :Smile: 

 *Quote:*   

> 
> 
> 1) Jak chcesz aby to dzialalo, to powinienes wykorzystac IPTABLES
> 
> 

 

czegoś nowego się dowiedziałem. Więc mówisz, że QoS bez iptables nie będzie działać? Masz ze sobą jakieś wsparcie?

 *Quote:*   

> 
> 
> Wtedy priorytety powinny byc takie same dla wszystkich.
> 
> 

 

Czepiłeś się tych priorytetów jak, za przeproszeniem, kupa buta.

Jak kolega nie ustawi priorytetów, to domyślnie wszystkie klasy będą miały priorytet (prio) 0, a filtry preferencję (pref) 1.

 *Quote:*   

> 
> 
> Ale na studiach robilem tez projekt na BSI (Bezpieczenstwo Systemow Informatycznych) w ramach ktorego mialem odpowiednio skonfigurowac iptables i takze wykorzystywalem tam HTB do ograniczania pasma. 
> 
> 

 

Skoro miałeś skonfigurować iptables - czyli zrobić firewalla warstwy 3, to po co grzebałeś przy QoS? Czyżbyś nie do końca rozróżniał te wszystkie skomplikowane pojęcia?

 *Quote:*   

> 
> 
> Po co ceil? Masz mu w tym miejscu "powiedziec" tylko jaka przepustowoscia dysponujesz. Nic ponad to. Widzisz cos takiego u mnie? 
> 
> 

 

użycie ceil=rate nie jest błędem. Jeśli podasz samo rate, to tc z góry zakłada, że ceil ma mieć identyczną wartość (i sobie uzupełni). Wytykanie tego komuś jako błąd i czepianie się świadczy wyłącznie o zupełnym braku zrozumienia tematu...

 *Quote:*   

> 
> 
> Jezeli chcesz ograniczac przepustowosc tylko pomiedzy serwerem a pozostalymi komputerami, to nie rozumiem po co uzywasz notacji CIDR?
> 
> 

 

A rozumiesz zapis 192.168.0.2/32? Jest pojedynczy host? Jest CIDR? Można?

 *Quote:*   

> 
> 
> iptables to firewall, wiec odwala tutaj brudna robote. Przepuszcza albo odrzuca pakiety. Poza tym, jakbys chcial to juz dawno znalazl bys odpowiedz na to pytanie. 
> 
> 

 

Ale pytanie kolegi dotyczyło akurat markowania pakietów. Więc okazuje się, że oprócz odrzucana lub przepuszczania pakietów, iptables potrafi jeszcze coś robić, prawda? W tym wypadku markuje pakiety, które następnie htb umieszcza w odpowiednich klasach. Coś zupełnie niepotrzebnego, bo przy tym stopniu komplikacji łatwiej i wygodniej było jednak użyć filtru u32 (jak to było w pierwotnym skrypcie). 

A co trzeba poprawić?

wywalić blok:

```

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:3

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:4

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:5

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:6

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:7

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:8

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:9

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:10

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:11

tc filter add dev eth0 protocol ip preference 1 parent 1:0 u32 match ip srcS$IP_SERWER flowid 1:12 

```

bo chyba nie ma sensu wrzucanie do wielu klas pakietów o tym samym adresie źródłowym.

Widzę tu jeszcze literówki (dstS -> chyba dst). Po poprawieniu tego skrypt będzie działał prawidłowo (choć można by w nim jeszcze parę rzeczy pozmieniać).

----------

## Belliash

Bawiles sie kiedys przez dluzszy czas HTB?

1) Z moich osobistych obserwacji moge powiedziec, ze jak nie ustawisz priorytetow, nawet takich samych, to nie zawsze efekt jest taki jak bysmy sie spodziewali. Wyglada to tak, jakby HTB domyslnie nie przyznawal takich samych priorytetow, mimo ze powinien. Bo jak wytlumaczysz fakt, ze 1 host pobiera dane z predkoscia 200KB/s a inny z predkoscia 30KB/s? Natomiast po dodaniu priorytetow oba pobieraja dane z porownywalna predkoscia (czyt. zmniejszaja sie dysproporcje). Spedzilem nad tym troche czasu i cos jest na rzeczy, a wszystko rozbija sie wlasnie o te priorytety.

2) Jak pisalem w jednej ze swoich wczesniejszych wypowiedzi, skrypt pochodzi z mojego domowego rutera. Skopiowalem go i wkleilem, a autor watku zrobil ponownie to samo, calkowicie bezmyslnie, wprowadzajac jakies dziwne negacje, w ogole nie dostosowane do wlasnych realiow (a raczej zostawiajac te ode mnie). Bylo to na tyle bezmyslne, ze skopiowal wszystko, wraz z pustymi znakami na koncach linii, ktore jak widac byly powodem problemow. Malo tego, polaczyl fragment mojego skryptu i fragment tego co skopiowal prawdopodobnie z jakiejs strony.

3) Owszem. masz racje co do jednostek i wielkosci. Autor jednak nie pisze nic o internecie, ani o jego braku. Mniejsza jednak z tym. Jak slusznie zauwazyles sieciowki sa 10/100/1000Mbps; nie 1024 tylko rowny 1000. Jednak w odniesieniu do uslugi powszechnego dostepu do internetu, zaklada sie ze 1M = 1024K. Masz 1mega i pobierasz dane z predkoscia 128KB/s. Reszte mysle sobie przeliczysz.

4) Proponuje abys poczytal o wykorzystaniu iptables przy konfiguracji htb. Najwyrazniej masz jakies braki. Pomijam juz kwestie wygody, a autor raczej nie chcialby sie bawic z U32, ktory jest bardziej skomplikowany. Trzeba wiedziec i rozumiec co sie robi, czego raczej nie moge powiedziec o lukpio3. A tak pozatym, zastanow sie dlaczego wszedzie wykorzystywany jest do tego celu iptables (np. w *wrt) i na prawde pomijam kwestie wygody.

Ponadto napisales:

```
użycie ceil=rate nie jest błędem. Jeśli podasz samo rate, to tc z góry zakłada, że ceil ma mieć identyczną wartość (i sobie uzupełni). Wytykanie tego komuś jako błąd i czepianie się świadczy wyłącznie o zupełnym braku zrozumienia tematu... 
```

A wiesz do czego odnioslem swoje slowa? Dokladnie do tej linii (podpowiem, to 3 linia w calym skrypcie):

```
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 90mbit ceil 90mbit 
```

Jaki jest jej cel? Zalozyc glowna klase na glownej kolejce z maksymalna przepustowoscia jaka mamy do dyspozycji. W praktyce podawac tutaj jednoczesnie rate i ceil jest kompletna pozbawiona sensu bzdura.

Wiec Twoje uwagi maja sie jak tu jak kij w oko. Poza tym nie chodzi chyba tylko o to by dzialalo na jakichs prowizorkach. Porownam to do innej sytuacji. Bedziesz chcial zlaczyc 2 przewody to je ze soba skrecisz czy zastosujesz tzw. "kostke"? W obu przypadkach to bedzie dzialac, co nie znaczy ze oba rozwiazania powinny byc stosowane. Wiec skoncz juz, bo cytujesz pojedyncze tresci wyrwane z kontekstu.

----------

## Raku

 *Belliash wrote:*   

> Bawiles sie kiedys przez dluzszy czas HTB?
> 
> 

 

Bawię się z mniejszymi lub większymi przerwami od około 10 lat. Zabawy nie ograniczam do domowego routera, ale do małych sieci ISP (ponad 1 tys. użytkowników pewnie w tym będzie).

 *Quote:*   

> 
> 
> 1) Z moich osobistych obserwacji moge powiedziec, ze jak nie ustawisz priorytetow, nawet takich samych, to nie zawsze efekt jest taki jak bysmy sie spodziewali. Wyglada to tak, jakby HTB domyslnie nie przyznawal takich samych priorytetow, mimo ze powinien.
> 
> 

 

Spróbujmy:

```

# tc class add dev eth0 parent 1:0 classid 1:1 htb rate 10Mbit                                                                             

# tc class add dev eth0 parent 1: classid 1:10 htb rate 5Mbit

# tc class add dev eth0 parent 1: classid 1:11 htb rate 5Mbit prio 0

```

I teraz sprawdźmy:

```

# tc -s class show dev eth0

class htb 1:11 root prio 0 rate 5000Kbit ceil 5000Kbit burst 1600b cburst 1600b 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 40000 ctokens: 40000

class htb 1:10 root prio 0 rate 5000Kbit ceil 5000Kbit burst 1600b cburst 1600b 

 Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 

 rate 0bit 0pps backlog 0b 0p requeues 0 

 lended: 0 borrowed: 0 giants: 0

 tokens: 40000 ctokens: 40000

[...]

```

Widzisz jakąś różnicę? Bo ja nie. Obie klasy mają ten sam priorytet (0).

 *Quote:*   

> 
> 
>  Bo jak wytlumaczysz fakt, ze 1 host pobiera dane z predkoscia 200KB/s a inny z predkoscia 30KB/s? Natomiast po dodaniu priorytetow oba pobieraja dane z porownywalna predkoscia (czyt. zmniejszaja sie dysproporcje).
> 
> 

 

Przypadek? Placebo? Plamy na słońcu? Ruchy tektoniczne?

 *Quote:*   

> 
> 
>  Spedzilem nad tym troche czasu i cos jest na rzeczy, a wszystko rozbija sie wlasnie o te priorytety.
> 
> 

 

Fascynujące...

 *Quote:*   

> 
> 
> 2) Jak pisalem w jednej ze swoich wczesniejszych wypowiedzi, skrypt pochodzi z mojego domowego rutera. Skopiowalem go i wkleilem, a autor watku zrobil ponownie to samo, calkowicie bezmyslnie, wprowadzajac jakies dziwne negacje, w ogole nie dostosowane do wlasnych realiow (a raczej zostawiajac te ode mnie). Bylo to na tyle bezmyslne, ze skopiowal wszystko, wraz z pustymi znakami na koncach linii, ktore jak widac byly powodem problemow. Malo tego, polaczyl fragment mojego skryptu i fragment tego co skopiowal prawdopodobnie z jakiejs strony.
> 
> 

 

I to jest powód żeby się na nim wyżywać? Jeśli tak, to można powiedzieć, że trafiła kosa na kamień...

 *Quote:*   

> 
> 
> 3) Owszem. masz racje co do jednostek i wielkosci. Autor jednak nie pisze nic o internecie, ani o jego braku.
> 
> 

 

Co ma internet lub jego brak do jednostek?

 *Quote:*   

> 
> 
>  Mniejsza jednak z tym. Jak slusznie zauwazyles sieciowki sa 10/100/1000Mbps; nie 1024 tylko rowny 1000. Jednak w odniesieniu do uslugi powszechnego dostepu do internetu, zaklada sie ze 1M = 1024K. Masz 1mega i pobierasz dane z predkoscia 128KB/s. Reszte mysle sobie przeliczysz.
> 
> 

 

a dlaczego akurat 128 a nie 125? 1Mbit to zawsze 1000kbit. Tak nawet tc sobie przelicza domyślnie (popatrz na mój listing - jest 5000kbit zamiast 5120, a ja przecież wpisałem kolejki o wielkości 5Mbit).

 *Quote:*   

> 
> 
> 4) Proponuje abys poczytal o wykorzystaniu iptables przy konfiguracji htb. Najwyrazniej masz jakies braki.
> 
> 

 

To że można wykorzystać netfilter w warstwie 3 i wyższych do kształtowania ruchu, wiem i stosuję zapewne znacznie dłużej niż ty. I nie odsyłaj mnie proszę do lektury, bo po twoich kompromitujących tekstach widać, że przydałoby ci się poczytać to wszystko jeszcze raz, tym razem ze zrozumieniem...

Czy do podliczenia trzeciej potęgi liczby dwa też będziesz sięgał do klastra obliczeniowego?

Używanie iptables w tak banalnej konfiguracji tylko ją komplikuje. To co załatwia jeden filtr u32, ty na siłę próbujesz zrobić filtrem (w teorii wolniej działającym niż u32) + regułą netfiltra. Pytanie - po co sobie komplikować życie? Sikać też można pod wiatr. Efekt będzie ten sam jak sikanie z wiatrem - pusty pęcherz. Ale sikając pod wiatr obsikasz sobie przy okazji spodnie...

 *Quote:*   

> 
> 
>  Pomijam juz kwestie wygody, a autor raczej nie chcialby sie bawic z U32, ktory jest bardziej skomplikowany.
> 
> 

 

Porównując

```

# tc filter add dev eth0 parent 1: protocol ip u32 match ip src 192.168.0.1 flowid 1:10

```

z

```

# iptables -t mangle -A POSTROUTING -s 192.168.0.1 -j MARK --set-mark 1

# tc filter add dev eth0 parent 1: protocol ip handle 1 fw flowid 1:11

```

rzeczywiście, zwykły filtr u32 jest o wiele bardziej skomplikowany.

 *Quote:*   

> 
> 
>  Trzeba wiedziec i rozumiec co sie robi, czego raczej nie moge powiedziec o lukpio3.
> 
> 

 

Ja tego powiedzieć nie mogę o tobie. Fajne uczucie zostać publicznie zjechanym?

 *Quote:*   

> 
> 
>  A tak pozatym, zastanow sie dlaczego wszedzie wykorzystywany jest do tego celu iptables (np. w *wrt) i na prawde pomijam kwestie wygody.
> 
> 

 

Wszystko zależy od stopnia komplikacji rozwiązania QoS. Ja też w jednym z moich rozwiązań korzystałem z markowania pakietów, modułów ipp2p, layer7 i innych cudów. Tylko po co to robić w tak prostym zadaniu, które wygląda na jakiś projekt? (choć to dziwne, bo sierpień mamy). Cud że nie KAZAŁEŚ koledze użyć filtrów haszujących   :Rolling Eyes: 

DD-WRT korzysta z layer7, więc tu musi być stosowany filtr fw, bo kryteriami wyboru pakietów w u32 są adresy IP i numery portów (a więc okolice warstwy 3).

 *Quote:*   

> 
> 
> Ponadto napisales:
> 
> ```
> ...

 

Dokładnie tak samą jak pisać parent 1:0 zamiast parent 1:

Obie rzeczy znaczą dokładnie to samo. Więc twój skrypt jest tak samo bzdurny...

Nie rozumiesz, że czepiasz się KOSMETYKI, jakby to były śmiertelne grzechy? Nie wiesz do czego dopier... to się czepiasz, że zając znowu bez czapki chodzi...

 *Quote:*   

> 
> 
> Wiec Twoje uwagi maja sie jak tu jak kij w oko. Poza tym nie chodzi chyba tylko o to by dzialalo na jakichs prowizorkach. Porownam to do innej sytuacji. Bedziesz chcial zlaczyc 2 przewody to je ze soba skrecisz czy zastosujesz tzw. "kostke"?

 

Użyję twojej metody: wezmę największą spawarkę, jaką świat stworzył i zespawam je. Tłumacząc, żebyś zrozumiał: użyję narzędzi nieadekwatnych do wagi problemu.

aha - i przypierdzielę się do twórcy tych przewodów, ze izolacja ma niepotrzebny nadruk i brzydki kolor...

----------

## Belliash

 *Raku wrote:*   

> Zabawy nie ograniczam do domowego routera

 

A ja napisalem ze ograniczam?

 *Raku wrote:*   

> Widzisz jakąś różnicę? Bo ja nie. Obie klasy mają ten sam priorytet (0).

 

I? Wskazania wskazaniami, a praktyka nie raz swoje. Nie musisz wierzyc - Twoja sprawa. Zycze Ci bys sie z tym kiedys spotkal.

 *Raku wrote:*   

> a dlaczego akurat 128 a nie 125? 1Mbit to zawsze 1000kbit.

 

Na prawde jestes taki tepy czy udajesz? Nie kompromituj sie juz, bo kazdy kto chodzil do szkoly wie ze mega to 10^6. Co nie oznacza ze w praktyce kazdy to tak przelicza, wiec nie blaznuj juz. Nikt Ci nie kaze wpisywac 5Mbit jak mozesz wpisac 5120Kbit, co moze byc bardziej precyzyjne. Mowie MOZE bo to zalezy glownie od ISP, a jak juz wspomnialem w Polsce wiele (wiekszosc?) ISP przyjmuje ze 1Mbit = 1024Kbit. Ba, spotkalem sie nawet z tym ze niektorzy nie podaja wartosci w mbps tylko w kbps, aby ludzie Twojego pokroju nie mieli watpliwosci i problemow ze zrozumieniem.

 *Raku wrote:*   

> To co załatwia jeden filtr u32, ty na siłę próbujesz zrobić filtrem (w teorii wolniej działającym niż u32) + regułą netfiltra. Pytanie - po co sobie komplikować życie?

 

Twoje teorie mnie akurat najmniej interesuja. Rozumiem ze jak chcesz stworzyc regule dla kilku(...) portow to przeliczasz maski? Gratuluje... tylko nie wiem czego. Chyba glupoty. Ale jak kto woli...

 *Raku wrote:*   

> Dokładnie tak samą jak pisać parent 1:0 zamiast parent 1:

 

Powiem inaczej. Dlaczego nie pisze sie calego programu w 1 linii (a raczej dlaczego nie powinno sie tak robic mimo, ze w wielu jezykach mozna? Choc Ty pewnie bys tak zrobil)?

 *Raku wrote:*   

> Sikać też można pod wiatr.

 

Skoro lubisz. Ja nie moge Ci zabronic.

 *Raku wrote:*   

> Ja tego powiedzieć nie mogę o tobie.

 

Ja o Tobie tez nie. Cwaniakujesz poprostu w tym momencie.

Usilujesz na sile pokazac ze kazdy zapis jest dobry, ale to ze dziala (nawet prawidlowo) nie znaczy ze powinno sie tak robic.

I dziwic sie potem jakich mamy w Polsce fachowcow, skoro kazdy stosuje pol srodki i swoje "fachowe" sposoby. A pozniej trzeba po nich poprawiac.

Tak swoja droga... To uzytkownicy sieci ktora TY administrujesz tak wylewaja zale po forach, ze internet nie dziala?

----------

## Raku

 *Belliash wrote:*   

> 
> 
>  *Raku wrote:*   Widzisz jakąś różnicę? Bo ja nie. Obie klasy mają ten sam priorytet (0). 
> 
> I? Wskazania wskazaniami, a praktyka nie raz swoje. Nie musisz wierzyc - Twoja sprawa. Zycze Ci bys sie z tym kiedys spotkal.
> ...

 

To brzmi jak nabór do jakiejś sekty... 

 *Quote:*   

> 
> 
> Na prawde jestes taki tepy czy udajesz? Nie kompromituj sie juz, bo kazdy kto chodzil do szkoly wie ze mega to 10^6. Co nie oznacza ze w praktyce kazdy to tak przelicza, wiec nie blaznuj juz. Nikt Ci nie kaze wpisywac 5Mbit jak mozesz wpisac 5120Kbit, co moze byc bardziej precyzyjne. Mowie MOZE bo to zalezy glownie od ISP, a jak juz wspomnialem w Polsce wiele (wiekszosc?) ISP przyjmuje ze 1Mbit = 1024Kbit. Ba, spotkalem sie nawet z tym ze niektorzy nie podaja wartosci w mbps tylko w kbps, aby ludzie Twojego pokroju nie mieli watpliwosci i problemow ze zrozumieniem.
> 
> 

 

A masz jakieś statystyki potwierdzające twoje wywody, czy to tylko twoje "osobiste odczucia"? I tu masz rację - udaję, czepiam się. Wkurza cię to? To przemyśl swój styl bycia na forum i cfaniakowanie wobec innych.

 *Quote:*   

> 
> 
> Twoje teorie mnie akurat najmniej interesuja. Rozumiem ze jak chcesz stworzyc regule dla kilku(...) portow to przeliczasz maski? Gratuluje... tylko nie wiem czego. Chyba glupoty. Ale jak kto woli...
> 
> 

 

Rozumiem, że w tym wątku kolegia lukpio3 miał ten problem i dlatego zaproponowałeś mu zmianę typu filtra, żeby mu pomóc... Nie zrozumiałeś aluzji, więc napiszę ją w prostszych słowach: wybór filtra to może być kwestia gustu. Czasami łatwiej jest użyć jednego filtra, czasami innego. W twoim wypadku, nachalne wręcz najechanie na kolegę, bo użył działającego filtra u32 i narzucenie mu własnego rozwiązania jako jedynego słusznego wyboru było po prostu żenujące.

 *Quote:*   

> 
> 
>  *Raku wrote:*   Dokładnie tak samą jak pisać parent 1:0 zamiast parent 1: 
> 
> Powiem inaczej. Dlaczego nie pisze sie calego programu w 1 linii (a raczej dlaczego nie powinno sie tak robic mimo, ze w wielu jezykach mozna? Choc Ty pewnie bys tak zrobil)?

 

Czyli ty się możesz czepiać innych, a jak się ktoś czepi ciebie o to samo, to już źle? Myślę, że takimi tekstami wyrabiasz sobie doskonałą opinię wśród forumowiczów...

 *Quote:*   

> 
> 
> Ja o Tobie tez nie. Cwaniakujesz poprostu w tym momencie.
> 
> 

 

Piszę dokładnie w takim stylu, jak ty do lukpio3. Nie podoba ci się mój styl? To spójrz w lustro i zastanów się, czy nie warto zmienić podejścia do ludzi z forum.

 *Quote:*   

> 
> 
> Usilujesz na sile pokazac ze kazdy zapis jest dobry, ale to ze dziala (nawet prawidlowo) nie znaczy ze powinno sie tak robic.
> 
> 

 

Czyli jednak przyznajesz, ze zapis parent 1:0 jest błędny? Cieszę się, że potrafisz się przyznać do błędu.

 *Quote:*   

> 
> 
> I dziwic sie potem jakich mamy w Polsce fachowcow, skoro kazdy stosuje pol srodki i swoje "fachowe" sposoby. A pozniej trzeba po nich poprawiac.
> 
> 

 

Dużo pieniędzy zgarnąłeś za poprawianie w skryptach "rate=x ceil=x" na "rate=x"?

Jeśli twoja fachowa opinia ogranicza się wyłącznie do kosmetyki, to może zmień zawód na stylistę?

 *Quote:*   

> 
> 
> Tak swoja droga... To uzytkownicy sieci ktora TY administrujesz tak wylewaja zale po forach, ze internet nie dziala?

 

Nie wiem, nie spotkałem się z negatywnymi opiniami. Próbujesz mi przypadkiem czymś dogryźć i nie możesz znaleźć argumentów? Przykre...

----------

## Belliash

 *Raku wrote:*   

> Rozumiem, że w tym wątku kolegia lukpio3 miał ten problem i dlatego zaproponowałeś mu zmianę typu filtra, żeby mu pomóc... Nie zrozumiałeś aluzji, więc napiszę ją w prostszych słowach: wybór filtra to może być kwestia gustu. Czasami łatwiej jest użyć jednego filtra, czasami innego. W twoim wypadku, nachalne wręcz najechanie na kolegę, bo użył działającego filtra u32 i narzucenie mu własnego rozwiązania jako jedynego słusznego wyboru było po prostu żenujące.

 

Zenujace sa Twoje wypowiedzi. Powinienes wiedziec, ze u32 jest bardziej skomplikowany, a przy tym wcale nie szybszy. Ogolnie netfilter jest bardziej przyjazny poczatkujacym. Poza tym, gdy raz poznamy jego skladnie i zasade dzialania, to zrobimy praktycznie wszystko. W przypadku u32, zaczynaja sie wtedy schodki. Daleko szukac nie musze - zakres portow. O ile ustawienie maski dla 1 z nich wielkim wyzwaniem nie jest, to w przypadku zakresu moze stwarzac problemy. Takie rozwiazanie dla wielu jest po prostu trudne i nie wygodne, a niekiedy przysparza nawet problemy osobom zaznajomionym w temacie. To ze mniej pisania. wcale nie swiadczy o prostocie. Takze Twoje zachwalanie u32 jest raczej bezzasadne w tym przypadku.

 *Raku wrote:*   

> Czyli ty się możesz czepiać innych, a jak się ktoś czepi ciebie o to samo, to już źle?

 

Czyli dalej nie widzisz roznicy? Skoro autor prosi o pomoc i zadaje pytania, w konsekwencji czego otrzymuje porady, to powinien sie raczej do nich zastosowac, a juz na pewno poczytac troche. Dopiero wtedy gdyby czegos nie zrozumial zadawac dodatkowe pytania. Niestety nie rozumiem dlaczego pierw prosi o pomoc a gdy ja otrzyma w dalszym ciagu kopiuje to samo, albo skleja w calosc kilka skryptow z nadzieja ze moze zadziala. Jezeli nie chce pomocy, to niech robi sam, ale jesli juz o nia prosi to wypadaloby, aby sie zastanowil nad swoim problemem i do niego porzadnie przysiadl, zastosowal sie do rad i wskazowek a nie po 10x wklejal to samo. Ostatecznie Jego caly naklad pracy sprowadzal sie do uzywania kombinacji klawiszy ctrl+c i ctrl+v. Jezeli myslal ze dostanie gotowca to byl w bledzie. Masz racje, to wyglada na projekt. A z racji ze mamy sierpien, to smiem nawet twierdzic ze projekt na zaliczenie w ramach sesji poprawkowej. I tu tym bardziej powinien sie do zadania przylozyc, albo bedzie kolejnym "fachowcem nie potrafiacym wkrecic zarowki". A takich delikwentow pelno na studiach i chyba kazdy sie z kims takim spotkal.

 *Raku wrote:*   

> Czyli jednak przyznajesz, ze zapis parent 1:0 jest błędny?

 

Widze nadal nie rozumiesz. Na wielu forach ludzie nawet nie zaglebiaja sie w problem, tylko oczekuja poprawy formatowania i czytelnosci. Zapewne robia to bo sa czepialscy prawda? Pewnych rzeczy, mimo ze dzialaja sie po prostu nie stosuje. Jedni dziwia sie dlaczego nie powinno sie mieszac kodu HTML z PHP, a inni dlaczego powinno sie pisac 1:0 zamiast 1: Komu jak komu ale Tobie tego tlumaczyc chyba nie musze? A ludzie powinni sie uczyc dobrych nawykow - mimo wszystko.

 *Raku wrote:*   

> Dużo pieniędzy zgarnąłeś za poprawianie w skryptach "rate=x ceil=x" na "rate=x"?
> 
> (...)
> 
> Próbujesz mi przypadkiem czymś dogryźć i nie możesz znaleźć argumentów?

 

Przestalbys sie juz kompromitowac.

----------

