2004.06_Serwer DHCP i algorytm HTB_[Administracja].pdf

(627 KB) Pobierz
332678039 UNPDF
dla początkujących
Serwer DHCP
i algorytm HTB
Piotr Machej
szymi lub większymi sie-
ciami lokalnymi na ogół
są skazane na wieczne
skargi kierowane do nich przez użyt-
kowników. A to sieć nie działa dość
szybko, a to nie wiadomo, jak skonfi-
gurować komputer po kolejnej reinsta-
lacji Windows , a to znów nie można
sobie pograć w ulubioną grę siecio-
wą. Często ci sami użytkownicy chcie-
liby móc równocześnie ściągać pliki z
sieci P2P i nadal bez problemu oglądać
strony WWW .
Odpowiednie skonfigurowanie ser-
wera udostępniającego Internet może
nieco zmniejszyć liczbę skarg użytkow-
ników. W niniejszym artykule zajmie-
my się dwiema możliwościami uła-
twienia życia administratora. Pierwsza
z nich to skonfigurowanie ser-
wera DHCP służącego do dynamiczne-
go przydzielania adresów IP kompute-
rom podłączonym do naszej sieci lokal-
nej. Druga to przydzielenie odpowied-
niej przepustowości łącza do Inter-
netu poszczególnym użytkownikom
i usługom w taki sposób, aby nie
utrudniali sobie nawzajem korzystania
z Sieci.
Zakładamy, że udostępnianie łącza
internetowego komputerom w sieci
lokalnej jest już skonfigurowane.
W związku z tym, nie będziemy się tym
zajmować. Czytelników zainteresowa-
nych tym tematem odsyłam do artyku-
łu Konfiguracja serwera dla sieci osie-
dlowej , który pojawił się w numerze
10/2002 Linux+ .
Przykład użycia
Pewnego dnia na Gadu-Gadu odezwał
się do mnie znajomy. Ze względu na to,
że swoje łącze do Internetu dzielił na
kilka osób w bloku, uskarżał się ostat-
nio na ciągłe problemy. Jeden z użytkow-
ników często obciążał łącze ściąganiem
filmów do tego stopnia, że inni nawet
nie mogli poczytać sobie stron WWW .
Jakby tego było mało, drugi użytkow-
nik (wieczny eksperymentator) co jakiś
czas reinstalował sobie system, a póź-
niej potrafił około północy dzwonić do
mojego znajomego, żeby ten skonfiguro-
wał mu dostęp do Internetu .
Cóż było robić? Zadałem mu kilka
pytań i dowiedziałem się, że w jego
sieci znajduje się dziesięć komputerów,
z czego jeden (z zainstalowanym Linuk-
sem ) pełni rolę bramki do Internetu . Nie
CD/DVD
Po uruchomieniu dystrybu-
cji Linux+ Live CD/DVD można
korzystać z programów omawia-
nych w artykule.
Na płycie CD/DVD
Na płycie CD/DVD znajdują się
pakiety źródłowe i binarne oma-
wianych programów oraz wszyst-
kie listingi z artykułu.
O autorze
Autor ukończył studia na kierun-
ku Informatyka na Politechni-
ce Opolskiej. Z Linuksem (i ogól-
nie systemami uniksowymi) ma
styczność od wielu lat. Obec-
nie administruje dwoma siecia-
mi blokowymi. Wolne chwile dzieli
pomiędzy jazdy konne, pływanie,
czytanie książek, mang i oglą-
danie anime. Kontakt z autorem:
autorzy@linux.com.pl.
Rysunek 1. Przy koniguracji klienta DHCP
w Windows nie trzeba znać żadnych
adresów
40 czerwiec 2004
O soby administrujące mniej-
332678039.029.png 332678039.030.png 332678039.031.png 332678039.032.png 332678039.001.png 332678039.002.png 332678039.003.png 332678039.004.png 332678039.005.png
 
