Menu Zavrieť

18. Inter-VLAN routing a ACL – smerovanie medzi VLANy

V tomto článku budem vychádzať z (myslím bežné) topológie, kedy máme switche v dvoch vrstvách (a nie odporúčaných troch). Je tu jadro (core), čo je L3 switch (alebo dva kvôli redundanciu), ktorý vykonáva vlastné inter-VLAN routing . Druhá vrstva je prístupová (access), do nej sa aktivovali všetky zariadenia (stanice, v tomto prípade i servery, tlačiarne a pod.). Všetky switche prístupové vrstvy sú zapojené do jadra, tieto spoje sú konfigurované ako trunk a používame VLAN Trunking Protocol (VTP), takže rovnaké VLANy máme na všetkých switchoch.

Pozn .: Obdobne sa dá použiť aj zapojenie, kedy nevyužívame L3 switch, ale router. Základné informácie sú v článku VLAN – Virtual Local Area Network .

Zapnutie routovanie medzi VLAN

Defaultne je switch v móde L2 switchované, ak chceme použiť L3 vlastnosť IP routing, tak ju musíme zapnúť.

SWITCH (config) # ip routing

Nepotrebujeme použiť žiadny routovacie protokol , pretože všetky routovanie sa odohráva na jednom zariadení. Cisco IOS automaticky vkladá priamo pripojené interface do routovacie tabuľky. Ak je zapnuté routovanie, tak IOS routuje podľa záznamov tabuľky Routing, čo sú statické ruty a priamo pripojené interface.

To je výhoda inter-VLAN routingu, že pre základnú funkcionalitu netreba takmer žiadna konfigurácia. VLAN Interface sú na core switchi priamo pripojené interface , medzi ktorými sa vykonáva routovanie automaticky. Musíme iba pre VLANy , ktoré chceme routovat, vytvoriť VLAN interface a nastaviť jeho IP adresu. IP adresa je rovnako potrebná, pretože sa jedná o gateway (bránu) pre daný subnet.

Nasledujúci príklad vytvára VLAN interface pre VLAN 100, ktorá má subnet 10.0.1.0/24 a chceme adresu gateway 10.0.1.1. VLAN 100 už máme vytvorenú.

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

Ešte je vhodné nastaviť default gateway , ak chceme komunikovať napríklad do internetu, aby router vedel, kam poslať prevádzku, ktorý nepatrí do žiadnej z jeho VLAN. Možnosťou nastavenia je niekoľko, ale prvá možnosť je len pre úplnosť, tu nemôžeme použiť!

SWITCH (config) # ip default-gateway 10.0.1.250         // môžem použiť, iba ak nie je zapnuté routovanie 
SWITCH (config) # ip default-network 10.0.1.0           // nastaví defaultný sieť, pri používaní routovanie 
SWITCH (config) # ip route 0.0.0.0 0.0.0.0 10.0.1.250   // najčastejšia metóda, vytvorím priamo záznam do routovacie tabuľky

Iba ako poznámku tu zmienim užitočnú vec. Ak sme rozdelili pôvodnú jednu sieť na VLANy a využívali sme jeden DHCP server, tak môžeme stále pokračovať v používaní jedného servera. Na serveri vytvoríme niekoľko poolov (pre každý subnet jeden). A na switchi nakonfigurujeme pre dané VLANy DHCP Relay Agenta , ten odovzdáva broadcast požiadavky na pridelenie IP adresy pomocou unicast na zadaný server.

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

Obmedzenie routovania a neroutované VLANy

Myslím, že môžu nastať dve situácie, ak nechceme všetko routovat, a to

  • neroutovaná VLAN – chceme mať izolovanú VLAN, tu absolútne neroutovanou s ostatnými VLAN, buď funguje ako uzavretá sieť alebo ju ďalej prepájame pomocou firewallu či iné GW
  • obmedzene routovanie VLAN – chceme, aby sa jedna VLAN mohla komunikovať iba s niektorými ďalšími, prípadne aby bola povolená iba určitá komunikácia

Neroutovaná VLAN

Z predchádzajúcej kapitoly je jasné, ako jednoducho vytvoríme izolovanú VLAN. Stačí, aby jej VLAN interface nemal zadanú IP adresu (nemusí vôbec existovať či môže byť shutdown). Takáto VLAN sa nezúčastňuje routovacího procesu. IP adresu potrebujeme mať na VLAN z niekoľkých dôvodov, napríklad keď chceme v tejto VLAN pristupovať na switch (na jeho CLI alebo webové rozhranie) alebo keď chceme využiť prideľovanie IP adries z DHCP servera na switchi (do tejto VLAN). Ale po premyslenie sa asi vždy obídeme bez toho, aby VLAN, ktorú nechceme routovat, mala adresu.

Druhá možnosť je trošku zložitejšia a znamená vytvorenie ACL. O tom pojednáva ďalšia kapitola.

Obmedzene routovanie VLAN pomocou ACL

Ak chceme, aby niektoré VLAN bola routovanie (mohla komunikovať) iba s niektorými ďalšími (a nie so všetkými). Prípadne chceme ešte viac špecifikovať komunikáciu medzi VLAN (alebo ju úplne zakázať). Tak k tomu môžeme použiť Access Control List (ACL) . A tieto ACL aplikujeme na VLAN interface na routeri (v našom prípade core switchu), týmto ACL sa hovorí Router ACL .

