Hrvatska akademska i istraživačka mreža
  NASLOVNICA MAPA WEBA TRAŽILICA KONTAKTI CARNET WEB
Hrvatska akademska i istraživačka mreža
 
menu 4
Sigurnost
menu 4
Distribucija
menu 4
Pomoć
menu 4
Dokumenti
menu 4
menu 4

 

 

5-04-06 08:34
Tradicionalno usmjeravanje i naredba route

piše ANA KUKEC

U prošlim smo člancima (Mreža i Linux i Mreža i Linux II) spomenuli dvije osnovne funkcije mrežnog sloja: adresiranje i usmjeravanje. Upoznali smo se s naredbom ifconfig te podnaredbama link i address naredbe ip (ip link i ip address iz iproute2 paketa) koje upravljaju adresiranjem na mrežnom, ali i podatkovnom sloju. U ovom ćemo se članku upoznati s naredbom route i podnaredbom route naredbe ip (ip route) koje upravljaju usmjeravanjem.

 

Usmjeravanje je proces pronalaženja puta za prosljeđivanje paketa od izvora do odredišta prema određenom ključu. Usmjernik (router) je računalo s operacijskim sustavom koji ima podršku za usmjeravanje (npr. Linux ima ugrađenu podršku za osnovne i naprednije funkcije usmjeravanja). Podaci koje usmjernici koriste kako bi usmjerili neki paket zapisani su u tablicama usmjeravanja. Jedan redak tablice usmjeravanja opisuje sljedeći skok paketa na putu do odredišta identificiranog odredišnom IP adresom i/ili drugim parametrima i naziva se ruta. Svako računalo, neovisno o tome da li ima uključene funkcije usmjeravanja ili ne, ima tablicu usmjeravanja. U skladu s tim, uvesti ćemo pojmove "običnog računala" i "usmjernika". Usmjernik prima paket na jednom sučelju i prosljeđuje ga kroz neko drugo sučelje, dok obično računalo ima samo jedno sučelje (ako se radi o Ethernetu to je eth0) preko kojeg prima, ali i šalje pakete prema odredištu.

 

Funkcije običnog računala vezane uz usmjeravanje su: slanje paketa računalu koje se nalazi u istoj lokalnoj mreži te slanje paketa računalu u nekoj vanjskoj mreži (do takvog se računala dolazi preko usmjernika). Ovo zapravo znači da obično računalo ima barem dvije rute: jedna opisuje lokalnu mrežu, a druga opisuje put do usmjernika na koji je spojena lokalna mreža u kojoj se računalo nalazi. Svako računalo iz iste lokalne mreže, ima upravo takvu, jednaku minimalnu tablicu usmjeravanja. Neka je lokalna mreža 192.168.122.0/24, a adresa sučelja usmjernika koje se nalazi u ovoj mreži 192.168.122.1. Budući da ruta opisuje samo sljedeći skok na putu do odredišta, adrese preostalih sučelja usmjernika nas trenutno ne zanimaju. Pogledajmo kako izgleda ispis route naredbe primjerice računala 192.168.122.3/24:

 

host:~# route

Kernel IP routing table

Destination    Gateway        Genmask        Flags  Metric  Ref  Use  Iface

192.168.122.0  *              255.255.255.0  U      0       0    0    eth0

default        192.168.122.1  0.0.0.0        G      0       0    0    eth0

 

Kada računalo šalje paket nekom drugom računalu, čita odredišnu adresu i konzultira svoju tablicu usmjeravanja. Onoliko bitova odredišne adrese zapisane u paketu koliki je mrežni prefiks zapisan u polju Genmask uspoređuje s adresom odredišne mreže zapisane u Destination polju. Ukoliko u nekoj ruti pronalazi poklapanje, iz polja Gateway čita koji je sljedeći skok paketa te iz polja Iface čita kroz koje sučelje treba poslati paket prema van. Pogledajmo i preostala polja tablice:

  • Flags: U (ruta je aktivna), G (sljedeći skok je gateway),

  • Metric: težinski faktor rute koji se može dinamički postavljati ručno ili automatski kroz neki od servisa za upravljanje rutama

