CZF-RFC-ROUTING

Z CZFree Wiki
Přejít na: navigace, hledání

CZF-RFC-ROUTING

Toto CZF-RFC popisuje implementaci dynamickych smerovacich protokolu na jednotlivych NODEch v CZFree.Netu.

Dokument CZF-RFC-ROUTING pouziva pojmy NODE, CLOUD a POINT tak, jak jsou definovany v CZF-RFC-BASE. Prikladove konfigurace smerovacich daemonu vychazeji z adresniho planu tvoreneho podle CZF-RFC-ADDRESSING.

Cely CZFree.Net je rozdelen na CLOUDy. Z hlediska smerovani zastava CLOUD autonomni system (dale jen AS) s vlastnim ASN pro peerovani s ostatnimi CLOUDy. Jako externi smerovaci protokol musi byt v celem CZFree.Netu pouzito BGP. Podle CZF-RFC-BASE je kazdemu CLOUDu pridelen prave jeden /16 IPv4 rozsah, coz je take jediny rozsah, ktery smi propagovat pres BGP. Kazdy CLOUD musi poskytovat plny tranzit vsem ostatnim CLOUDum. Nedeje se tak pouze v pripade, ze se na tom obe strany dobrovolne dohodly a nema to vliv na prenaseny traffic ostatnich CLOUDu. BGP smerovaci daemon bezi pouze na routerech, ktere zprostredkovavaji spojeni s ostatnimi CLOUDy (dale jen CBR - 'Cloud Border Routery'). CBR jednoho CLOUDu vzajemne peeruji pomoci iBGP.

Pro smerovani uvnitr CLOUDu, jako interni smerovaci protokol, muze byt pouzito OSPF. V tom pripade plati pro jeho implementaci nasledujici doporuceni: Z adresniho prostoru CLOUDu je vyhrazen rozsah 10.C.0.0/26, ktery je pouzit pro alokaci loopback adres jednotlivych NODU, ktere jsou pouzity jako router-id adresy. Mezi vsemi NODY v CLOUDu je na area 0 pouzita OSPF message-digest md5 authentizace. Vsude je pouzito jednotne ocenovani linek (viz. priloha A). Na CBR je do OSPF distribuovana BGP smerovaci tabulka. V OSPF se nikdy nesmi objevit vychozi cesta, internetovy traffic je smerovan podle zdrojove adresy do tunelu. Kazdy NODE propaguje pres OSPF pouze svoji loopback adresu (/32)+/30 rozsahy pro p2p spoje+vsechny /24 adresove prostory, ktere mu byly na zaklade opodstatnene zadosti prideleny CLOUD mastery podle CZF-RFC-ADDRESSING. Pokud NODE pripojuje nejake stub networks (koncove podsite, nepripojujici dalsi NODY), vytvari pro ne area s cislem N (viz 10.C.0.N/32 loopback) a sumarizuje rozdelene podsite na /24 prefixy.

(v prikladovych konfiguracich neni uvazeno smerovani internetoveho trafficu prez tunely a jeste bude doplnena OSPF md5 authentizace na area 0)


priloha A: staticke ocenovani OSPF linek

bit / sec             byte/sec        OSPF cost
eth    1G               100M                1
eth  100M                10M               10
eth   10M                 1M              100
sbni   2M               200K              500
sbni   1M               100K             1000
sbni 500K                50K             2000
sbni 250K                25K             4000


priloha B: bgpd.conf