dhcp i htb
dla początkujących
wszystkie komputery w równym stopniu
korzystają z sieci, gdyż dwóch użytkow-
ników jest właścicielami odpowiednio
dwóch i trzech komputerów. Jako łącze
do Internetu służy im SDI , a niedługo
mają zamiar zmienić tą usługę na DSL .
Zaproponowałem mu, aby skonfigu-
rował sobie serwer DHCP , co powinno
wybawić go od nocnych wizyt u ekspe-
rymentatora. Oprócz tego opowiedziałem
mu o możliwościach, jakie oferuje stero-
wanie przepływem danych. Ucieszył się,
gdy dowiedział się, że przy odpowied-
niej konfiguracji będzie mógł spokoj-
nie pograć sobie w Neverwinter Nights
w sieci, nawet gdy znajomy będzie sobie
ściągał filmy i muzykę. Przygotowałem
mu przykładowe pliki, na podstawie któ-
rych mógł później rozbudować własną
konfigurację.
Listing 1. Przykład pliku dhcpd.conf
# Opcje globalne
option domain-name "moja.domena.pl";
option domain-name-servers 194.204.159.1, 194.204.152.34;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 86400;
# Opcje podsieci
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.250;
option broadcast-address 192.168.100.255;
option routers 192.168.100.1;
}
# Opcje komputerów
host user2 {
hardware ethernet 00:32:1F:13:44:F6;
ixed-address 192.168.100.6;
option broadcast-address 192.168.100.255;
option routers 192.168.100.1;
option host-name "user2";
}
Serwer DHCP
Każdy komputer podłączony do Sieci
posiada przyporządkowany numer IP .
Może on być wpisywany ręcznie podczas
konfiguracji połączenia, ale w przypadku
bardziej rozbudowanych sieci lokalnych,
takie rozwiązanie nie jest ekonomiczne.
Jeśli administrator z jakiegoś powodu
będzie chciał zmienić numery części
komputerów, to będzie musiał odwiedzić
każdy z nich i zmieniać numer ręcznie.
To samo może zdarzyć się, gdy użytkow-
nik zainstaluje u siebie nowy system ope-
racyjny, a nie będzie potrafił skonfiguro-
wać połączenia sieciowego.
W takich przypadkach przydaje się
DHCP ( Dynamic Host Configuration Pro-
tocol ), czyli protokół dynamicznej konfi-
guracji komputerów. Dzięki niemu użyt-
kownik komputera nie musi znać numeru
IP , maski podsieci, adresu bramki czy
adresu serwerów DNS – wystarczy, że
zaznaczy u siebie Automatyczne pobiera-
nie adresu IP , a wszystkie te informacje
zostaną mu przesłane z serwera DHCP .
Jak to działa? Nie zagłębiając się w
szczegóły techniczne, można powiedzieć,
że DHCP funkcjonuje w modelu klient-
serwer. W sieci mamy serwer zarządza-
jący przydzielaniem adresów IP (oraz
pozostałych parametrów konfiguracyj-
nych) oraz szereg klientów domagających
się tych informacji. Klient (a więc każdy
komputer w naszej sieci lokalnej poza
serwerem) po uruchomieniu rozgłasza
komunikaty do serwerów DHCP z żąda-
niem przesłania mu parametrów konfigu-
racyjnych. Gdy taki komunikat dotrze do
serwera DHCP , sprawdza on właściwą
dla klienta konfigurację i wysyła mu ją
w komunikacie. Jeśli klientowi ona odpo-
wiada (w sieci może znajdować się kilka
serwerów DHCP , a klient może sobie
wybrać, z którego chce korzystać), odsyła
potwierdzenie do serwera, który zatwier-
dza taką konfigurację.
Adresy mogą być przydzielane na
kilka różnych sposobów. Po pierwsze,
każdemu klientowi może być przypisany
stały adres IP (np. na podstawie adresu
MAC karty sieciowej). Po drugie, adres IP
może być przyznany na określony czas
(wydzierżawiony). Taki adres pochodzi
ze specjalnej puli adresów określonej
przez administratora. Wreszcie, po trze-
cie, administrator może przypisać kom-
puterowi stały numer IP (nie jest wtedy
pobierany z DHCP ).
pakiet poleceniem rpm -Uvh /mnt/cdrom/
Aurox/RPMS/dhcp-3.0pl2-6.16.i386.rpm ).
Na tym instalacja kończy się. Kon-
figurację przeprowadzamy modyfikując
plik /etc/dhcpd.conf .
Po zakończeniu konfiguracji (według
wskazówek umieszczonych poni-
żej) należy stworzyć pusty plik /etc/
dhcpd.leases poleceniem touch /etc/
dhcpd.leases . Teraz już możemy urucho-
mić demona DHCP poleceniem /usr/
sbin/dhcpd . Możemy ograniczyć jego
działanie do wybranego interfejsu (tak,
aby działał tylko na interfejsie, do które-
go jest podłączona sieć lokalna). W takim
przypadku należy uruchomić go pole-
ceniem /usr/sbin/dhcpd eth0 (w miej-
sce eth0 wstawiamy odpowiednią nazwę
interfejsu).
Jeśli wszystko działa prawidłowo,
możemy dodać wywołanie demona
DHCP do skryptów startowych. W przy-
padku dystrybucji Aurox można tego
dokonać wydając polecenie ntsysv
i zaznaczając pozycję dhcpd .
W poniższych rozdziałach omówi-
my opcje konfiguracyjne umieszczane
w pliku /etc/dhcpd.conf .
Instalacja i uruchamianie
Na początek musimy zainstalować pakiet
dhcpd . Jest on dołączany do większości
dystrybucji, więc nie powinno być pro-
blemów z jego znalezieniem. W przy-
padku dystrybucji Aurox 9.3 pakiet ten
(pod nazwą dhcp-3.0pl2-6.16.i386.rpm )
znajduje się na trzeciej płytce instalacyj-
nej. Możemy go zainstalować korzystając
z menedżera pakietów lub z linii poleceń
(po zalogowaniu się na konto root mon-
tujemy płytę CD-ROM poleceniem mount
/mnt/cdrom/ , a następnie instalujemy
Dynamiczne przydzielanie
adresów
Na Listingu 1 jest umieszczony przykła-
dowy plik /etc/dhcpd.conf . Jest to skróco-
na wersja pliku, który mógłby być zasto-
www.lpmagazine.org
41
332678039.006.png 332678039.007.png 332678039.008.png
 
dla początkujących
Rysunek 2. Po uruchomieniu serwera
DHCP wystarczy polecić Linuksowi
automatyczne pobieranie z niego adresów
w danej podsieci nie będziemy przypisy-
wać adresów dynamicznie.
Pierwsza opcja ( range ) określa zakres
adresów, które mogą być dynamicznie
przyznawane klientom. Adresy te muszą
należeć do tej samej podsieci, co określo-
na w deklaracji subnet . W jednym bloku
subnet możemy zdefiniować wiele zakre-
sów adresów – wystarczy użyć kilku
kolejnych linii zawierających opcję range
z podanymi odpowiednimi adresami.
Następnie ustawiamy adres rozgło-
szeniowy ( option broadcast-address ) dla
naszej podsieci. Ostatnia opcja to wska-
zanie rutera ( option routers ), przez który
klienci mogą łączyć się z Internetem .
Te dwie sekcje w zasadzie wystarcza-
ją do dynamicznego przydzielania adre-
sów. Jeśli jednak chcemy mieć większą
kontrolę nad tym, jakie adresy otrzymują
poszczególni użytkownicy sieci, powin-
niśmy zainteresować się również sekcją
Opcje komputerów .
komputerów podłączonych do sieci, uru-
chamiając na ruterze polecenie /sbin/arp
(jednak nie wypisze ono adresów kom-
puterów, które akurat są wyłączone lub
nie korzystają z sieci).
Opcja fixed-address to serce naszego
statycznego przydziału numeru IP . Jeśli
byśmy jej nie użyli, to komputer otrzy-
małby adres z puli określonej w odpo-
wiednim bloku subnet . Podczas wyszuki-
wania bloku host odpowiadającego kom-
puterowi, który wysłał żądanie, w pierw-
szej kolejności rozpatrywane są bloki host
zawierające opcję fixed-address z adre-
sem pasującym do podsieci, w której
został uruchomiony komputer. Jeśli taki
blok nie zostanie znaleziony, to w następ-
nej kolejności przeszukiwane są bloki
host nie zawierające opcji fixed-address .
Kolejne dwie opcje ( option broad-
cast-address i option routers ) pozwalają
na przekazanie do komputera odpowia-
dających mu adresu rozgłoszeniowego
i adresu rutera. Opcje zawarte w tym
bloku mają pierwszeństwo przed tymi
określonymi w bloku subnet , więc mamy
możliwość wskazania innego rutera
wybranym komputerom. Jeśli jednak są
takie same, możemy po prostu usunąć
te dwie linie z bloku host – w takim
przypadku będą obowiązywać wartości
umieszczone w bloku subnet .
Ostatnia opcja ( option host-name )
pozwala na ustawienie odpowiedniej
nazwy komputera.
W analogiczny sposób można utwo-
rzyć bloki host dla pozostałych kompu-
terów w sieci, zmieniając odpowiednio
nazwę komputera, jego adres MAC oraz
przypisany numer IP .
sowany w przypadku opisanym w roz-
dziale Przykład użycia . Jak widać, jest
podzielony na trzy sekcje.
W sekcji Opcje globalne są zawar-
te ustawienia domyślne. Zostaną one
użyte, jeśli nie nadpiszą ich ustawie-
nia zawarte w blokach subnet lub host
(odpowiednio sekcje Opcje podsie-
ci i Opcje komputerów ) – najważniej-
sze są opcje zawarte w sekcji najbar-
dziej szczegółowej. Jeśli klienta, który
wysłał komunikat z żądaniem przy-
znania numeru IP , nie można dopaso-
wać do żadnego z bloków host , to roz-
patrywane są bloki subnet . Jeśli w blo-
kach tych nie zostały ustawione wszyst-
kie opcje, to pobrane zostaną one
z bloku nadrzędnego (w kolejności host
-> subnet -> opcje globalne).
Zaczynamy od ustawienia nazwy
domeny ( option domain-name ) oraz adre-
sów serwerów DNS ( option domain-name-
servers ). Jeśli chcemy podać więcej adre-
sów, oddzielamy je przecinkiem. Następ-
nie ustawiamy maskę podsieci ( option
subnet-mask ).
Opcje default-lease-time i max-lease-
time określają odpowiednio domyślny
i maksymalny czas dzierżawy adresu
przyznanego dynamicznie. Czasy te
podane są w sekundach.
Teraz dochodzimy do najciekaw-
szej części, jaką jest sekcja Opcje podsie-
ci . Zaczyna się ona od deklaracji podsie-
ci ( subnet ) i jej maski ( netmask ). Wszystkie
opcje dotyczące tej podsieci są zamknię-
te pomiędzy nawiasami klamrowymi:
{ i } . Każda podsieć, która będzie obsłu-
giwana, jak również każda podsieć, do
której jest podłączony serwer DHCP ,
musi posiadać jeden blok subnet . Jest
to konieczne nawet w przypadku, gdy
Statyczne adresy
Często będzie nam zależeć, aby konkret-
ne komputery posiadały stałe adresy. Tak
musi być w przypadku serwerów usług
(np. DNS , WWW , FTP ), które znajdu-
ją się w sieci lokalnej. Może to być rów-
nież przydatne w przypadku zwykłych
komputerów podłączonych do sieci.
Dzięki temu można później łatwo ziden-
tyfikować poszczególne komputery, a ich
numery IP wykorzystać choćby do two-
rzenia odpowiednich regułek na zapo-
rze ogniowej (np. w celu udostępnienia
komuś konkretnego portu lub przeciwnie
– zablokowania niektórych usług).
Takie przypisanie stałych adresów
poszczególnym komputerom w sieci
dokonywane jest w sekcji Opcje kompu-
terów . Na Listingu 1 w tej sekcji przed-
stawiony jest tylko jeden przykłado-
wy blok host . Zaczyna się on linią host
nazwa_komputera , po której umieszczane
są opcje konfiguracyjne dotyczące tego
komputera, zamknięte pomiędzy nawia-
sami klamrowymi: { i } .
Pierwsza opcja w naszym przykładzie
to hardware ethernet . Określa ona adres
MAC karty sieciowej komputera, dla
którego przeznaczone są opcje zawar-
te w tym bloku host . W systemie Win-
dows adres MAC karty sieciowej możemy
sprawdzić uruchamiając polecenie ipcfg .
W przypadku Linuksa wystarczy urucho-
mić polecenie /sbin/ifconfig . Możemy
również sprawdzić adresy MAC innych
Dzielenie pasma
Tym, co bardzo irytuje wielu użytkow-
ników sieci korzystających z Interne-
tu za pośrednictwem niewielkich sieci
lokalnych (blokowych, osiedlowych),
jest zapychanie łącza przez inne osoby.
Nieraz dochodzi do sytuacji, w której
część użytkowników przejmuje więk-
szość pasma i cieszy się z szybko ściąga-
jących się plików, podczas gdy inni mają
problemy z otwarciem nawet pojedynczej
strony WWW .
Receptą na ten problem jest odpo-
wiednie sterowanie przepływem danych
( traffic control ). Dzięki temu możemy nie
tylko ograniczyć przepustowość wyko-
rzystywaną przez poszczególnych użyt-
kowników, ale również zapewnić odpo-
42 czerwiec 2004
332678039.009.png 332678039.010.png 332678039.011.png 332678039.012.png 332678039.013.png 332678039.014.png 332678039.015.png
 
dhcp i htb
dla początkujących
ruterze udostępniali konta innym użyt-
kownikom, to powinniśmy zaintereso-
wać się IMQ ( InterMediate Queueing
device ), czyli pośrednim urządzeniem
kolejkującym.
Rysunek 3. Przykład statystyk zarządzania przepustowością łącza przez HTB
Podstawowe wymagania
Przede wszystkim musimy sprawdzić,
czy posiadamy odpowiednią konfigu-
rację. HTB (wykorzystywany przez nas
algorytm kolejkowania – patrz ramka
Algorytmy kolejkowania ) jest włączo-
ne w jądrach od wersji 2.4.20 , dlatego
najlepiej korzystać z najnowszych jąder
linii 2.4.x . Można co prawda skorzystać
z wersji wcześniejszej niż 2.4.20 , jednak
wymaga to nakładania łaty na jądro. My
nie będziemy sobie utrudniać życia i sko-
rzystamy z jądra 2.4.20 lub nowszego.
Drugim ważnym elementem jest
pakiet iproute2 (a dokładniej, wchodzą-
cy w jego skład program tc ). Najnow-
sze wersje tego pakietu nie wymagają już
nakładania łatki HTB , co oszczędza nam
pracy z kompilowaniem źródeł. Użyt-
kownicy dystrybucji Aurox mogą wyko-
rzystać pakiety dołączane do dystrybu-
cji ( iproute-2.4.7 z pierwszej płyty insta-
lacyjnej).
To w zasadzie wszystko, co będzie
nam potrzebne. Teraz możemy już spraw-
dzić, czy wszystko działa tak, jak powin-
no. W tym celu korzystając z uprawnień
administratora (czyli po zalogowaniu na
konto root lub skorzystaniu z polecenia
su - ) wydajemy następujące polecenia:
wiednie parametry łącza dla wybranych
transmisji (np. dla pracy z SSH ).
Jak widać z tego opisu, mamy możli-
wość kształtowania jedynie ruchu wycho-
dzącego z rutera. Może się to wyda-
wać dziwne, jednak jest dosyć natural-
ne. Ruter otrzymujący dane z przeciążo-
nego łącza nie ma możliwości zmniejsze-
nia tego przeciążenia za pomocą kolejki
– może to zrobić jedynie ruter wysyłający
dane. Powstaje zatem pytanie, jak mamy
ograniczyć przepustowość dla danych
pobieranych z Internetu .
Dokonamy tego w ten sposób, że
nałożymy ograniczenia na interfejs sieci
lokalnej – jeśli ruter będzie wysyłał jakieś
dane z Internetu do jednego z użytkow-
ników sieci lokalnej, to zadba, aby były
one wysyłane z określoną szybkością.
W ten sam sposób możemy ogra-
niczyć przepustowość wykorzystywa-
ną przez użytkowników do wysyłania
danych do Internetu . Tym razem jednak
ograniczenia należy założyć na interfejs
zewnętrzny (np. ppp0 ).
Do nakładania ograniczeń posłuży
nam program tc ( traffic control ) z pakie-
tu iproute2 .
Warto zauważyć, że przy takim
modelu możemy kształtować ruch
wychodzący bezpośrednio z rutera,
jednak nie mamy wpływu na szybkość
pobierania danych przez ruter – ruch
kształtujemy na ruterze, a dane przezna-
czone dla niego nie przechodzą przez
żaden interfejs wyjściowy. W większo-
ści przypadków nie jest to jednak niedo-
godnością. Gdybyśmy jednak na naszym
Jak to działa?
Zacznijmy od tego, że każde łącze ma
określoną przepustowość. Łącze w sieci
lokalnej (często jest to Ethernet o przepu-
stowości 10 lub 100 Mbit) jest zazwyczaj
znacznie szybsze od łącza do Internetu
(np. SDI o przepustowości 115Kbit lub
DSL o przepustowości 1Mbit). Nas inte-
resuje, co dzieje się na styku tych łączy,
czyli tam, gdzie znajduje się nasz ruter.
Dane przesyłane przez użytkowni-
ków przychodzą do rutera przez jeden z
interfejsów (np. ppp0 w przypadku SDI
lub eth0 w przypadku sieci lokalnej).
Następnie podlegają analizie – w uprosz-
czeniu, ruter ocenia, do jakiego adresata
mają trafić poszczególne pakiety. Znając
adresata, ruter wyznacza adres następ-
nego rutera i interfejsu, do którego skie-
ruje dane. Takie dane przeznaczone do
wysłania trafiają do kolejki wyjściowej,
z której są usuwane, gdy tylko interfejs
zdoła je obsłużyć.
Może się zdarzyć, że do kolejki wyj-
ściowej dane trafiają tak szybko, że inter-
fejs nie nadąża z wysyłaniem. Jeśli prze-
ciążenie takie trwa na tyle długo, że
liczba pakietów przeznaczonych do
wysłania przekroczy rozmiary kolejki
wyjściowej, to część pakietów zostanie
zagubiona. O tym, które pakiety zostaną
zagubione, decyduje algorytm obowiązu-
jący w danej kolejce.
tc qdisc show
tc filter show
tc class show
Na tym etapie nie powinny one zwrócić
żadnego wyniku. Jeśli pojawi się komu-
nikat błędu zawierający tekst no such
device , to znaczy, że podczas kompilo-
wania jądra pominęliśmy jakieś istot-
ne opcje. W przeciwnym przypadku
możemy przejść do właściwej konfigu-
racji.
Dzielimy według
użytkowników
W rozdziale Przykład użycia opisaliśmy
przykładową konfigurację sieci lokalnej.
Dla przypomnienia, mamy do czynienia
z siecią lokalną złożoną z dziesięciu kom-
puterów. Jeden z nich pełni rolę bramki
do Internetu . Sieć lokalna ( Ethernet ) ma
przepustowość 10Mbit, natomiast łącze
www.lpmagazine.org
43
332678039.016.png 332678039.017.png 332678039.018.png 332678039.019.png 332678039.020.png
 
dla początkujących
Algorytmy kolejkowania
O doborze pakietów do wysłania decy-
duje algorytm przypisany do danej kolejki
wyjściowej. Domyślnie jest to najprostszy
algorytm FIFO ( First In First Out ). Przy
jego wykorzystaniu pakiety są wysyła-
ne w takiej kolejności, w jakiej pojawiły
się w kolejce. To właśnie dlatego użyt-
kownik uruchamiający duże ilości obcią-
żających łącze programów potrai dopro-
wadzić do sytuacji, gdy korzystanie
z sieci jest dla innych bardzo trudne.
Z tego powodu stworzono inne algoryt-
my, z których możemy korzystać. Należą
do nich między innymi TBF ( Token Bucket
Filter ), PRIO ( Simple Priority Queueing )
czy SFQ ( Stochastic Fairness Queueing
– sprawiedliwe kolejkowanie). W dalszej
części będziemy korzystać tylko ze spra-
wiedliwego kolejkowania SFQ .
Kolejka nie musi wykorzystywać
tylko pojedynczego algorytmu. Może ona
wykorzystywać znacznie bardziej złożo-
ny algorytm, podzielony na klasy, z któ-
rych każda ma przyporządkowany inny
algorytm kolejkowania. O tym, które
pakiety przejdą do których klas, decydu-
ją iltry. W ten sposób można rozdzielać
ruch różnego rodzaju, jak również przy-
porządkowywać wybranym pakietom
wyższy priorytet. Do takich złożonych
algorytmów kolejkowania należą między
innymi CBQ ( Class Based Queueing )
i HTB ( Hierarchical Token Bucket ). Ponie-
waż HTB jest szybsze i dokładniejsze niż
CBQ , właśnie z tego algorytmu będzie-
my korzystać.
Do ustawiania algorytmu kolejkowa-
nia (to trochę nieszczęśliwe tłumaczenie
angielskiego queueing discipline – dalej
będziemy zamiennie używać zwrotu dys-
cyplina kolejkowania ) służy nam polece-
nie tc qdisc add z podanymi parametra-
mi. Analogicznie do tworzenia poszcze-
gólnych klas służy polecenie tc class
add , a do tworzenia iltrów tc filter
add . Przykłady tych poleceń i ich skład-
nia opisane są w artykule w praktycznych
przykładach.
w tym przypadku zastosować. Omówimy
je teraz krok po kroku.
Zaczynamy od zdefiniowania zmien-
nych, dzięki czemu nasz skrypt będzie
później łatwiejszy do modyfikowania.
W sekcji 1) określamy następujące zmien-
ne:
cym z sieci lokalnej. W naszym przypad-
ku wybieramy dyscyplinę HTB . Utwo-
rzonemu obiektowi nadajemy uchwyt
( handle ) 1:0 .
Następnie w utworzonym obiek-
cie tworzymy klasę odpowiedzialną za
przypisanie przepustowości dla całego
łącza do sieci lokalnej. Odpowiada za to
instrukcja umieszczona w sekcji 5) . Użyta
tu wartość zmiennej CALE nie powinna
być większa od rzeczywistej przepusto-
wości sieci.
W sekcji 6) rozdzielamy naszą klasę
na dwie podklasy. Jedna z nich (o rate
i ceil ustawionym na wartość $SDI )
będzie służyć do kolejkowania pakie-
tów pochodzących z Internetu . Druga
natomiast pozwoli na przesyłanie pakie-
tów pochodzących bezpośrednio z rutera
do komputerów w sieci lokalnej z maksy-
malną szybkością.
Szereg poleceń zawartych w sekcji
7) przydziela poszczególnym użytkow-
nikom fragmenty pasma przeznaczo-
nego do ściągania danych z Internetu .
Warto zauważyć, że pasmo jest dzielo-
ne na liczbę użytkowników, a nie kom-
puterów. Opcją rate przydzielamy im
pasmo gwarantowane. Należy pamiętać,
aby suma wartości opcji rate wykorzysta-
nych w tej sekcji nie przekroczyła warto-
ści rate ustalonej dla kolejki nadrzędnej
w sekcji 6) . To samo dotyczy opcji ceil . Jeśli
nie chcemy iść na rękę użytkownikom,
a jedynie przydzielić im konkretne pasmo
(czyli jeśli chcemy, aby gwarantowane
pasmo było zarazem maksymalnym), to
możemy zmiennej USER_CEIL przypisać
tę samą wartość, co zmiennej USER .
Czas na ustawienie filtrów, które będą
odpowiadać za kierowanie pakietów do
odpowiednich kolejek. Zaczynamy od
zapewnienia, że pakiety pochodzące
z rutera nie będą podlegały ogranicze-
CALE – przepustowość całego łącza
sieci lokalnej;
SDI – przepustowość łącza do Inter-
netu ;
ETH_CEIL – maksymalna przepusto-
wość możliwa do wykorzystania na
transmisję z rutera do komputerów
w sieci lokalnej;
USER – przepustowość gwarantowa-
na każdemu z użytkowników (nie
może być większa niż wartość SDI
podzielona przez liczbę użytkowni-
ków);
USER_CEIL – maksymalna przepusto-
wość, którą może wykorzystać użyt-
kownik, jeśli nie jest ona zajmowana
przez innych użytkowników;
INT_LOC – nazwa interfejsu rutera,
do którego podłączona jest sieć lokal-
na.
Następnie w sekcji 2) określamy zmienne,
w których przechowywane są numery IP
wszystkich komputerów znajdujących się
w sieci lokalnej. Zmienna IP_SERWER
przechowuje numer IP rutera. Pozostałe
zmienne to numery IP komputerów nale-
żących do użytkowników. Nazwy zmien-
nych można dobrać według własnych
upodobań. W tym przypadku przyję-
to zasadę, że nazwa składa się z ciągu
IP_USER uzupełnionego o numer użyt-
kownika (np. IP_USER2 ). Jeśli użyt-
kownik posiada więcej komputerów,
to dodatkowo po znaku podkreślenia
jest podany numer kolejny komputera
należącego do tego użytkownika (np.
IP_USER3_2 to drugi komputer użytkow-
nika numer 3).
Polecenie zawarte w sekcji 3) powo-
duje, że usunięte są wszystkie kolej-
ki i klasy, które mogły być zdefiniowa-
ne na interfejsie $INT_LOC . Przy okazji
warto zaznaczyć, że o ile przy definiowa-
niu zmiennych wykorzystywaliśmy same
nazwy, to przy wstawianiu ich wartości w
poleceniach nazwy zmiennych poprze-
dzamy znakiem $ .
W sekcji 4) określamy, jaka dyscy-
plina kolejkowania będzie wykorzysta-
na do zarządzania ruchem wychodzą-
do Internetu to SDI (o przepustowości
115Kbit). Dwóch użytkowników posiada
więcej niż jeden komputer – jeden z nich
posiada trzy, a drugi dwa komputery.
Aby pozostali użytkownicy sieci nie byli
poszkodowani, łącze dzielimy pomiędzy
użytkowników, a nie komputery (czyli
trzy komputery jednego użytkownika
otrzymają razem taką samą przepusto-
wość, jak jeden komputer innego).
Na Listingu 2 znajduje się jedno
z możliwych rozwiązań, które można
Rysunek 4. Po skonigurowaniu
zarządzania przepustowością możemy
spokojnie czytać strony WWW nawet, gdy
kolega uparcie korzysta z KaZaA
44 czerwiec 2004
332678039.021.png 332678039.022.png 332678039.023.png 332678039.024.png 332678039.025.png 332678039.026.png 332678039.027.png 332678039.028.png
Zgłoś jeśli naruszono regulamin