www.SAMURAJ-cz.com 

24.04.2024 Jiří Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Cisco IOS 19 - Private VLAN a Protected Port

Středa, 20.05.2009 18:41 | Samuraj - Petr Bouška |
Občas může nastat situace, kdy chceme omezovat komunikaci mezi některými klienty v rámci stejného subnetu (VLANY). Například, aby klienti nemohli komunikovat mezi sebou, ale mohli komunikovat do internetu. K tomu nám dobře poslouží technologie zvaná Private VLAN. Případně jednodušší mechanismus Protected Ports. Na závěr ještě zmiňuji mechanismus, který blokuje neznámé unicasty či multicasty.

Private VLAN - PVLAN

Co je to Private VLAN?

Cisco popisuje Private VLAN, jako vhodné řešení pro ISP, kdy se řeší problém s maximálním počtem VLAN a adresováním (můžeme použít stejný rozsah pro více klientů). Určitě se ale jedná o užitečnou funkci i pro jiné situace. Například různé karanténní a hostovské sítě (VLANy), kde zabráníme komunikaci mezi jednotlivými klienty.

Private VLAN je ochranný prvek pro switche, který poskytuje L2 (2. vrstva OSI modelu) izolaci mezi porty ve stejné VLANě. Takže zabrání komunikaci mezi klienty v rámci stejného subnetu (který standardně funguje pomocí přeposílání paketů na switchi – pomocí MAC adres). Výsledkem je, že klienti jsou ve stejném IP subentu (a VLANě), mají stejný adresní rozsah, ale nemohou spolu komunikovat. Tím jsme také VLANu rozdělili na řadu izolovaných broadcast domain nebo subdomain (nešíří se ani broadcasty a multicasty).

Pokud potřebujeme komunikovat mezi některými klienty (typickým příkladem je gateway), tak můžeme využít speciální porty (promiscuous porty), na které je možná normální komunikace. Případně je možná komunikace přes nějaké L3 zařízení (router, L3 switch), kde můžeme komunikaci jednoduše zabezpečovat pomocí ACL. V tom případě, ale musíme zařídit to, aby veškerá komunikace (i v rámci stejného subnetu) odešla na gateway a zde zajistit směrování zpět do daného subnetu.

Private VLAN není omezena na jeden switch, ale může se přenášet přes trunk port (kde musí být daná VLAN samozřejmě povolena) na jiné switche, které podporují PVLAN. Bohužel ale VTP (VLAN Trunking Protocol) nepodporuje Private VLAN, takže by nám nepřenesla informace o typu PVLAN a mapování portů. Proto musí být všechny switche, kde chceme použít PVLAN, ve VTP módu transparent (tedy VTP vypnuté). Můžeme využít toho, že switch nastavíme do VTP klientského módu, stáhnou se nám VLANy, a následně ho přepneme do transparentního módu.

Pozn.: Ne všechny switche a verze IOSu podporují PVLAN. Ty hlavní, kde podpora je, jsou Catalyst 3560, 3750, 4500, 6500. Hlavně u Catalyst 3560 a 3750 se jedná až o novější verze IOSu 12.2(20) a pro podporu PVLAN spolu s Port Security je potřeba verze 12.2(40).

Jak funguje Private VLAN?

První, a podle mne základní myšlenka je, že Private VLAN není jedna VLAN, ale je to skupina minimálně dvou VLAN (někde se vysvětluje tak, že máme VLANu, která obsahuje subVLANy). Takže pro vytvoření jedné PVLAN spotřebujeme minimálně dvě čísla VLAN, ale zde můžeme umístit třeba deset různých klientů/zákazníků, pro které bude vše vypadat, jako by byli sami ve své VLANě. Abychom mohli zajistit různé chování (různý stupeň komunikace) pro různé klienty, tak využíváme několik typů PVLAN a portů.

V rámci PVLAN máme porty tří typů a podle toho se omezuje jejich komunikace. Jedná se o:

  • Promiscuous (P) – může komunikovat se všemi porty, tak se nastavuje tradičně port, ke kterému je připojen router (GW), aby klienti mohli komunikovat mimo subnet (případně další servery, s kterými musí každý klient komunikovat)
  • Isolated (I) – tradiční PVLAN port, kompletní L2 oddělení od ostatních portů ve stejné PVLAN, může komunikovat pouze s Promiscuous porty
  • Community (C) – komunikuje s ostatními porty ve stejné Community a s promiscuous porty

Samotná Private VLAN (nebo PVLAN doména) se skládá z více VLAN. Je tvořena jedním nebo více páry, kdy je použita vždy stejná primární VLAN a rozdílná sekundární VLAN. Sekundární VLAN může být buď izolovaná, nebo komunitní. Takže ve výsledku máme tři různé typy VLAN, které se mohou použít při tvorbě PVLAN.

  • Primary VLAN – zapouzdřuje celou strukturu a umožňuje komunikaci s Promiscuous porty, v rámci PVLAN je pouze jedna
  • Isolated VLAN – obsahuje Isolated porty, které spolu nemohou komunikovat, v rámci PVLAN je pouze jedna
  • Community VLAN – obsahuje Community porty, které mezi sebou mohou komunikovat (jedná se o jednu komunitu), v rámci PVLAN můžeme mít více nezávislých komunit
