OpenOSPFD kasutamine OpenBSDga
Sisukord
Sissejuhatus
Internet koosneb võrkude haldajatele usaldatud suurtest võrkudest, mida nimetatakse autonoomseteks süsteemideks (AS - Autonomous System). Üheks oluliseks ülesandeks nende võrkude pidamisel on ruutingute haldamine, reeglina räägitakse võrkude vahel EGP protokolli ja võrgude sees IGP protokolli.
- EGP (Exterior Gateway Protocol) - nt BGP4 (Border Gateway Protocol) protokoll ja implementatsioon OpenBGPD; BGP4 on 2009 aastal praktiliselt ainus levinud EGP
- IGP (Interior Gateway Protocol) - nt OSPF (Open Shortest Path First) protokoll ja impementatsioon OpenOSPFD; OSPF on 2009 aastal tõenäoliselt kõige levinum IGP; lisaks on palju kasutusel IS-IS (Intermediate System to Intermediate System) ja EIGRP (Enhanced Interior Gateway Routing Protocol), vähem RIP (Routing Information Protocol)
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.
OpenOSPFD on porditud ka FreeBSD'le, asub see portsude all net/openospfd harus. Allolev konfiguatsioon peaks samuti olema pea täielikult FreeBSD ühilduv. Meeles tuleb ainult pidada, et konfiguratsioonifailid asuvad /usr/local/etc.
Akronüümid
- LSA - link-state advertisements
- FIB - Forwarding Information Base
- RIB - Routing Information Base
- DR, BDR - Designated Router, Backup Designated Router
Kahe võrgusõlme omavahel ühendamine kasutades dubleeritud ühendusi
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 VMware Server v. 2 platvormil töötavate virtuaalsete arvutitega.
___ | | ___ | |------ 192.168.15.253 192.168.15.254 ------| | |___| | ____ em1 em1 ____ | |___| | | |------ 1 Gbit/s -----| | | 192.168.17.17 --------| | | |--------- 192.168.14.14 ___ | em0 | | | | em0 | ___ | |------ |____|------ 10 Mbit/s -----|____| ------| | |___| | em2 em2 | |___| | 192.168.16.253 192.168.16.254 | | | Harukontor Peakontor
Sarnast tulemuse saab üldiselt saavutada kahel moel
- redundantsus moodustatakse etherneti kihis - võrguseadmete nn trunking; 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
Enne OpenOSPFD tarkvara seadistamist tuleb ruuterite võrguseadmed seadistada. Seejärel moodustada kummaski arvutis sellise sisuga /etc/ospfd.conf seadistusfailid.
Ruuteri seadistamine harukontoris
/etc/ospfd.conf sisu võiks olla nt selline
router-id 0.0.0.2 redistribute connected # areas area 0.0.0.0 { interface em1 { metric 100 } interface em2 { metric 10 } }
Ruuteri seadistamine peakontoris
/etc/ospfd.conf sisu võiks olla nt selline
router-id 0.0.0.1 redistribute connected # areas area 0.0.0.0 { interface em1 { metric 100 } interface em2 { metric 10 } }
OpenSPFD käivitamine
OpenSPFD käivitamiseks nn foregroundis ja verbaalses režiimis sobib öelda kummaski ruuteris
# ospfd -dv
Tavalise st deemonina käivitamiseks käsurealt jätta võtmed ära
# ospfd
Selleks, et OpenSPFD käivituks arvuti alglaadimisel peab /etc/rc.conf.local failis sisalduma rida
ospfd_flags=""
Haldamine
OpenOSPFD haldamine toimub utiliidiga ospfctl, nt sedasi saab küsida ruuteri seadmeid
# ospfctl show int Interface Address State HelloTimer Linkstate Uptime nc ac em2 192.168.16.254/24 DR 00:00:08 active 00:00:06 1 1 em1 192.168.15.254/24 DR 00:00:08 active 13:27:30 1 1
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
# ospfctl show nei ID Pri State DeadTime Address Iface Uptime 0.0.0.1 1 FULL/BCKUP 00:00:39 192.168.16.253 em2 00:01:31 0.0.0.1 1 DOWN/DOWN 00:00:09 192.168.15.253 em1 -
Võrgu ühendamine teenusepakkujaga kahe ühenduspunkti kaudu
Eesmärgiks on teenuseid pakkuv võrgusegment ühendada ühe ja sama teenusepakkuja võrguga kahe punkti kaudu, kusjuures ühenduspunktides kasutatakse erinevaid ip aadresse.
_____ | | smtp client |_____| | 172.3.1.31 | -----------|----------|-- | internet | __|__ em2 172.31.1.254 | | 10.0.21.190/24 em0 | R5 | em1 10.0.22.190/24 ,----------|_____|-----------, | | 10.0.21.254/24 em1 __|__ __|__ em1 10.0.22.254/24 | | | | | R1 | ISP | R2 | |_____| |_____| 192.168.111.161/29 em0 | | em0 192.168.111.113/28 | | | | | | 192.168.111.162/29 em0 __|__ TEENUSED __|__ em0 192.168.111.114/28 | | | | | R3 | 10.0.222.2 em2 | R4 | |_____|----------------------|_____| 10.0.13.11/24 em1 | em2 10.0.222.1 | em1 10.0.13.12/24 | | | | | carp13 10.0.13.1/24 | --------|---|----------------------------|------------ | subnet of serveris __|__ 10.0.13.13/24 | | (192.168.110.13:25 -> 10.0.13.13:25) |_____| stmp server
kus
- R5 - teenusepakkuja nö sisemine ruuter ja selle taha jääb avalik internet
- R1, R2 - kõnealuste ühenduspunktide teenusepakkuja poolsed ruuterid
- R2, R4 - vastavad teenuseid pakkuva võrgusegmendi poolsed ruuterid
- võrgusegmendi arvutite vaikelüüsi aadress 10.0.13.1 on seostatud carp13 võrguseadmega, mida saavad tulemüürid käest kätte anda
- teenusega seotud avalikule ip aadressile saadatud liiklus saadetakse edasi privaatse aadressiga serverile kasutades tulemüürides aadressteisendusi
- CARP seade on seadistatud selliselt
R3 # cat /etc/hostname.carp13 inet 10.0.13.1 255.255.255.0 10.0.13.255 advskew 80 vhid 13 carpdev em1 pass password13
R4 # cat /etc/hostname.carp13 inet 10.0.13.1 255.255.255.0 10.0.13.255 advskew 120 vhid 13 carpdev em1 pass password13
- teenustega seotud avalikud aadressid on seadistatud tulemüüris muus osas mitte kasutust leidva mingi nö fiktiivse võrguseadmega, nt ming vlan seade
# cat /etc/hostname.vlan801 inet 192.168.110.129 255.255.255.128 NONE vlan 801 vlandev em0
Kõigis ruuterites on kasutusel OpenBSD operatsioonisüsteem ning OpenOSPFD ruutingutarkvara, kasutatud on selliseid /etc/ospfd.conf seadistusfaile
- R5:
router-id 172.31.1.254 redistribute connected redistribute default # areas area 0.0.0.0 { interface em0 { metric 10 } interface em1 { metric 20 } }
- R1:
router-id 192.168.111.161 redistribute connected redistribute default # areas area 0.0.0.0 { interface em0 { metric 10 } interface em1 { metric 10 } }
- R2
router-id 192.168.111.113 redistribute connected redistribute default # areas area 0.0.0.0 { interface em0 { metric 20 } interface em1 { metric 20 } }
- R3
router-id 192.168.111.162 redistribute 192.168.110.128/25 set { metric 10 } # areas area 0.0.0.0 { interface em0 { metric 10 } interface em2 { metric 30 } interface carp13 }
- R4
router-id 192.168.111.114 redistribute 192.168.110.128/25 set { metric 20 } # areas area 0.0.0.0 { interface em0 { metric 20 } interface em2 { metric 30 } interface carp13 }
kusjuures redistribute parameetri kohta kehtivad sellised tähelepanekud
- redistribute vaikeväärtus (st kui parameetrit pole seadistusfailis üldse kasutatud) - jagatakse area kirjelduses kasutatud interface'dega seotud võrkude ruutinguid
- redistribute connected - jagatakse välja kõige võrguseadmetega seotud ruutinguid
- redistribute 10.0.11.0/24 - jagatakse välja 10.0.11.0/24 staatiliselt ruutingutabelisse seadistatud võrku
- no redistribute 10.0.13.0/24 - ei jagata 10.0.13.0/24 võrku
- redistibute default - antakse ümbruse töötavatele ospf deemonitele teada, et nad kasutaksid kõnealust arvutit vaikelüüsina (vastavalt seda seadet, mis kõnealusest arvutist nende poole jääb)
Redistribute abil ei saa jagada välja ruutingut, mida ei ole kõnealuses arvutis olemas (kas siis seoses mõne seadmega või staatiliselt seadistatune).
Nt olgu arvuti ühendatud nelja võrgukaardiga sellistesse võrkudesse
- em0 - 192.168.10.0/24
- em1 - 10.0.11.0/24
- em2 - 10.0.12.0/24
- em3 - 10.0.13.0/24
siis seadistusfail
no redistribute 192.168.10.0/24 redistribute connected # areas area 0.0.0.0 { interface em1 { metric 10 } interface em2 { metric 20 } }
korraldab, et
- ei jagata välja 192.168.10.0/24 võrgu ruutingut
- jagatakse välja kõigi võrkude ruutinguid mis on arvutiga ühendatud
- ruutinguid jagatakse edasi üle em1 ja em2 võrkude (st suheldes sinna ühendatud muude ospf deemonitega)
OSPF ja CARP
OSPF ja CARP koos kasutamisel tuleb tähele panna, et
- ruuter saadab OSPF liiklust välja ainult siis, kui CARP seade on master olekus, st süsteem toimib ilusti carp'i ümberlülituse juhtumil;
- kui parasjagu aktiivse tulemüüri (R4) välisel ühendusel juhtub midagi OSPFiga (nt öelda R4 tulemüüril ifconfig em0 down), siis OSPF lülitab liikluse ümber R3 peale, kuid CARP seadme masterit automaatselt ümber ei paigutata. Antud juhul on kasutatud kahe tulemüürid vahel otseühendust (R3 ja R4 ruuterite em2 seadmete vahel) ning seejuures aga leiab aset asümmetriline ruuting, st teenuse serverist väljuvad paketid mööda teed
server -> R4 -> R3 -> R1 -> R5 -> internet
ja teenuse serverisse saabuvad paketid
internet -> R5 -> R1 -> R3 -> server
Alternatiiviks otseühendusele kahe ruuteri vahel oleks kasutada programmi ifstated võimalusi carp masteri lülitamiseks.
ospfctl utiliidi kasutamine
- ospfctl show int väljund näitab ruuteri omadusi erinevate seadmetega seotud võrkudes, nt kas ta on DR ja BCKUP andmebaasiks neindes ehternetides. Nt ühe subneti ühes osalises öeldes
yks # ospfctl show int Interface Address State HelloTimer Linkstate Uptime nc ac ... em3 10.0.222.2/24 BCKUP 00:00:01 active 02:04:30 1 1 em1 192.168.111.114/29 DR 00:00:01 active 02:04:30 1 1
ja teises
teine # ospfctl show int Interface Address State HelloTimer Linkstate Uptime nc ac .. em3 10.0.222.1/24 DR 00:00:04 active 01:49:37 1 1 em1 192.168.111.162/29 DR 00:00:02 active 01:49:37 1 1
kust on näha, et üks ruuter on 10.0.222.0/24 võrgus DR ja teine tema BCKUP.
- ospfctl show nei väljund näitab ruuteri naabrite omadusi erinevate seadmetega seotud võrkudes. Nt eelmise punkti 'yks' (id 192.168.111.114) ruuteri kohta tema 192.168.111.162/29 võrgu suhtes võiks öelda tolles võrgus olev naaber nii
naaber # ospfctl show nei ID Pri State DeadTime Address Iface Uptime .. 192.168.111.114 1 FULL/DR 00:00:30 192.168.111.114 em1 01:42:46
ning tema 10.0.222.2/24 võrgus oleva rolli kohta võiks vastava võrgu naaber öelda nii
# ospfctl show nei ID Pri State DeadTime Address Iface Uptime .. 192.168.111.114 1 FULL/BCKUP 00:00:31 10.0.222.2 em3 02:11:17
St ruuteri arvamus enda DR või BCKUP oleku kohta kapib naaberite arvmausega, FULL tähistab asjaolu, et ruutingute andmebaas on täielik.
Märkused
- Kui sama võrk on näha mõnes ruuteris sama metric väärtusega, nt
# ospfctl show rib Destination Nexthop Path Type Type Cost Uptime 192.168.110.128/25 10.0.22.254 Type 1 ext Network 30 00:03:01 192.168.110.128/25 10.0.21.254 Type 1 ext Network 30 00:02:56
siis on ruutingutabelis kaks sissekannet.