CZ 
06.10.2024 Hanuš VÍTEJTE V MÉM SVĚTĚ

An English translation is available for this article. Pro tento článek je dostupný anglický překlad.
Cisco IOS 18 - inter-VLAN routing and ACL - routing between VLANs

Cisco IOS 18 - inter-VLAN routing a ACL - směrování mezi VLANy

| Petr Bouška - Samuraj |
Tento článek logicky navazuje na popis VLAN. Vezměme, že jsme si rozdělili naši LAN na VLANy (subnety), čímž jsme omezili broadcast domény, segmentovali síť a získali další výhody. Jenže teď bychom potřebovali, aby alespoň (nebo právě) některé VLANy mohli mezi sebou komunikovat. Potřebujeme tedy mezi jednotlivými VLANami routovat, tomu se říká inter-VLAN routing. Tento článek popisuje, jak takové routování provozovat a jak jej omezovat pomocí Access Control List (ACL).
zobrazeno: 58 204x (58 178 CZ, 26 EN) | Komentáře [13]

V tomto článku budu vycházet z (myslím běžné) topologie, kdy máme switche ve dvou vrstvách (a ne doporučovaných třech). Je zde jádro (core), což je L3 switch (nebo dva kvůli redundanci), který provádí vlastní inter-VLAN routing. Druhá vrstva je přístupová (access), do ní jsou zapojena všechna zařízení (stanice, v tomto případě i servery, tiskárny apod.). Všechny switche přístupové vrstvy jsou zapojeny do jádra, tyto spoje jsou konfigurovány jako trunk a používáme VLAN Trunking Protocol (VTP), takže stejné VLANy máme na všech switchích.

Pozn.: Obdobně se dá použít i zapojení, kdy nevyužíváme L3 switch, ale router. Základní informace jsou v článku VLAN - Virtual Local Area Network.

Zapnutí routování mezi VLANami

Defaultně je switch v módu L2 switchování, pokud chceme použít L3 vlastnost IP routing, tak ji musíme zapnout.

SWITCH(config)#ip routing

Nepotřebujeme použít žádný routovací protokol, protože veškeré routování se odehrává na jednom zařízení. Cisco IOS automaticky vkládá přímo připojené interfacy do routovací tabulky. Pokud je zapnuto routování, tak IOS routuje podle záznamů v routovací tabulce, což jsou statické routy a přímo připojené interfacy.

To je výhoda inter-VLAN routingu, že pro základní funkcionalitu není třeba téměř žádná konfigurace. VLAN interfacy jsou na core switchi přímo připojené interfacy, mezi kterými se provádí routování automaticky. Musíme pouze pro VLANy, které chceme routovat, vytvořit VLAN interface a nastavit mu IP adresu. IP adresa je stejně nutná, protože se jedná o gateway (bránu) pro daný subnet.

Následující příklad vytváří VLAN interface pro VLAN 100, která má subnet 10.0.1.0/24 a chceme adresu gateway 10.0.1.1. VLAN 100 již máme vytvořenou.

SWITCH(config)#interface vlan 100
SWITCH(config-if)#ip address 10.0.1.1 255.255.255.0  // zadání IP adresy spolu s maskou, která určuje subnet
SWITCH(config-if)#no shutdown                        // výchozí stav interface je vypnutý

Ještě je vhodné nastavit default gateway, pokud chceme komunikovat třeba do internetu, aby router věděl, kam poslat provoz, který nepatří do žádné z jeho VLAN. Možností nastavení je několik, ale první možnost je pouze pro úplnost, tu nemůžeme použít!

SWITCH(config)#ip default-gateway 10.0.1.250        // mohu použít, pouze pokud není zapnuto routování
SWITCH(config)#ip default-network 10.0.1.0          // nastaví defaultní síť, při používání routování
SWITCH(config)#ip route 0.0.0.0 0.0.0.0 10.0.1.250  // nejčastější metoda, vytvořím přímo záznam do routovací tabulky

Pouze jako poznámku zde zmíním užitečnou věc. Pokud jsme rozdělili původní jednu síť na VLANy a využívali jsme jeden DHCP server, tak můžeme stále pokračovat v používání jednoho serveru. Na serveru vytvoříme několik poolů (pro každý subnet jeden). A na switchi nakonfigurujeme pro dané VLANy DHCP Relay Agenta, ten předává broadcast požadavky na přidělení IP adresy pomocí unicastu na zadaný server.

SWITCH(config-if)#ip helper-address 10.0.1.10

Omezení routování a neroutované VLANy