Private VLAN schéma

Abychom mohli použít PVLAN, tak musíme dodržet několik podmínek. Pro vlastní konfiguraci je třeba, aby byl switch ve VTP Transparent modu (viz. výše). Jako PVLAN port nemůžeme konfigurovat trunk port, port-channel, port, který má dynamické členství ve VLAN, cíl pro SPAN (ale zdroj ano) a některé další.

Pozn.: Private VLAN se přes trunk přenáší stejně, jako normální VLANy. To znamená, pokud na druhém switchi nevytvoříme stejnou konfiguraci, tak v rámci jedné VLAN (subVLAN) bude možná normální komunikace, a naopak nebude možná komunikace s promiscuous portem (v běžném pohledu je v jiné VLAN).

Konfigurace Private VLAN

Pro PVLAN můžeme využít standardní VLANy, číslo 2 až 1001 (VLAN 1 využít nelze) a také rozšířené VLANy, číslo 1006 až 4094. Prvním krokem je zajistit, aby byl switch ve VTP Transparent módu, můžeme použít příkaz:

SWITCH(config)#vtp mode transparent

Nejprve vytvoříme jednotlivé VLANy potřebných typů. Komunitních VLAN můžeme vytvořit více pro jednu PVLAN.

SWITCH(config)#vlan 100
SWITCH(config-vlan)#private-vlan primary
SWITCH(config)#vlan 101
SWITCH(config-vlan)#private-vlan isolated
SWITCH(config)#vlan 102
SWITCH(config-vlan)#private-vlan community

Následně musíme provést asociaci primární VLANy se sekundárními VLANami. Tím se vytvoří asociace pro kontrolu syntaxe a typů VLAN.

SWITCH(config)#vlan 100
SWITCH(config-vlan)#private-vlan association 101,102 // můžeme využít i rozsah pomocí pomlčky a klíčová slova add, remove

Kontrolu vytvořených VLAN můžeme provést příkazy:

SWITCH#show vlan                            // kompletní výpis PVLAN jsou dole
SWITCH#show vlan private-vlan               // pouze PVLAN
SWITCH#show interfaces private-vlan mapping // zobrazí mapování SVI
SWITCH#show interfaces switchport           // informace o zařazení portu do PVLAN

V druhé části konfigurace provedeme zařazení portů do jednotlivých PVLAN. Provádí se to jinak, než běžné zařazení portu do VLANy. Zde nastavíme portu speciální mód private-vlan host (místo access). Musíme také zadat asociaci, kde je primární VLAN a sekundární VLAN, do které port patří.

// port g1/0/3 je Isolated port ve VLAN 101 (primární 100)
SWITCH(config)#interface g1/0/3
SWITCH(config-if)#switchport mode private-vlan host
SWITCH(config-if)#switchport private-vlan host-association 100 101
// port g1/0/4 je Community port ve VLAN 102 (primární 100)
SWITCH(config)#interface g1/0/4
SWITCH(config-if)#switchport mode private-vlan host
SWITCH(config-if)#switchport private-vlan host-association 100 102

Promiscuous port se nachází přímo v primární VLANě (pokud to tak lze říci) a jeho konfigurace je opět rozdílná. U něj definujeme mapování, s kterými sekundárními VLANami může komunikovat.

// port g1/0/5 je Promiscuous port ve VLAN 100 (mapovaný na sekundární VLAN 101 a 102)
SWITCH(config)#interface g1/0/5
SWITCH(config-if)#switchport mode private-vlan promiscuous
SWITCH(config-if)#switchport private-vlan mapping 100 101,102 // můžeme také použít pomlčku, add, remove

Jako drobnou poznámku uvedu, že je také možný zápis:

SWITCH(config-if)#switchport private-vlan association host 100 101
SWITCH(config-if)#switchport private-vlan association mapping 100 101,102

V případě, kdy budeme využívat inter-VLAN routing (GW není speciální zařízení, ale L3 switch), tak pro privátní VLAN vytváříme SVI (Switch Virtual Interface = VLAN interface). A potom potřebujeme mapovat sekundární VLANy s tímto SVI (jako u P-portu).

SWITCH(config)#interface vlan 100
SWITCH(config-if)#ip address 192.168.10.2 255.255.255.0
SWITCH(config-if)#private-vlan mapping 101,102

Poznámka závěrem. Připadá mi trochu překombinovaná konfigurace portů. Již při definici VLAN určuji asociaci mezi primární a sekundárními VLANami, takže myslím, že na portu by stačilo zadat pouze tu sekundární a vše je jasné. Proč znovu zadávat asociaci mezi primární a sekundární VLAN. Jedině pokud může být sekundární VLAN asociována k více primárním. Také je v popisu dáno, že P-port komunikuje se všemi I-porty a C-porty, ale v konfiguraci mohu vybrat pouze určité I a C VLANy.

