background image

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 

background image

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

background image

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ą

background image

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

background image

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

���

���

���

���

���������������������

�������������������������������������

��������������������������������������

����������������������������������

�����������������������

���������������������������

�������

���������������������������

���������

����������������������

���������

background image

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

background image

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

background image

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

background image

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 

background image

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