Quagga

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen Teki (vitalap | szerkesztései) 2010. december 31., 14:26-kor történt szerkesztése után volt.

(eltér) ←Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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

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
Port
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.

Quagga.jpg

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:

zebra.conf
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
!
ospfd.conf
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

Személyes eszközök