HOME
DO_STR_GLOWNEJ_WYSZUKIWARKI
 
 
CBQ strona 1

 

Pobierz spakowaną witrynę gorzow-wlkp.pl/linux

Jeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).

Zapraszam do zadawania pytań na FORUM oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.

 


 

Materiał o CBQ jest na tyle obszerny, że podzieliłem dotychczasową stronę na cztery pliki. W każdym opisałem inny aspekt konfiguracji CBQ:
  • Strona nr 1 (jesteśmy na niej) - Konfiguracja transferu na komputerze łączącym się z Internetem poprzez modem SDI (ppp0) zgodnie ze schematem:
    INTERNET ----- ppp0 - [Linux] - eth0 --------------[client]
  • Strona nr 2 - Konfiguracja transferu na komputerze łączącym się z Internetem poprzez karte sieciową (eth0) zgodnie ze schematem:
    INTERNET ----- eth0 - [Linux] - eth1 --------------[client]
  • Strona nr 3 - Tłumaczenie pliku cbq.init v0.7.2 autorstwa Pavela Golubeva pg@ksi-linux.com
  • Strona nr 4 - Przykłady plików konfiguracyjnych moich znajomych z Internetu oraz ich uwagi i pytania.




Strona nr 1.

Podstawowe informacje o CBQ oraz praktyczna konfiguracja CBQ na serwerze łaczącym się z Internetem poprzez modem SDI zgodnie ze schematem:

INTERNET---ppp0-[IP od TPSA/Linux/192.168.0.1]-eth0---[clienty 192.168.0.2 itd.]

Inna możliwość skonfigurowania CBQ pod SDI została opisana na drugiej stronie www.

Przykład plików konfiguracyjnych CBQ pod Neostradę: cbq_neo.rar

 


 

Administrator sieci staje czasami przed problemem ustawienia wielkości transferu z netu do klientów. Kiedy powstaje taka potrzeba? Najczęściej gdy jakiś narwany koleś nagminnie ściąga duże pakiety, a pozostali użytkownicy marudzą, że sieć "nie chodzi". Można wówczas skorzystać z omawianego tutaj CBQ lub innego narzędzia HTB.

Aby zapanować nad komunikacją w sieci należy wykonać:

  • Narzucić klientom w domowej sieci stałe nr IP i zablokować im możliwość logowania pod innym nr IP poprzez powiązanie IP z MAC (opis na sąsiedniej stronie).
  • Ustalić IP klientów, którzy zostaną objęci kontrolą transferu i wyizolować pozostałe hosty od usług związanych z netem za pomocą firewalla. W przypadku Mandrake (od wersji 9) oraz Mandriva firewall na iptables jest nadzorowany za pomocą shorewalla. Utworzyłem stronki o tym projekcie, ale w tym miejscu potrzebne są jedynie przykłady wpisów blokujących - zapraszam tutaj (zwróć uwagę na czerwony tekst).
  • Wykonać pomiar maksymalnej wielkości przesyłu danych na interfejsach (eth0, eth1, ppp0 itd.) i ustalić jednostkę do przeliczeń.

    Na Linuksie zainstaluj darmowy program Iperf (mam go w swoim archiwum).

    Polecam na kliencie windowsowym zainstalować poniższe programiki i wykonać test transferu.
    WinMTR - program diagnostyczny (Win 95/98/Me/NT/2000/XP) freeware.
    AnalogX - j.w.

    Można skorzystać z zewnętrznych serwerów obliczających transfer:
    http://twojeip.wp.pl/
    http://www.numion.com/YourSpeed/
    http://www.numion.com/MaxSpeed/
    http://promos.mcafee.com/speedometer/testing.asp
    http://test.vline.pl/test.php
    http://www.continuum.com.pl/speedtest/
    http://test.sopee.net/
  • Ściągnąć najnowszą wersję scryptu CBQ ze strony domowej projektu http://sourceforge.net/projects/cbqinit lub http://freshmeat.net/projects/cbq.init
  • Przypomnieć sobie teorię przeliczeń jednostek: bitów, bajtów, kbit, mbit itd. Będzie to przydatne, gdyż w plikach konfiguracyjnych wskazane jest używać jednej, pełnej jednostki (można użyć Kbit w RATE, WEIGHT oraz Mbit w DEVICE, natomiast nie wolno różnych jednostek w RATE, WEIGHT - generalnie jednak polecam używanie TYLKO jednej jednostki).
  • Zainstalować Linuksa, który ma w Kernelu zaimplementowaną obsługę modułu sch_cbq oraz zainstalowane iproute2. Mandrake (od wersji 9.0) oraz Mandriva mają jądro standardowo obsługujące CBQ.

    Aby przetestować jądro pod kątem zgodności z CBQ trzeba (mając zainstalowane iproute2) wpisać komendę: tc -d qdisc . Jeśli w wyniku jej działania pojawi się jakiś komunikat typu RTNETLINK error, wtedy odpuśćmy sobie CBQ. Jeśli jądro jest prawidłowo skonfigurowane i gotowe do działania, to ta komenda nic nie wyświetli (lub wyświetli przydzielone widełki). Natomiast po skonfigurowaniu CBQ, możesz tym samym zleceniem tc -s qdisc sprawdzić jak scrypt działa. Zobacz tutaj.

