Směrujeme s protokolem OSPF

Napsal (») 12. 3. 2010, přečteno: 3074×

Packety putující počítačovou sítí se chovají podobně jako auta na silnici. Každý, kdo jel alespoň jednou autem ví, že z města A se do města B může dostat přímou cestou po dálnici, jindy třeba zajížďkou přes město C a nebo může jet po okreskách.

V tomto článku si vysvětlíme, jak zkonfigurovat počítač v roli routeru s linuxovým systémem, směrovacím démonem quagga a protokol OSPF.

Protokol OSPF

OSPF je zkratkou názvu Open Shortest Path First a je to protokol, který se používá pro vnitřní směrování v autonomním systému (zkráceně AS). Autonomním systémem je kupříkladu infrastruktura vašeho poskytovatele internetové konektivity, nebo v menším měřítku třeba wifi síť ve vaší lokalitě. Dynamické směrování s OSPF se používá v případech, kdy se cesta ze sítě ven dá uskutečnit více než jednou trasou. OSPF je link-state protokol; to znamená, že si sousední routery vyměňují informace o stavu jejich linek. To tudíž znamená i to, že každý ze směrovačů zná topologii celé sítě. Ve výchozí konfiguraci je tzv hello packet odesílán po deseti vteřinách, a když nepřijde žádná odezva do čtyřicetivteřinového limitu, vyprší dead interval a linka je považována za nepoužitelnou. Pak následuje přepočet tras a router hledá cestu jinudy. O tomto však informuje i všechny své sousedící routery (neighbor). Proces obhospodařující směrovacího démona OSPF předá zjištěné informace démonu zebra, který již jádru OS sdělí novou default routu a routy přijaté od sousedů.



Na obrázku je situace, kdy router A je takzvaným hraničním routerem autonomního systému a routery B a C jsou routery v různých lokalitách sítě. Na obrázku jsou patrné možné cesty ven z oblasti. V tomto případě se tedy směrovací démon quagga bude starat o to, aby router A propagoval ostatním routerům sítě sebe jako default routu (defaultní cestu ven). Pomocí parametru cost můžeme definovat takzvanou cenu linky a tím ovlivnit i preferovanou trasu. Nebo můžeme provoz rovnoměrně rozprostřít a nechat jej téci více směry. Dokonce se dá i zařídit, že směr ven půjde jinou cestou, než směr dovnitř. V našem případě budeme považovat všechny linky za kvalitativně stejné a proto na všech spojovacích linkách nastavíme cenu 100. Nebudeme definovat žádnou upřednostňovanou cestu. Platí zde princip, že čím menší cena linky, tím je linka kvalitnější a v tom případě má přednost. V případě, že se nám porouchá spoj mezi souterem A a B se tedy nastaví na routeru B defaultní routa přes router C s cenou 201 a rovněž cena na router A bude 200. Na směrovači A bude cost na směrovač B rovna hodnotě 200 a trasa půjde přes router C. Samozřejmě že se navzájem vypropagují i cesty do sítě BB a CC. V každém případě je nutné vypnout na směrovačích RP Filter, aby směrovačům nevadilo, že odpověď na packet odeslaný z jednoho rozhraní může přijít z rozhraní jiného.

Kód:

#!/bin/bash
for i in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "0" > $i;
done echo "1" > /proc/sys/net/ipv4/conf/lo/rp_filter


V našem případě jsou mezi směrovači použity spojovací sítě s maskou /30 (dostupné 4 IP adresy, využitelné 2). Za routery B a C jsou v cítích BB a CC koncoví uživatelé, kteří mají nastavenu default routu na router B, potažmo C.

Konfigurace směrovačů

Na routerech default routu nastavovat nebudeme. Ta bude automaticky nastavena díky OSPF podle vypočtené nejkratší trasy. O komunikaci s kernelem OS, jakož i o nastavení defaultní routy se přes Netlink rozhraní postará démon zebra. V konfiguračním souboru zebry je potřeba nastavit název, heslo, heslo pro privilegovaný režim, vypsat rozhraní a v případě nutnosti vypsat statické směrování. Na hraničním routeru (router A) by měla být nastavena i defaultní routa směrem ven.

Konfigurace zebra.conf

hostname router
password heslo
enable password jine_heslo
log file /dev/null
service advanced-vty
!
interface lo
!
interface eth0
!
interface eth1
!
interface eth2
!


Konfigurace démona OSPF je kapku složitější, ale není to nic hrozného. Nastavíme zde opět jméno routeru, hesla pro přístup a privilegovaný režim, vyjmenujeme interfacy na kterých chceme používat OSPF a nakonec globální nastavení plus pokročilé funkce.

 

Konfigurace ospfd.conf

! Jmeno routeru
hostname router
! Heslo pro vzdaleny vty pristup (konzole)
password heslo
! Heslo do privilegovaného rezimu
enable password jineheslo
! Cesta k log souboru
log file /dev/null
! Povolime funkce rozsireneho virtual-terminalu (konzole)
service advanced-vty
!
interface lo
description system loopback
!
! Prvni rozhrani zakomentujeme, do internetu nechceme vysilat OSPF
!interface eth0
!
! Druhe rozhrani
interface eth1
description smer router A
ip ospf cost 100
ip ospf dead-interval 40
ip ospf hello-interval 10
!
! Treti rozhrani
interface eth2
description smer router C
ip ospf cost 100
ip ospf dead-interval 40
ip ospf hello-interval 10
!
!
! Konfigurace ospfd
router ospf
! ID-routeru (treba jeho IP adresa)
ospf router-id 10.10.10.1
redistribute connected metric-type 1
redistribute static metric-type 1
!
network 10.0.0.0/24 area 0
network 10.0.1.0/24 area 0
network 10.0.2.0/24 area 0
!
! tohle JEN NA HRANICNIM ROUTERU (router A) - propagovani default routy
default-information originate always metric-type 1


Díky tomuto nastavení a OSPF se na směrovač A budou propagovat i statické routy do sítí BB a CC z routerů B a C a také mezi B a C si budou routery předávat cesty na sítě BB a CC.

 

Malé upozornění

Sousední routery musí mít stejné nastavení intervalů pro hello packety a také dead interval, v opačném případě se spolu routery nedohodnou. Také router-id musí být v celé OSPF síti unikátní. V případě, že nebude splněna tato podmínka, bude proces starající se o OSPF vykazovat velice divné chování, v horším případě zkolabuje úplně. Doporučuji tedy konfigurační soubory důkladně zkontrolovat na překlepy.

Výpis směrovací tabulky routeru B

Adresát      Brána        Maska           Přízn Metrik Odkaz  Užt Rozhraní
10.0.0.0     0.0.0.0      255.255.255.252 U     0      0        0 eth0
10.0.0.4     0.0.0.0      255.255.255.252 U     0      0        0 eth1
10.0.2.0     10.0.0.6     255.255.255.0   UG    100    0        0 eth1
10.0.1.0     0.0.0.0      255.255.255.0   U     0      0        0 eth2
127.0.0.0    0.0.0.0      255.0.0.0       U     0      0        0 lo
0.0.0.0      10.0.0.1     0.0.0.0         UG    101    0        0 eth0


Pomocí metriky se vypočítá nejkratší cesta a z výpisu výše je lehce poznat, že routy označené metrikou nastavila zebra.

 

Quagga VTY shell

Démony ospfd a zebra lze za provozu ovládat přes konzoli. Ve našem nastavení budou naslouchat pouze na loopback rozhraní. Přihlásit se lze pomocí telnetu; zebra naslouchá na portu 2601 a ospfd na portu 2604.

Závěr na konec

Kdo chápe základní principy statického routování, nebude mu dynamické routování pomocí protokolu OSPF dělat větší potíže. Šedivá je teorie, zelený je strom praxe, proto doporučuji si zaexperimentovat (ale ne v produkční síti :-))

Hodnocení:     nejlepší   1 2 3 4 5   odpad
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
bourak z IP 84.21.109.*** | 17.3.2010 11:56
Pěkný přivýdělek jen za pár minut denně. Nejedná se o podvod
www.best-klikacky.estranky.cz/
Případné dotazy směřujte na rimmer78@seznam.cz


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel sedm a tři