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-
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
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
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
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
Plik z chomika:
SOLARIX33
Inne pliki z tego folderu:
2004.04_Fonty w Linuksie_[Administracja].pdf
(675 KB)
2004.03_Analiza logów systemowych_[Administracja].pdf
(638 KB)
2004.06_Serwer DHCP i algorytm HTB_[Administracja].pdf
(627 KB)
2004.02_Cron_[Administracja].pdf
(630 KB)
2004.01_Praca z OpenSSH_[Administracja].pdf
(661 KB)
Inne foldery tego chomika:
Aktualnosci
Audio
Bazy Danych
Bezpieczenstwo
Biznes
Zgłoś jeśli
naruszono regulamin