Uwaga: demon squid może sprawić problemy, dlatego na czas testów wyłącz go (lub odinstaluj). Na moim komputerze funkcje firewalla i masquarady załatwia iptables, a klienty mają stały adres IP dodatkowo powiazany z MAC (przy pomocy scryptu).

 

Jeżeli przeczytałeś powyższy tekst i nie rozumiesz za bardzo o co w nim chodzi, to... daj sobie na wstrzymanie. Mam wiele zapytań z netu od adminów linuksowych, którzy już na tym etapie czytania czują się zagubieni. Piszą do mnie na GG lub ślą maile licząc, że... wyjaśnię co to interfejs ppp0, eth?, poprzeliczam jednostki, posprawdzam poprawność wyników, pokażę jak firewallem odizolować niektórych klientów od netu itd. Potem mają nadzieję, że sam skonfiguruję im CBQ ustawiając co należy przy pomocy połączenia ssh. NIC Z TYCH RZECZY! Prowadzę hobbystyczną, niekomercyjną stronę www, ale nie będę pomagał wszystkim zagubionym nowicjuszom. Mam wiele maili dotyczących TYLKO CBQ. Ile czasu bezproduktywnie zmarnowanego staje się moim udziałem! Czemu bezproduktywnie? Gdyż szybko stwierdzam, że rozmówcy najczęściej nie znają podstaw Linuksa i zadają nieskończoną ilość pytań niezwiązanych z CBQ (o ZARZĄDZANIU napisałm kilka stronek www i oczekuję, że zostaną one przeczytane w pierwszej kolejności). Ponadto wykaż się choć odrobiną samodzielności, przeczytaj uważnie niniejszą stronę. Nie pytaj o rzeczy już opisane.

 


 

Przyjmujemy, że z netem łączymy się zgodnie z poniższym schematem:

NET---ppp0-[IP od TPSA/Linux/192.168.0.1]-eth0---[clienty 192.168.0.2, 192.168.0.3 itd]

w którym interfejs ppp0 działa na modemie SDI-HIS o numerze zewnętrznym 217.196.171.100, a klienty łaczą się z serwerem na interfejsie eth0, czyli za pomocą kart sieciowych o numerach 192.168.0.2 , 192.168.0.3 , 192.168.0.4 , 192.168.0.5.

Na Linuksie zainstaluj darmowy program Iperf. (mam go w swoim archiwum). Pod Windows 98, ME, 2000, XP (na komputerze klienckim) proponuję zainstalować jeden z kilku programików: NetMeter oraz AnalogX. Dają ładne i proste wykresy transferu do i z hosta.

AnalogX

Zwróć uwagę na jednostki.

Chwilowo przyjmijmy, że wewnętrzna sieć (eth0) działa na jednej z dwóch teoretycznie możliwych wartości: 100 Mbit/sek lub 10 Mbit/sek. Na potrzeby tego opisu wybieram 10 Mbit/sek transferu na interfejsie eth0 (czyli po odjęciu zapasu tolerancji ok 9500Kbit).

W naszym przykładzie zajmujemy się siecią na łączu SDI-HIS, w której pracuje 4 klientów. Usługa SDI-HIS póki co, (na dzień dzisiejszy) nie narzuca rygorystycznie wielkości transferu przychodzącego i wychodzacego. Proporcje te mogą być płynne, byle by suma wynosiła 112 Kbit/sek. Dzielimy więc transfer 110Kbit/sek:

  • dla wszystkich klientów w sieci (zbiorczo) - transfer wychodzący na poziomie 30Kbit/sek
  • pulę 80 Kbit/sek do podzialu na 4 klientów do transferu przychodzącego.