Pozn .: Ďalšou možnosťou je použitie VLAN ACL (Vacl), inak povedané VLAN máp (vlan access-máp), tie sa uplatňujú nielen na routovanie prevádzku (ako Router ACL), ale aj na bridgovanie (switchované) prevádzka vnútri VLANy, teda na všetky pakety. Majú určité výhody, ale aj nevýhody. V tomto článku sa im nevenujem.

Podrobný (dúfam) opis ACL je v článku – Access Control List , takže sa tu nebudem venovať vytváraniu ACL. Ale skúsim podrobne vysvetliť aplikáciu ACL na interface , pretože som to dlhšiu dobu nechápal. Ak uvažujeme port ACL , ktoré sa aplikuje na nejaký port, tak je situácia relatívne jednoduchá. V článku o ACL je schematický obrázok, ktorý snáď jasne ukazuje, že sa na komunikáciu pozeráme z pohľadu routeru, a ak sa chceme venovať prichádzajúce komunikáciu do portu (do routeru), tak sa aplikuje in a ak odchádzajúci, tak out .

Aplikácia ACL na port

Nasledujúci obrázok obdobne ilustruje situáciu. Počítač X je pripojený do portu 1. Server Y je pripojený do portu 47 switche. Ak aplikujeme ACL na port 1 ako vstupná, tak sa zaoberáme komunikáciou, ktorá odchádza zo stanice X a smeruje (nemusí len na neho) na server Y. V tom prípade zdrojovej adresy sú stanice X (S = X) a cieľovej adresy sú servera Y (D = Y). Ďalšie varianty sú znázornené v obrázku.

Aplikácia ACL na VLAN

Ak situáciu prenesieme na náš L3 core switch, tak je situácia rovnaká, ale myslím, že vyžaduje vážnejšie zamyslenie. My síce ACL aplikujeme na VLAN interface, ale nepozeráme sa na smery z pohľadu VLAN, ale z pohľadu switcha (alebo jeho routovacího procesu – VLAN interfacu). Akoby VLAN bola mimo switch a všetko z nej vstupovalo do routeru cez VLAN interface, na ktorý aplikujeme ACL. Keď aplikujeme ACL ako vstupné na VLAN, tak rieši komunikáciu, ktorá z tejto VLAN odchádza a vstupuje do routovacího procesu (do interfacu). Situáciu som sa pokúsil schematicky zobraziť na nasledujúcom obrázku.

Voľba ACL a smeru

Cisco udáva jediné všeobecné odporúčania:

  • štandard ACL aplikovať blízko cieľa na ako out (pravidlá obsahujú iba zdrojové adresy, takže obmedzujeme, čo do cieľa vstupuje)
  • extended ACL aplikovať blízko zdroja ako in (pravidlá obsahujú zdrojovej aj cieľovej adresy, obmedzujeme prevádzku, ktorý odchádza zo zdroja, teda ešte skôr ako je spracovaný routovacím procesom)

V praxi máme možnosť aplikovať ACL u zdroja alebo u ciele a aplikovať buď smer in , smer out alebo oba in i out . V prípade, že riadime prevádzku na úrovni portov, tak si musíme tiež uvedomiť, na ktorú stranu komunikácie (zdroj, cieľ) nastavujeme port.

interVLAN routingu nám niekedy môže stačiť štandard ACL , ale asi častejšie použijeme extended ACL . Či ho nastavíme in , out alebo oboje dohromady je potrebné dôkladne zvážiť. Valné časť komunikácie (TCP) potrebuje nadviazať spojenie, takže keď obmedzíme iba jeden smer, spojenie sa nenadviaže, a komunikácia neprebieha. Ale určitá komunikácia prebieha jednosmerne (klasicky UDP protokol).

Ak aplikujeme ACL ako vstupné u zdrojové VLANy, tak ho stačí nastaviť iba na jednu VLAN (tú zdrojovú a obmedzujeme, s kým môže komunikovať). Ak by sme ho chceli nastaviť pri cieli, tak ho musíme nastaviť u všetkých cieľov, do ktorých nesmie zdrojová VLAN komunikovať.

Malé zhrnutie, ako môžeme ACL aplikovať:

  • na in u obmedzované VLANy – zdroj je obmedzovaná VLAN, cieľ buď povoľujeme, alebo zakazujeme, riadime, čo môže z VLANy odchádzať
  • na out u obmedzované VLANy – cieľ je obmedzovaná VLAN, riadime, čo do nej môže vstúpiť
  • na in i out u obmedzované VLANy – cieľ a zdroj v oboch variantoch, zamedzíme vstupe i výstupe dát do danej VLANy
  • na out u cieľovej VLANy – v niektorých prípadoch môžeme potrebovať aplikovať ACL iu cieľových VLAN, napríklad chceme, aby všetky VLANy mohli komunikovať iba s jednou (napríklad so servermi) a nie medzi sebou

Príklad použitia

Pokúsim sa o komplexnejšie príklad. Vezmeme situáciu z predchádzajúceho obrázku, kde máme VLAN 100, VLAN 200 a pridáme ešte VLAN 300. Chceme, aby VLAN 100 komunikovala s VLAN 200 a VLAN 300, ale VLAN 300 komunikovala iba s VLAN 100, rovnako ako VLAN 200. Inak povedané plnej routovanie , kde sa VLAN 300 obmedzí len na komunikáciu 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ý príklad ukazuje možnosť izolácie jednej 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