Protected Port (PVLAN Edge)

Protected Ports (v některé Cisco dokumentaci se označují jako PVLAN Edge) je zjednodušená obdoba Private VLAN. Zajišťuje, aby mezi porty nastavenými do módu Protected nebyl přeposílaný žádný provoz na L2 vrstvě (tedy pomocí MAC adres v rámci subnetu). Důležité jsou dvě vlastnosti. Protected Ports mají pouze lokální význam na switchi/stacku (ale nefungují mezi protected porty, které se nachází na různých switchích). Provoz mezi normálním portem a protected (v rámci stejné VLAN) probíhá normálně. Omezen je pouze provoz mezi proteceted porty v rámci VLANy a switche.

Pozn.: Pouze info pro začátečníky. I když při komunikaci zadáváme IP adresu (což je L3), tak komunikace v rámci stejného subnetu probíhá na L2 (z IP se zjistí MAC a ta se využívá).

SWITCH(config)#interface G1/0/1
SWITCH(config-if)#switchport protected  // zapne L2 ochranu na portu
SWITCH#show interface G1/0/1 switchport // v informacích o portu je také uvadeno, zda je port protected

Pozn.: Hlavní switche, které podporují Protected Ports, jsou Catalyst 2960, 2970, 3560, 3550, 3750.

Protected Ports jsou jednoduché a pěkně fungující, jediné omezení je v tom, že fungují pouze v rámci jednoho switche/stacku. Také se nemá konfigurovat dohromady Protected Ports a Private VLAN na jeden port.

Port Blocking – unicast, multicast

Pouze jako stručnou informaci doplním ještě jednu bezpečnostní vlastnost pro ochranu portů (bývá spojována s Protected Ports). I když si nejsem jistý jejím praktickým použitím. Jedná se o blokování neznámých unicastů a multicastů. Pokud na switch přijde rámec s neznámou cílovou MAC adresou, tak se odešle na všechny porty mimo příchozího (tedy funguje jako broadcast nebo jako na Hubu). Cisco umožňuje nastavit na portu mechanismus, který takový příchozí paket zahodí (místo odeslání všude).

Na switchi se udržuje CAM tabulka (Content Addressable Memory), která obsahuje asociaci MAC adres a portů, kde se nachází. Záznam do této tabulky se vytváří při přijetí rámce z portu s určitou zdrojovou MAC adresou. Tento záznam se uchovává (pokud nepřijde další rámec) po dobu MAC Address Aging Time, což je defaultně 5 minut. Takže dokud stanice za portem odešle nějaký rámec alespoň jednou za 5 minut (což Windows dělají samovolně mnohem častěji), tak je vše OK. Pokud by však stanice nic neposílala, tak při nastavení blokování neznámých unicast/multicastů, neprojde daná komunikace. Ale zabráníme tím tomu, aby se žádný rámec nedostal na port, kam nepatří.

Konfigurace se provádí jednoduše, na portu, který nemá odesílat na neznáme MAC adresy.

SWITCH(config-if)#switchport block multicast
SWITCH(config-if)#switchport block unicast 

Odkazy

zobrazeno: 29272krát | Komentáře [5]

Autor:

Související články:

Cisco IOS

Velký seriál o operačním systému aktivních prvků firmy Cisco.

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

Komentáře

  1. [1] p.ba

    Doplneni - Protected Port - mezi dvema porty je mozna pouze L3 komunikace. Na routeru vsak musi byt zapnuta local-proxy-arp.

    Čtvrtek, 04.06.2009 09:32 | odpovědět
  2. [2] Honza

    Obdivuji tvuj cas a vuli psat takove clanky. Obcas sem zabrousim abych si neco ozrejmil.

    Mozna by stalo za zminku u vlan doplnit, ze novejsi switche umi QinQ. Obcas se to muze hodit.

    Pátek, 28.08.2009 14:16 | odpovědět
  3. [3] Ondrej

    Super clanky. Kolikrat se snazim to pochopit z anglictiny na Cisco webu a nekdy se fakt nedari :-);-). Diky moc!

    Neděle, 05.06.2011 18:21 | odpovědět
  4. [4] Kelly

    Zdravim, je mozne .. ? V ramci Private VLAN na switchi (treba c3560), ktery dela interVLAN-routing, ma nastavene typy a asociace private-vlan, vsechny jeho porty jsou trunk. Vlany bych priradil az na koncove porty pres trunk pripojene hloupejsi c3550ky, ktera Private VLAN neumi. Jak by se to chovalo? Fungovala by izolace mezi porty c3550, pokud by byl kazdy v jine VLANe?

    Diky za paradni web a obrovske know-how!

    Pátek, 20.01.2012 01:29 | odpovědět
  5. [5] Hans

    Ještě bych doplnil, že PVLAN nejdou nastavit u switchů s LANBASE licencí. Tato funkcionalita je tam zakázaná. Aby si někdo nemyslel, že tam bude PVLAN v základu.

    Úterý, 27.03.2012 16:26 | 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