Myslím, že mohou nastat dvě situace, pokud nechceme vše routovat, a to

  • neroutovaná VLAN - chceme mít izolovanou VLAN, tady naprosto neroutovanou s ostatními VLANami, buď funguje jako uzavřená síť nebo ji dále propojujeme pomocí firewallu či jiné GW
  • omezeně routovaná VLAN - chceme, aby jedna VLAN mohla komunikovat pouze s některými dalšími, případně aby byla povolena pouze určitá komunikace

Neroutovaná VLAN

Z předchozí kapitoly je jasné, jak jednoduše vytvoříme izolovanou VLANu. Stačí, aby její VLAN interface neměl zadanou IP adresu (nemusí vůbec existovat či může být shutdown). Taková VLAN se neúčastní routovacího procesu. IP adresu potřebujeme mít na VLANě z několika důvodů, například když chceme v této VLANě přistupovat na switch (na jeho CLI nebo webové rozhranní) nebo když chceme využít přidělování IP adres z DHCP serveru na switchi (do této VLAN). Ale po promyšlení se asi vždy objedeme bez toho, aby VLAN, kterou nechceme routovat, měla adresu.

Druhá možnost je trošku složitější a znamená vytvoření ACL. O tom pojednává další kapitola.

Omezeně routovaná VLAN pomocí ACL

Pokud chceme, aby některá VLANa byla routována (mohla komunikovat) pouze s některými dalšími (a ne se všemi). Případně chceme ještě více specifikovat komunikaci mezi VLANami (nebo ji úplně zakázat). Tak k tomu můžeme použít Access Control List (ACL). A tyto ACL aplikujeme na VLAN interface na routeru (v našem případě core switchi), těmto ACL se říká Router ACL.

Pozn.: Další možností je použití VLAN ACL (VACL), jinak řečeno VLAN map (vlan access-map), ty se uplatňují nejen na routovaný provoz (jako Router ACL), ale i na bridgovaný (switchovaný) provoz uvnitř VLANy, tedy na všechny pakety. Mají určité výhody, ale také nevýhody. V tomto článku se jim nevěnuji.

Podrobný (doufám) popis ACL je v článku Cisco IOS 8 - Access Control List, takže se zde nebudu věnovat vytváření ACL. Ale zkusím podrobně vysvětlit aplikaci ACL na interface, protože jsem to delší dobu nechápal. Pokud uvažujeme port ACL, které se aplikuje na nějaký port, tak je situace relativně jednoduchá. V článku o ACL je schematický obrázek, který snad jasně ukazuje, že se na komunikaci díváme z pohledu routeru, a pokud se chceme věnovat přicházející komunikaci do portu (do routeru), tak se aplikuje in a pokud odcházející, tak out.

Aplikace ACL na port

Následující obrázek obdobně ilustruje situaci. Počítač X je připojen do portu 1. Server Y je připojen do portu 47 switche. Pokud aplikujeme ACL na port 1 jako vstupní, tak se zabýváme komunikací, která odchází ze stanice X a směřuje (nemusí jenom na něj) na server Y. V tom případě zdrojové adresy jsou stanice X (S=X) a cílové adresy jsou serveru Y (D=Y). Další varianty jsou znázorněné v obrázku.

Port ACL application directions

Aplikace ACL na VLAN

Pokud situaci přeneseme na náš L3 core switch, tak je situace stejná, ale myslím, že vyžaduje vážnější zamyšlení. My sice ACL aplikujeme na VLAN interface, ale nedíváme se na směry z pohledu VLAN, ale z pohledu switche (nebo jeho routovacího procesu - VLAN interfacu). Jakoby VLANa byla mimo switch a vše z ní vstupovalo do routeru přes VLAN interface, na který aplikujeme ACL. Když aplikujeme ACL jako vstupní na VLANě, tak řeší komunikaci, která z této VLAN odchází a vstupuje do routovacího procesu (do interfacu). Situaci jsem se pokusil schematicky zobrazit na následujícím obrázku.

Router ACL application directions - inter-VLAN

Volba ACL a směru

Cisco udává jediné obecné doporučení:

  • standard ACL aplikovat blízko cíle na jako out (pravidla obsahují pouze zdrojové adresy, takže omezujeme, co do cíle vstupuje)
  • extended ACL aplikovat blízko zdroje jako in (pravidla obsahují zdrojové i cílové adresy, omezujeme provoz, který odchází ze zdroje, tedy ještě dříve než je zpracován routovacím procesem)

V praxi máme možnost aplikovat ACL u zdroje nebo u cíle a aplikovat buď směr in, směr out nebo oba in i out. V případě, že řídíme provoz na úrovni portů, tak si musíme také uvědomit, na kterou stranu komunikace (zdroj, cíl) nastavujeme port.

