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 Network0:00 / 13:49
0:001:00 zbývá
AvaVě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íť.
DanPř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.
Chapters

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!