!
! hostname nastavuje jmeno systemu. 
! password a enable password jsou hesla pro pristup do bgpd. enable password se od password
!   lisi v tom, ze umoznuje primo konfigurovat bgpd pres terminal. Obe hesla jsou diky
!   service password-encryption zasifrovana, takze muzete svuj config libovolne ukazovat
!   a nemusite porad mazat ty dve radky. 
! log file nastavuje soubor, do ktereho se budou zapisovat hlaseni bgpd.
! service advanced-vty nastavi rozsireni mod pro ovladani terminalu.
!
hostname kojott
password 8 EprZLRtwJRfUM
enable password 8 bCPeRwRCRo4mE
log file /var/log/zebra-bgpd.log
service advanced-vty
service password-encryption
!
! debug bgp zapina ladici funkce BGP.
!   debug bgp events zapina ladeni udalost, debug bgp updates ladeni aktualizaci
!   a konecne debug bgp filters ladeni filtrovani. Toto nastaveni negeneruje prilis velike logy,
!   ale na druhou stranu je dobre pouzitelne pro ladeni chyb.
!
debug bgp events
debug bgp updates
debug bgp filters
!
! router bgp definuje BGP smerovaci proces asociovany ke konkretnimu ASN
!   bgp router-id podobne jako ospf router-id definuje ID, pod kterym router vystupuje
!                 pri BGP relacich.
!   neighbor definuje souseda. Soused je BGP router, se kterym ma byt navazana BGP relace.
!            Misto urceni konkretniho souseda se da vytvorit tzv. peer-group,
!            podle ktere se nasledne daji sousedi sdruzovat.
!            V tomto pripade jsou zde dve peer-groupy:
!                EXTERNAL:  Do teto skupiny jsou sdruzeny vsechny sousedi, se kterymi tento
!                           router peeruje, a nejsou soucasti jeho AS. Pro tuto peer-groupu
!                           jsou definovane vstupni a vystupni filtery prefixu, ktere budou
!                           popsany dale. Parametr next-hop-self zajisti, ze tento router
!                           bude propagovat sam sebe radsi, nezli externiho peera,
!                           jako dalsi skok.
!
!                INTERNAL:  Do teto peer-groupy budou patrit vsechny routery, ktere patri do
!                           stejneho AS. Narozdil od peer-groupy EXTERNAL zde chybi filtery
!                           (protoze je zde jednotna sprava), je zde definovan remote-as atribut,
!                           protoze vzdalene ASN je vzdy stejne a konecne jako zdrojova adresa
!                           pro peering je pouzita loopback adresa, jejiz odroutovani zajistuje IGP.
!                           (parametr update-source)
!
!            Co se tyce konkretnich, v teto konfiguraci definovanych, sousedu:
!                10.15.3.33:   Faust. Uplink AS do stare patere CZFree.NETu. Zde je nasledujici:
!                                  * vzdalene ASN
!                                  * prislusnost k peer-groupe EXTERNAL
!                                  * komentar 
!                10.13.0.71:     mototechna-1. Internetova brana, kam vede VPN z Moravy a Ostravy.
!                                  * prislusnost k peer-groupe INTERNAL
!                                  * komentar 
!                10.13.0.7:     mototechna-2. Tranzitni router, ktery peeruje s ASN64521 (Repy)
!                10.13.0.6:     networ. Access-point na Velke Ohrade, odkud vede linka do slivence (AS64516)
!
router bgp 64513
  bgp router-id 10.13.0.3
  network 10.13.0.0/16
  neighbor EXTERNAL peer-group
  neighbor EXTERNAL description Exterier BGP
  neighbor EXTERNAL next-hop-self
  neighbor EXTERNAL prefix-list cloudtransin in
  neighbor EXTERNAL prefix-list cloudtransout out
  neighbor INTERNAL peer-group
  neighbor INTERNAL remote-as 64513
  neighbor INTERNAL description Interier BGP
  neighbor INTERNAL update-source 10.13.0.3
  neighbor 10.15.3.33 remote-as 64515
  neighbor 10.15.3.33 peer-group EXTERNAL
  neighbor 10.15.3.33 description Faust - jbohac's cloud
  neighbor 10.13.0.7 peer-group INTERNAL
  neighbor 10.13.0.7 description mototechna-2
  neighbor 10.13.0.71 peer-group INTERNAL
  neighbor 10.13.0.71 description mototechna-1
  neighbor 10.13.0.6 peer-group INTERNAL
  neighbor 10.13.0.6 description networ