Ref i Use polja se u Linux jezgri najčešće ne koriste i imaju vrijednost 0.

 

Neka primjerice računalo 192.168.122.3/24 šalje paket računalu 192.168.122.4/24. Računalo 192.168.122.3/24 čita prva 24 bita odredišne IP adrese i pronalazi poklapanje u prvom redu tablice usmjeravanja. Na temelju praznog polja Gateway, računalo 192.168.122.3/24 zaključuje da se odredište nalazi u istoj lokalnoj mreži te da je paket (iz aspekta običnog računala kao usmjernika) već stigao na odredište. Iz polja Iface čita izlazno sučelje kroz koje šalje paket. Jasno, odredišno računalo nije izravno spojeno na usmjernik, već preko preklopnika ili koncentratora te daljnje radnje vezane uz prosljeđivanje paketa obavlja podatkovni i fizički sloj.

 

Ukoliko računalo šalje paket bilo kojem drugom računalu koje se ne nalazi u istoj lokalnoj mreži, tada će se poklapanje sigurno dogoditi u drugom retku tablice usmjeravanja. Naime, druga ruta u tablici naziva se default ruta, a označava se i s 0/0 u Destination polju. Usporedba bilo koje odredišne adrese s ovom rutom znači poklapanje. Budući da je polje Genmask jednako 0.0.0.0, to zapravo znači da se niti jedan bit odredišne adrese paketa i odredišne adrese u Destination polju ne uspoređuju. Drugim riječima, svi oni paketi koji se ne usmjere niti jednom rutom prije default rute, usmjeriti će se prema default ruti. Sljedeći skok za takve pakete je usmjernik na koji je spojena lokalna mreža kao što je to zapisano u polju Gateway. Izlazno sučelje je, naravno, eth0.

 

Već je spomenuto da Linux ima ugrađenu kako osnovnu tako i naprednu podršku za obavljanje različitih funkcija usmjernika. Pregled i uključenje funkcija usmjernika moguće je napraviti kroz proc virtualni datotečni sustav, naredbom sysctl ili je moguće izravno urediti datoteku /etc/sysctl.conf te kasnije učitati postavke sa sysctl -p naredbom (budući da se jezgrine varijable postavljaju pri podizanju sustava):

 

host:~# cat /proc/sys/net/ipv4/conf/all/forwarding 0

 

host:~# echo "1" /proc/sys/net/ipv4/conf/all/forwarding 1 /proc/sys/net/ipv4/conf/all/forwarding

 

host:~# sysctl net.ipv4.conf.all.forwarding net.ipv4.conf.all.forwarding = 0

 

host:~# sysctl -w net.ipv4.conf.all.forwarding=0 net.ipv4.conf.all.forwarding = 0

 

Princip odabira rute kod usmjernika jednak je onome kod običnog računala. Usmjernik primljeni paket prosljeđuje kroz sučelje za koje postoje dvije mogućnosti: sučelje može biti izravno (zapravo preko koncentratora ili preklopnika) spojeno na usmjernik (tada je polje sljedećeg skoka tj. polje Gateway prazno) ili sučelje može biti u mreži koja nije izravno spojena na usmjernik i do nje se dolazi preko usmjernika koji je spojen na promatrani usmjernik. Uočimo također da će se u polju Iface pojavljivati različita sučelja budući da usmjernik ima veći broj sučelja. Zamjetimo također da su IP adrese navedene u ovoj tablici javne adrese, budući da se privatne adrese (iz primjera tablice usmjeravanja običnog računala) ne smiju pojaviti na Internetu. Pogledajmo primjer tablice usmjeravanja usmjernika:

 

host:~# route

Kernel IP routing table

Destination   Gateway        Genmask        Flags  Metric  Ref  Use  Iface

