OpenBGPD kasutamine OpenBSDga

Allikas: Kuutõrvaja
Redaktsioon seisuga 27. juuli 2009, kell 16:06 kasutajalt Imre (arutelu | kaastöö) (BGP seadistamine)

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

Openbgpd-1.gif

BGP seadistamine

BGP deemoni bgpd tööd kontrollib seadistusfail /etc/bgpd.conf, kus võib esineda neli sektsiooni, üldiselt alltoodud järjekorras

  • makrod (ingl. k. macros) - muutujate kirjeldused, mille kasutamine seadistusfailis parandab loetavust ja korduvakasutust
  • globaalsed seadistused (ingl. k. global configuration) - seadistuste üldosas mis kehtib ruuteri kohta üldiselt, nt ruuteri id väärtus ning AS number
  • naabrib ja grupid (ingl. k. neighbors and groups) - naabruses asuvate ruuteritega andmevahetust pidamist kirjeldav osa
  • filter (ingl. k. filter) - filtreerivad reeglid ruuterisse siseneva ja ruuterist väljuvale BGP protokolliga toimuvale andmevahetusele

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

Kasulikud lisamaterjalid