!
! access-list definuje nastaveni pristupovych prav. 
!             Jde o seznam, ktery je cten podle poradi zapsanych pravidel,
!             kde se podle IP adresy nastavi pristup. (viz. atributy deny a permit)
!             V tomto pripade jde o pristupovy seznam pro pristup na konzoli bgpd.
!
access-list login remark Administrator access to zebra
access-list login permit 127.0.0.0/8
access-list login deny any
!
! prefix-list je nejvykonnejsi mechanizmus na filtrovani prefixu.
!             Narozdil od access-listu jeste oplyva funkci pro vyber rozsahu prefixu a moznost
!             specifikace poradi, ve kterem budou jednotliva pravidla ctena. Atribut ge urcuje
!             minimalni odpovidajici delku prefixu a atribut le minimalni.
!             Dale atribut seq urcuje poradeove cislo pro cteni.
!             Nyni popis dvou zde definovanych filtru :
!                 cloudtransin:    Tento filtr je aplikovan na prichozi prefixy z ostatnich AS.
!                                  Nejdrive (seq 10) povoli vsechny prefixy /15 az /20 prefixy
!                                  z adresoveho rozsahu 10.0.0.0/8. Potom (seq 20) zakaze vse ostatni. 
!                 cloudtransout:   Analogicky, tento filtr filtruje odchozi prefixy pro ostatni AS.
!                                  Opet se zde povoluje pouze z rozsahu 10.0.0.0/8 a to prefixy 
!                                  o standardni delce prefixu cloudu (/15) - /20, coz je delka
!                                  prefixu z Moravy.
!
ip prefix-list cloudtransin description CZFree.NET inter-cloud filter IN
ip prefix-list cloudtransin seq 10 permit 10.0.0.0/8 ge 15 le 20
ip prefix-list cloudtransin seq 20 deny any
ip prefix-list cloudtransout description CZFree.NET inter-cloud filter OUT
ip prefix-list cloudtransout seq 10 permit 10.0.0.0/8 ge 15 le 20
ip prefix-list cloudtransout seq 20 deny any
!
! line vty popisuje konfiguraci terminalu.
!   access-class nastavuje access-list, ktery ma byt pouzit pro vzdaleny pristup na terminal.
!   exec-timeout nastavuje cas v minutach a vterinach, po kterem budete pri necinnosti odhlaseni z terminalu.
!
line vty
  access-class login
  exec-timeout 60 0
!


priloha C: ospfd.conf

!
! hostname nastavuje jmeno systemu. 
! password a enable password jsou hesla pro pristup do ospfd. enable password se od password
!   lisi v tom, ze umoznuje primo konfigurovat ospfd pres terminal. Obe hesla jsou diky
!   service password-encryption zasifrovana, takze muzete svuj config libovolne ukazovat
!   a nemusite porad mazat ty dve radky. 
! log file nastavuje soubor, do ktereho se budou zapisovat hlaseni ospfd.
! service advanced-vty nastavi rozsireni mod pro ovladani terminalu.
!
hostname kojott
password 8 15eHtTCZsVk3Q
enable password 8 3Z.lHJs5XguTU
log file /var/log/zebra-ospfd.log
service advanced-vty
service password-encryption
!
!  interface definuje rozhrani, na kterych bude OSPF fungovat.
!   description pridava komentar k danemu rozhrani. 
!
interface lo
  description system loopback
!
interface eth0
  description lan
!
interface wlan0
  description bb-pajoslav-kojott
!
interface wlan1
  description bb-faust-kojott
!
interface wlan2
  description AP
!
interface dummy0
  description loopback interface
!
! router ospf definuje OSPF smerovaci proces.
!   ospf router-id podobne jako bgp router-id definuje ID, pod kterym router vystupuje
!                  v ospf relacich.
!   redistribute zajistuje distribuci urcitych (connected, bgp) smerovacich informaci.
!                V pripade distribuce connected je zde jeste aplikovana route-mapa just-cloud,
!                ktera zajistuje, aby se do OSPF nedostalo nic, co tam nema byt.
!                metric-type 1 zajistuje, ze se bude k metrice pripojeneho rozhrani pricitat metrika trasy
!                Takto musi byt nastaveno i sireni ostatnich rout (redistribute static metric-type 1 )
!   network definuje podsite na zarizenich se zaplym OSPF a prisuzuje je konkretnim areas.
!           Jestlize je v podsiti dalsi OSPF router, jedna se o area 0.
!           V opacnem pripade je dane zarizeni oznaceno jako passive-interface
!           a spada do area X, kde X je odvozene z loopback adresy (v tomto pripade 10.13.0.3).
!   area nastavuje atributy oblasti. Zde definuje oblast 3 jako koncovou,
!        a provadi jeji sumarizaci na rozsah 10.13.3.0/24.
!        Dale je zde rozsah 10.13.67.0/24, ktery je delen na mensi podsite,
!        ktere jsou smerovany ke klientum. (viz zebra.conf)
!   neighbor deklaruje sousedy, se kterymi ma byt navazana OSPF relace.
!            Zde je definovan jeden, 10.13.0.2 (pajoslav).
!
router ospf
  ospf router-id 10.13.0.3
  redistribute bgp metric-type 1
  network 10.13.0.3/32 area 0
  network 10.13.2.0/25 area 0
  network 10.13.3.0/25 area 3
  network 10.13.3.128/25 area 3
  network 10.13.67.0/24 area 3
  area 3 stub
  area 3 range 10.13.3.0/24
  neighbor 10.13.2.1
