Podcast on Cisco Route-Maps: Network Policy & Routing
Cisco Route-Maps: Network Policy & Routing Explained
Podcast
Cisco Route-Maps: The 'If-Then' Engine of Your Network
Délka: 13 minut
Kapitoly
Co je to route-mapa?
Základní principy a logika
Začínáme s konfigurací
Permit v route-mapě a access-listu
Zrádné kombinace deny a permit
Více podmínek a logické 'NEBO'
Skutečná síla: příkaz 'set'
Shrnutí a klíčové body
Přepis
Ava: Většina studentů si myslí, že route-mapy jsou v podstatě jen glorifikované access-listy. Ale ve skutečnosti jsou to mocné nástroje s logikou „pokud-pak“, které řídí vaši síť.
Dan: Přesně tak, Avo. Je to obrovský rozdíl. Není to jen o povolování a zakazování provozu. Je to o tom, jak ten provoz aktivně měnit a směrovat.
Ava: Zní to složitě, ale zároveň neuvěřitelně užitečně. Tohle je Studyfi Podcast.
Dan: Tak se na to pojďme podívat. Slibuju, že na konci to bude dávat smysl.
Ava: Dobře, Dane, tak začněme od základů. Co přesně je route-mapa a proč bychom ji měli používat místo obyčejného access-listu?
Dan: Skvělá otázka. Představ si route-mapu jako vyhazovače v klubu s velmi specifickými pravidly. Access-list je jen seznam hostů – buď jsi na něm, nebo ne. Ale route-mapa má instrukce jako: „POKUD je host na seznamu A, dej mu VIP pásku. POKUD má na sobě modrou košili, pošli ho k baru B. POKUD má délku jména nad deset písmen, dej mu jinou pásku.“
Ava: Takže mnohem víc než jen „povolit“ nebo „zakázat“.
Dan: Přesně. Je to logika „pokud-pak“. POKUD něco odpovídá našim podmínkám, PAK s tím něco udělej. Můžeme se rozhodovat na základě spousty věcí – access-listů, BGP komunit, délky paketů, metrik... Možnosti jsou obrovské.
Ava: A co s tím můžeme dělat? To „pak“?
Dan: Můžeme měnit téměř cokoliv. Nastavit BGP atributy, změnit metriku pro EIGRP nebo OSPF při redistribuci, nebo dokonce změnit další hop pro specifický provoz pomocí policy-based routingu. Je to neuvěřitelně flexibilní nástroj.
Ava: Dobře, ta analogie s vyhazovačem mi pomohla. Ale jak to funguje technicky? Jak router zpracovává příkazy v route-mapě?
Dan: Funguje to sekvenčně, odshora dolů, stejně jako access-list. Router vezme první příkaz v seznamu a zkontroluje, jestli se provoz shoduje s podmínkou match.
Ava: A co se stane, když se shoduje?
Dan: Pokud je shoda, router provede akci – buď permit nebo deny – a hned skončí. Dál už nepokračuje. To je klíčové – zastaví se u první shody.
Ava: A co když se neshoduje?
Dan: Pokud není shoda, jednoduše přejde k dalšímu příkazu v seznamu a zopakuje proces. A stejně jako u access-listů, na úplném konci je neviditelný příkaz deny any. Pokud se nic neshoduje, provoz je zahozen.
Ava: Ach, ten slavný implicitní deny. Takže když chci povolit všechno ostatní, musím na konec přidat permit příkaz bez jakékoliv match podmínky, že?
Dan: Trefa do černého! Prázdný match v permit příkazu znamená „shoduje se se vším“. Je to ekvivalent permit any any v access-listu.
Ava: Teorie zní dobře, ale nejlépe se to učí v praxi. Můžeš nám ukázat nějakou základní konfiguraci?
Dan: Jasně. Představme si, že máme dva routery, R1 a R2. Jsou propojené a běží mezi nimi EIGRP. R1 oznamuje R2 čtyři sítě z loopback rozhraní: 192.168.0.0 až 192.168.3.0, všechny s maskou /24.
Ava: A my chceme na R2 filtrovat, které sítě přijme.
Dan: Přesně. Začneme vytvořením route-mapy na R2. Příkaz je jednoduchý: route-map a pak jméno, třeba TEST_1. Potom určíme, jestli jde o permit nebo deny příkaz a dáme mu sekvenční číslo, třeba 10.
Ava: Takže route-map TEST_1 permit 10.
Dan: Ano. Tím se dostaneme do konfiguračního režimu route-mapy. Tady máme dvě hlavní možnosti: match pro definování podmínky a set pro definování akce. Začněme s match.
Ava: A na co všechno se můžeme ptát v match příkazu?
Dan: Na spoustu věcí. Můžeme kontrolovat BGP atributy, délku paketu, metriku, tagy... My pro jednoduchost začneme s IP adresou, což nás odkáže na access-list. Takže napíšeme match ip address a jméno access-listu, řekněme R1_L0_PERMIT.
Ava: Dobře, takže máme route-mapu TEST_1, která v sekvenci 10 povoluje (permit) to, co se shoduje (match) s access-listem R1_L0_PERMIT. Co dál?
Dan: Teď musíme vytvořit ten access-list. V něm povolíme jen jednu síť, třeba 192.168.0.0/24. Takže ip access-list standard R1_L0_PERMIT a uvnitř permit 192.168.0.0 0.0.0.255.
Ava: A poslední krok je asi aplikovat route-mapu, že?
Dan: Správně. V konfiguraci EIGRP na R2 použijeme příkaz distribute-list route-map TEST_1 in. Tím říkáme EIGRP, aby všechny příchozí updaty zkontroloval podle naší route-mapy TEST_1.
Ava: A výsledek? Co uvidíme v routovací tabulce R2?
Dan: Uvidíme jen a pouze tu jednu síť: 192.168.0.0/24. Proč? Protože access-list povolil jen ji. Vše ostatní v access-listu narazilo na implicitní deny. A protože route-mapa měla jen jeden příkaz, všechno ostatní propadlo až na její konec, kde je taky implicitní deny.
Ava: Rozumím. Takže to, co access-list nepovolil, se k druhému pravidlu route-mapy (které tam ani nebylo) vůbec nedostalo.
Dan: Přesně tak. Je to dvoustupňové filtrování.
Ava: Co se stane, když to trochu zkomplikujeme? Co kdybychom v access-listu použili deny?
Dan: Výborná otázka, tady se to začíná zamotávat! Vytvořme nový access-list R1_L0_DENY, který bude zakazovat (deny) síť 192.168.0.0/24. A novou route-mapu TEST_2, která bude mít stále permit 10, ale bude se odkazovat na tento deny access-list.
Ava: Takže route-mapa říká „povol“, ale její podmínka odkazuje na access-list, který říká „zakaž“. Co vyhraje?
Dan: Ani jedno! Výsledek je, že v routovací tabulce R2 neuvidíme vůbec nic.
Ava: Vůbec nic? Proč?
Dan: Protože access-list má jen jeden deny příkaz. To znamená, že síť 192.168.0.0 se s ním neshoduje (protože shoda v access-listu je jen pro permit příkazy). A všechny ostatní sítě narazí na implicitní deny v access-listu. Takže access-list efektivně nic nepustí dál. Žádná síť se tedy neshoduje s podmínkou match v route-mapě.
Ava: A když se nic neshoduje, pokračuje to dál, až na konec route-mapy, kde je... implicitní deny. Chápu!
Dan: Přesně! Teď to otočme. Co když bude mít route-mapa deny a access-list permit? Vytvoříme TEST_3 s deny 10, která se odkazuje na náš první permit access-list.
Ava: Takže deny na to, co access-list permitne? To by mělo zakázat tu jednu síť 192.168.0.0/24.
Dan: Správně, ale co se stane s ostatními sítěmi?
Ava: No... propadnou na konec route-mapy a budou taky zakázané!
Dan: Jsi chytrá! Abychom to opravili, musíme přidat druhý příkaz do route-mapy: route-map TEST_3 permit 20 bez jakékoliv match podmínky. Tím explicitně povolíme všechno ostatní.
Ava: Takže první pravidlo zakáže specifickou síť a druhé pravidlo chytí a povolí zbytek. To dává smysl.
Dan: A teď ta nejzábavnější kombinace: deny v route-mapě a deny v access-listu. Spousta lidí si myslí, že dva zápory dělají klad. V networkingu to takhle nefunguje.
Ava: Takže to nepovolí tu síť?
Dan: Vůbec ne. Vlastně to nepovolí nic. Stejný výsledek jako předtím. Access-list nic nepustí, takže match podmínka v route-mapě se nikdy nesplní, a všechno spadne na implicitní deny na konci route-mapy.
Ava: Dobře, myslím, že logiku permit/deny už chápu. Můžeme mít v jednom match příkazu více podmínek?
Dan: Ano, a to je další užitečná věc. Když v jednom match příkazu uvedeš více access-listů, funguje to jako logické NEBO. To znamená, že stačí shoda s KTERÝMKOLIV z nich.
Ava: Aha! Takže nemusím pro každou podmínku psát novou sekvenci v route-mapě?
Dan: Přesně. Můžeme si vytvořit dva access-listy, R1_L1_PERMIT pro síť 192.168.1.0/24 a R1_L2_PERMIT pro 192.168.2.0/24. Pak vytvoříme route-mapu MULTIPLE_MATCH permit 10 a v ní jediný příkaz match ip address R1_L1_PERMIT R1_L2_PERMIT.
Ava: A výsledek bude, že R2 bude mít v tabulce obě tyto sítě, .1.0 i .2.0, protože stačí shoda s jedním z těch access-listů.
Dan: Na jedničku. Je to efektivní způsob, jak seskupit více podmínek do jednoho pravidla.
Ava: Dane, na začátku jsi říkal, že route-mapy nejsou jen o filtrování. Mluvil jsi o tom, že umí věci měnit. To je ten příkaz set, že?
Dan: Přesně tak. Příkaz set je to, co dělá route-mapy tak neuvěřitelně mocnými. To je ta „pak“ část naší „pokud-pak“ logiky. Match je „pokud“, set je „pak“.
Ava: Ukaž nám příklad. Jak to funguje?
Dan: Dobře, změníme scénář. Místo filtrování budeme na R1 redistribuovat novou síť z connected rozhraní do EIGRP. Řekněme, že máme na R1 nové loopback rozhraní se sítí 172.16.1.0/24.
Ava: OK, a chceme ho poslat do EIGRP, ale s vlastními parametry.
Dan: Přesně. Vytvoříme si access-list R1_L4, který bude povolovat jen tuto síť. Pak vytvoříme route-mapu SET permit 10, která bude mít jako match podmínku tento access-list.
Ava: A teď přichází to kouzlo... set.
Dan: Ano. V konfiguračním režimu route-mapy napíšeme set a uvidíme obrovský seznam věcí, které můžeme měnit. Pro náš EIGRP příklad můžeme nastavit metriku. Takže set metric a pak zadáme pět hodnot, které EIGRP používá: šířku pásma, zpoždění, spolehlivost, zátěž a MTU.
Ava: Takže můžeme uměle ovlivnit, jak atraktivní ta cesta bude pro ostatní routery.
Dan: Na sto procent. Nakonec v konfiguraci EIGRP použijeme příkaz redistribute connected route-map SET. Tím řekneme, že při redistribuci connected sítí se má aplikovat naše route-mapa SET. Na R2 pak uvidíme tuto novou síť s metrikou, kterou jsme si přesně definovali. Můžeme ji kdykoliv v route-mapě změnit a EIGRP si to okamžitě přepočítá.
Ava: To bylo hodně informací, Dane. Pojďme si to na závěr shrnout. Co jsou ty nejdůležitější věci, které si máme z dnešní lekce o route-mapách odnést?
Dan: Určitě. Zaprvé, route-mapy se zpracovávají sekvenčně shora dolů a končí u první shody. Žádné další příkazy se už nekontrolují.
Ava: Zadruhé, každý příkaz může být permit nebo deny a může obsahovat nepovinné match a set příkazy.
Dan: Správně. Zatřetí, a to je důležité, prázdný permit příkaz bez match podmínky znamená „shoduje se se vším“. Je to způsob, jak na konci povolit zbytek provozu.
Ava: Začtvrté, nezapomeňte na neviditelný implicitní deny na úplném konci. Pokud nic nesouhlasí, bude to zamítnuto.
Dan: A nakonec, pamatujte, že skutečná síla route-map je v příkazu set. Umožňuje vám aktivně měnit atributy cest, nejen je filtrovat. Je to opravdu švýcarský nůž pro síťové politiky.
Ava: Skvělé shrnutí. Děkuji moc, Dane, že jsi nám to takhle srozumitelně vysvětlil.
Dan: Rádo se stalo, Avo. A vám všem přeji hodně štěstí u zkoušek. Učte se chytře!