CZF-RFC-ROUTING
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