!
! access-list definuje nastaveni pristupovych prav. 
!             Jde o seznam, ktery je cten podle poradi zapsanych pravidel,
!             kde se podle IP adresy nastavi pristup. (viz. atributy deny a permit)
!             V tomto pripade jde o pristupovy seznam s nazvem login, ktery je urcen
!             pro specifikaci pristupu na konzoli ospfd.
!
access-list login remark Administrator access
access-list login permit 127.0.0.1/32 
access-list login deny any
!
! line vty popisuje konfiguraci terminalu
!   access-class nastavuje access-list, ktery ma byt pouzit pro vzdaleny pristup na terminal
!   exec-timeout nastavuje cas v minutach a vterinach, po kterem budete pri necinnosti odhlaseni z terminalu
!
line vty
  access-class login
  exec-timeout 60 0
!

priloha D: zebra.conf

!
! hostname nastavuje jmeno systemu. 
! password a enable password jsou hesla pro pristup do zebry. enable password se od password
!   lisi v tom, ze umoznuje primo konfigurovat zebru pres terminal. Obe hesla jsou diky
!   service password-encryption zasifrovana, takze muzete svuj config libovolne ukazovat
!   a nemusite porad mazat ty dve radky. 
! log file nastavuje soubor, do ktereho se budou zapisovat hlaseni zebry.
! service advanced-vty nastavi rozsireni mod pro ovladani terminalu.
!
hostname kojott
password 8 mW/NIfgJNeq3M
enable password 8 gVV7SXob3at2Q
log file /var/log/zebra-zebra.log
service advanced-vty
service password-encryption
!
! interface zahajuje konfiguraci sitoveho rozhrani.
!   ip address prirazuje danemu rozhrani IPv4 adresu s konkretni maskou.
!             Takto nakonfigurovana zebra ocekava od systemu pouze nahrani potrebnych modulu
!             pro vytvoreni sitovych rozhrani a jejich pripadnou hardwarovou konfiguraci (L1 & L2).
!             Veskera nasledna IP konfigurace jiz probiha pres zebru.
!             Za povsimnuti stoji rozhodne loopback adresa routeru - 10.13.0.3/32.
!
interface lo
  ip address 127.0.0.1/8
!
interface wlan0
  ip address 10.13.2.3/25
!
interface wlan1
  ip address 10.15.3.45/27
!
interface wlan2
  ip address 10.13.3.1/25
!
interface eth0
  ip address 10.13.3.129/25
!
interface dummy0
  ip address 10.13.0.3/32
!
!  ip route definice staticke cesty, vedouci pres konkretni branu nebo rozhrani.
!          Prvni cesta je vychozi a vede pres branu 10.13.2.1. Druhe dve cesty
!          jsou pouzity pro smerovani mensich podsiti klientum. Podsit 10.13.67.0/26
!          patri klientovi s IP 10.13.1.10. Dalsi cesta je takzvana blackhole,
!          ktera je zde pouze kvuli nasledne 'manualni' sumarizaci,
!          protoze obecne staticke definice cest se sumarizovat nedaji.
!          A konecne posledni cesta je reject (unreachable), ktera ma za nasledek to,
!          ze smerovane packety zahodi a zdroji posle ICMP Unreachable zpravu.
!
ip route 0.0.0.0/0 10.13.2.1
!
ip route 10.13.67.0/26 10.13.1.10
ip route 10.13.67.0/24 Null0
!
ip route 10.0.0.0/8 reject
!
! access-list definuje nastaveni pristupovych prav. 
!             Jde o seznam, ktery je cten podle poradi zapsanych pravidel,
!             kde se podle IP adresy nastavi pristup. (viz. atributy deny a permit)
!             V tomto pripade jde o pristupovy seznam pro pristup na konzoli zebra.
!
access-list login remark Administrator access
access-list login permit 127.0.0.0/8
access-list login deny any
!
! line vty popisuje konfiguraci terminalu
!   access-class nastavuje access-list, ktery ma byt pouzit pro vzdaleny pristup na terminal
!   exec-timeout nastavuje cas v minutach a vterinach, po kterem budete pri necinnosti odhlaseni z terminalu
!
line vty
  access-class login
  exec-timeout 60 0
!



Zpět na CZF-RFC