U interVLAN routingu nám někdy může stačit standard ACL, ale asi častěji použijeme extended ACL. Zda jej nastavíme in, out nebo oboje dohromady je třeba důkladně zvážit. Valná část komunikace (protokol TCP) potřebuje navázat spojení, takže když omezíme pouze jeden směr, spojení se nenaváže, a komunikace neprobíhá. Ale určitá komunikace probíhá jednosměrně (klasicky UDP protokol).

Pokud aplikujeme ACL jako vstupní u zdrojové VLANy, tak jej stačí nastavit pouze na jednu VLANu (tu zdrojovou a omezujeme, s kým může komunikovat). Pokud bychom jej chtěli nastavit u cíle, tak jej musíme nastavit u všech cílů, do kterých nesmí zdrojová VLANa komunikovat.

Malé shrnutí, jak můžeme ACL aplikovat:

  • na in u omezované VLANy - zdroj je omezovaná VLAN, cíl buď povolujeme, nebo zakazujeme, řídíme, co může z VLANy odcházet
  • na out u omezované VLANy - cíl je omezovaná VLAN, řídíme, co do ní může vstoupit
  • na in i out u omezované VLANy - cíl a zdroj v obou variantách, zamezíme vstupu i výstupu dat do dané VLANy
  • na out u cílové VLANy - v některých případech můžeme potřebovat aplikovat ACL i u cílových VLAN, například chceme, aby všechny VLANy mohli komunikovat pouze s jednou (třeba se servery) a ne mezi sebou

Příklad použití

Pokusím se o komplexnější příklad. Vezmeme situaci z předchozího obrázku, kde máme VLAN 100, VLAN 200 a přidáme ještě VLAN 300. Chceme, aby VLAN 100 komunikovala s VLAN 200 a VLAN 300, ale VLAN 300 komunikovala pouze s VLAN 100, stejně jako VLAN 200. Jinak řečeno plné routování, kde se VLAN 300 omezí pouze na komunikaci s VLAN 100.

SWITCH(config)#ip routing
SWITCH(config)#interface vlan 100
SWITCH(config-if)#ip address 10.0.1.1 255.255.255.0  
SWITCH(config-if)#no shutdown
SWITCH(config)#interface vlan 200
SWITCH(config-if)#ip address 10.0.2.1 255.255.255.0  
SWITCH(config-if)#no shutdown
SWITCH(config)#interface vlan 300
SWITCH(config-if)#ip address 10.0.3.1 255.255.255.0  
SWITCH(config-if)#no shutdown
SWITCH(config)#ip access-list extended vlan300in
SWITCH(config-ext-nacl)#permit ip 10.0.3.0 0.0.0.255 10.0.1.0 0.0.0.255
SWITCH(config)#interface vlan 300
SWITCH(config-if)#ip access-group vlan300in in

Druhý příklad ukazuje možnost izolace jedné VLANy.

SWITCH(config)#ip access-list extended vlan300
SWITCH(config-ext-nacl)#deny ip any any
SWITCH(config)#interface vlan 300
SWITCH(config-if)#ip access-group vlan300 in
SWITCH(config-if)#ip access-group vlan300 out

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco. Obsahuje jedny z nejčtenějších článků na tomto webu. Články popisují konfiguraci switchů a routerů, primárně s Cisco IOS. Věci ohledně portů, VLAN, STP, ACL, QoS, apod.

Routing - směrování

Směrování paketů mezi jednotlivými počítačovými sítěmi (LAN) se provádí technikou zvanou routing. Používají se k tomu různé routovací protokoly. Routing je jedna ze základních částí komunikace v internetu.

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže.

