2004 06 Serwer DHCP i algorytm HTB [Administracja]


dla początkujących
Serwer DHCP
i algorytm HTB
Piotr Machej
soby administrujące mniej- Przykład użycia
szymi lub większymi sie- Pewnego dnia na Gadu-Gadu odezwał
ciami lokalnymi na ogół się do mnie znajomy. Ze względu na to,
Osą skazane na wieczne że swoje łącze do Internetu dzielił na
skargi kierowane do nich przez użyt- kilka osób w bloku, uskarżał się ostat-
kowników. A to sieć nie działa dość nio na ciągłe problemy. Jeden z użytkow-
szybko, a to nie wiadomo, jak skonfi- ników często obciążał łącze ściąganiem
gurować komputer po kolejnej reinsta- filmów do tego stopnia, że inni nawet
lacji Windows, a to znów nie można nie mogli poczytać sobie stron WWW.
sobie pograć w ulubioną grę siecio- Jakby tego było mało, drugi użytkow-
wą. Często ci sami użytkownicy chcie- nik (wieczny eksperymentator) co jakiś
liby móc równocześnie ściągać pliki z czas reinstalował sobie system, a póz-
sieci P2P i nadal bez problemu oglądać niej potrafił około północy dzwonić do
strony WWW. mojego znajomego, żeby ten skonfiguro-
Odpowiednie skonfigurowanie ser- wał mu dostęp do Internetu.
wera udostępniającego Internet może Cóż było robić? Zadałem mu kilka
nieco zmniejszyć liczbę skarg użytkow- pytań i dowiedziałem się, że w jego
CD/DVD
ników. W niniejszym artykule zajmie- sieci znajduje się dziesięć komputerów,
Po uruchomieniu dystrybu-
cji Linux+ Live CD/DVD można my się dwiema możliwościami uła- z czego jeden (z zainstalowanym Linuk-
korzystać z programów omawia-
twienia życia administratora. Pierwsza sem) pełni rolę bramki do Internetu. Nie
nych w artykule.
z nich to skonfigurowanie ser-
wera DHCP służącego do dynamiczne-
Na płycie CD/DVD
go przydzielania adresów IP kompute-
Na płycie CD/DVD znajdują się
rom podłączonym do naszej sieci lokal-
pakiety zródłowe i binarne oma-
nej. Druga to przydzielenie odpowied-
wianych programów oraz wszyst-
niej przepustowości łącza do Inter-
kie listingi z artykułu.
netu poszczególnym użytkownikom
O autorze
i usługom w taki sposób, aby nie
Autor ukończył studia na kierun-
utrudniali sobie nawzajem korzystania
ku Informatyka na Politechni-
z Sieci.
ce Opolskiej. Z Linuksem (i ogól-
Zakładamy, że udostępnianie łącza
nie systemami uniksowymi) ma
internetowego komputerom w sieci
styczność od wielu lat. Obec-
lokalnej jest już skonfigurowane.
nie administruje dwoma siecia-
W związku z tym, nie będziemy się tym
mi blokowymi. Wolne chwile dzieli
zajmować. Czytelników zainteresowa-
pomiędzy jazdy konne, pływanie,
nych tym tematem odsyłam do artyku-
czytanie książek, mang i oglą-
Rysunek 1. Przy konfiguracji klienta DHCP
łu Konfiguracja serwera dla sieci osie-
danie anime. Kontakt z autorem:
w Windows nie trzeba znać żadnych
autorzy@linux.com.pl. dlowej, który pojawił się w numerze
adresów
10/2002 Linux+.
40
czerwiec 2004
dhcp i htb dla początkujących
wszystkie komputery w równym stopniu
Listing 1. Przykład pliku dhcpd.conf
korzystają z sieci, gdyż dwóch użytkow-
ników jest właścicielami odpowiednio
dwóch i trzech komputerów. Jako łącze # Opcje globalne
do Internetu służy im SDI, a niedługo option domain-name "moja.domena.pl";
mają zamiar zmienić tą usługę na DSL. option domain-name-servers 194.204.159.1, 194.204.152.34;
Zaproponowałem mu, aby skonfigu- option subnet-mask 255.255.255.0;
rował sobie serwer DHCP, co powinno default-lease-time 21600;
wybawić go od nocnych wizyt u ekspe- max-lease-time 86400;
rymentatora. Oprócz tego opowiedziałem # Opcje podsieci
mu o możliwościach, jakie oferuje stero- subnet 192.168.100.0 netmask 255.255.255.0 {
wanie przepływem danych. Ucieszył się, range 192.168.100.2 192.168.100.250;
gdy dowiedział się, że przy odpowied- option broadcast-address 192.168.100.255;
niej konfiguracji będzie mógł spokoj- option routers 192.168.100.1;
nie pograć sobie w Neverwinter Nights }
w sieci, nawet gdy znajomy będzie sobie # Opcje komputerów
ściągał filmy i muzykę. Przygotowałem host user2 {
mu przykładowe pliki, na podstawie któ- hardware ethernet 00:32:1F:13:44:F6;
rych mógł pózniej rozbudować własną fixed-address 192.168.100.6;
konfigurację. option broadcast-address 192.168.100.255;
option routers 192.168.100.1;
Serwer DHCP option host-name "user2";
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 serwera DHCP, sprawdza on właściwą pakiet poleceniem rpm -Uvh /mnt/cdrom/
bardziej rozbudowanych sieci lokalnych, dla klienta konfigurację i wysyła mu ją Aurox/RPMS/dhcp-3.0pl2-6.16.i386.rpm).
takie rozwiązanie nie jest ekonomiczne. w komunikacie. Jeśli klientowi ona odpo- Na tym instalacja kończy się. Kon-
Jeśli administrator z jakiegoś powodu wiada (w sieci może znajdować się kilka figurację przeprowadzamy modyfikując
będzie chciał zmienić numery części serwerów DHCP, a klient może sobie plik /etc/dhcpd.conf.
komputerów, to będzie musiał odwiedzić wybrać, z którego chce korzystać), odsyła Po zakończeniu konfiguracji (według
każdy z nich i zmieniać numer ręcznie. potwierdzenie do serwera, który zatwier- wskazówek umieszczonych poni-
To samo może zdarzyć się, gdy użytkow- dza taką konfigurację. żej) należy stworzyć pusty plik /etc/
nik zainstaluje u siebie nowy system ope- Adresy mogą być przydzielane na dhcpd.leases poleceniem touch /etc/
racyjny, a nie będzie potrafił skonfiguro- kilka różnych sposobów. Po pierwsze, dhcpd.leases. Teraz już możemy urucho-
wać połączenia sieciowego. każdemu klientowi może być przypisany mić demona DHCP poleceniem /usr/
W takich przypadkach przydaje się stały adres IP (np. na podstawie adresu sbin/dhcpd. Możemy ograniczyć jego
DHCP (Dynamic Host Configuration Pro- MAC karty sieciowej). Po drugie, adres IP działanie do wybranego interfejsu (tak,
tocol), czyli protokół dynamicznej konfi- może być przyznany na określony czas aby działał tylko na interfejsie, do które-
guracji komputerów. Dzięki niemu użyt- (wydzierżawiony). Taki adres pochodzi go jest podłączona sieć lokalna). W takim
kownik komputera nie musi znać numeru ze specjalnej puli adresów określonej przypadku należy uruchomić go pole-
IP, maski podsieci, adresu bramki czy przez administratora. Wreszcie, po trze- ceniem /usr/sbin/dhcpd eth0 (w miej-
adresu serwerów DNS  wystarczy, że cie, administrator może przypisać kom- sce eth0 wstawiamy odpowiednią nazwę
zaznaczy u siebie Automatyczne pobiera- puterowi stały numer IP (nie jest wtedy interfejsu).
nie adresu IP, a wszystkie te informacje pobierany z DHCP). Jeśli wszystko działa prawidłowo,
zostaną mu przesłane z serwera DHCP. możemy dodać wywołanie demona
Jak to działa? Nie zagłębiając się w Instalacja i uruchamianie DHCP do skryptów startowych. W przy-
szczegóły techniczne, można powiedzieć, Na początek musimy zainstalować pakiet padku dystrybucji Aurox można tego
że DHCP funkcjonuje w modelu klient- dhcpd. Jest on dołączany do większości dokonać wydając polecenie ntsysv
serwer. W sieci mamy serwer zarządza- dystrybucji, więc nie powinno być pro- i zaznaczając pozycję dhcpd.
jący przydzielaniem adresów IP (oraz blemów z jego znalezieniem. W przy- W poniższych rozdziałach omówi-
pozostałych parametrów konfiguracyj- padku dystrybucji Aurox 9.3 pakiet ten my opcje konfiguracyjne umieszczane
nych) oraz szereg klientów domagających (pod nazwą dhcp-3.0pl2-6.16.i386.rpm) w pliku /etc/dhcpd.conf.
się tych informacji. Klient (a więc każdy znajduje się na trzeciej płytce instalacyj-
komputer w naszej sieci lokalnej poza nej. Możemy go zainstalować korzystając Dynamiczne przydzielanie
serwerem) po uruchomieniu rozgłasza z menedżera pakietów lub z linii poleceń adresów
komunikaty do serwerów DHCP z żąda- (po zalogowaniu się na konto root mon- Na Listingu 1 jest umieszczony przykła-
niem przesłania mu parametrów konfigu- tujemy płytę CD-ROM poleceniem mount dowy plik /etc/dhcpd.conf. Jest to skróco-
racyjnych. Gdy taki komunikat dotrze do /mnt/cdrom/, a następnie instalujemy na wersja pliku, który mógłby być zasto-
41
www.lpmagazine.org
dla początkujących
w danej podsieci nie będziemy przypisy- komputerów podłączonych do sieci, uru-
wać adresów dynamicznie. chamiając na ruterze polecenie /sbin/arp
Pierwsza opcja (range) określa zakres (jednak nie wypisze ono adresów kom-
adresów, które mogą być dynamicznie puterów, które akurat są wyłączone lub
przyznawane klientom. Adresy te muszą nie korzystają z sieci).
należeć do tej samej podsieci, co określo- Opcja fixed-address to serce naszego
na w deklaracji subnet. W jednym bloku statycznego przydziału numeru IP. Jeśli
subnet możemy zdefiniować wiele zakre- byśmy jej nie użyli, to komputer otrzy-
sów adresów  wystarczy użyć kilku małby adres z puli określonej w odpo-
kolejnych linii zawierających opcję range wiednim bloku subnet. Podczas wyszuki-
z podanymi odpowiednimi adresami. wania bloku host odpowiadającego kom-
Następnie ustawiamy adres rozgło- puterowi, który wysłał żądanie, w pierw-
szeniowy (option broadcast-address) dla szej kolejności rozpatrywane są bloki host
naszej podsieci. Ostatnia opcja to wska- zawierające opcję fixed-address z adre-
Rysunek 2. Po uruchomieniu serwera
zanie rutera (option routers), przez który sem pasującym do podsieci, w której
DHCP wystarczy polecić Linuksowi
klienci mogą łączyć się z Internetem. został uruchomiony komputer. Jeśli taki
automatyczne pobieranie z niego adresów
Te dwie sekcje w zasadzie wystarcza- blok nie zostanie znaleziony, to w następ-
sowany w przypadku opisanym w roz- ją do dynamicznego przydzielania adre- nej kolejności przeszukiwane są bloki
dziale Przykład użycia. Jak widać, jest sów. Jeśli jednak chcemy mieć większą host nie zawierające opcji fixed-address.
podzielony na trzy sekcje. kontrolę nad tym, jakie adresy otrzymują Kolejne dwie opcje (option broad-
W sekcji Opcje globalne są zawar- poszczególni użytkownicy sieci, powin- cast-address i option routers) pozwalają
te ustawienia domyślne. Zostaną one niśmy zainteresować się również sekcją na przekazanie do komputera odpowia-
użyte, jeśli nie nadpiszą ich ustawie- Opcje komputerów. dających mu adresu rozgłoszeniowego
nia zawarte w blokach subnet lub host i adresu rutera. Opcje zawarte w tym
(odpowiednio sekcje Opcje podsie- Statyczne adresy bloku mają pierwszeństwo przed tymi
ci i Opcje komputerów)  najważniej- Często będzie nam zależeć, aby konkret- określonymi w bloku subnet, więc mamy
sze są opcje zawarte w sekcji najbar- ne komputery posiadały stałe adresy. Tak możliwość wskazania innego rutera
dziej szczegółowej. Jeśli klienta, który musi być w przypadku serwerów usług wybranym komputerom. Jeśli jednak są
wysłał komunikat z żądaniem przy- (np. DNS, WWW, FTP), które znajdu- takie same, możemy po prostu usunąć
znania numeru IP, nie można dopaso- ją się w sieci lokalnej. Może to być rów- te dwie linie z bloku host  w takim
wać do żadnego z bloków host, to roz- nież przydatne w przypadku zwykłych przypadku będą obowiązywać wartości
patrywane są bloki subnet. Jeśli w blo- komputerów podłączonych do sieci. umieszczone w bloku subnet.
kach tych nie zostały ustawione wszyst- Dzięki temu można pózniej łatwo ziden- Ostatnia opcja (option host-name)
kie opcje, to pobrane zostaną one tyfikować poszczególne komputery, a ich pozwala na ustawienie odpowiedniej
z bloku nadrzędnego (w kolejności host numery IP wykorzystać choćby do two- nazwy komputera.
-> subnet -> opcje globalne). rzenia odpowiednich regułek na zapo- W analogiczny sposób można utwo-
Zaczynamy od ustawienia nazwy rze ogniowej (np. w celu udostępnienia rzyć bloki host dla pozostałych kompu-
domeny (option domain-name) oraz adre- komuś konkretnego portu lub przeciwnie terów w sieci, zmieniając odpowiednio
sów serwerów DNS (option domain-name-  zablokowania niektórych usług). nazwę komputera, jego adres MAC oraz
servers). Jeśli chcemy podać więcej adre- Takie przypisanie stałych adresów przypisany numer IP.
sów, oddzielamy je przecinkiem. Następ- poszczególnym komputerom w sieci
nie ustawiamy maskę podsieci (option dokonywane jest w sekcji Opcje kompu- Dzielenie pasma
subnet-mask). terów. Na Listingu 1 w tej sekcji przed- Tym, co bardzo irytuje wielu użytkow-
Opcje default-lease-time i max-lease- stawiony jest tylko jeden przykłado- ników sieci korzystających z Interne-
time określają odpowiednio domyślny wy blok host. Zaczyna się on linią host tu za pośrednictwem niewielkich sieci
i maksymalny czas dzierżawy adresu nazwa_komputera, po której umieszczane lokalnych (blokowych, osiedlowych),
przyznanego dynamicznie. Czasy te są opcje konfiguracyjne dotyczące tego jest zapychanie łącza przez inne osoby.
podane są w sekundach. komputera, zamknięte pomiędzy nawia- Nieraz dochodzi do sytuacji, w której
Teraz dochodzimy do najciekaw- sami klamrowymi: { i }. część użytkowników przejmuje więk-
szej części, jaką jest sekcja Opcje podsie- Pierwsza opcja w naszym przykładzie szość pasma i cieszy się z szybko ściąga-
ci. Zaczyna się ona od deklaracji podsie- to hardware ethernet. Określa ona adres jących się plików, podczas gdy inni mają
ci (subnet) i jej maski (netmask). Wszystkie MAC karty sieciowej komputera, dla problemy z otwarciem nawet pojedynczej
opcje dotyczące tej podsieci są zamknię- którego przeznaczone są opcje zawar- strony WWW.
te pomiędzy nawiasami klamrowymi: te w tym bloku host. W systemie Win- Receptą na ten problem jest odpo-
{ i }. Każda podsieć, która będzie obsłu- dows adres MAC karty sieciowej możemy wiednie sterowanie przepływem danych
giwana, jak również każda podsieć, do sprawdzić uruchamiając polecenie ipcfg. (traffic control). Dzięki temu możemy nie
której jest podłączony serwer DHCP, W przypadku Linuksa wystarczy urucho- tylko ograniczyć przepustowość wyko-
musi posiadać jeden blok subnet. Jest mić polecenie /sbin/ifconfig. Możemy rzystywaną przez poszczególnych użyt-
to konieczne nawet w przypadku, gdy również sprawdzić adresy MAC innych 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.
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ą-
Rysunek 3. Przykład statystyk zarządzania przepustowością łącza przez HTB
cy w jego skład program tc). Najnow-
sze wersje tego pakietu nie wymagają już
wiednie parametry łącza dla wybranych Jak widać z tego opisu, mamy możli- nakładania łatki HTB, co oszczędza nam
transmisji (np. dla pracy z SSH). wość kształtowania jedynie ruchu wycho- pracy z kompilowaniem zródeł. Użyt-
dzącego z rutera. Może się to wyda- kownicy dystrybucji Aurox mogą wyko-
Jak to działa? wać dziwne, jednak jest dosyć natural- rzystać pakiety dołączane do dystrybu-
Zacznijmy od tego, że każde łącze ma ne. Ruter otrzymujący dane z przeciążo- cji (iproute-2.4.7 z pierwszej płyty insta-
określoną przepustowość. Aącze w sieci nego łącza nie ma możliwości zmniejsze- lacyjnej).
lokalnej (często jest to Ethernet o przepu- nia tego przeciążenia za pomocą kolejki To w zasadzie wszystko, co będzie
stowości 10 lub 100 Mbit) jest zazwyczaj  może to zrobić jedynie ruter wysyłający nam potrzebne. Teraz możemy już spraw-
znacznie szybsze od łącza do Internetu dane. Powstaje zatem pytanie, jak mamy dzić, czy wszystko działa tak, jak powin-
(np. SDI o przepustowości 115Kbit lub ograniczyć przepustowość dla danych no. W tym celu korzystając z uprawnień
DSL o przepustowości 1Mbit). Nas inte- pobieranych z Internetu. administratora (czyli po zalogowaniu na
resuje, co dzieje się na styku tych łączy, Dokonamy tego w ten sposób, że konto root lub skorzystaniu z polecenia
czyli tam, gdzie znajduje się nasz ruter. nałożymy ograniczenia na interfejs sieci su -) wydajemy następujące polecenia:
Dane przesyłane przez użytkowni- lokalnej  jeśli ruter będzie wysyłał jakieś
ków przychodzą do rutera przez jeden z dane z Internetu do jednego z użytkow- tc qdisc show
interfejsów (np. ppp0 w przypadku SDI ników sieci lokalnej, to zadba, aby były tc filter show
lub eth0 w przypadku sieci lokalnej). one wysyłane z określoną szybkością. tc class show
Następnie podlegają analizie  w uprosz- W ten sam sposób możemy ogra-
czeniu, ruter ocenia, do jakiego adresata niczyć przepustowość wykorzystywa- Na tym etapie nie powinny one zwrócić
mają trafić poszczególne pakiety. Znając ną przez użytkowników do wysyłania żadnego wyniku. Jeśli pojawi się komu-
adresata, ruter wyznacza adres następ- danych do Internetu. Tym razem jednak nikat błędu zawierający tekst no such
nego rutera i interfejsu, do którego skie- ograniczenia należy założyć na interfejs device, to znaczy, że podczas kompilo-
ruje dane. Takie dane przeznaczone do zewnętrzny (np. ppp0). wania jądra pominęliśmy jakieś istot-
wysłania trafiają do kolejki wyjściowej, Do nakładania ograniczeń posłuży ne opcje. W przeciwnym przypadku
z której są usuwane, gdy tylko interfejs nam program tc (traffic control) z pakie- możemy przejść do właściwej konfigu-
zdoła je obsłużyć. tu iproute2. racji.
Może się zdarzyć, że do kolejki wyj- Warto zauważyć, że przy takim
ściowej dane trafiają tak szybko, że inter- modelu możemy kształtować ruch Dzielimy według
fejs nie nadąża z wysyłaniem. Jeśli prze- wychodzący bezpośrednio z rutera, użytkowników
ciążenie takie trwa na tyle długo, że jednak nie mamy wpływu na szybkość W rozdziale Przykład użycia opisaliśmy
liczba pakietów przeznaczonych do pobierania danych przez ruter  ruch przykładową konfigurację sieci lokalnej.
wysłania przekroczy rozmiary kolejki kształtujemy na ruterze, a dane przezna- Dla przypomnienia, mamy do czynienia
wyjściowej, to część pakietów zostanie czone dla niego nie przechodzą przez z siecią lokalną złożoną z dziesięciu kom-
zagubiona. O tym, które pakiety zostaną żaden interfejs wyjściowy. W większo- puterów. Jeden z nich pełni rolę bramki
zagubione, decyduje algorytm obowiązu- ści przypadków nie jest to jednak niedo- do Internetu. Sieć lokalna (Ethernet) ma
jący w danej kolejce. godnością. Gdybyśmy jednak na naszym przepustowość 10Mbit, natomiast łącze
43
www.lpmagazine.org
dla początkujących
w tym przypadku zastosować. Omówimy cym z sieci lokalnej. W naszym przypad-
Algorytmy kolejkowania
je teraz krok po kroku. ku wybieramy dyscyplinę HTB. Utwo-
O doborze pakietów do wysłania decy-
Zaczynamy od zdefiniowania zmien- rzonemu obiektowi nadajemy uchwyt
duje algorytm przypisany do danej kolejki
nych, dzięki czemu nasz skrypt będzie (handle) 1:0.
wyjściowej. Domyślnie jest to najprostszy
pózniej łatwiejszy do modyfikowania. Następnie w utworzonym obiek-
algorytm FIFO (First In First Out). Przy
W sekcji 1) określamy następujące zmien- cie tworzymy klasę odpowiedzialną za
jego wykorzystaniu pakiety są wysyła-
ne: przypisanie przepustowości dla całego
ne w takiej kolejności, w jakiej pojawiły
łącza do sieci lokalnej. Odpowiada za to
się w kolejce. To właśnie dlatego użyt-
kownik uruchamiający duże ilości obcią- " CALE  przepustowość całego łącza instrukcja umieszczona w sekcji 5). Użyta
żających łącze programów potrafi dopro- sieci lokalnej; tu wartość zmiennej CALE nie powinna
wadzić do sytuacji, gdy korzystanie
" SDI  przepustowość łącza do Inter- być większa od rzeczywistej przepusto-
z sieci jest dla innych bardzo trudne.
netu; wości sieci.
Z tego powodu stworzono inne algoryt-
" ETH_CEIL  maksymalna przepusto- W sekcji 6) rozdzielamy naszą klasę
my, z których możemy korzystać. Należą
wość możliwa do wykorzystania na na dwie podklasy. Jedna z nich (o rate
do nich między innymi TBF (Token Bucket
transmisję z rutera do komputerów i ceil ustawionym na wartość $SDI)
Filter), PRIO (Simple Priority Queueing)
w sieci lokalnej; będzie służyć do kolejkowania pakie-
czy SFQ (Stochastic Fairness Queueing
" USER  przepustowość gwarantowa- tów pochodzących z Internetu. Druga
 sprawiedliwe kolejkowanie). W dalszej
