Quagga kasutamine Debianiga
Sisukord
Sissejuhatus
Quagga http://www.quagga.net/ on mitmetel levinud operatsioonisüsteemidel töötav modulaarne ruutingutarkvara, mis toetab selliste ruutinguprotokollide kasutamist
- OSPF
- BGP
- RIP
- IS-IS
Abstraktsel tasemel võib Quagga arhitektuuri kujutada selliselt
+----+ +----+ +-----+ +-----+ |bgpd| |ripd| |ospfd| |zebra| +----+ +----+ +-----+ +-----+ | +---------------------------|--+ | v | | UNIX Kernel routing table | | | +------------------------------+
- alati töötab protsess zebra, mille ülesandeks on teistelt deemonitelt saadud andmete põhjal muuta kerneli ruutingutabelit
- vastavalt sellele, kuidas on konkreetne ruuter seadistatud töötab seal üks või enam ruutingudeemonit (bgpd, ripd, ospfd)
OSPF protokoll
Internet on jagatud haldusaladeks, iga haldusala haldab tavaliselt ISP või muu organisatsioon ning ühte sellist ala nimetatakse Autonomous System (AS)
AS5050 AS5051 AS5052
Tavaliselt arvutatakse ruutinguid IGP (Interior Gateway Protocol) protokollide perekonda kuuluva protokolli abil (nt OSPF) ASi sees ning ASide vahel EGP (Exterior Gateway Protocol) perekonna protokollidega (reeglina BGP4 protokolliga). Reeglina kasutab AS ühte või enamat nö mõistliku suurusega aadressruumi osa. Näiteks aadressil http://www.radb.net/ asub Routing Assets Database, mille abil saab küsida, millisele organisatsioonile usaldatud aadressruumi kuulub mingi konkreetne ip aadress.
OSPF (Open Shortest Path First) protokoll on IGP protokollide perekonda kuuluv ruutinguprotokoll. Käesolevas tekstis esitatud kasutusjuhtum on suhteliselt erandlik, kuid igati väärikas ja praktiline juhtum, mis sobib ruutinguprotokolliga tutvuse tegemiseks, kusjuures piisab kui on kasutada nö tavaline PC arvuti.
Eesmärk
Olgu eesmärgiks kahe lokatsiooni vahel moodustada kahe füüsilise lingi abil redundantne ühendus
- igal ajahetkel käib andmevahetus üle ühe või teise lingi
- kui üks link rikneb, arvutavad ruuterid automaatselt ruutingutabelid ümber ja andmevahetus jätkub üle teise lingi
Kusjuures antud juhtumi katsetus on viidud läbi Xen platvormil töötavate virtuaalsete arvutitega.
internet | | ___ | | | ___ | |------ 192.168.15.253 192.168.15.254 | ------| | |___| | ____ eth1 eth1 ____ | | |___| | | |------ 1 Gbit/s -----| |----' | 192.168.17.17 --------| | | |--------- 192.168.14.14 ___ | eth0 | | | | eth0 | ___ | |------ |____|------ 10 Mbit/s -----|____| ------| | |___| | eth2 eth2 | |___| | 192.168.16.253 192.168.16.254 | | | Harukontor Peakontor
Sarnast tulemuse saab üldiselt saavutada kahel moel
- redundantsus moodustatakse etherneti kihis - võrguseadmete nn bonding; tavaliselt on sellisel juhtumil füüsiline otspunktide kaugus piiratud nö kaabli pikkusega, kuni mõned sajad meetrid
- redundantsus moodustatakse ip kihis - kasutatakse ruutinguprotokolle, nagu nt antud juhtumil ospf; iseenesest ei ole otspunktide vahekaugus praktiliselt piiratud
Tarkvara paigaldamine
Quagga tarkvara paigaldamiseks tuleb öelda
# apt-get install quagga
Seadistusfailid asuvad kataloogis /etc/quagga.
FreeBSD's asub quagga paigaldusfailid ports/net/quagga
Ruuterite seadistamine
Enne Quagga tarkvara seadistamist tuleb ruuterite võrguseadmed seadistada. Seejärel moodustada kummaski arvutis sellise sisuga /etc/quagga/ospfd.conf seadistusfailid.
Peakontor
/etc/quagga/ospfd.conf sisu võiks olla nt selline
hostname ospfd password zebra log stdout ! interface eth1 ! interface eth2 ! router ospf ospf router-id 192.168.14.14 redistribute connected network 192.168.15.0/24 area 0.0.0.0 network 192.168.16.0/24 area 0.0.0.0 ! line vty
Harukontor
/etc/quagga/ospfd.conf sisu võiks olla nt selline
hostname ospfd password zebra log stdout ! interface eth1 ! interface eth2 ! router ospf ospf router-id 192.168.17.17 redistribute connected network 192.168.15.0/24 area 0.0.0.0 network 192.168.16.0/24 area 0.0.0.0 ! line vty
Quagga käivitamine
Quagga käivitamiseks tuleb öelda
# /etc/init.d/quagga start Loading capability module if not yet done. Starting Quagga daemons (prio:10): zebra ospfd2009/06/09 20:28:44 OSPF: ASBR[Status:1]: Update
Tulemusena tekivad kaks protsessi
# ps aux | grep quagga quagga 3396 0.0 1.0 22840 1364 ? Ss 23:28 0:00 /usr/lib/quagga/zebra --daemon -A 127.0.0.1 quagga 3400 0.0 1.4 25520 1876 ? Ss 23:28 0:00 /usr/lib/quagga/ospfd --daemon -A 127.0.0.1
Ruuteri haldusliidese kasutamine
Quagga ruuterist endast saab ruuterit hallata vtysh programmiga, liides on sarnane Cisco IOS'ile.
# export VTYSH_PAGER=cat # vtysh Hello, this is Quagga (version 0.99.10). Copyright 1996-2005 Kunihiro Ishiguro, et al. quagga-router#
Antud OSPF kasutusjuhtumil pakub huvi kontrollida, milliseks on ruutingud kujunenud, kirjutades 'show ip ospf ?' saab näha võimalikke asjakohaseid käske
quagga-router# show ip ospf ? <cr> border-routers for this area database Database summary interface Interface information neighbor Neighbor list route OSPF routing table
Nt küsides naabrite nimekirja
quagga-router# show ip ospf nei Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 10.0.14.1 1 Full/Backup 33.406s 192.168.15.254 eth1:192.168.15.1 0 0 0 10.0.14.1 1 Full/Backup 33.406s 192.168.16.254 eth2:192.168.16.1 0 0 0
või küsides ruutinguid
quagga-router# show ip ospf route ============ OSPF network routing table ============ N 192.168.15.0/24 [10] area: 0.0.0.0 directly attached to eth1 N 192.168.16.0/24 [10] area: 0.0.0.0 directly attached to eth2 ============ OSPF router routing table ============= R 10.0.14.1 [10] area: 0.0.0.0, ASBR via 192.168.15.254, eth1 via 192.168.16.254, eth2 ============ OSPF external routing table =========== N E2 192.168.10.0/24 [10/20] tag: 0 via 192.168.15.254, eth1 via 192.168.16.254, eth2 N E2 192.168.14.0/24 [10/20] tag: 0 via 192.168.15.254, eth1 via 192.168.16.254, eth2
Operatsioonisüsteemi juurkasutajana ruutingutabelit küsides saab veenduda, et Quagga tõepoolest modifitseerib ruutingutabelit
# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.17.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.16.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 192.168.15.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.14.0 192.168.15.254 255.255.255.0 UG 20 0 0 eth1 192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3 0.0.0.0 192.168.10.254 0.0.0.0 UG 0 0 0 eth3
Tulemuse kontroll
Püstitatud eesmärgi täitmise kontrollimiseks sobib peab saama katkestada ühe kanali ja ühendus peab jääma tööle; ning peale katkestatud kanali tagasiühendamist (ning andes minutike aega ruutingute stabiliseerumiseks) katkestades teise kanali peab ühendus jällegi jääma otspunktide vahel käima. Ühe kanali katkestuse korral võiks paista selline naabrus
quagga-router# show ip ospf nei Neighbor ID Pri State Dead Time Address Interface RXmtL RqstL DBsmL 10.0.14.1 1 Full/Backup 32.725s 192.168.16.254 eth2:192.168.16.1 0 0 0