161.53.11.0   *              255.255.255.0  UG     0       0    0    eth0

193.198.0.0   161.53.15.1    255.255.0.0    UG     0       0    0    eth1

default       161.53.17.1    0.0.0.0        UG     0       0    0    eth2

 

Ukoliko se odredišna adresa paketa nalazi u mreži 161.53.11.0/24, tj. ako je prvih 24 bita odredišne adrese i prvih 24 bita Destination polja jednako, znači da je paket već stigao u odredišnu mrežu i usmjernik ga šalje (u tu odredišnu mrežu) kroz sučelje eth0.

 

Paket s odredišnom adresom iz mreže 193.198.0.0/16 još nije stigao na odredište i usmjernik ga kroz sučelje eth1 šalje do usmjernika 161.53.15.1 koji će ga dalje usmjeriti prema odredišnoj mreži 193.198.0.0.

 

Preostali paketi pronalaze poklapanje u default ruti i usmjernik ih šalje kroz sučelje eth2 prema usmjerniku 161.53.17.1.

 

Što se događa kada neki paket "pogađa" dvije rute? Primjerice, neka je odredišna adresa paketa 161.53.65.11.7/24 i neka usmjernik u tablici sadrži sljedeće dvije rute:

 

host:~# route

Kernel IP routing table

Destination   Gateway        Genmask        Flags  Metric  Ref  Use  Iface

161.53.11.0   *              255.255.255.0  UG     0       0    0    eth0

161.53.0.0    161.53.17.1    255.255.0.0    UG     0       0    0    eth1

 

Kod prve rute, usmjernik uspoređuje prva 24 bita odredišne adrese paketa i adrese odredišne mreže te nalazi poklapanje. No, i u drugoj ruti, nakon usporedbe prvih 16 bitova odredišne adrese paketa i adrese odredišne mreže, također nalazi poklapanje. Usmjernik odabire prvu rutu. Ovdje vrijedi pravilo da se rute odabiru redom prema tablici u kojoj se poredane prema padajućim vrijednostima mrežnih prefiksa.

 

Do sada smo spomenuli dvije vrste rute: jedinstvena ruta do odredišta (unicast ruta) te default ruta. Upravo su te dvije rute te reject ruta jedine rute koje se naredbom route mogu dodavati u tablicu usmjeravanja ili brisati iz nje, primjerice:

  • dodavanje rute za odredišnu mrežu 193.198.0.0/16 kroz izlazno sučelje eth0:
    route add -net 193.198.0.0 netmask 255.255.0.0 dev eth0

     

  • dodavanje default rute prema usmjerniku 161.53.17.1:
    route add default gw 161.53.17.1

     

  • dodavanje rute za odbacivanje paketa namjenjenih mreži 10.0.0.0/8 (uz povratnu informaciju u obliku paketa):
    route add 10.0.0.0 netmask 255.0.0.0 reject

Brisanje ruta iz tablice potpuno je analogno dodavanju ruta, uz zamijenu ključne riječi add s del.

 

Ovakvo usmjeravanje, na temelju jedne tablice usmjeravanja i odredišne adrese kao ključa odabira rute, naziva se tradicionalno usmjeravanje. Zbog principa odabira rute prema najduljem mrežnom prefiksu naziva se još i longest-prefix match routing. Spomenimo samo da uz ovakvo usmjeravanje postoji i naprednije usmjeravanje, tzv. policy routing te da je ovdje opisivana tablica tek jedna od više njih koje postoje u jezgri Linuxa 2.x. Također, postoji i daleko veći broj tipova ruta od onih kojima može manipulirati naredba route. Više o tome, pročitajte u članku o naredbama ip route i ip rule te usmjeravanju na temelju pravila.

 





[Lista]
Ovu uslugu CARNeta realizira Sveučilišni računski centar Sveučilišta u Zagrebu
  Copyright ©2005. CARNet. Sva prava zadržana. Impressum.
Mail to
sys-portal@CARNet.hr