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

 

 

7-04-06 08:31
Usmjeravanje na temelju pravila: ip rule naredba

piše ANA KUKEC

U prošlom smo članku opisali tablice usmjeravanja u linux jezgrama >=2.2. Podsjetimo se, svakoj je tablici pridružen broj (od 1 do 255), pri čemu su tri broja rezervirana - za lokalnu tablicu (ID 255), glavnu tablicu (ID 255) i default tablicu (ID 253) kako to opisuje /etc/iproute2/rt_tables. Preostale tablice, prema potrebi, dodaje administrator.

 

Veći broj tablica usmjeravanja uz Rule-Policy bazu (RPDB) omogućavaju naprednije usmjeravanje od tradicionalnog, koje se bazira na poklapanju odredišne adrese paketa i adrese odredišne mreže zapisane u ruti s najdužim mrežnim prefiksom (longest-prefix match). Spomenuta baza propisuje redoslijed pregledavanja tablica usmjeravanja. Odluka o tome zadovoljava li neki paket pravilo iz RPDB baze donosi se na temelju nekih polja iz zaglavlja paketa: izvorišna adresa, odredišna adresa, ToS zastavice, fwmark oznaka i ulazno sučelje.

 

Ukoliko se paket ne može usmjeriti po nekoj od ruta iz priručnog spremnika ruta, tada se konzultiraju pravila iz RPDB baze. Svakom je pravilu pridružen broj (od 0 do 32767) pri čemu manji redni broj označava veći prioritet. Pregledavanje pravila počinje od pravila 0 pa nadalje. Za svako se pravilo, na temelju relevantnih polja iz zaglavlja paketa, provjerava da li paket zadovoljava pravilo. Ukoliko zadovoljava, pravilo propisuje koju je akciju potrebno izvesti; najčešće je to pregledavanje zadane tablice usmjeravanja u potrazi za rutom ili primjerice slanje ICMP unreachable poruke na izvorišnu adresu. Ukoliko je akcija bila potraga za rutom i ako je ruta u zadanoj tablici pronađena, paket se usmjerava prema toj ruti. U suprotnom, jezgra nastavlja prolazak kroz RPDB tablicu ka sljedećem pravilu. Ovaj se postupak ponavlja dok se ne prođe svih 32767 pravila iz baze.

 

Ispišimo RPDB bazu naredbom ip rule:

 

host:~# ip rule show

0: from all lookup local

32766: from all lookup main

32767: from all lookup default

 

Kao i kod tablica, i kod pravila su 3 vrijednosti rezervirane. Pravilo 0 je najvišeg prioriteta što znači da se lokalna tablica uvijek provjerava prva (običaj je reći da su local, broadcast i nat rute visokog prioriteta). Zatim se prelazi na sljedeće pravilo, s brojem 32766 koje nalaže potragu za rutom u glavnoj tablici. Tek tada se potraga za rutom obavlja u default tablici, što je i razumljivo, jer ona obavlja funkciju naknadnog usmjeravanja. Kao što vidimo, ispred znaka „:“ nalazi se prioritet pravila, a nakon „:“ nalazi se pravilo (popis atributa iz zaglavlja paketa) i akcija koju je potrebno izvesti. U ovom slučaju, svaki paket zadovoljava pravilo, a zadana akcija je potraga za rutom u zadanoj tablici usmjeravanja.

 

Pokažimo sada kako urediti RPDB bazu korištenjem naredbe ip rule. Tipovi pravila su isti kao i kod ruta. Najčešći tip je unicast pravilo (unicast se može izostaviti), koje kao akciju zadaje tablicu usmjeravanja u kojoj treba tražiti rutu. U sljedećem primjeru paketi s izvorišne adrese 192.168.122.128 i ulaznog sučelja eth1 usmjerit će se prema nekoj od ruta iz tablice 7, ukoliko takva ruta u njoj postoji:

   ip rule add unicast from 192.168.122.128 iif eth1 table 7

 

Tip pravila nat uzrokuje prepisivanje izvorišne adrese paketa, a zatim se potraga za rutom obavlja u glavnoj tablici usmjeravanja:

   ip rule add nat 161.53.55.27 from 192.168.122.0/24

 

Tip pravila unreachable ima za posljedicu generiranje poruke ICMP nedostupnosti na izvorišnu adresu paketa:

   ip rule add unreachable iif eth0 tos 0xf2 from 192.168.122.128/24

Analogno tome dodaju se i pravila tipa prohibit i blackhole.

 

Pogledajmo sada kako izgleda RPDB baza:

 

host:~# ip rule show

0:      from all lookup local

32763:  from 192.168.122.128/24 iif eth0 tos 0xf2 lookup main

32764:  from 192.168.122.0/24 lookup main map-to 161.53.55.27

32765:  from 192.168.122.128 iif eth1 lookup 7

32766:  from all lookup main

32767:  from all lookup default

 

 

Stateless NAT implementacija

 

NAT bez stanja (stateless NAT) najjednostavniji je oblik NAT-a. Podrazumijeva prepisivanje izvorišne adrese u izlaznim paketima i prepisivanje odredišne adrese u ulaznim paketima. U praksi se opisana funkcionalnost češće implementira netfilterom, no pokazat ćemo kako je ostvariti ip naredbom. Neka je primjerice privatna adresa našeg računala 192.168.122.129, a javna adresa kojom je prepisujemo 161.53.55.99:

 

(1) host:~# ip route add nat 161.53.55.99 via 192.168.122.129

(2) host:~# ip rule add nat 161.53.55.99 from 192.168.122.129

(3) host:~# ip route flush cache

    host:~# ip route show table local type nat

    nat 161.53.55.99 via 192.168.122.129 table local scope host

    host:~# ip rule show

    0:      from all lookup local

    32765:  from 192.168.100.17 lookup main map-to 205.254.211.17

    32766:  from all lookup main

    32767:  from all lookup 253

  1. U lokalnu tablicu usmjeravanja dodajemo rutu tipa nat koja propisuje prepisivanje odredišne adrese. U svakom pristiglom paketu s odredišnom adresom 161.53.55.99, ta se adresa prepisuje privatnom adresom 192.168.122.129.

     

  2. Dodajemo pravilo tipa nat u RPDB bazu. Pravilo tipa nat propisuje prepisivanje izvorišne adrese. U svakom izlaznom paketu, izvorišna adresa 192.168.122.129 prepisuje se javnom adresom 161.53.55.99.

     

  3. Nakon bilo kakvih promjena u tablicama ili u RPDB bazi dobro je očistiti priručni spremnik ruta, kako bi se osigurali da će jezgra sigurno pretraživati tablice usmjeravanja, odnosno neće pogoditi neku "zaostalu" rutu u spremniku.





[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