Komentáře
  1. [1] davro

    Ten popis v malém shrnutí je IMHO poněkud zmatený. Access-list in by měl řídit, co do VLAN může vstoupit. Ať už z fyzických portů ve VLAN nebo z jiného L3 rozhraní (třeba i jiné VLAN).

    Takže komunikace mezi VLAN 100 a 200 by vypadala patrně následovně:

    paket z portu ve VLAN100 -> Vlan100 access-list in -> routování -> Vlan100 access-list out -> Vlan200 access-list in ->Vlan200 access-list out -> odchozí port ve VLAN200.

    Ale nezkoušel jsem to, takže můžu kecat, ale takové použití se mi zdá nejlogičtější.

    Pátek, 26.12.2008 21:10 | odpovědět
  2. [2] Samuraj

    odpověď na [1]davro: Moc se ve vašem popisu nevyznám, ale jsem si jist, že je to tak, jak popisuji v článku, a ne jak píšete vy. Snad každý to musí pochopit z obrázku a ještě jsem se to snažil podrobně popsat.

    Hlavní věc je, že Router ACL, je něco jiného než Port ACL, a uplatňuje se pouze na routovaný provoz. Směr in je to co odchází z VLANy, vstupuje do VLAN interfacu (na který se ACL aplikovalo) a tedy vstupuje do routovacího procesu.

    Jo a v rámci jedné VLAN se neprovádí routování, ale switchování.

    Sobota, 27.12.2008 00:19 | odpovědět
  3. [3] uzivatel

    Zkousel sem priklad pouziti nastavit v packet traceru , a nefungovalo me to , (pouzival sem tam L3 switch 3560-24PS) , slo by ten postup napsat kompletni , vcetne toho co ma byt nastaveno na PC ktere se maji pripojit do jednotlivych vlan .

    Úterý, 01.12.2009 19:08 | odpovědět
  4. [4] mirek

    SWITCH(config)#ip routing

    SWITCH(config)#interface vlan 100

    SWITCH(config-if)#ip address 10.0.1.1 255.255.255.0

    SWITCH(config-if)#no shutdown

    SWITCH(config)#interface vlan 200

    SWITCH(config-if)#ip address 10.0.2.1 255.255.255.0

    SWITCH(config-if)#no shutdown

    SWITCH(config)#interface vlan 300

    SWITCH(config-if)#ip address 10.0.3.1 255.255.255.0

    SWITCH(config-if)#no shutdown

    SWITCH(config)#ip access-list extended vlan300in

    SWITCH(config-ext-nacl)#permit ip 10.0.3.0 0.0.0.255 10.0.1.0 0.0.0.255

    SWITCH(config)#interface vlan 300

    SWITCH(config-if)#ip access-group vlan300in in

    tak tohle me nefunguje

    Středa, 02.12.2009 10:56 | odpovědět
  5. [5] Samuraj

    odpověď na [4]mirek: Zajímavé. Já když jsem to psal, tak jsem to vyzkoušel a chodilo to správně.

    Středa, 02.12.2009 13:53 | odpovědět
  6. [6] mirek

    Me spolu ty vlany nekomunikuji vubec , paket dojde tak akorat na switch a dal uz nikam neprojde ....... a zkousel sem komunikaci mezi vsemi vlan .

    Pátek, 04.12.2009 17:29 | odpovědět
  7. [7] mirek

    Problem odstranen ....... clovek nesmi verit vsemu co mu cisco simulatory nakecaj;-) ........... smazal bych svuj predchozi prispevek , ale bohuzel to nejde .

    Pátek, 04.12.2009 18:28 | odpovědět
  8. [8] Jenda

    odpověď na [4]mirek: Myslim, ze je v tom access listu prohozena zdrojova a cilova adresa, spravne to je takhle:

    permit ip 10.0.1.0 0.0.0.255 10.0.3.0 0.0.0.255

    :-)

    Pátek, 04.12.2009 18:30 | odpovědět
  9. [9] Samuraj

    odpověď na [8]Jenda: To ne! Aplikuje se to na VLAN300 na odchozí provoz, první adresa v ACL je zdrojová, takže to musí být 10.0.3.0 0.0.0.255.

    Pondělí, 07.12.2009 09:56 | odpovědět
  10. [10] Jenda

    odpověď na [9]Samuraj: V tom pripade musi byt IP ACCESS-GROUP VLAN300 OUT.

    Je to odchozi provoz, ne prichozi.

    Pondělí, 07.12.2009 16:58 | odpovědět
  11. [11] Samuraj

    odpověď na [10]Jenda: Odchozí provoz to je, ale bere se to z pohledu routeru a ne VLANy. Přečtěte si můj článek nebo jakýkoliv jiný o dané problematice.

    Pondělí, 07.12.2009 17:02 | odpovědět
  12. [12] Kaya

    Ahoj,

    potreboval bych poradit. Mam switch c3560, nastavil jsem ho do modu router a vytvoril prislusne vlany. Tento router chci používat jako centralni router v me siti. Oddelene vlany pro servery, PC a wifi sit. Problém je v tom, ze uvnitř site je vse ok, ale potrebuji odroutovat provoz ven. Od poskytovatele mam veřejnou IP. Jako AP mam router Ubiquiti nanostation M2 loco. Na venkovni strane je verejna IP, uvnitř site je IP z mého rozsahu ale v nastaveni Nanostationy (vnitrni sit) nemohu nastavit gateway, která by ukazovala smerem k c3560. V nastaveni lze zadat pouze IP a masku. Poradite mi někdo, co s tim?

    Predem diky za odpověď.

    Kaya

    Středa, 13.07.2016 22:59 | odpovědět
  13. [13] Pavel

    [script]snad tohle nefunguje[/script]

    Pátek, 10.05.2019 12:06 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách