Quagga
A Quagga szoftvercsomag segítségével valódi routerré alakíthatunk egy unixos számítógépet. A Quagga a legfontosabb IPv4-es routing-protokollok (RIP, OSPF, BGP) mellett az IPv6-ot is támogatja. Az aktuális verzió letölthető a: http://www.quagga.net/ oldalról, de természetesen bináris csomagok formájában is elérhető, pl. Debianra.
Tartalomjegyzék[elrejtés] |
1 A Quagga története
A csomagot 2005-ig a GNU Zebra néven fejlesztették, de 2005-ben a fejlesztés elakadt. Néhány fejlesztő létrehozta a Quagga névre keresztelt forkot, amit azóta is aktívan fejlesztenek.
2 A Quagga architektúrája
A Quagga architektúráját az alábbi blokkdiagramon láthatjuk (a "zebra" név örökség):
+----+ +----+ +-----+ +-----+ |bgpd| |ripd| |ospfd| |zebra| +----+ +----+ +-----+ +-----+ | +---------------------------|--+ | v | | UNIX Kernel routing table | | | +------------------------------+
Az egyes routing-protokollokat önálló daemonok valósítják meg. Ezek a zebra daemonnal (és persze a hálózat többi routerével) beszélgetnek, a zebra daemon pedig a bejövő információ alapján frissíti/módosítja a kernel routing-tábláját.
A konfiguráció nem a unixos hálózati szolgáltatások, hanem a "dobozos" routerek (Cisco stb.) filozófiáját követi: van ugyan konfigurációs fájl, amiben az indításkor érvényes paramétereket beállíthatjuk, a további konfigurációt azonban egy telnet segítségével elérhető parancssoros felületen keresztül szokás elvégezni.
3 A Quagga beállítása
Először is gondoskodjunk arról, hogy a zebra daemon és az általunk használni kívánt routing-protokoll daemonja elinduljon; ennek a mikéntje oprendszer- és disztribúciófüggő. Végső esetben közvetlenül a parancssorból is futtathatók a daemonok, de mivel ilyenkor az interaktív shelltől öröklik az állapotterük egy részét, ez nem javasolt.
A konfigurációs felületet úgy érhetjük el, hogy a megfelelő daemon telnet-portjára telnetelünk. Ezek a portszámok alapértelmezés szerint a következők:
Szolgáltatás neve | Megjegyzés | |
zebrasrv | 2600/tcp | zebra service |
zebra | 2601/tcp | zebra vty |
ripd | 2602/tcp | RIPd vty |
ripngd | 2603/tcp | RIPngd vty |
ospfd | 2604/tcp | OSPFd vty |
bgpd | 2605/tcp | BGPd vty |
ospf6d | 2606/tcp | OSPF6d vty |
ospfapi | 2607/tcp | ospfapi |
isisd | 2608/tcp | ISISd vty |
Amíg nem nyúlunk hozzájuk telnettel, a daemonok a konfigurációs fájljukban megadott konfiguráció alapján működnek. A konfigurációs fájlok helye a telepítés módjától függően eltérhet (forrásból telepítés esetén pl. lehetnek a /usr/local/etc könyvtárban, csomagból való telepítés esetén pedig a /etc/quagga könyvtárban).
Lássunk egy példát!
zebra.conf:
! -*- zebra -*- ! ! zebra sample configuration file ! ! $Id: zebra.conf.sample,v 1.1 2002/12/13 20:15:30 paul Exp $ ! hostname Router password zebra enable password zebra ! ! Interface's description. ! !interface lo ! description test of desc. ! !interface sit0 ! multicast ! ! Static default route sample. ! !ip route 0.0.0.0/0 203.181.89.241 ! !log file zebra.log
A felkiáltójelek (és egyébként a # karakterek is) kommentet vezetnek be; a zebra a sor további részét figyelmen kívül hagyja.
A zebra konfigurációjában kell felsorolnunk, hogy mely interfészek routingját szeretnénk a zebrára bízni.
A dobozos routereknél megszokott módon kétféle hozzáférési szint van: a "sima" és az "enable". Sima userként a "password" direktíva után megadott jelszóval hitelesíthetjük magunkat, és csak lekérdezni tudunk (pl. az aktuális konfigurációt a show parancs segítségével).
Ha változtatni szeretnénk a konfiguráción, akkor először "enable" módba kell váltanunk az enable parancs beírásával és az "enable password" megadásával.
Enable módban a következő parancsok állnak rendelkezésünkre:
clear Reset functions configure Configuration from vty interface copy Copy configuration debug Debugging functions (see also 'undebug') disable Turn off privileged mode command echo Echo a message back to the vty end End current mode and change to enable mode. exit Exit current mode and down to previous mode help Description of the interactive help system list Print command list logmsg Send a message to enabled logging destinations no Negate a command or set its defaults quit Exit current mode and down to previous mode show Show running system information terminal Set terminal line parameters who Display who is on vty write Write running configuration to memory, network, or terminal
A példában is szereplő OSPF routing az egyik legelterjettebb a Quagga-ban.
Lássunk egy példát!
ospfd.conf:
! -*- ospf -*- ! ! OSPFd sample configuration file ! ! hostname ospfd password zebra !enable password please-set-at-here ! !router ospf ! network 192.168.1.0/24 area 0 ! log stdout
4 Konfigurációs példa
Állítsuk be az alábbi képen látható hálózat routereit úgy, hogy OSPF fölött cseréljenek routing-információt.
A routerek különböző subneteket kötnek össze, valamint a Router5-n keresztül a PC-k számára elérhető az internet. A PC-ken is érdemes futtatni a Quagga-t, ugyanis így automatikusan karbantartja a routing táblázatot, nem pedig nekünk kell kézzel beállítani például a default gateway-t (alapértelmezett átjárót). A konfig file-ok lehetnek rövidek és hosszúak, nagyon sok opcionális beállítás használható. Például itt: [1] sok ilyen parancs található. Vannak router-, interface- és areaparancsok, így mindenki megtalálhatja a számára fontosat. Itt található például az a beállítás is, hogy az ospf a routing tábla mely elemeit hirdesse (statikus,ospf által bejegyzett stb.), valamint mely interfészeken kommunikáljon, melyikeken nem (értelemszerűen az Internet felé nem szeretnénk küldeni OSPF üzeneteket).
A jelenlegi konfigurációban az egyszerű beállítások is megfelelőek, az Internet felőli részt passzívvá teszem (passive-interface ,nem küld rajta üzenetet, de az arra található hálózatot hirdeti). Egy area-ba tartozik jelenleg a hálózat, de természetesen több részre is oszthatjuk. Mindegyik konfig fájlban definiáljuk az area-t és a hozzátartozó subnetet. Ezt jelöli a area ... range ... sor, amellyel összekötjük az area azonosítót a hálózati subnettel. Így csak azokat az üzeneteket fogadja el, amely ezzel a párosítással van ellátva. Emellett engedélyeznünk kell az interfészeket, erre az interface .... area .... sor hivatott, mellyel megadjuk hogy melyik interfészen mely area-át érheti el, amely interfész itt nem szerepel azt nem használja az OSPF működésekor.
A konfigurációs fájlok tartalma:
PC1 | PC2 | PC3 | PC4 | Router1 | Router2 | Router3 | Router4 | Router5 |
hostname PC1 password yoli enable password yoli ! interface eth0 ! line vty ! |
hostname PC2 password yoli enable password yoli ! interface eth0 ! line vty ! |
hostname PC3 password yoli enable password yoli ! interface eth0 ! line vty ! |
hostname PC4 password yoli enable password yoli ! interface eth0 ! line vty ! |
hostname Router1 password yoli enable password yoli ! interface eth0.0 interface eth0.1 ! line vty ! |
hostname Router2 password yoli enable password yoli ! interface eth0.0 interface eth0.1 ! line vty ! |
hostname Router3 password yoli enable password yoli ! interface eth0.0 interface eth0.1 ! line vty ! |
hostname Router4 password yoli enable password yoli ! interface eth0.0 interface eth0.1 ! line vty ! |
hostname Router5 password yoli enable password yoli ! interface eth0.0 interface eth0.1 ! line vty ! |
PC1 | PC2 | PC3 | PC4 | Router1 | Router2 | Router3 | Router4 | Router5 |
! hostname PC1 password yoli enable password yoli log stdout ! interface eth0 ! router ospf router-id 0.0.0.1 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0 area 0.0.0.1 ! line vty ! |
! hostname PC2 password yoli enable password yoli log stdout ! interface eth0 ! router ospf router-id 0.0.0.2 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0 area 0.0.0.1 ! line vty ! |
! hostname PC3 password yoli enable password yoli log stdout ! interface eth0 ! router ospf router-id 0.0.0.3 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0 area 0.0.0.1 ! line vty ! |
! hostname PC4 password yoli enable password yoli log stdout ! interface eth0 ! router ospf router-id 0.0.0.4 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0 area 0.0.0.1 ! line vty ! |
! hostname Router1 password yoli enable password yoli log stdout ! interface eth0.0 interface eth0.1 ! router ospf router-id 0.0.0.11 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0.0 area 0.0.0.1 interface eth0.1 area 0.0.0.1 ! line vty ! |
! hostname Router2 password yoli enable password yoli log stdout ! interface eth0.0 interface eth0.1 ! router ospf router-id 0.0.0.12 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0.0 area 0.0.0.1 interface eth0.1 area 0.0.0.1 ! line vty ! |
! hostname Router3 password yoli enable password yoli log stdout ! interface eth0.0 interface eth0.1 ! router ospf router-id 0.0.0.13 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0.0 area 0.0.0.1 interface eth0.1 area 0.0.0.1 ! line vty ! |
! hostname Router4 password yoli enable password yoli log stdout ! interface eth0.0 interface eth0.1 ! router ospf router-id 0.0.0.14 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0.0 area 0.0.0.1 interface eth0.1 area 0.0.0.1 ! line vty ! |
! hostname Router5 password yoli enable password yoli log stdout ! !koltseget adhatunk a linknek interface eth0.0 ip ospf cost 1 ! interface eth0.1 ! router ospf router-id 0.0.0.15 area 0.0.0.1 range 192.168.0.0/16 ! interface eth0.0 area 0.0.0.1 passive-interface eth0.1 ! line vty ! |
Készítő: Teki