na każdemu z użytkowników (nie natomiast pozwoli na przesyłanie pakie-
części będziemy korzystać tylko ze spra-
może być większa niż wartość SDI tów pochodzących bezpośrednio z rutera
wiedliwego kolejkowania SFQ.
Kolejka nie musi wykorzystywać podzielona przez liczbę użytkowni- do komputerów w sieci lokalnej z maksy-
tylko pojedynczego algorytmu. Może ona
ków); malną szybkością.
wykorzystywać znacznie bardziej złożo-
" USER_CEIL  maksymalna przepusto- Szereg poleceń zawartych w sekcji
ny algorytm, podzielony na klasy, z któ-
wość, którą może wykorzystać użyt- 7) przydziela poszczególnym użytkow-
rych każda ma przyporządkowany inny
kownik, jeśli nie jest ona zajmowana nikom fragmenty pasma przeznaczo-
algorytm kolejkowania. O tym, które
przez innych użytkowników; nego do ściągania danych z Internetu.
pakiety przejdą do których klas, decydu-
" INT_LOC  nazwa interfejsu rutera, Warto zauważyć, że pasmo jest dzielo-
ją filtry. W ten sposób można rozdzielać
do którego podłączona jest sieć lokal- ne na liczbę użytkowników, a nie kom-
ruch różnego rodzaju, jak również przy-
na. puterów. Opcją rate przydzielamy im
porządkowywać wybranym pakietom
pasmo gwarantowane. Należy pamiętać,
wyższy priorytet. Do takich złożonych
Następnie w sekcji 2) określamy zmienne, aby suma wartości opcji rate wykorzysta-
algorytmów kolejkowania należą między
innymi CBQ (Class Based Queueing) w których przechowywane są numery IP nych w tej sekcji nie przekroczyła warto-
i HTB (Hierarchical Token Bucket). Ponie- wszystkich komputerów znajdujących się ści rate ustalonej dla kolejki nadrzędnej
waż HTB jest szybsze i dokładniejsze niż
w sieci lokalnej. Zmienna IP_SERWER w sekcji 6). To samo dotyczy opcji ceil. Jeśli
CBQ, właśnie z tego algorytmu będzie-
przechowuje numer IP rutera. Pozostałe nie chcemy iść na rękę użytkownikom,
my korzystać.
zmienne to numery IP komputerów nale- a jedynie przydzielić im konkretne pasmo
Do ustawiania algorytmu kolejkowa-
żących do użytkowników. Nazwy zmien- (czyli jeśli chcemy, aby gwarantowane
nia (to trochę nieszczęśliwe tłumaczenie
nych można dobrać według własnych pasmo było zarazem maksymalnym), to
angielskiego queueing discipline  dalej
upodobań. W tym przypadku przyję- możemy zmiennej USER_CEIL przypisać
będziemy zamiennie używać zwrotu dys-
to zasadę, że nazwa składa się z ciągu tę samą wartość, co zmiennej USER.
cyplina kolejkowania) służy nam polece-
IP_USER uzupełnionego o numer użyt- Czas na ustawienie filtrów, które będą
nie tc qdisc add z podanymi parametra-
mi. Analogicznie do tworzenia poszcze- kownika (np. IP_USER2). Jeśli użyt- odpowiadać za kierowanie pakietów do
gólnych klas służy polecenie tc class kownik posiada więcej komputerów, odpowiednich kolejek. Zaczynamy od
add, a do tworzenia filtrów tc filter
to dodatkowo po znaku podkreślenia zapewnienia, że pakiety pochodzące
add. Przykłady tych poleceń i ich skład-
jest podany numer kolejny komputera z rutera nie będą podlegały ogranicze-
nia opisane są w artykule w praktycznych
należącego do tego użytkownika (np.
przykładach.
IP_USER3_2 to drugi komputer użytkow-
nika numer 3).
do Internetu to SDI (o przepustowości Polecenie zawarte w sekcji 3) powo-
115Kbit). Dwóch użytkowników posiada duje, że usunięte są wszystkie kolej-
więcej niż jeden komputer  jeden z nich ki i klasy, które mogły być zdefiniowa-
posiada trzy, a drugi dwa komputery. ne na interfejsie $INT_LOC. Przy okazji
Aby pozostali użytkownicy sieci nie byli warto zaznaczyć, że o ile przy definiowa-
poszkodowani, łącze dzielimy pomiędzy niu zmiennych wykorzystywaliśmy same
użytkowników, a nie komputery (czyli nazwy, to przy wstawianiu ich wartości w
trzy komputery jednego użytkownika poleceniach nazwy zmiennych poprze-
Rysunek 4. Po skonfigurowaniu
otrzymają razem taką samą przepusto- dzamy znakiem $.
zarządzania przepustowością możemy
wość, jak jeden komputer innego). W sekcji 4) określamy, jaka dyscy-
spokojnie czytać strony WWW nawet, gdy
Na Listingu 2 znajduje się jedno plina kolejkowania będzie wykorzysta-
kolega uparcie korzysta z KaZaA
z możliwych rozwiązań, które można na do zarządzania ruchem wychodzą-
44
czerwiec 2004
dhcp i htb dla początkujących
rujemy je do odpowiednich kolejek. Zaj-
Listing 2. Przykładowa zawartość pliku rc.htb dla podziału pasma według użytkowników
mują się tym polecenia zawarte w sekcji
9). Warto zwrócić uwagę, że zgodnie
# 1) określamy przepustowości z wcześniejszymi założeniami, pakiety
CALE=8700kbit pobierane przez komputery należące do
SDI=110kbit jednego użytkownika (np. IP_USER1_1
ETH_CEIL=8000kbit i IP_USER1_2) kierowane są do tej samej
USER=16kbit kolejki. Dzięki temu użytkownik nie
USER_CEIL=100kbit otrzymuje dodatkowego pasma tylko
INT_LOC=eth0 dlatego, że posiada więcej komputerów.
# 2) wskazujemy adresy komputerów Wykorzystana w tych liniach opcja pre-
IP_SERWER=192.168.100.1 ference 2 sprawia, że linie te są rozpa-
IP_USER1_1=192.168.100.2 trywane dopiero po linii umieszczonej
IP_USER1_2=192.168.100.3 w sekcji 8). Gdyby było inaczej, to pod-
IP_USER2=192.168.100.6 czas pobierania przez użytkownika
IP_USER3_1=192.168.100.8 danych z rutera (a nie z Internetu) trans-
IP_USER4=192.168.100.15 misja odbywałaby się z szybkością prze-
IP_USER5=192.168.100.50 znaczoną dla pobierania danych z Inter-
IP_USER3_2=192.168.100.100 netu. Ponieważ dysponujemy siecią
IP_USER6=192.168.100.200 o przepustowości 10Mbit, nie miałoby to
IP_USER1_3=192.168.100.205 większego sensu.
# 3) usuwamy wszelkie ustawienia qdisc Aby użytkownicy podczas pobie-
tc qdisc del root dev $INT_LOC rania danych z rutera wzajemnie sobie
# 4) dodajemy obiekt qdisc - htb nie przeszkadzali, to do klasy 1:3 opisa-
tc qdisc add dev $INT_LOC root handle 1:0 htb nej w sekcji 6) dodamy jeszcze dyscypli-
# 5) tworzymy klasę odpowiadającą całej dostępnej przepustowości sieci lokalnej nę kolejkowania SFQ (odpowiednia linia
tc class add dev $INT_LOC parent 1:0 classid 1:1 htb rate $CALE ceil $CALE znajduje się w sekcji 10)). W zasadzie
# 6) wydzielamy klasy dla transmisji danych z Internetu i z serwera jest wątpliwe, aby w sieci lokalnej ktoś
tc class add dev $INT_LOC parent 1:1 classid 1:2 htb rate $SDI ceil $SDI tak mocno  przytkał łącze, żeby było to
tc class add dev $INT_LOC parent 1:1 classid 1:3 htb rate $ETH_CEIL ceil $ETH_CEIL konieczne, jednak dodatkowa pojedyn-
# 7) rozdzielamy przepustowość pomiędzy poszczególnych użytkowników cza linia w skrypcie nie powinna nam
tc class add dev $INT_LOC parent 1:2 classid 1:4 htb rate $USER ceil $USER_CEIL zaszkodzić.
tc class add dev $INT_LOC parent 1:2 classid 1:5 htb rate $USER ceil $USER_CEIL Analogicznie postępujemy w sekcji
... 11), gdzie przypisujemy dyscyplinę kolej-
# 8) ustawiamy filtr oddzielający transmisję z serwera kowania SFQ do każdej z kolejek przy-
S
tc filter add dev $INT_LOC protocol ip preference 1 parent 1:0 u32 match ip src dzielonych poszczególnym użytkowni-
$IP_SERWER flowid 1:3 kom.
# 9) ustawiamy filtry oddzielające transmisję do poszczególnych komputerów w sieciS Na tym kończy się działanie skryp-
lokalnej tu. Możemy go umieścić na przykład w
S
tc filter add dev $INT_LOC protocol ip preference 2 parent 1:0 u32 match ip dst pliku /etc/rc.d/init.d/rc.htb. Plikowi temu
$IP_USER1_1 flowid 1:4 należy nadać prawa wykonywania (po-
S
tc filter add dev $INT_LOC protocol ip preference 2 parent 1:0 u32 match ip dst leceniem chmod u+x /etc/rc.d/init.d/
$IP_USER1_2 flowid 1:4 rc.htb), a następnie jego wywołanie
... możemy umieścić w jednym ze skryp-
# 10) ustawiamy sprawiedliwe dzielenie łącza z serwera tów startowych. Ważne jest, aby skrypt
tc qdisc add dev $INT_LOC parent 1:3 handle 3:0 sfq perturb 10 ten był wykonywany dopiero po podnie-
# 11) ustawiamy sprawiedliwe dzielenie łączy poszczególnych użytkowników sieniu wszystkich interfejsów.
tc qdisc add dev $INT_LOC parent 1:4 handle 4:0 sfq perturb 10
tc qdisc add dev $INT_LOC parent 1:5 handle 5:0 sfq perturb 10 Równi i równiejsi
... No dobrze, mamy sprawiedliwy podział
łącza, ale jedna z użytkowniczek sieci
niom nakładanym na łącze internetowe. niższy numer, tym wcześniej będzie roz- tak ładnie się do nas uśmiecha, że nie
Uzyskujemy to dzięki poleceniu zawarte- patrzony filtr. Do dopasowania pakietów mamy sumienia traktować jej na równi
mu w sekcji 8). Warto zwrócić uwagę na wykorzystano filtr u32. Numer kolejki, z pozostałymi. Czy można w jakiś sposób
opcję preference 1, dzięki której reguła do której ma być skierowany dopasowa- uprzyjemnić jej korzystanie z sieci? Oczy-
ta zostanie rozpatrzona przed umiesz- ny pakiet, określony jest opcją flowid. wiście.
czonymi w kolejnych liniach (posiadają- W analogiczny sposób filtrujemy Narzucającą się od razu myślą jest
cymi opcję preference 2). Dzieje się tak, pakiety przeznaczone dla poszczegól- zwiększenie wartości opcji rate i ceil
gdyż opcja ta określa priorytet filtru  im nych komputerów w sieci lokalnej i kie- w jej kolejce. Dzięki temu miałaby do
45
www.lpmagazine.org
dla początkujących
(z góry ograniczoną tylko przepustowo-
Listing 3. Przykładowa zawartość pliku rc.htb dla podziału pasma według usług
ścią SDI), natomiast drugiej zagwarantu-
jemy taką samą przepustowość (z tą róż-
# 1) określamy przepustowości i interfejsy nicą, że transfer FTP nie będzie większy
SDI=110kbit niż te gwarantowane 30kbit na sekundę).
WWW=30kbit Wszystkie pozostałe transmisje wycho-
FTP=30kbit dzące (a więc również i ruch wychodzą-
INNE=20kbit cy od użytkowników sieci lokalnej) będą
INNE_CEIL=40kbit miały zagwarantowane 20kbit na sekun-
INT_INT=ppp0 dę z ograniczeniem do maksymalnie
# 2) usuwamy wszelkie ustawienia qdisc 40kbit na sekundę. Dzięki temu wszelkie
tc qdisc del root dev $INT_INT programy typu KaZaA nie będą miały
# 3) dodajemy obiekt qdisc - htb szans zapchać nam łącza wychodzącego.
tc qdisc add dev $INT_INT root handle 1:0 htb default 4 Na Listingu 3 podane jest przykłado-
# 4) tworzymy klasę odpowiadającą całej dostępnej przepustowości sieci lokalnej we rozwiązanie tego problemu. Zawar-
tc class add dev $INT_INT parent 1:0 classid 1:1 htb rate $SDI ceil $SDI tość możemy pózniej dopisać do pliku
# 5) wydzielamy klasy dla transmisji danych z poszczególnych portów rc.htb stworzonego w poprzednich roz-
tc class add dev $INT_INT parent 1:1 classid 1:2 htb rate $WWW ceil $SDI działach, dzięki czemu jeden skrypt
tc class add dev $INT_INT parent 1:1 classid 1:3 htb rate $FTP ceil $FTP będzie odpowiadał za kształtowa-
tc class add dev $INT_INT parent 1:1 classid 1:4 htb rate $INNE ceil $INNE_CEIL nie zarówno ruchu wychodzącego, jak
# 6) ustawiamy filtry oddzielające transmisję z poszczególnych portów do Internetu i przychodzącego.
S
tc filter add dev $INT_INT protocol ip parent 1:0 u32 match ip sport 80 0xffff Zaczynamy od zdefiniowania zmien-
flowid 1:2 nych zawierających wartości poszczegól-
S
tc filter add dev $INT_INT protocol ip parent 1:0 u32 match ip sport 20 0xffff nych przepustowości. Nazwy SDI, WWW,
flowid 1:3 FTP i INNE mówią same za siebie. Zmien-
# 7) ustawiamy sprawiedliwe dzielenie przepustowości poszczególnych usług na INNE_CEIL odpowiada za górne ogra-
tc qdisc add dev $INT_INT parent 1:2 handle 2:0 sfq perturb 10 niczenie pasma dla pozostałego (poza
tc qdisc add dev $INT_INT parent 1:3 handle 3:0 sfq perturb 10 WWW i FTP) ruchu wychodzącego.
tc qdisc add dev $INT_INT parent 1:4 handle 4:0 sfq perturb 10 W zmiennej INT_INT zawarta jest nazwa
interfejsu rutera, przez który podłączony
jest do Internetu.
dyspozycji większą gwarantowaną prze- szemy prio 3 (to znajomy, który nadep- W sekcji 2) kasujemy wszystkie usta-
pustowość, jak również większe łącze nął nam na odcisk). W takim przypad- wienia dotyczące kształtowania ruchu na
do wykorzystania. To jednak wiąże się ku, jeśli nasza koleżanka będzie ściąga- interfejsie $INT_INT. Nie należy się oba-
z koniecznością dokonania kolejnych ła jakiś duży plik z szybkiego serwera, wiać wstawienia tej linii w skrypcie po
przeliczeń i dostosowania wartości w a dostępne będzie jeszcze wolne pasmo, stworzeniu regułek dla innego interfej-
pozostałych kolejkach. to zostanie ono przydzielone właśnie jej. su. Polecenie to kasuje ustawienia tylko
Możemy rozwiązać to inaczej. Dopiero w następnej kolejności będą i wyłącznie na wskazanym interfejsie.
Zwykle jest tak, że nie wszyscy użyt- obsłużeni pozostali użytkownicy, a na Polecenie zawarte w sekcji 3) powo-
kownicy wykorzystują w całości przy- samym końcu nasz niegrzeczny kolega duje ustawienie HTB jako dyscypli-
dzielone im pasmo. W takim przypadku z kolejki 1:7. ny kolejkowania dla ruchu wychodzą-
jest ono rozdzielane po równo pomiędzy cego do Internetu. Warto zauważyć, że
pozostałych, potrzebujących użytkowni- Dzielimy według usług ponownie użyliśmy uchwytu (handle)
ków (aż do wartości opcji ceil). Możemy Załóżmy, że nasz serwer udostępnia 1:0. Jest to możliwe, gdyż uchwyty są
sprawić, że dodatkowe pasmo będzie jakieś usługi. Może to być serwer WWW, numerowane osobno dla każdego inter-
w pierwszej kolejności przydzielane FTP, czy na przykład SSH. Zapewniliśmy fejsu. Tak więc uchwyt 1:0 na interfejsie
wskazanej osobie. Wystarczy w sekcji 7) już komfort korzystania z sieci naszym eth0 nie ma nic wspólnego z uchwytem
w każdej linii dopisać opcję prio LICZBA, użytkownikom lokalnym, ale co z użyt- 1:0 na interfejsie ppp0.
gdzie LICZBA określa priorytet danego kownikami Internetu? Również i o nich Dodatkową ciekawostką jest użycie
użytkownika. Im LICZBA mniejsza, tym możemy zadbać. Tym razem będziemy w tej sekcji opcji default. Wskazuje ona
większy priorytet  użytkownik o naj- pracować na interfejsie zewnętrznym (w klasę domyślną, czyli taką, do której kie-
wyższym priorytecie będzie miał pierw- naszym przykładzie jest to ppp0), gdyż rowany będzie ruch nie obsłużony przez
szeństwo podczas rozdzielania dodatko- chcemy kształtować ruch wychodzący filtry  jeśli jakieś pakiety nie zostaną
wego pasma. z serwera do Internetu. dopasowane w filtrach, to trafią wła-
Przypuśćmy, że w liniach z opcjami W naszym przykładzie dla uprosz- śnie do wskazanej tu klasy. Należy jesz-
classid o wartościach 1:4, 1:5, 1:6 i 1:8 czenia założymy, że na serwerze udo- cze wyjaśnić, w jaki sposób wskazywa-
ustawimy opcję prio 2. W linii z classid stępniamy tylko usługi WWW i FTP. na jest klasa domyślna. Użyliśmy tutaj
1:9 damy prio 1 (to nasza uśmiechnięta Pierwszej z nich przypiszemy przepusto- opcji default 4. Ponieważ została ona
koleżanka), a w linii z classid 1:7 dopi- wość gwarantowaną 30kbit na sekundę użyta w obiekcie o uchwycie 1:0, więc
46
czerwiec 2004
dhcp i htb dla początkujących
Instalacja ny plik rchtb_tc dostarczony w pliku
Listing 4. Zawartość przykładowego
Po pobraniu pliku na dysk należy rozpa- rchtb-0.3.3.tar.gz. Możemy go użyć
pliku /etc/rchtb/htbusers.conf
kować go poleceniem tar xvzf rchtb- jako zamiennika programu tc pocho-
NewGroup user1 0.3.3.tar.gz. W wyniku zostanie utwo- dzącego z pakietu iproute2. Jest to
192.168.100.2 user1_1 rzony katalog rchtb/, a w nim umiesz- szczególnie użyteczne, gdy posiadamy
192.168.100.3 user1_2 czona zawartość archiwum. Na początku starszą wersję pakietu iproute2, nie
192.168.100.205 user1_3 należy zapoznać się z plikami README wspierającą HTB. Program rchtb_tc
EndGroup i INSTALL, w których opisany jest sposób został skompilowany z obsługą HTB,
192.168.100.6 user2 wykorzystania skryptu oraz możliwe pro- ESFQ oraz WRR. Najlepiej wybrać zale-
NewGroup user3 blemy. caną lokalizację, czyli katalog /usr/
192.168.100.8 user3_1 Najpierw należy zadbać, aby w sys- sbin/.
192.168.100.100 user3_2 temie znajdowały się następujące narzę- Kolejną decyzją, którą musimy
EndGroup dzia: tree, grep, cut, dialog, ls, where podjąć, to wskazanie interfejsu siecio-
192.168.100.15 user4 is, cat (w przypadku Auroksa 9.3 znaj- wego wykorzystywanego do łączenia
192.168.100.50 user5 dują się one w pakietach tree-1.4b3- z Internetem (w naszym przykładzie
192.168.100.200 user6 1.i386.rpm, grep-2.5.1-17.4.i386.rpm, jest to interfejs ppp0). Jeśli na spisie
dialog-0.9b-20031002.1.i386.rpm, coreu- nie ma jakiegoś interfejsu, należy
tils-5.0-24.i386.rpm, util-linux-2.11y- opuścić program (dwukrotnie wci-
klasą domyślną będzie klasa o uchwy- 29.i386.rpm, znajdujących się na pierw- skając klawisz [Esc]), a następnie
cie 1:4 (numer powstaje przez złożenie szej, drugiej i czwartej płytce instalacyj- podnieść interfejs poleceniem ifup
uchwytu obiektu i numeru podanego w nej). Jeśli któregoś z tych narzędzi bra- nazwa_interfejsu. Po wykonaniu tej
opcji default). Klasa ta zdefiniowana jest kuje, to należy doinstalować odpowied- czynności można od nowa uruchomić
w sekcji 5). ni pakiet. skrypt.
Sekcja 4) to znane nam już polecenie W analogiczny sposób wskazujemy
tworzące główną klasę odpowiedzialną Wskazywanie użytkowników interfejs służący do połączenia z siecią
za przypisanie przepustowości gwaran- sieci lokalną. W naszym przykładzie jest to
towanej i maksymalnej całego łącza do Następnym krokiem jest przygotowanie eth0.
Internetu. spisu komputerów, pomiędzy które ma Czwarte pytanie dotyczy przepu-
Następnie w sekcji 5) tworzymy pod- być dzielone pasmo. Umieszczamy go stowości naszego łącza do Interne-
klasy odpowiadające za kolejkowanie w pliku /etc/rchtb/htbusers.conf (w tym tu. Mamy do wyboru kilka standardo-
ruchu odpowiednich usług. celu powinniśmy pracować z uprawnie- wych pozycji, między innymi SDI (które
O tym, jakie pakiety znajdą się w niami administratora). Jego zawartość wybralibyśmy w naszym przykładzie),
odpowiednich kolejkach, decydują filtry odpowiadająca naszemu przykładowi kablówkę (w wersji 128/128), Neo-
zdefiniowane w sekcji 6). Objaśnienie przedstawiona jest na Listingu 4. Jak stradę+, jak również DSL 1Mbit. Jeśli
użytej tu konstrukcji filtru znajduje się widać, jego składnia jest bardzo prosta. żaden z proponowanych wyborów nam
na końcu rozdziału Równi i równiej- Pojedynczy komputer opisywany jest nie odpowiada, możemy wskazać pozy-
si. Ruch wychodzący z portu numer 80 jedną linią składającą się z adresu IP cję Inne łącze, po czym zostaniemy
(a więc WWW ) kierowany jest do klasy i odpowiadającej mu nazwy symbolicz- poproszeni o podanie prędkości down-
1:2, natomiast wychodzący z portu 20 nej. Nazwa ta może być taka sama, jak loadu i uploadu w kilobitach na sekun-
(FTP) do klasy 1:3. Nie ma filtru kieru- w pliku /etc/hosts. Jeśli kilka kompute- dę.
jącego pakiety do klasy 1:4. Za to wła- rów ma korzystać ze wspólnego pasma, Analogicznie określamy przepu-
śnie odpowiada opcja default 4 zawar- to należy je przydzielić do jednej grupy. stowość sieci lokalnej, tym razem
ta w sekcji 3). Robimy to umieszczając ich wpisy w megabitach na sekundę. Do
Sekcja 7) kończy skrypt ustawiając pomiędzy liniami NewGroup NazwaGru- wyboru mamy Ethernet (10 Mbit), Fast
na poszczególnych klasach sprawiedliwy py i EndGroup. Pamiętajmy, aby w pliku Ethernet (100 Mbit) oraz Gigabit Ether-
algorytm kolejkowania SFQ. /etc/rchtb/htbusers.conf nie umieszczać net (1000 Mbit). Oprócz tego możemy
wpisu odnoszącego się do samego ser- samodzielnie określić przepusto-
Konfigurator podziału wera, na którym będzie realizowane wość wybierając pozycję Inna prze-
pasma dzielenie pasma. pusowość W opisywanym przykładzie
Jeśli nie mamy ochoty na własnoręczne Po stworzeniu odpowiednich wpisów właściwym wyborem jest Ethernet 10
wyliczenia i wpisywanie kolejnych regu- w pliku /etc/rchtb/htbusers.conf pozosta- Mbit.
łek, możemy skorzystać z pomocy konfi- je nam uruchomienie właściwego skryp- Następnie otrzymujemy informa-
guratora. Michał Aukaszek napisał bardzo tu konfiguratora. Dokonujemy tego prze- cję, jakie wartości parametrów przyję-
użyteczny skrypt rchtb, który można zna- chodząc do katalogu rchtb/, w którym to dla poszczególnych interfejsów. Warto
lezć na stronie http://www.rc.htb.prv.pl/. wydajemy polecenie ./rchtb_configure. zauważyć, że w przypadku łącza interne-
W chwili pisania artykułu serwis wciąż towego wartości uploadu i downloadu
jeszcze odczuwał skutki awarii, lecz sam Parametry łączy zostały automatycznie nieco zmniejszone
skrypt (w najbardziej aktualnej wersji Pierwsze pytanie dotyczy katalo- w porównaniu do podanych przez nas
0.3.3) został udostępniony do pobrania. gu, do którego ma zostać skopiowa- parametrów łącza.
47
www.lpmagazine.org
dla początkujących
jemy też, czy skrypt ma dodać osobną Zakończenie
klasę na użytek serwera pośredniczą- W ten sposób dotarliśmy do końca.
cego Squid. W naszym przykładzie Mam nadzieję, że korzystając z powyż-
nie stosujemy Squida, więc wybieramy szych wskazówek, każdy Czytelnik
opcję brak. będzie w stanie skonfigurować u siebie
podstawowy serwer DHCP oraz kształ-
Ruch wychodzący tować ruch sieciowy według swoich
Czas określić przepustowość gwa- potrzeb. Gorąco zachęcam do lektury
rantowaną dla klientów chcących materiałów dostępnych w sieci i głęb-
połączyć się z naszym serwerem z szego poznawania przedstawionych tu
Rysunek 5. Poprawne wprowadzenie
Internetu. Wartość tą podajemy jako pro- narzędzi.
danych o komputerach w sieci jest bardzo
cent rozmiaru pasma wychodzącego.
ważne
Domyślnie jest to 30% . Jeśli nie
zamierzamy uruchamiać na serwe-
W Internecie:
Klasy dla użytkowników rze żadnych usług (np. WWW, FTP lub
" DHCP mini-HOWTO:
W kolejnym oknie zapoznamy się z gra- innych), to możemy wpisać 0. W takim
http://www.tldp.org/HOWTO/DHCP/
ficznym przedstawieniem zawartości przypadku klienci z zewnątrz nie
index.html
pliku /etc/rchtb/htbusers.conf. Jeśli coś będą mieli gwarantowanej przepusto-
" Konfiguracja demona DHCP:
się nie zgadza, powinniśmy przerwać wości.
http://www.baseciq.org/linux/dhcp/
działanie skryptu (podwójnym wciśnię- Podobnie jak w przypadku ruchu
" DHCP + ARP:
ciem klawisza [Esc]) a następnie popra- przychodzącego, tworzona jest klasa
http://linux.insurgents.net/artykuly/
wić wpisy w pliku. priorytetowa. Możemy podać jeden
dhcp_arp.htm
Następnie należy wybrać algorytm, numer portu TCP, do którego ruch będzie
" DHCP  opis protokołu i konfiguracja
który będzie stosowany do zapewnie- do niej kierowany. Domyślnie jest to port
serwera pod Linuksem:
nia, że użytkownicy nie  przytkają SSH, o numerze 22. http://www.pckurier.pl/archiwum/
art0.asp?ID=707
sobie przydzielonego im pasma urucha-
" Strona domowa HTB:
miając np. programy P2P. Do wyboru Wykorzystanie skryptu
http://luxik.cdi.cz/~devik/qos/htb/
mamy SFQ i ESFQ. Ze względu na to, Na tym kończą się pytania zadawa-
" Podręcznik użytkownika HTB:
że zastosowanie ESFQ wymaga nakła- ne przez konfigurator. W wyniku jego
http://luxik.cdi.cz/~devik/qos/htb/
dania łaty na jądro, zastosujemy SFQ, działania w katalogu rchtb/ready/ zosta-
manual/userg.htm
które jest domyślnie wspierane w obec- ły utworzone dwa pliki: rc.htb oraz
" Opis teorii działania HTB:
nych jądrach. fwmarks.htb. Pierwszy z nich zawie-
http://luxik.cdi.cz/~devik/qos/htb/
Pozostaje nam wskazanie programu ra skrypt odpowiadający za ustawie-
manual/theory.htm
tc, który pozwala na definiowanie reguł nie podziału pasma według naszych
" Kilka interesujących dokumentów
kontroli ruchu. Możemy spokojnie sko- wytycznych. Można umieścić go np. w
o kształtowaniu ruchu:
rzystać z domyślnego rchtb_tc, dostarcza- katalogu /etc/rc.d/init.d/ (poleceniem cp http://www.docum.org/
" Kształtowanie Ruchu
nego w pakiecie z rchtb. rc.htb /etc/rc.d/init.d/) lub w innym
i Zaawansowany Routing HOWTO:
Ponieważ skrypt tworzy klasę prio- katalogu, gdzie przechowujemy skrypty
http://lukasz.bromirski.net/docs/
rytetową, do której skierowane zosta- startowe. Dzielenie pasma uruchamiamy
translations/lartc-pl.html
ną wybrane pakiety (te z TOS ustawio- wydając polecenie /etc/rc.d/init.d/
" Zaawansowany routing IP w Linuksie:
nym na Minimal Delay) i cały ruch ICMP, rc.htb start, natomiast zatrzymu-
http://echelon.pl/pubs/NET4.pdf
możemy dodatkowo określić jeden port jemy poleceniem /etc/rc.d/init.d/
" Sterowanie przepływem danych w
TCP, z którego ruch trafi do tej klasy. rc.htb stop. Wywołanie tego skryptu
Linuksie:
Domyślnie jest to port 22 wykorzystywa- można dodać do skryptów startowych.
http://echelon.pl/pubs/NET4_tc.pdf
ny przez usługę SSH -- dzięki temu nawet Należy jednak pamiętać, aby urucha-
" HTB  strażnik trafficu:
przy znacznym obciążeniu łącza korzy- miany był on dopiero w momencie,
http://linio.terramail.pl/htb.html
stanie z SSH nadal powinno być kom- gdy wszystkie interfejsy sieciowe są już " Kompilacja kernela 2.4.24 z iptables
i iproute2 + HTB:
fortowe. postawione.
http://newbie.linux.pl/wydruk.php?
W kolejnym oknie wybieramy mini- Drugi plik, czyli fwmarks.htb, zawie-
wydruk=170&show=artykul
malną wartość, jaką mają być znakowane ra regułki iptables służące do znakowa-
" HTB w Debianie "Woody"
pakiety użytkowników. Jeśli nie stosuje- nia poszczególnych pakietów. Regułki
z Neostradą+:
my jeszcze żadnego znakowania na zapo- te są konieczne do poprawnego funk-
http://www.debianusers.pl/article.
rze sieciowej (firewall), to możemy pozo- cjonowania niektórych filtrów zdefi-
php?aid=54&top10=1
stawić domyślną wartość. niowanych w pliku rc.htb. Również
" Strona domowa skryptu rc.htb:
Możemy teraz zapoznać się z dotych- jego można skopiować do katalogu
http://www.rc.htb.prv.pl/
czasowymi wyliczeniami. Dowiemy się, /etc/rc.d/init.d/ i uruchamiać polece-
" Skrypty HTB + iptables:
na ile klas zostanie podzielone pasmo, niem /etc/rc.d/init.d/fwmarks.htb
http://endemic.org/htb/
oraz jaką gwarantowaną przepustowość start (do zatrzymania służy parametr
ma każda klasa. Na tym etapie wskazu- stop).
48
czerwiec 2004


Wyszukiwarka

Podobne podstrony:
zadanie z 2004 06
2004 06 01
2004 11 Porównanie serwerów relacyjnych baz danych Open Source [Bazy Danych]
Serwer SQL 2008 Administracja i programowanie
FINAL EXAM ADMINISTRACJA I ROK 22 06 2013
06 Zaawansowane Zabiegi Resuscytacyjne Algorytm postępowania w tachykardii (z tętnem) (Tachycardia
2004 01 Praca z OpenSSH [Administracja]

więcej podobnych podstron