Jak łatwo można wyliczyć, każdy z hostów w domowej sieci otrzyma 20 Kbit/sek maksymalnego transferu przychodzącego. Oczywiście w skrajnych okolicznościach, gdy każdy z naszych klientów zaprze się i jednocześnie zacznie wysyłać i ściągać pliki (albo jednocześnie wysyłać pliki) to przy takim podziale zabraknie komuś transferu, ale jeżeli wszyscy jednocześnie będą na maksa tylko ściągać z netu - powinno starczyć ;) Co prawda da się zabezpieczyć przed pierwszą możliwością i ustalić bardziej restrykcyjne parametry, ale moim zdaniem będzie to zbędna nadgorliwość administratora. Mając podzieloną teoretycznie sieć, możemy umieścić scrypt CBQ w systemie i skonfigurować go.

Zauważyłeś pewnie, że transfer wychodzący z sieci do netu jest dosyć prymitywnie dzielony. Niestety, aby ograniczyć komputer kliencki z obu kierunków, należy pracować na sieci wpiętej do komputera z drugim Linuksem (np. fresco), który to z kolei musi łączyć się z netem wg schematu:

NET---ppp0-[IP od TPSA/Linux Fresco/192.168.10.1]-eth0---[192.168.10.2/ nasz Linux/192.168.0.1]-eth1---[clienty 192.168.0.2 itd.]

Konfigurację CBQ na takim Linuksie opisałem na osobnej stronie www.

 

*

 

Pobierz plik ze strony http://sourceforge.net/projects/cbqinit lub http://freshmeat.net/projects/cbq.init . W lipcu 2003 był to numer cbq.init-v0.7.2, a w marcu 2004 cbq.init-v0.7.3 . Zmień prawa do tego pliku poleceniem: chown root.root cbq.init* oraz chmod 755 cbq.init* . Dla swojej wygody możesz mu zmienić nazwę na cbq.init poleceniem mv cbq.init-v* cbq.init . Umieść go w katalogu /etc/rc.d

 

*

 

Przypominam schemat naszej sieci. Będzie potrzebny do zrozumienia logiki nadawanych nazw plikom konfiguracyjnym.

INTERNET --------- ppp0 - [Linux ] - eth0 --------------[client]


 

W katalogu /etc/sysconfig utwórz katalog cbq i nadaj mu prawa: root.root 755 (poleceniami chmod 755 cbq oraz chown root.root cbq) . Utwórz w nich pliki konfiguracyjne. W nazwie_pliku można dla swojej wygody umieścić nazwę interfejsu i kierunek transferu (skąd_dokąd). Pliki tworzy się poleceniem touch nazwapliku . Nadaj im prawa 750 root.root . Uwaga: w nazwach plików nie ma spacji. Nazwa składa się z:
* słowa cbq
* myślnika
* numeru, który jest jest dwubajtową hexagonalną liczbą rzędu <0002-FFFF> (nie zmieniaj formatu!)
* kropki
* dowolnej terści (bez spacji)

Lista plików wg ich nazw:

Pierwszy plik zajmie się zbiorczo transferem wychodzącym z naszej sieci do Internetu. Transfer nie będzie niestety rozbity na poszczególne stacje.

cbq-0002.ppp0_klienty_net


Kolejne pliki zajmą się konfiguracją transferu przychodzącego z netu do domowej sieci w rozbiciu na poszczególne stacje.

cbq-0003.eth0_serwer_klient

cbq-0004.eth0_serwer_klient

cbq-0005.eth0_serwer_klient

cbq-0006.eth0_serwer_klient


Przypominam, iż przyjęliśmy, że łączymy się z Internetem poprzez modem SDI-HIS. Wypełnij utworzone przed chwilą pliki następującą treścią. Uwaga: w poszczególnych wierszach nie ma spacji.


cbq-0002.ppp0_klienty_net

treść (zwróć uwagę na przecinek (,) w polu RULE):

DEVICE=ppp0,110Kbit,11Kbit
RATE=30Kbit
WEIGHT=3Kbit
PRIO=5
RULE=217.196.171.100,



