Sieci komputerowe
Sieci komputerowe: część czwarta
46
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
47
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
Zostań administratorem
sieci komputerowej
Część czwarta (4/9): Adresy,
maski i routowanie w systemie Linux
W poprzedniej części kursu przedstawiona została metoda podziału połączenia internetowego.
Zastosowaliśmy w tym celu funkcję translacji adresów (NAT) udostępnianą przez urządzenie dedykowane
APPro 2405. W tej części cyklu zajmiemy się opisem procesu trasowania (routingu) pakietów oraz
konfiguracją komputera z zainstalowanym systemem Linux jako routera. Zapraszam do lektury!
Rafał Kułaga
W
spółczesne sieci komputerowe wy-
korzystywane m.in. w środowiskach
korporacyjnych charakteryzują się
złożoną, wielopoziomową strukturą.
Liczba węzłów w takich sieciach może sięgać nawet kil-
kunastu tysięcy, rozlokowanych w różnych krajach i po-
łączonych w tzw. intranet – korporacyjną sieć kompu-
terową, pozwalającą na łatwy dostęp do zasobów infor-
macyjno-sprzętowych. Czytelnik z pewnością ma świa-
domość, iż budowa oraz zarządzanie taką infrastrukturą
stanowi nie lada wyzwanie nawet dla doświadczonych
ekspertów sieciowych.
Informacje zawarte w trzech pierwszych częściach
cyklu pozwalają na przystąpienie do budowy niewiel-
kiej sieci lokalnej, obsługującej od kilkunastu do kil-
kudziesięciu komputerów. Z racji niewielkiego rozmia-
ru, nie było potrzeby wprowadzania podziału na podsie-
ci, zaś konfiguracja połączeń z innymi sieciami ograni-
czała się do wykorzystania techniki NAT (Network Ad-
dress Translation) w celu podziału połączenia z interne-
tem, dostępnego za pośrednictwem interfejsu w standar-
dzie Ethernet.
Jednym z najważniejszych zadań związanych z bu-
dową i administracją złożonymi sieciami komputero-
wymi jest konfiguracja trasowania pakietów (routingu).
Pomimo zastosowania niekiedy bardzo złożonych me-
tod i protokołów, jest to proces, którego działanie jest
zrozumiałe niemalże intuicyjnie. W trakcie lektury te-
go artykułu dowiesz się, w jaki sposób możliwe jest do-
starczenie pakietu do dowolnego komputera podłączo-
nego do internetu jedynie na podstawie znajomości je-
go adresu IP. Szczegółowo omówimy również znacze-
nie masek podsieci oraz ich zastosowanie w celu wy-
dzielenia podsieci, pozwalających na zwiększenie bez-
pieczeństwa i wydajności tworzonego przez nas roz-
wiązania.
System Linux słynie z dostępności doskonałych na-
rzędzi, służących do konfiguracji funkcji związanych
z trasowaniem. Część z Czytelników z pewnością ucie-
szy wiadomość, iż dostępne są specjalizowane dystrybu-
cje, niejednokrotnie przewyższających funkcjonalnością
tańszy sprzęt sieciowy. Decydując się na wykorzystanie
komputera jako routera, musimy jednak pamiętać o ogra-
niczeniach wydajnościowych i problemach związanych
Sieci komputerowe
Sieci komputerowe: część czwarta
46
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
47
www.lpmagazine.org
z bezpieczeństwem – w artykule zajmiemy
się również tymi zagadnieniami.
Informacje zawarte w tej części kursu
pozwolą Czytelnikowi na lepsze zrozumie-
nie działania sieci komputerowych, realiza-
cji zadań warstwy sieciowej modelu OSI oraz
przeprowadzenie konfiguracji statycznych
i dynamicznych metod routingu w systemie
Linux. Należy jednak pamiętać, iż nie są to
kompletne rozwiązania, gotowe do zastoso-
wania na sprzęcie działającym w sieciach fir-
mowych. Bez odpowiedniego wzmocnienia
bezpieczeństwa systemu, nasz router stałby
się bowiem łakomym kąskiem dla osób o nie-
cnych zamiarach. Tematem zwiększania bez-
pieczeństwa sieci komputerowych oraz budo-
wy firewalli zajmiemy się szczegółowo w na-
stępnej części cyklu.
Adresy IP
i maski podsieci a routowanie
Do tej pory, przypisując adresy IP kompute-
rom w naszej sieci lokalnej, dokonywaliśmy
dużego uproszczenia. Wszystkie kompute-
ry podłączone do sieci lokalnej znajdowały
się w tej samej podsieci, co mogło mieć nie-
korzystny wpływ na jej wydajność oraz bez-
pieczeństwo. Możemy temu zaradzić poprzez
wybór odpowiednich masek podsieci, wyzna-
czającej linię podziału pomiędzy częścią ad-
resu IP odpowiedzialną za identyfikację sieci
a częścią określającą numer hosta.
Adres IP a maska podsieci
Jak z pewnością pamiętasz, adres IP jest 32-
bitową dodatnią liczbą całkowitą, dla wygo-
dy zapisywaną w notacji kropkowo-dziesięt-
nej (np. 192.168.1.1). Rownież w rozległych
sieciach, takich jak internet, do określenia
odbiorcy pakietu wykorzystywany jest je-
dynie adres IP. W związku z tym, koniecz-
ne jest zapisanie w nim informacji, pozwa-
lających na odpowiednie skierowanie pa-
kietu do celu. Zwróć uwagę, iż w celu prak-
tycznego wykorzystania adresu IP w proce-
sie trasowania, konieczne jest zrezygnowa-
nie z płaskiego modelu 32-bitowej puli ad-
resów. Można to zilustrować poprzez analo-
gię do życia codziennego – niemożliwe jest
szybkie odnalezienie budynku jedynie na
podstawie znajomości jego numeru (identy-
fikator hosta), nawet jeżeli byłby on unikal-
ny w skali obszaru poszukiwań. Jeżeli jed-
nak znamy położenie ulicy, na której znaj-
duje się dany budynek (adres sieci), to je-
go odnalezienie nie będzie stanowić dla nas
problemu.
W celu rozdzielenia adresu sieci oraz
identyfikatora hosta stosuje się maski pod-
sieci. Są one 32-bitowymi liczbami całkowi-
tymi, dla wygody zapisywanymi w postaci
kropkowo-dziesiętnej (np. 255.255.255.0).
Jeżeli masz już jakieś doświadczenie w pra-
cy z sieciami komputerowymi, to z pew-
nością zauważyłeś charakterystyczny roz-
kład bitów w maskach podsieci. Po zapisa-
niu w postaci binarnej, mają one bowiem
postać ciągu jedynek, dopełnionego zerami
do rozmiaru 32 bitów. Przykładową parę ad-
res IP-maska podsieci przedstawiono na Ry-
sunku 1. Adres sieci stanowią bity, którym
w masce podsieci odpowiadają jedynki. Po-
została część adresu IP stanowi identyfika-
tor hosta.
Obliczenie, ile adresów IP w każdej
z podsieci możemy wygenerować przy za-
danej masce nie jest trudne. Dla ustalenia
uwagi przyjmijmy, iż interesująca nas ma-
ska podsieci ma wartość 255.255.255.128.
W celu weryfikacji poprawności, zapiszemy
ją w postaci binarnej: 11111111.11111111.
11111111.10000000. Widzimy, iż po ciągu
25 jedynek następuje 7 zer, wyznaczających
bity odpowiadające identyfikatorowi hosta.
Teoretyczna liczba identyfikatorów hostów
w takiej sieci wynosi 128. Liczba użytecz-
nych adresów (takich, które można przy-
pisać węzłom) wynosi 126. Mniejsza licz-
ba adresów użytecznych spowodowana jest
zarezerwowaniem pierwszego i ostatniego
identyfikatora hosta na potrzeby adresu sie-
ci oraz adresu broadcast. O transmisji bro-
adcastowej powiemy więcej w dalszej czę-
ści artykułu.
Uważny Czytelnik z pewnością zada te-
raz pytanie: No dobrze, ale co daje nam zna-
jomość adresu sieci? W jaki sposób podział
adresu IP jest wykorzystywany w trakcie tra-
sowania?. Odpowiedź na to pytanie wymaga
przyjrzenia się działaniu sieci lokalnej oraz
zastanowieniu się, kiedy pakiet opuszcza sieć
fizyczną. Okazuje się, iż w trakcie wysyła-
nia pakietu adres odbiorcy porównywany jest
z adresem sieci, w której znajduje się nadaw-
ca. W przypadku gdy oba węzły znajdują się
w tej samej sieci, nie ma potrzeby przesyła-
nia pakietu za pośrednictwem routera – wy-
starczy w tym celu sieć fizyczna. Wykorzy-
stanie trasowania jest zatem konieczne jedy-
nie w przypadku, gdy komputery znajdują się
w różnych sieciach.
Wyznaczanie
adresu sieci i identyfikatora hosta
Wyjaśnienia może wymagać sposób wyzna-
czenia adresu sieci oraz identyfikatora ho-
sta. Dla osób obeznanych z algebrą Boole-
'a jest to z pewnością oczywiste, jednak dla
pewności przedstawimy tu algorytm postę-
powania.
Przed przystąpieniem do wyznaczenia
adresu sieci oraz identyfikatora hosta, należy
adres IP oraz maskę podsieci zapisać w po-
staci binarnej. Następnie wykonujemy ope-
rację logiczną AND na odpowiadających bi-
tach adresu IP oraz maski podsieci (wartości
podstawowych funktorów logicznych zosta-
ły zebrane w tabeli Podstawowe funktory lo-
giczne), wyznaczając tym samym adres sie-
ci. Pozostała część adresu IP stanowi identy-
fikator hosta.
Wyznaczanie adresu sieci oraz identyfi-
katora hosta jest bardzo proste, dostępnych
jest również wiele programów wyręczają-
cych nas w tym zadaniu. Jednym z podstawo-
wych narzędzi jest kalkulator adresów IP ip-
calc,w postaci skryptów na stronach interne-
towych (Rysunek 2).
Klasy adresów
IP oraz routowanie bezklasowe
W jednej z pierwszych części cyklu powie-
dzieliśmy, iż w początkach internetu korzy-
Tabela 1.
Podstawowe funktory logiczne
p
q
p AND q
p OR q
NOT p
p XOR q
1
1
1
1
0
0
1
0
0
1
0
1
0
1
0
1
1
1
0
0
0
0
1
0
Tabela 2.
Klasy adresów IP
Klasa
Pierwszy oktet
Zakres pierw-
szego oktetu
Liczba
sieci
Liczba hostów
Typ sieci
A
0XXXXXXX
1 - 126
126
16.777.214
Bardzo duże
B
10XXXXXX
128 - 191
16.384
65.534
Średniej wiel-
kości
C
110XXXXX
192 - 223
2.097.152 254
Małe
48
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
49
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
stano z tzw. klas adresów IP. Podział adresów
IP na klasy pozornie upraszczał budowę sie-
ci komputerowych, znacznie utrudniał jed-
nak efektywne zagospodarowanie puli adre-
sów. Wraz z rozwojem internetu pomysł ten
został porzucony na rzecz bardziej efektyw-
nego rozwiązania umożliwiającego przypisy-
wanie dowolnych masek podsieci. Wykorzy-
stanie routowania bezklasowego przyczyniło
się również do zmniejszenia tempa wyczer-
pywania się puli 32-bitowych adresów IPv4
oraz uproszczenia tablic routowania przecho-
wywanych na routerach (więcej na temat ta-
blic routingu powiemy w dalszej części ar-
tykułu).
Bezklasową metodę adresacji oraz wy-
korzystującą ją metodologię routingu okre-
śla się skrótem CIDR (Classless Inter-Do-
main Routing). Głównym założeniem meto-
dologii CIDR jest stosowanie masek podsie-
ci o dowolnej liczbie bitów określających ad-
res sieci. Jest to przeciwieństwo adresowania
klasowego, w którym maska podsieci składa
się z 8-bitowych bloków (definiujących kla-
sy adresów: A, B oraz C). Aby dostosować
sposób zapisuj maski sieciowej do nowej me-
todologii, przyjęto formę zapisu adres_ip/N,
gdzie N oznacza liczbę bitów maski określa-
jących adres sieci.
Opis szczegółów metodologii CIDR
znacznie wykracza poza zakres tego artyku-
łu – do pełnego zrozumienia informacji za-
wartych w następnych paragrafach wystarczy
ogólne zrozumienie znaczenia masek podsie-
ci oraz wprowadzanego przez nie podziału
przestrzeni adresów.
Adresy
i komunikacja broadcast/multicast
Tworząc podział na podsieci powinniśmy pa-
miętać, iż użyteczna liczba identyfikatorów
jest mniejsza od liczby teoretycznej. Jest to
spowodowane wykorzystaniem pierwszego
adresu puli jako adresu sieci oraz ostatnie-
go adresu jako adresu broadcast, wykorzysty-
wanego w transmisji rozgłoszeniowej. Czym
jest oraz w jakim celu stosowana jest transmi-
sja rozgłoszeniowa?
Wiele protokołów i aplikacji wyma-
ga możliwości wysłania pakietu do wszyst-
kich komputerów w podsieci. Jednym
z głównych zastosowań transmisji broadca-
stowej są aplikacje oraz protokoły wyma-
gające informacji o strukturze sieci. Teore-
tycznie możliwe byłoby ręczne wprowadza-
nie odpowiednich danych przez użytkow-
nika, jednak byłoby to rozwiązanie bardzo
nieefektywne oraz podatne na błędy. Pro-
ces ten możemy usprawnić, rozgłaszając za-
pytanie a następnie przetwarzając odpowie-
dzi pochodzące od hostów. Jednym z przy-
kładów wykorzystania transmisji rozgłosze-
niowej na poziomie warstwy sieciowej mo-
delu OSI są protokołu wymiany informacji
o trasowaniu, wykorzystywane w routingu
dynamicznym.
Zwróćmy uwagę, iż przesyłanie dużych
ilości pakietów broadcastowych może przy-
czynić się do znacznego spadku wydajno-
ści sieci – każdy pakiet musi bowiem zo-
stać odebrany i przetworzony przez każdą
z maszyn znajdujących się w danej podsie-
ci. Zwiększenie wydajności oraz zmniejsze-
nie nadmiarowego ruchu jest jedną z przy-
czyn wydzielania podsieci. Dzięki odpo-
wiedniej konfiguracji routerów (którą zaj-
miemy się w następnych paragrafach), bę-
dziemy mogli ograniczyć komunikację po-
między podsieciami do wymaganych usług
i protokołów.
Wyznaczanie adresu broadcast na pod-
stawie zapisu binarnego maski podsieci oraz
adresu IP jest bardzo proste – na adresie IP
wykonujemy bitowe OR (lub) z zanegowaną
(NOT) maską sieciową. Upraszczając, moż-
na powiedzieć, iż w adresie IP zamieniamy
wszystkie bity odpowiadające identyfikato-
rowi hosta na 1, pozostawiając część odpo-
wiadającą adresowi sieci bez zmian. Widać
więc, że adres rozgłoszeniowy jest najwyż-
szym identyfikatorem hosta w danej pod-
sieci.
Protokół IP dopuszcza również przesy-
łanie danych do wielu odbiorców przy wy-
korzystaniu multicastu. W przeciwieństwie
do transmisji rozgłoszeniowej, w transmisji
multicastowej dane odbierane są tylko przez
odpowiednio skonfigurowane hosty. Istnieje
wiele metod pozwalających na realizację ta-
kiego przesyłu danych, brak jest jednak ja-
sno określonych i uznanych standardów. Za-
gadnienia związane z transmisją multicasto-
wą znacznie wykraczają poza zakres kursu,
tak więc nie będziemy się nimi dłużej zaj-
mować.
Routowanie – podstawy
Po zapoznaniu z podstawowymi informacja-
mi dotyczącymi struktury adresów IP, ma-
Rysunek 1.
Przykładowa para adres IP – maska podsieci
��������������������������������������������������������������������������������
�������������������������������������������������������������������
�����������
��������
���
�����
���������
���
������������������������
�������������
Rysunek 2.
Jedno z narzędzi typu ipcalc, dostępne poprzez przeglądarkę internetową
48
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
49
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
sek podsieci oraz metodologii bezklasowej
CIDR, możemy przystąpić do omówienia
podstawowych zagadnień związanych z pro-
cesem trasowania pakietów.
O dużej złożoności routowania najlepiej
świadczy obszerność publikacji omawiają-
cych to zagadnienie. Informacje zawarte
w tym artykule nie wyczerpują nawet pod-
staw trasowania – ich zadaniem jest raczej
stworzenie płaszczyzny, na której możliwe
będzie zrozumienie działania przykładów za-
wartych w dalszej części artykułu. Osobom
zainteresowanym szczegółami routingu oraz
działaniem protokołów wymiany informacji
o trasach polecam zapoznanie się z informa-
cjami zawartymi na stronach wymienionych
w ramce W Sieci oraz odpowiednimi doku-
mentami RFC.
Dlaczego konieczne
jest trasowanie pakietów?
Zanim przejdziemy do opisu oraz konfigu-
racji routingu w systemie Linux, zastano-
wimy się dlaczego trasowanie pakietów jest
niezbędne w celu budowy wydajnych i bez-
piecznych sieci komputerowych. W pierw-
szej części cyklu omówiliśmy bowiem pod-
stawowe urządzenia wykorzystywane w sie-
ciach komputerowych, wśród których znaj-
dował się most (network bridge), również
służący do łączenia sieci. Pomimo iż urzą-
dzenia tego typu są obecnie bardzo rzadko
wykorzystywane, warto zapoznać się z za-
sadą ich działania. Jakie są więc podstawo-
we różnice pomiędzy trasowaniem a mostko-
waniem sieci?
Przewaga pierwszego z wymienionych
rozwiązań okaże się oczywista, gdy przypo-
mnimy sobie zasadę działania mostów. Jak
z pewnością pamiętasz, są one urządzenia-
mi warstwy drugiej modelu OSI, wykorzy-
stującymi adresy fizyczne w procesie podej-
mowania decyzji o przekazywaniu ramek.
Po odebraniu ramki Ethernet przez most,
sprawdzany jest jej adres przeznaczenia
– jeżeli odbiorca znajduje się w tym samym
segmencie sieci co nadawca, most ignoru-
je ją. Jeżeli odbiorca znajduje się w innym
segmencie, most przesyła ją dalej. Po ode-
braniu oraz przetworzeniu ramki przez od-
biorcę, most przekazuje odpowiedź do sie-
ci w której znajdował się interfejs sieciowy
nawiązujący połączenie. W trakcie opisywa-
nego procesu tworzona jest tzw. tabela mo-
stowania, wykorzystywana w trakcie podej-
mowania decyzji o przekazywaniu pakietów
pomiędzy segmentami. Przekazywanie pa-
kietów przy pomocy mostów jest znacznie
szybsze niż w przypadku średniej klasy ro-
uterów. Dlaczego więc zrezygnowano z ich
wykorzystania? Okazuje się, że mosty nie
zapewniają dostatecznej kontroli nad pracą
sieci oraz utrudniają jej rozbudowę i ograni-
czają skalowalność.
Zastanówmy się, co stanie się, gdy do
mostu dotrze ramka wysłana w trybie bro-
adcastowym. Ramki tego typu będą zawsze
przesyłane pomiędzy segmentami. Powodu-
je to powstanie dużej ilości nadmiarowego
ruchu, mogącego drastycznie obniżyć wy-
dajność sieci. Obecnie mosty sieciowe mają
znaczenie jedynie historyczne – zostały nie-
mal całkowicie wyparte przez routery (z nie-
co innym typem mostu zapoznamy się w czę-
ści cyklu poświęconej sieciom bezprzewodo-
wym). Warto jednak zapoznać się z zasadą
ich działania, ponieważ pozwala to na lepsze
zrozumienie routowania.
Przebieg routowania
i śledzenie pakietów
W sieciach opartych o protokół IP, każde
urządzenie podejmuje decyzje o routowa-
niu samodzielnie. Oznacza to, iż droga pa-
kietu od nadawcy do adresata składa się
z wielu przeskoków, odpowiadających prze-
słaniu przez odrębne węzły. Najważniejszym
Listing 1.
Konfiguracja iptables do podziału łącza poprzez translację adresów
#!/bin/sh
WAN_INTERFACE
=
"eth0"
#załadowanie modułów jądra
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe iptable_mangle
modprobe ipt_MASQUERADE
modprobe ipt_nat_ftp
modprobe ipt_nat_irc
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
#usunięcie istniejących reguł i łańcuchów
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
#akceptujemy wszystkie przychodzące pakiety
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
#konfiguracja dla interfejsu lo
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -i lo -j ACCEPT
#konfiguracja NAT dla adresu przyznanego przez DNS
iptables -t nat -A POSTROUTING -o
$WAN_INTERFACE
-j MASQUERADE
#konfiguracja NAT dla adresu stałego
iptables -t nat -A POSTROUTING -o
$WAN_INTERFACE
-j SNAT –to-source
adres_ip
50
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
51
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
z urządzeń odpowiadających za przesyłanie
pakietów jest router, którego rolę może peł-
nić zarówno specjalistyczny sprzęt, jak i stan-
dardowe komputery PC, wyposażone w od-
powiednią liczbę interfejsów sieciowych oraz
oprogramowanie.
Przy wysłaniu pakietu, komputer po-
dejmuje decyzje o sposobie jego trans-
misji. Jeżeli adres odbiorcy znajduje się
w tej samej sieci, co nadawca (określo-
nej według zasad podanych we wcześniej-
szych paragrafach), pakiet przesyłany jest
bez udziału routera – do jego dostarcze-
nia wystarcza sieć fizyczna. Wykorzysta-
nie routera ma miejsce wtedy, gdy nadaw-
ca i odbiorca znajdują się w różnych sie-
ciach – w takim przypadku pakiet jest prze-
syłany na adres tzw. domyślnej bramy. Jej
funkcje pełni router znajdujący się najbli-
żej nadawcy w topologii fizycznej sieci. Po
odebraniu pakietu, router podejmuje decy-
zje o trasowaniu w bardzo podobny sposób
– w tablicy routowania odnajdywany jest
wpis odpowiadający adresowi następnego
routera, do którego pakiet powinien zostać
skierowany.
Dzięki takiemu przebiegowi procesu
routingu możliwe jest znaczne uproszcze-
nie tablic routowania (więcej informacji na
temat tablic routowania znajdziesz w na-
stępnym paragrafie) oraz struktury sieci.
W przypadku dużych sieci możemy bowiem
dostrzec wyraźną hierarchizację – routery
znajdujące się najbliżej końcówek siecio-
wych (czyli interfejsów sieciowych) obsłu-
gują ruch o znacznie mniejszym natężeniu,
niż routery znajdujące się w obrębie rdzenia
sieci. Umożliwia to dobranie sprzętu najle-
piej odpowiadającego wymaganiom danego
obszaru sieci.
Mówi się, że jeden obraz oznacza wię-
cej niż tysiąc słów – w takim razie sprawdź-
my, jak w praktyce wygląda trasa pakietu
od naszego komputera do dowolnego z ser-
werów internetowych. Możemy w tym celu
wykorzystać program traceroute, dostępny
standardowo w każdej dystrybucji Linuksa.
Działanie tego narzędzia opiera się na umie-
jętnym wykorzystaniu protokołu ICMP (In-
ternet Control Message Protocol), służące-
go do przesyłania wiadomości kontrolnych
(m.in. komunikatów o błędach). Traceroute
wykorzystuje komunikaty typu ICMP Echo
Request, czyli takie same jak program ping.
Różnica polega na wartościach czasu ży-
cia pakietu (TTL – Time To Live), określa-
jących maksymalną liczbę routerów, przez
które przejść może pakiet zanim zostanie on
porzucony (co zapobiega powstawaniu tzw.
pętli routowania). Pierwszy pakiet wysyła-
ny przez traceroute (z wartością TTL rów-
ną 1) zostaje odebrany przez naszą bramę
domyślną, następuje zmniejszenie wartości
TTL, porzucenie pakietu i wysłanie komu-
nikatu o błędzie TTL Exceeded (przekrocze-
nie czasu życia pakietu). Program tracero-
ute odbiera ów komunikat i wysyła następ-
ny pakiet, tym razem z TTL równym 2. Pa-
kiet ten dociera jeden skok bliżej celu niż
pakiet pierwszy, po czym odebrany zosta-
je komunikat o błędzie pochodzący od dru-
giego routera. Adresy IP kolejnych route-
rów przekazujących pakiet są wyświetla-
ne na ekranie. Czasami zdarza się jednak,
iż konfiguracja któregoś z routerów nie ze-
zwala na odpowiadanie na pakiety genero-
wane przez program traceroute – w takim
przypadku adres routera nie zostanie wy-
świetlony.
Tablice routingu
– ich tworzenie i zastosowanie
Po odebraniu pakietu, router określa adres
następnego urządzenia sieciowego, do któ-
rego powinien zostać przesłany pakiet. Może
nim być kolejny router lub interfejs sieciowy
odbiorcy pakietu. Informacje wykorzystywa-
ne w trakcie trasowania pakietów zapisane są
w tzw. tablicach routowania.
Tablica routowania zawiera adresy IP ro-
uterów pod które należy przesyłać pakiety
skierowane do określonych odbiorców. Wi-
dać więc, iż w tablicy tej adres IP odbior-
cy służy jako klucz przy wyszukiwaniu ad-
resu następnego skoku. Każda z tablic zawie-
ra również tzw. adres domyślny, wskazujący
na router posiadający pełniejszą tablicę ro-
utingu – wykorzystywany jest on w sytuacji,
gdy nie odnaleziono wpisu odpowiadającego
sieci docelowej.
Zastanawiasz się teraz pewnie nad tym,
w jaki sposób tworzone są tablice routowa-
nia – czy wpisy wprowadzane są przez admi-
nistratora sieci, czy też tworzone są w sposób
automatyczny w trakcie pracy sprzętu (po-
dobnie jak w przypadku mostów)? Okazu-
je się, iż wykorzystywane są obydwie z tych
metod: statyczna oraz dynamiczna.
W routingu statycznym, tablica routowa-
nia wprowadzana jest w całości przez admi-
nistratora sieci. Dzięki temu uzyskujemy pe-
łen determinizm trasowania, a co za tym idzie
– większą wydajność i łatwiejsze rozwiązy-
wanie problemów. W routingu statycznym
każdy z routerów podejmuje decyzje o tra-
sowaniu w pełni samodzielnie – routery nie
wymieniają się informacjami o stanie łącz, co
uniemożliwia tworzenie rozwiązań korzysta-
jących z redundancji.
W routingu dynamicznym, routery wy-
mieniają się informacjami o trasowaniu (wy-
korzystywane są w tym celu tzw. protokoły
wymiany informacji o trasowaniu). Dzięki
temu możliwe jest tworzenie łącz redundant-
nych, zapewniających łączność w sytuacjach
awaryjnych. Jednym z najważniejszych pro-
blemów, pojawiających się przy zastosowa-
niu routingu dynamicznego jest indetermi-
nizm, wynikający z faktu, iż router polega na
Rysunek 3.
Algorytm routingu w metodologii CIDR
���
���
���
���
���������������������
�������������������������������������
��������������������������������������
����������������������������������
�����������������������
���������������������������
�������
���������������������������
���������
����������������������
���������
50
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
51
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
informacjach otrzymanych od innych route-
rów działających w sieci.
Warto zastanowić się, kiedy uzasadnione
jest stosowanie każdej z wymienionych me-
tod. Najczęściej podawana reguła mówi, że
routing dynamiczny powinien być stosowa-
ny tam, gdzie jest to konieczne, w pozosta-
łych routerach zalecana jest konfiguracja tra-
sowania statycznego.
Algorytm routingu
Routery w trakcie kierowania pakietów re-
alizują ściśle określony algorytm, którego
uproszczona wersja przedstawiona została
na Rysunku 3.
Po odebraniu pakietu, router przeszuku-
ję tablicę routingu w cel odnalezienia adre-
su następnego skoku, odpowiadającego sieci
w której znajduje się adres odbiorcy. Przy
wyborze trasy mogą być brane pod uwagę do-
datkowe kryteria, takie jak np. obciążenie da-
nych tras. W tym kroku możliwe jest również
wykorzystanie łączy redundantnych (zapaso-
wych), umożliwiających zapewnienie ciągło-
ści działania sieci.
Jeżeli odnaleziony zostanie wpis odpo-
wiadający sieci odbiorcy, pakiet przesyłany
zostaje do zdefiniowanego routera. W przy-
padku gdy nie odnaleziono adresu następne-
go routera, pakiet wysyłany jest na adres ro-
utera domyślnego (bramy domyślnej) – jest
nią zazwyczaj router posiadający większą
wiedzę na temat struktury sieci. Jeżeli brak
jest zdefiniowanej trasy domyślnej, pakiet zo-
staje odrzucony, po czym do nadawcy zosta-
je wysłany komunikat o błędzie (Destination
Unreachable).
Określanie umiejscowienia routerów
Jednym z największych problemów, jakie na-
potykają początkujący konstruktorzy sieci
komputerowych, jest określenie odpowied-
niego położenia routerów w sieci. Nie jest to
bynajmniej proste zadanie, ponieważ wyma-
ga od nas dobrej znajomości charakteru i na-
tężenia komunikacji pomiędzy węzłami pod-
łączonymi do naszej sieci.
Zanim przystąpimy do określenia roz-
mieszczenia routerów w strukturze naszej
sieci, koniecznie powinniśmy dokonać po-
działu na podsieci zgodnie z informacjami
zawartymi w poprzednich paragrafach. Kom-
putery, które często wymieniają ze sobą da-
ne powinny znajdować się w jednej podsieci,
te zaś powinny być łączone ze sobą poprzez
zastosowanie odpowiednio skonfigurowa-
nych routerów. Więcej informacji na ten te-
mat znajdziesz w paragrafie Routing pomię-
dzy podsieciami.
System Linux jako router
W dużych przedsiębiorstwach rolę route-
rów i firewalli pełnią zazwyczaj odpowiednie
urządzenia, gwarantujące wysoką niezawod-
ność oraz wydajność. Oprócz tego, niewąt-
pliwą zaletą sprzętu dedykowanego jest ła-
twość obsługi oraz duże możliwości konfigu-
racji. Sprzęt producentów takich jak np. CI-
SCO może być również łatwo łączony w kla-
stry i montowany w tzw. rackach.
Bardzo często wydajność sprzętu nie jest
jednak priorytetem – w przypadku niewiel-
kich przedsiębiorstw znacznie większe zna-
czenie może mieć cena urządzenia lub kosz-
ty ewentualnej rozbudowy sieci. W środowi-
skach tego typu sprawdzą się proste urzą-
dzenia wbudowane pełniące funkcję route-
ra lub komputery z zainstalowanym syste-
mem Linux.
W systemach korzystających z jądra Li-
nux, za podstawowe funkcje związane z ob-
sługą sieci odpowiada jądro systemu. Kon-
figuracja tych mechanizmów kernela odby-
wa się przy pomocy narzędzi działających
w przestrzeni użytkownika, takich jak np.
iptables. Część bardziej zaawansowanych
funkcji, jak np. obsługa protokołów routingu
dynamicznego odbywa się w dużym stopniu
w przestrzeni użytkownika.
Chciałbym teraz zwrócić Twoją uwagę,
drogi Czytelniku, na zalety i wady zastoso-
wania systemu Linux jako routera. Do naj-
ważniejszych zalet takiego rozwiązania mo-
żemy z pewnością zaliczyć:
• Niski koszt – ponosimy jedynie koszt
sprzętu komputerowego – wszelkie nie-
zbędne oprogramowanie jest darmowe;
• Wysoki poziom bezpieczeństwa – odpo-
wiednio skonfigurowany system Linux
charakteryzuje się bardzo wysokim po-
ziomem bezpieczeństwa;
• Wysoka wydajność – oczywiście zależna
od zainstalowanego sprzętu, liczby ob-
sługiwanych komputerów oraz rozmiaru
tablic routowania;
• Łatwość rozbudowy i aktualizacji – ak-
tualizacja oprogramowania zainstalowa-
nego na serwerze jest znacznie prostsza
niż uaktualnienie firmware urządzenia
wbudowanego;
• Możliwość uruchomienia dodatkowych
usług – oprócz obsługi routowania,
nasz serwer może być jednocześnie fi-
rewallem oraz np. serwerem LDAP lub
WWW. Ze względów bezpieczeństwa
nie jest to jednak polecane rozwiązanie.
Wykorzystanie systemu Linux jako routera
nie jest jednak pozbawione wad, spośród któ-
rych najpoważniejsze to:
• Konfiguracja trudniejsza niż w przypad-
ku urządzeń dedykowanych;
• Konieczność ciągłej aktualizacji opro-
gramowania (niezbędna w celu utrzy-
mania należytego poziomu bezpieczeń-
stwa);
• Wydajność niższa niż urządzeń dedyko-
wanych.
Dzięki odpowiedniej konfiguracji oprogra-
mowania możemy zniwelować powyższe
niedogodności. Dodatkowo dostępne są spe-
cjalizowane dystrybucje Linuksa, dostosowa-
ne do pełnienia funkcji routera.
Listing 2.
Konfiguracja demonów Quagga - /etc/quagga/daemons
zebra
=yes
bgpd
=no
ospfd
=no
ospf6f
=no
ripd
=yes
ripngd
=no
isisd
=no
Listing 3.
Konfiguracja demona Zebra – /etc/quagga/zebra.conf
hostname router
password haslo
enable
password haslo
service advanced-vty
log file /var/log/quagga/zebra.log
access-list localhost permit 127.0.0.1/32
access-list localhost deny any
line vty
access-class localhost
52
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
53
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
Specjalizowane
dystrybucje Linuksa
Najważniejsze funkcje sieciowe systemów
Linuksowych realizowane są przez jądro, co
pozwala na skonfigurowanie dowolnej dys-
trybucji do pracy jako router. Należy jednak
pamiętać, iż w celu optymalnego wykorzysta-
nia możliwości sprzętu oraz zapewnienia na-
leżytego poziomu bezpieczeństwa i stabilno-
ści, konieczne jest dokonanie dużych zmian
w systemie. Oprócz najprostszych czynno-
ści związanych z hardeningiem systemu, ta-
kich jak wyłączenie niepotrzebnych usług,
monitorowanie stanu portów oraz zastoso-
wanie systemów IPS/IDS (Intrusion Protec-
tion System/Intrusion Detection System), ko-
nieczne jest zazwyczaj dokonanie rekompila-
cji jądra oraz wielu innych, często niełatwych
czynności.
Na internetowych listach dyskusyjnych
często zadawane jest pytanie, która dystry-
bucja Linuksa nadaje się najlepiej do zasto-
sowania jako router. Nie istnieje jedna od-
powiedź na to pytanie. Wszystko zależy bo-
wiem od indywidualnych wymagań danego
środowiska oraz wiedzy administratora. Ist-
nieje jednak grupa specjalizowanych minidy-
strybucji, pozwalających szybko skonfiguro-
wać nawet bardzo zaawansowane funkcje fil-
trowania i routowania pakietów. Najpopular-
niejsze z nich to:
• Freesco – jedna z najstarszych minidy-
strybucji Linuksa, przeznaczona do peł-
nienia funkcji routera. Nazwa Freesco
oznacza, iż ambicją deweloperów tej
dystrybucji jest zapewnienie wolnej al-
ternatywy dla sprzętu sieciowego CI-
SCO (Free + (CI)SCO). Podstawowa
wersja Freesco mieści się na dyskiet-
ce, dodatkowe moduły możemy wczy-
tać po uruchomieniu systemu; dostęp-
na jest również wersja służąca do insta-
lacji na dysku twardym. Zaletą dystry-
bucji Freesco jest bardzo wysoki poziom
bezpieczeństwa oraz ekstremalnie małe
wymagania sprzętowe. Najnowszą wer-
sję Freesco znajdziesz na stronie http:
//www.freesco.org/;
• Pyramid Linux – minidystrybucja Li-
nuksa przeznaczona do zastosowania w
sieciowych (w szczególności bezprze-
wodowych) systemach wbudowanych
kompatybilnych z architekturą x86. Jed-
ną z największych zalet Pyramid Linuk-
sa jest kompatybilność z Ubuntu – ozna-
cza to, iż instalacja dodatkowych pakie-
tów nie będzie sprawiać problemów. Ob-
razy dystrybucji (przeznaczone do zapi-
sania np. na karcie CF wykorzystywanej
w routerze) znajdziesz na stronie http:
//dl.metrix.net/support/dist/;
• Endian Firewall – minidystrybucja Li-
nuksa przeznaczona do zastosowania
jako firewall oraz router. Na szczegól-
ną uwagę zasługuje bardzo wygodny,
przeglądarkowy interfejs użytkowni-
ka oraz oferta urządzeń wbudowanych
z zainstalowanym systemem Endian Fi-
rewall. Więcej informacji na temat tej
dystrybucji znajdziesz na stronie http:
//www.endian.com/en/;
• IPCop – minidystrybucja Linuksa prze-
znaczona do zastosowania jako fire-
wall oraz router. Zawiera wygodny in-
terfejs konfiguracyjny obsługiwany
przez przeglądarkę. W dystrybucji IP-
Cop bardzo ciekawie rozwiązano przy-
dzielanie funkcji interfejsom – określa-
ne są one przy pomocy tzw. kolorów in-
terfejsu. Najnowszą wersją dystrybu-
cji IPCop znajdziesz na stronie http:
//www.ipcop.org/.
Wszystkie z wymienionych dystrybucji cha-
rakteryzują się niskimi wymaganiami sprzę-
towymi i wysokim poziomem bezpieczeń-
stwa. Dystrybucje te są również przystoso-
wane do uruchamiania z kart pamięci flash,
co pozwala na budowę wydajnych urządzeń
sieciowych o niskim poborze prądu.
W dalszej części artykułu zapoznamy się
z przebiegiem konfiguracji funkcji routingu
w systemie Linux. Nie będziemy odwoły-
wali się do konkretnych dystrybucji (chyba,
że będzie to konieczne), lecz przedstawimy
uniwersalne rozwiązania. Osobom zaintere-
sowanym budową routera w oparciu o mini-
dystrybucje polecam zapoznanie się z infor-
macjami zawartymi na ich stronach interne-
towych – często zawierają one narzędzia uła-
twiające konfigurację funkcji routingu. Je-
żeli jednak opanujesz konfigurację routerów
za pomocą poleceń opisanych w dalszej czę-
ści artykułu, to ich wykorzystanie będzie dla
Ciebie bardzo proste.
Niezbędne pakiety
Większość dystrybucji Linuksa zawiera pod-
stawowe pakiety niezbędne do obsługi traso-
wania w domyślnej instalacji. Przed przystą-
pieniem do wykonywania czynności opisa-
nych w następnych paragrafach, powinieneś
upewnić się, że w Twoim systemie zainstalo-
wane są następujące narzędzia:
• net-tools – pakiet zawierający podsta-
wowe narzędzia służące do konfiguracji
podsystemu sieciowego jądra;
• iproute2 – pakiet zawierający ulepszo-
ne wersje narzędzi zawartych w pakiecie
net-tools oraz dodatkowe programy, słu-
żące do obsługi funkcji QoS, kształtowa-
nia ruchu sieciowego itp.;
• Quagga – pakiet zawierający implemen-
tację protokołów routingu dynamicznego
(m.in. RIP i OSPF).
Nie będziemy tu opisywać procesu instalacji
poszczególnych pakietów – są one bowiem
dostępne w repozytoriach wszystkich dystry-
bucji. Jeżeli zdecydujesz się na własnoręczne
budowanie aplikacji ze źródeł, to bardzo wie-
le przydatnych informacji znajdziesz w ich
dokumentacjach.
Konfiguracja bramy domyślnej
Zanim przystąpimy do opisu konfigura-
cji routera, zastanówmy się, w jaki spo-
sób komputery znajdujące się w naszej sie-
ci będą wiedziały, które urządzenie pełni
jego funkcje. Ma to niebagatelne znacze-
nie, ponieważ nadawca pakietu musi znać
adres urządzenia, pod które pakiet zosta-
nie przekazany.
Listing 4.
Konfiguracja demona RIPD – /etc/quagga/ripd.conf
hostname router
password haslo
enable
password haslo
router rip
network eth0
redistribute static
redistribute connected
service advanced-vty
log file /var/log/quagga/ripd.log
access-list loaclhost permin 127.0.0.1/32
access-list localhost deny any
line vty
access-class localhost
52
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
53
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
Każdy z interfejsów, jeżeli ma mieć
możliwość komunikacji z adresami spo-
za sieci lokalnej, musi posiadać określony
adres domyślnej bramy (default gateway),
określający router, do którego wysyłane bę-
dą pakiety skierowane do adresów spoza sie-
ci lokalnej. W systemie Linux, w celu okre-
ślenia adresu domyślnej bramy należy wy-
dać polecenie
route add default gw 192.168.1.1
eth0
gdzie
192.168.1.1
jest adresem routera,
eth0
– nazwą interfejsu sieciowego. Należy
mieć na uwadze fakt, iż adres routera musi
należeć do tej samej podsieci, co nasz inter-
fejs. Zmiany wprowadzane przy użyciu na-
rzędzia route nie są jednak trwałe – obowią-
zują do czasu ponownego uruchomienia sys-
temu. Trwałą zmianę adresu bramy można
uzyskać poprzez dodanie linii
gateway 192.168.1.1
w plikach konfiguracyjnych interfejsów (ich
położenie różni się w zależności od dys-
trybucji; dla Debiana jest to /etc/network/
interfaces). Możliwe jest również użycie na-
rzędzi graficznych dostarczanych przez dys-
trybucję.
Routing pomiędzy podsieciami
Jedną z najczęściej spotykanych konfi-
guracji jest router z wieloma interfejsami
sieciowymi, z których każdy znajduje się
w odrębnej sieci (mogą to być np. róż-
ne sieci lokalne). W takiej sytuacji jest on
zazwyczaj wykorzystywany do trasowa-
nia pakietów pomiędzy podsieciami. Aby
umożliwić komunikację pomiędzy siecia-
mi, wystarczy odpowiednie skonfiguro-
wanie bram domyślnych dla komputerów
z poszczególnych podsieci oraz aktywowa-
nie przekazywania pakietów na routerze.
Przekazywanie pakietów można aktywo-
wać za pomocą polecenia
echo 1 > /proc/sys/net/ipv4/ip_
forward
Jeżeli chcemy, aby przekazywanie pakietów
było aktywowane przy uruchomieniu kompu-
tera, do pliku /etc/sysctl.conf należy dodać li-
nijkę
ip.ipv4.ip_forward = 1
.
Konfiguracja routera jest nieco bardziej
skomplikowana w sytuacji, gdy podsieci nie
są podłączone do tego samego routera. W ta-
kim przypadku, konieczne jest dodanie odpo-
wiednich wpisów do tablic routingu. Możesz
użyć w tym celu narzędzia route:
route add -net adres_sieci/maska gw
adres_ip_interfejsu nazwa_interfejsu
Znaczenie poszczególnych opcji może wyma-
gać objaśnienia. Parametr
-net adres_sieci/
maska
określa adres sieci docelowej wraz z jej
maską. Parametr
gw adres_ip_interfejsu
określa adres IP interfejsu routera, za pomo-
cą którego przekazywane będą pakiety;
na-
zwa_interfejsu
oznacza symboliczną nazwę
interfejsu (np. eth2). Usunięcie zdefiniowanych
tras sprowadza się do wydania polecenia
route
del -net adres_sieci/maska
.
Zmiany wprowadzone za pomocą pole-
cenia route add obowiązują do czasu ponow-
nego uruchomienia systemu. Aby trwale zde-
finiować tabelę routingu, należy wprowadzić
zmiany w plikach konfiguracyjnych odpo-
wiednich interfejsów sieciowych. Nową tra-
sę dodajemy za pomocą linii
up route add -net adres_sieci/
maska gw adres_ip_interfejsu nazwa_
interfejsu
Znaczenie opcji konfiguracyjnych jest takie
samo jak powyżej. W zależności od dystry-
bucji, położenie plików konfiguracyjnych
oraz składnia poleceń może się różnić. Po-
wyżej podany został opis dla dystrybucji De-
bian. W internecie znajdziesz wiele dodatko-
wych informacji na temat konfiguracji routin-
gu w innych dystrybucjach.
Konfiguracja translacji adresów
W trzeciej części cyklu pokazaliśmy, w jaki
sposób skonfigurować usługę NAT przy uży-
ciu urządzenia dedykowanego APPro 2405.
W tym paragrafie dowiemy się, jak uzyskać
ten sam efekt poprzez zastosowanie progra-
mu iptables.
Skrypt dokonujący odpowiedniej konfi-
guracji przedstawiony został na Listingu 1.
Pomimo znacznej objętości, jego działanie
jest bardzo proste. W pierwszej części skryp-
tu definiujemy zmienną oznaczającą nazwę
interfejsu WAN, za pomocą którego wysyła-
ne będą pakiety. Następnie wczytujemy nie-
zbędne moduły jądra. Jeżeli masz pewność,
że wymienione moduły są wbudowane w wy-
korzystywane przez Ciebie jądro, to możesz
pominąć ten krok.
Kolejnym krokiem jest usunięcie istnie-
jących reguł i łańcuchów (chains). Dokład-
nym opisem tych struktur zajmiemy się w na-
stępnej części artykułu, która w dużej mierze
poświęcona zostanie firewallom. Na chwilę
obecną, wystarczy nam wiedza, iż w progra-
mie iptables łańcuchy są zestawami reguł de-
finiujących operacje wykonywane na pakie-
tach. Standardowo, w podstawowej tabeli fil-
trującej pakiety (filter) dostępne są trzy pod-
stawowe łańcuchy:
• INPUT – zawierający reguły obsługi pa-
kietów przychodzących;
• FORWARD – zawierający reguły obsługi
pakietów routowanych przez hosta;
• OUTPUT – zawierający reguły obsługi
pakietów wychodzących.
Listing 5.
Konfiguracja demona OSPFD – /etc/quagga/ospfd.conf
hostname router
password haslo
enable
password haslo
log file /var/log/quagga/ospfd.log
interface eth0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 haslo
router ospf
ospf router-id 192.168.1.1
network 192.168.1.0/0 area 0
redistribute connected
redistribute static
area 0.0.0.0 authentication message-digest
access-list localhost permit 127.0.0.1/32
access-list localhost deny any
line vty
access class localhost
54
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
55
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
• W tabeli szczególnie interesującej nas
z punktu widzenia tego akapitu, a mia-
nowicie nat, istnieją trzy łańcuchy:
• PREROUTING – zawierający reguły ob-
sługi pakietów przed routowaniem;
• OUTPUT – zawierający reguły obsługi
pakietów wychodzących;
• POSTROUTING – zawierający reguły
obsługi pakietów po routowaniu.
Oprócz tego, dostępna jest tablica mangle,
która umożliwia dodanie reguł modyfikują-
cych nagłówki pakietów. O jej zastosowaniu
powiemy więcej w następnej części cyklu.
Następnym etapem działania naszego
skryptu jest ustawienie domyślnych reguł ob-
sługi. Wszystkie połączenia są akceptowane
przez nasz router – jest to dobry punkt wyj-
ścia do dalszej konfiguracji. Powinniśmy
również pamiętać o dodaniu linii odpowia-
dających konfiguracji interfejsu lo, będącego
programową pętlą zwrotną, służącą do testo-
wania oprogramowania sieciowego.
Ostatnim krokiem skryptu jest ustawie-
nie właściwej translacji adresów. Składnia
tego polecenia może wymagać wyjaśnie-
nia, tak więc omówimy znaczenie poszcze-
gólnych parametrów. Parametr
-t nat
ozna-
cza, iż ma zostać zmieniona konfiguracja ta-
beli nat. Parametry
-A POSTROUTING
oraz
-o $WAN_INTERFACE
informują program ip-
tables, że zmiany mają mieć miejsce po ro-
utowaniu, dla pakietów wychodzących in-
terfejsu sieciowego o nazwie zdefiniowanej
w zmiennej
WAN_INTERFACE
. Dodanie opcji
-j MASQUERADE
aktywuje obsługę pakietów
poprzez mechanizm maskarady. Jeżeli inter-
fejs podłączony do sieci rozległej ma przypi-
sany stały adres IP, powinieneś użyć alterna-
tywnej opcji, przedstawionej w skrypcie. Jed-
na z opcji musi oczywiście zostać usunięta
przed wykonaniem skryptu (lub oznaczona
jako komentarz za pomocą znaku
#
).
W omawianym skrypcie nie stosuje-
my filtrowania pakietów – wszystkie dane
są przez nasz router akceptowane. Należy
pamiętać, iż takie rozwiązanie nie jest bez-
pieczne – doskonale nadaje się jednak do ce-
lów testowych. Więcej na temat zwiększania
bezpieczeństwa routera i filtrowania pakie-
tów powiemy w następnej części.
Routing dynamiczny
z zastosowaniem protokołu RIP
Przykłady konfiguracji przedstawione w po-
przednich paragrafach mają jedną wspólną
cechę – korzystają z routingu statycznego.
O ile w pewnych przypadkach takie rozwią-
zanie jest niemalże konieczne, o tyle w więk-
szości sieci powinniśmy rozważyć zastoso-
wanie protokołów wymiany informacji o ro-
utingu. Pozwoli to na przyspieszenie konfigu-
racji sieci oraz zapewni aktualność tablic ro-
utingu wszystkich urządzeń.
Protokół RIP
Protokół RIP (Routing Information Protocol)
jest najprostszym protokołem wymiany in-
formacji o trasach. Najlepiej nadaje się do za-
stosowania w sieciach korporacyjnych o nie-
wielkiej liczbie komputerów.
Routery z obsługą protokołu RIP rozgła-
szają informacje o zawartości tablic traso-
wania co 30 sekund, przez co w przypadku
zmiany konfiguracji sieci routery zaktualizu-
ją swoją konfigurację dopiero po upłynięciu
tego czasu. RIP posiada również ogranicze-
nie co do ilości przeskoków – ich maksymal-
na liczba wynosi 15. Nie jest to jednak pro-
blemem nawet w przypadku złożonych sie-
ci lokalnych.
Obsługa protokołu
RIP w Linuksie – Quagga
Zarówno protokół RIP, jak i opisany w na-
stępnym paragrafie OSPF mają swoje im-
plementacje przeznaczone dla systemu Li-
nux. Zostały one zawarte w pakiecie Quag-
ga, wraz z bardziej złożonymi protokołami
jak np. BGP (Border Gateway Protocol), któ-
rych z racji złożoności nie będziemy opisy-
wać w tym artykule.
Pakiet Quagga jest dostępny w repozy-
toriach wszystkich popularnych dystrybucji.
Czytelnikom chcącym własnoręcznie doko-
nać kompilacji polecam odwiedzenie stro-
ny projektu http://www.quagga.net/. Znajdu-
ją się tam informacje dotyczące kompilacji,
instalacji i konfiguracji pakietu.
Konfiguracja protokołu
RIP w pakiecie Quagga
Zanim routery w naszej sieci będą w stanie
wymieniać między sobą informacje o trasach,
oszczędzając nam tym samym żmudnej kon-
figuracji, musimy poświęcić chwilę na skon-
figurowanie obsługi protokołu RIP w pakie-
cie Quagga.
Konfigurację powinniśmy rozpocząć
od dokonania zmiany w pliku /etc/quagga/
daemons, powodującej aktywowanie proto-
kołu RIP (Zebra jest demonem zarządzają-
cym). Zmiany przedstawione zostały na Li-
stingu 2.
Następnym krokiem jest utworzenie pli-
ków zawierających konfiguracje demonów:
zebra.conf i ripd.conf. Powinny się one zna-
leźć w katalogu /etc/quagga/.
Konfiguracja demona zebra odpowia-
dającego za obsługę podstawowych funk-
cji pakietu Quagga została przedstawiona
na Listingu 3. Parametr
hostname
zawiera
nazwę naszego routera (może ona być róż-
na od nazwy hosta na którym pakiet Quag-
ga został uruchomiony). Wiersze
password
oraz
enable password
powodują ustawie-
nie hasła i jego aktywację. Poprzez ustawie-
nie opcji
service advanced-vty
uzysku-
jemy większą funkcjonalność linii komend
pakietu Quagga, zaś parametr
log file
de-
finiuje plik logów. Dodanie linii rozpoczy-
nających się od frazy
access-list
definiuje
nową klasę dostępu do wiersza poleceń de-
mona Zebra: zezwalającą na logowanie je-
dynie z komputera lokalnego. Ostatnie dwie
linie powodują ustawienie obowiązującej
klasy dostępu.
Przykładowa konfiguracja demona RIPD
przedstawiona została na Listingu 4. Znacze-
nie części opcji konfiguracyjnych jest takie
samo jak w przypadku demona Zebra. Dyrek-
tywa
router rip
informuje, że chcemy ko-
rzystać z protokołu RIP. Interfejsy na których
nasłuchiwać ma RIPD dodajemy po opcji
ne-
twork
(w przypadku nasłuchiwania na wielu
interfejsach należy umieścić je w osobnych
liniach). Opcja
redistribute static
spo-
woduje wysyłanie informacji o trasach zde-
finiowanych statycznie, zaś
redistribu-
te connected
– informacji o wszystkich sie-
ciach, do których podłączony jest router. Zde-
finiowanie ścieżki dostępu do pliku z logami
jest możliwe przy użyciu opcji
log file
.
Konfiguracja demona RIPD jest już pra-
wie ukończona. Należy jeszcze zmienić wła-
ściciela plików ripd.conf i zebra.conf na qu-
agga za pomocą polecenia
chown quagga:quagga zebra.conf
ripd.conf
Demona RIPD uruchamiamy poleceniem
/etc/init.d/quagga start.
Przedstawiony opis dotyczy dystrybucji De-
bian. Użytkownikom innych dystrybucji pole-
cam zapoznanie się z informacjami zawartymi
na stronie głównej pakietu Quagga. Postać pli-
ków konfiguracyjnych pozostaje oczywiście
taka sama, niezależnie od zastosowanej dys-
trybucji. Ewentualne zmiany mogą dotyczyć
zmian w plikach konfiguracyjnych systemu.
Bezpieczeństwo protokołu RIP
Wszelka komunikacja pomiędzy routerami
obsługującymi protokół RIP odbywa się bez
54
luty 2010
Sieci komputerowe
Sieci komputerowe: część czwarta
55
www.lpmagazine.org
Sieci komputerowe
Sieci komputerowe: część czwarta
uwierzytelniania i szyfrowania. Aby zwięk-
szyć bezpieczeństwo routera, należy dodać
do pliku /etc/quagga/ripd.conf linie
key chain siec
key 1
key-string haslo
interface eth0
ip rip authentication mode md5
ip rip authentication key-chain
localnet
Spowodują one włączenie prostego uwierzy-
telniania routerów, co znacznie utrudni zada-
nie potencjalnemu włamywaczowi.
Monitorowanie pracy protokołu RIP
Po skonfigurowaniu protokołu RIP, nie po-
zostaje nam nic innego, jak tylko sprawdzić
jego działanie. Możemy tego dokonać przy
użyciu klienta telnet
telnet localhost 2602
Po zalogowaniu się możemy już sprawdzić
działanie demona RIPD poleceniami:
show
ip rip
,
show ip rip status
oraz
show
work-queues
. Więcej informacji na temat za-
stosowania wiersza poleceń demona RIPD
znajdziesz w dokumentacji pakietu Quagga.
Routing dynamiczny
z zastosowaniem protokołu OSPF
Protokół RIP sprawdza się doskonale w przy-
padku sieci do których podłączona jest nie-
wielka liczba komputerów. W przypadku
większych sieci, obsługiwanych przez dzie-
siątki lub setki routerów, zastosowanie proto-
kołu RIP może się okazać rozwiązaniem nie-
efektywnym. W takim przypadku powinieneś
skorzystać z możliwości, jakie daje protokół
OSPF (Open Shortest Path First).
Protokół OSPF
Protokół OSPF jest protokołem stanu łą-
cza (link-state protocol) – oznacza to, iż
oprócz okresowych komunikatów aktuali-
zacyjnych, informacje rozsyłane są w przy-
padku zmiany struktury sieci. W porówna-
niu do protokołu RIP, OSPF charakteryzu-
je się lepszą skalowalnością, większą wy-
dajnością oraz brakiem ograniczenia do 15
przeskoków. Ponadto, okresowe komuni-
katy aktualizacyjne wysyłane są co 30 mi-
nut, co ma niebagatelne znaczenie w przy-
padku sieci o dużej liczbie routerów, ponie-
waż zmniejsza ilość ruchu rozgłoszeniowe-
go. OSPF umożliwia również podział sie-
ci na tzw. obszary, podłączone do wspólnej
sieci szkieletowej.
Konfiguracja protokołu
OSPF w pakiecie Quagga
Protokół OSPF jest obsługiwany przez pakiet
Quagga – nie ma potrzeby instalacji żadne-
go dodatkowego oprogramowania. Jego kon-
figuracja przebiega w sposób podobny, jak
protokołu RIP.
Zanim utworzymy pliki konfiguracyjne
dla demona OSPFD, upewnij się, że został
on aktywowany poprzez dodanie linii w pliku
/etc/quagga/daemons
ospfd=yes
Następnym krokiem jest utworzenie pliku
konfiguracyjnego demona OSPFD: /etc/
quagga/ospfd.conf (Listing 5). Część opcji
konfguracyjnych ma takie samo znacznie jak
w przypadku demona Zebra i RIPD. Dyrek-
tywa
interface eth0
powoduje dokonanie
zmian w obrębie konfiguracji interfejsu eth0.
Opcje
ip ospf authentication message-
digest
oraz
ip ospf message-digest-key
1 md5 haslo
zwiększają bezpieczeństwo po-
przez zastosowanie prostego uwierzytelnia-
nia hasłem
haslo
. Dyrektywa
router ospf
powoduje aktywację protokołu OSPF; pole-
cenie
ospf router-id
służy do ustawienia
identyfikacji routera na podstawie adresu IP.
Za pomocą opcji
network 192.168.1.0/0
area 0
dodajemy nową sieć do konfiguracji
routera oraz oznaczamy ją jako część obszaru
0. Konfiguracja uwierzytelniania w obrębie
obszaru została zmieniona za pomocą pole-
cenia
area 0.0.0.0 authentication mes-
sage-digest
.
Włączenie demona OSPFD odbywa się
w sposób opisany w paragrafie poświęco-
nym protokołowi RIP. Po chwili od urucho-
mienia protokołu OSPF możesz sprawdzić
dodane trasy.
Monitorowanie pracy protokołu OSPF
Monitorowanie pracy demona OSPFD odby-
wa się w sposób bardzo podobny, jak w przy-
padku demona RIPD. Jedyną różnicą jest in-
ny port na którym należy nawiązać połącze-
nie poprzez klienta telnet:
telnet localhost 2604
Opis dostępnych komend znajdziesz w doku-
mentacji demona OSPFD (
man ospfd
).
Podsumowanie
Tym sposobem dotarliśmy do końca czwar-
tej części cyklu. Omówiliśmy w niej najważ-
niejsze zagadnienia związane z adresami IP,
maskami podsieci oraz trasowaniem statycz-
nym i dynamicznym. Dowiedziałeś się rów-
nież, w jaki sposób skonfigurować dowol-
ną dystrybucję Linuksa do pracy w charak-
terze routera.
Po zapoznaniu się z informacjami zawar-
tymi w tej części cyklu potrafisz już zaprojek-
tować i zbudować średnich rozmiarów sieć
komputerową, określić podział na podsieci
oraz umiejscowienie routerów w topologii
sieci. Czytelnikom zainteresowanym dodat-
kowymi informacjami na ten temat polecam
zapoznanie się z dokumentacją wykorzysty-
wanych aplikacji oraz dokumentami RFC
opisujących wykorzystane przez nas proto-
koły routingu dynamicznego. Wiele przydat-
nych informacji znajdziesz również w doku-
mentacji wymienionych przez nas dystrybu-
cji – ich zastosowanie może niejednokrotnie
znacznie przyspieszyć konfigurację sieci oraz
ułatwić rozwiązywanie problemów pojawia-
jących się na etapie eksploatacji.
W następnej części cyklu zajmiemy się
zagadnieniami związanymi z zapewnieniem
bezpieczeństwa naszej sieci. Omówimy kon-
figurację firewalli, wirtualnych sieci prywat-
nych VPN. Dowiesz się również, w jaki spo-
sób należy zadbać o bezpieczeństwo systemu
serwera. Do usłyszenia!
Autor interesuje się bezpieczeństwem
systemów informatycznych, programo-
waniem, elektroniką, muzyką rockową,
architekturą mikroprocesorów oraz za-
stosowaniem Linuksa w systemach wbu-
dowanych.
Kontakt z autorem: rl.kulaga@gmail.com
O autorze
• Dokumenty RFC – http://www.rfc-editor.org/
• Ipcalc – http://www.jodies.de/ipcalc
• Strona główna pakietu Quagga – http://www.quagga.net/
W Sieci