OpenBGPD 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
Border Gateway Protocol (BGP) kasutusalad
- nn suurte võrkude omavahel ühendamiseks (nt ISP'ide vahelised ühendused)
- kasutaja ühendamiseks võrku mitme erineva ISP ühenduse abil
BGP tööpõhimõte
TODO
Mõisted
- AS numbrid vahemikus 64512 - 65535 ei ole avalikult kasutuses ja on mõeldud privaatseks kasutamiseks.
- stub AS - AS omab ainult ühte ühendust ühe teise AS'iga; AS sees liigub ainult kohalik liiklus (ingl. k. local traffic)
- multihomed AS - AS omab ühendusi enam kui ühe teise AS'iga; AS sees liigub ainult kohalik liiklus
- transit AS - AS omab ühendusi enam kui ühe teise AS'iga; AS sees liigub kohalik liiklus ja teatud tingimustel läbiv liiklus (ingl. k. transit traffic)
eBGP kasutuse eesmärk
Olgu kasutada selliselt seadistatud võrk
- arvutites on seadistatud võrguseadmed
- vaikelüüs on seadistamata
- ip forwarding on sisselülitatud
RNW - 10.2.0.0/24 haapsalu tallinn narva AS 65101 AS 65102 AS 65103 ___ em0 - 192.168.12.101 (r-id) ___ em1 - 192.168.23.102 (r-id) ___ | | | | | | | 1 |--------------------------------| 2 |--------------------------------| 3 | |___| 192.168.12.102 - em0 |___| 192.168.23.103 - em0 |___| | | | em1 - 192.168.37.103 (r-id) | em1 - 192.168.14.101 | | | | | | | | | | | | | | | | | | em0 - 192.168.14.104 | | parnu | | tartu | AS 65104 _|_ em1 - 192.168.45.104 _|_ AS 65105 | | | | | | | 4 |--------------------------------| 5 | em1 - 192.168.23.105 | |___| 192.168.45.105 (r-id)- em0 |___| | | | em2 - 192.168.56.105 | | em2 - 192.168.46.104 (r-id) | | | | | | | | | | | | | | | | | | | | | em0 - 192.168.46.106 | | _|_ em1 - 192.168.56.106 (r-id) | _|_ em1 - 192.168.37.107 | | | | | | 6 |----------------------------------' 192.168.67.107 (r-id) - em0 | 7 | |___|---------------------------------------------------------------------|___| em2 - 192.168.67.106 voru pihkva AS 65106 AS 65107 RNW - 10.6.0.0/24
ning eesmärgiks kasutades OpenBSD OpenBGPD tarkvara
- seadistada iga arvutid tööle BGP ruuteritena oma Autonomous System (AS) jaoks (nt AS 65101)
- ruuterid levitavad üle BGP kuuldud ruutinguid
- 10.6.0.0/24 ja 10.2.0.0/24 võrgus töötavad arvutid peavad saama omavahel suhelda (RNW - routed network, ingl. k. ruuditud võrk)
Testvõrgu ettevalmistamine
Tundub, et 2009 aasta suvel on kõige otstarbekam BGP testiks kasutada tarkvara VMware Server v. 2 abil moodustatud virtuaalset keskkonda. Antud juhtumil on WMware keskkonnas seadistatud
- igale ruuterite omavahelisele ühendusele vastav nn hostonly võrk
- igale ruuterile vastav virtuaalne arvuti
- eemalt üle ssh ligipääsuks on tallinn ja voru arvutitele seadistatud lisaks üks sillatud režiimis töötav võrguseade; läbi nende arvutite pääseb seadistama ssh abil ka ülejäänud arvuteid
BGP seadistamine
BGP deemoni bgpd tööd kontrollib seadistusfail /etc/bgpd.conf. Järgnevates alampunktides on esitatud kõigi skeemil kujutatud ruuterite seadistusfailid.
AS 65101 - Haapsalu
# cat /etc/bgpd.conf # global configuration AS 65101 router-id 192.168.12.101 neighbor 192.168.12.102 { remote-as 65102 descr AS65102 announce all } neighbor 192.168.14.104 { remote-as 65104 descr AS65104 announce all } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
kus
- AS 65101 - autonoomse süsteemi number, mida ruuter esindab
- router-id 192.168.12.101 - ruuteri identifikaator, tavaliselt kasutatakse sellena mõne ruuteri võrguseadme ip aadressi
- neighbor 192.168.12.102 { ... } - ruuteriga ühendatud teise ASi kuuluva ja ip aadressil 192.168.12.102 asuva ruuteri suhtlemise kirjelduse sektsioon
- remote-as 65104 - teise ASi number
- descr AS65104 - sissekande kirjeldus
- announce all - näitab, et sellele naaber-as ruuterile tuleb edastada info kõigist teada olevatest ruutingutest st kohalikest ja õle BGP teiste ruuterite käest õpitutest
- deny ja allow kirjed näitavad, milliseid üle BGP esitatud ruutinguid kõnealune ruuter õpib ja milliseid mitte
AS 65102 - Tallinn
# cat /etc/bgpd.conf # global configuration AS 65102 router-id 192.168.23.102 network 10.2.0.0/24 neighbor 192.168.12.101 { remote-as 65101 descr AS65101 } neighbor 192.168.23.103 { remote-as 65103 descr AS65103 } neighbor 192.168.25.105 { remote-as 65105 descr AS65105 } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
kus
- network 10.2.0.0/24 - ruuter levitab ise (ingl. k. router is originating 10.2.0.0/24 network) selle võrgu ruutinguid, st sellele võrgule saab ligi kõnealuse ruuteri kaudu
AS 65103 - Narva
# cat /etc/bgpd.conf # global configuration AS 65103 router-id 192.168.37.103 neighbor 192.168.23.102 { remote-as 65102 descr AS65102 announce all } neighbor 192.168.37.107 { remote-as 65107 descr AS65107 announce all } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65104 - Pärnu
# cat /etc/bgpd.conf # global configuration AS 65104 router-id 192.168.46.104 neighbor 192.168.14.101 { remote-as 65101 descr AS65101 announce all } neighbor 192.168.45.105 { remote-as 65105 descr AS65105 announce all } neighbor 192.168.46.106 { remote-as 65106 descr AS65106 announce all } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65105 - Tartu
# cat /etc/bgpd.conf # global configuration AS 65105 router-id 192.168.45.105 neighbor 192.168.45.104 { remote-as 65104 descr AS65104 } neighbor 192.168.25.102 { remote-as 65102 descr AS65102 announce all } neighbor 192.168.56.106 { remote-as 65106 descr AS65106 announce all } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65106 - Võru
# cat /etc/bgpd.conf # global configuration AS 65106 router-id 192.168.56.106 network 10.6.0.0/24 neighbor 192.168.46.104 { remote-as 65104 descr AS65104 } neighbor 192.168.56.105 { remote-as 65105 descr AS65105 } neighbor 192.168.67.107 { remote-as 65107 descr AS65107 } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
AS 65107 - Pihkva
# cat /etc/bgpd.conf # global configuration AS 65107 router-id 192.168.67.107 neighbor 192.168.67.106 { remote-as 65106 descr AS65106 announce all } neighbor 192.168.37.103 { remote-as 65103 descr AS65103 announce all } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
BGP kasutamine
BGP tarkvara käivitamiseks tuleb öelda
# bgpd
kusjuures algul võib olla abi käivitades võtmetega -v ja -d selleks, et programm väljastaks rohkem infot ja töötaks foregroundis
# bgpd -vd
BGP töötab kolme bgpd protsessina
# ps aux | grep bgp root 3387 0.0 0.5 812 1312 p0 I+ 12:07PM 0:00.01 bgpd: parent (bgpd) _bgpd 22260 0.0 0.5 864 1304 p0 I+ 12:07PM 0:00.01 bgpd: route decision engine (bgpd) _bgpd 22081 0.0 0.5 1060 1408 p0 S+ 12:07PM 0:00.34 bgpd: session engine (bgpd)
Töötava BGP ruuteri haldamiseks on kasutada utiliit bgpctl, nt küsides ruuteris voru kokkuvõtet tuleb öelda
# bgpctl show summary Neighbor AS MsgRcvd MsgSent OutQ Up/Down State/PrfRcvd AS65107 65107 310 308 0 02:32:58 4 AS65105 65105 317 314 0 02:35:40 7 AS65104 65104 317 314 0 02:35:40 7
mis tähendab, et kõnealune ruuter suhtleb kolme loetletud AS'iga.
Selleks, et saada teada, milliste ASide kaudu toimub andmevahetus 10.2.0.0/24 võrguga tuleb öelda
# bgpctl show ip bgp | grep 10.2.0.0 *> 10.2.0.0/24 192.168.56.105 100 0 65105 65102 i * 10.2.0.0/24 192.168.46.104 100 0 65104 65101 65102 i * 10.2.0.0/24 192.168.67.107 100 0 65107 65103 65102 i
ning saame teada, et liiklus toimub läbi AS 65105 ja AS 65102.
Üks BGP kasutamise põhjus seisneb selles, et kui mõni võrgusõlm rikneb, siis süsteem hääletab ruutingud automaatselt ümber. Kui nt peatada BGP deemon ruuteris tartu, siis peaks hakkama liiklus käima läbi parnu või pihkva ruuteri; lülitades tartu tagasi tööle, liiklus läbi tartu taastub. Oluline on seejuures, et säilivad otspunktide vahelised tcp sessioonid, kuna ruuterid töötavad iseenesest IP kihis.
Lihne moodust asjakorraldust selles suhtes kontrollida on seadistada ruuteris tallinn lo1 võrguseade
# ifconfig lo1 create # ifconfig lo1 10.2.0.102/24
ning vorus
# ifconfig lo1 create # ifconfig lo1 10.6.0.106/24
Seejärel saab kasutada vorus pingi
# ping -I 10.6.0.106 10.2.0.102
või ssh'd
# ssh -b 10.6.0.106 10.2.0.102
Korrektsem testimine oleks kui ühendada voru ja tallinn ruuterite külge mõne nö päris vastav 10.x.x.x subnet.
Skeem 2
arvuti-4 | _|_ em0 (ei ole kasutusel) | | 192.168.17.253 - em1 |___| em2 - 192.168.18.253 / \ / \ AS 65123 ..... AS 65213 internet ... 192.168.17.254 - em0 / \ em0 - 192.168.18.254 | | _|_ _|_ | | | | ruuter-2 |___| |___| ruuter-3 | | 192.168.15.254 - em1 | | em1 - 192.168.16.254 \ / \ / \ ___ / 192.168.15.253 - em1 | | em2 - 192.168.16.253 |___| ruuter-1 | em0 - 192.168.17.17 | --|-----------|----|---------|----- _|_ _|_ _|_ | | | | | | |___| |___| |___| arvuti-1 arvuti-2 arvuti-3
Ruuterite seadistamine
TODO