cbq-0003.eth0_serwer_klient

treść:

DEVICE=eth0,9500Kbit,950Kbit
RATE=20Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.0.2




cbq-0004.eth0_serwer_klient

treść:

DEVICE=eth0,9500Kbit,950Kbit
RATE=20Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.0.3



cbq-0005.eth0_serwer_klient

treść:

DEVICE=eth0,9500Kbit,950Kbit
RATE=20Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.0.4


cbq-0006.eth0_serwer_klient

treść:

DEVICE=eth0,9500Kbit,950Kbit
RATE=20Kbit
WEIGHT=2Kbit
PRIO=5
RULE=192.168.0.5




Startujesz skrypt (jako root) komendą /etc/rc.d/cbq.init start nocache , a sprawdzasz jak działa poleceniem tc -s qdisc (wyświetlą się wtedy Twoje parametry z plików cbq-0002 itd.).

Autostart skryptu /etc/rc.d/cbq.init możesz umieścić w /etc/rc.d/rc.local dopisując na końcu linię

/etc/rc.d/cbq.init start nocache

Przypominam, że plik /etc/rc.d/cbq.init ma mieć prawa: root.root 755.

 

*

 

Czytając pytania od internautów (w mailach i na GG) odnoszę wrażenie, że nikt nie czyta do końca i uważnie porad umieszczonych na tej stronie. Na szybkiego robi się pliki konfiguracyjne i... ze zdziwieniem zauważa, że nie działają. Podstawowe błędy jakie robią pospieszni admini:

  • w nazwę pliku wpisują nr kolejny wg systemu dziesiątkowego, a ma być liczba hexagonalna
  • łączą w plikach konfiguracyjnych kilka jednostek np. Mbit oraz Kbit. Nie umieją przeliczać jednostek (1Mbit to nie jest 1000 razy Kbit)
  • wprowadzają wartości ułamkowe (bo tak im pasuje po podzieleniu przez 10), a wolno wprowadzać wyłącznie wartości całkowite (nawet jeżeli dzielnikiem będzie np. 6, a nie 10)
  • wprowadzają spację do nazwy pliku lub jego zawartości
  • zapominają, że przecinek w pliku konfiguracyjnym transferu wychodzącego jest konieczny
  • mając interfejsy np. eth0 oraz eth1 konfigurują komputer kliencki na IP zewnętrzne, a trzeba w obu plikach na IP wewnętrzne (np. 192.168.0.5)
  • mając ppp0 (modem) oraz eth0 (do domowej sieci), trzeba zbiorczo ustawić transfer wychodzący na IP zewnętrznym (np. 217.96.171.101), a indywidualnie (dla kazdego klienta-komputera osobno) na IP wewnętrznym (np. 192.168.0.5). Na marginesie podaję, że otrzymałem mailem niżej umieszczony wpis skrtyptu iptables regulującego niezbiorczo transfer, ale jest to rozwiązanie dla zaawansowanych Linuksiarzy
  • nie znają rzeczywistych możliwości transferu w sieci.

 

 

*

 

 
Otrzymałem informację od anonimowego internauty, że w przypadku korzystania z maskarady "można ograniczyć transfer wychodzący dla poszczególnego usera w poniższy sposób" (dotyczy SDI):


iptables -t mangle -I PREROUTING -s 192.168.1.4 -j MARK --set-mark 4

i do tego w pliku konfiguracyjnym:

DEVICE=ppp0,100Mbit,10Mbit
RATE=128Kbit
WEIGHT=10Kbit
ISOLATED=yes
MARK=0x4

Po wykonaniu iptables (dla wszystkich userów) trzeba oczywiscie
zapisać zleceniem iptables-save

 
Przykład plików konfiguracyjnych CBQ pod Neostradę: cbq_neo.rar

 

 
twarogal@wp.pl

Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.

Uwaga. Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).

 
 

 

 

Witryna była dostępna pod adresami: strony.wp.pl/wp/twarogal , strony.wp.pl/wp/linuxtwarka , twarogal.republika.pl , klub.chip.pl/twarogal oraz gorzow-wlkp.net (w latach 2003/04).

 

 

gorzow-wlkp.pl

Informacje o odwiedzających są rejestrowane i publicznie udostępniane na pod adresem: http://gorzow-wlkp.pl/licznik/