Cisco IOS 3 - nastavení interface/portu - access, trunk, port security

Zdroj seriálu: https://www.samuraj-cz.com/serie/cisco-ios/

V pokračování popisu operačního systému Cisco Switchů se věnuji asi nejpoužívanější oblasti, nastavování parametrů pro porty a interfacy. Od základních vlastností, přes používání VLAN, nastavení IP adresy až po zabezpečení portu pomocí Port security. Popis je pouze stručný a v závěru se nachází praktické příklady.

Značení portů
Rozhranní na switchi - interfaces, jsou hlavně fyzické porty a VLANy (přesněji virtuální interface pro VLANu - Switch Virtual Interface - SVI). Vedle toho však existuje celá řada dalších, např. EtherChannel (port-channel), sériová linka (serial), konzole (console), asynchronní linka (TTY), síťový terminál (VTY) - telnet.

Fyzické porty switche se označují (adresují) typem, dnes hlavně FastEthernet (stačí f), GigabitEthernet (stačí g) a TenGigabitEthernet (stačí t), a číslem portu. Číslo portu je řetězec, který má tvar podle typu switche. Nejčastější je {slot}/{port} nebo {stack}/{slot}/{port}. Běžné (nemodulární) switche jsou brány, jako by byli ve slotu 0, takže příklad adresace (třeba pro switch C2690) je f0/1 a je jím označen FastEthernet (100Mbit/s) port číslo 1. Stohovatelné switche (podporují stack), jako je třeba Catalyst 3750, adresujeme například g1/0/1, což označuje GigabitEthernet (1Gbit/s) port, který je na prvním switchi ve stacku (nebo samostatném), ve slotu 0, port číslo 1.

Konfigurace portů
Výběr portu
Když chceme konfigurovat nějaký interface/port, tak se z privilegovaného módu přepneme do konfigurace daného portu. Pro zjednodušení můžeme konfigurovat i více portů naráz, tehdy se využívá, v IOSu běžná notace, pomlčka pro určení rozsahu (pouze v rámci stacku/slotu, za pomlčku zadáváme číslo) a čárka pro vyjmenování portů (za čárku zadáváme celé označení portu).

SWITCH(config)#interface f0/5 // přepneme se na kofiguraci portu 5
SWITCH(config)#interface range f0/1-5,g0/1 // vybereme porty 1 až 5 (fast) a 1 (gigabit)
SWITCH(config-if)# // interface configuration mode
Stav portu, vypínání
Interface může být v několika stavech, navíc se můžeme dívat na stav portu globálně (tehdy se používají hlavní označení stavů disabled, notconnect, connected) nebo se díváme zvlášť na fyzický/administrační stav (administrative status) a operační stav (operational/line status) portu (tehdy se používá hlavně up, down). Interně se udržuje stav portu odděleně a pouze pro některé výstupy se převádí (například show interfaces status). Administrační stav je ten, který můžeme řídit příkazy (pomocí shutdown), operační stav se nastavuje automaticky podle stavu linky. Pokud však nastavíme administrační stav na down, tak se i operační stav přepne na down. Existují i různé speciální stavy jako chyby nebo testování. Určitý pohled na nejběžnější stavy je:

vypnutý - disabled (down, down) - nejde přes něj žádná komunikace
vypnutý chybou - error-disabled (down, down) - nejde přes něj žádná komunikace, informuje o chybě
zapnutý nespojený - notconnect (up, down) - fyzicky nepřipojený, po zapojení komunikuje
zapnutý spojený - connected (up, up) - funkční a komunikující
Pro přepínání stavu mezi vypnutým a zapnutým slouží příkazy

SWITCH(config-if)#shutdown // vypnutí portu
SWITCH(config-if)#no shutdown // zapnutí portu
Pokud je port v error-disabled stavu, kam se může dostat například díky chybě v spanning tree nebo port security, je třeba jej nejprve vypnout a pak teprve zapnout. Uvádí se, že ve výchozím stavu jsou interface vypnuté (shutdown), ale není to pravda úplně vždy. Doporučuji nepoužívané porty vypínat (nejlépe globálně při úvodní konfiguraci) a při konfiguraci portu jej vždy zapnout.

Základní vlastnosti portu
Pro port můžeme nastavovat obecné vlastnosti jako je duplex, rychlost, popis, MDIX a další. Defaultní nastavení pro duplex, speed a mdix je auto, což je v dnes ve většině případů vyhovující. Vkládání popisu k jednotlivým portům je určitě dobrý zvyk a je dobré jej vždy používat.

SWITCH(config-if)#duplex full
SWITCH(config-if)#speed 100
SWITCH(config-if)#description 3.14
SWITCH(config-if)#mdix auto
Nastavení defaultních hodnot pro interface
Zresetování nastavení portu do výchozích (továrních) hodnot můžeme provést jedním příkazem.

SWITCH(config)#default interface f0/1
Zobrazení informací o interfacech
O interfacech můžeme zjistit velkou řadu informací. Některé příkazy, které můžeme použít, jsou následující.

SWITCH#show interfaces
SWITCH#show interfaces status
SWITCH#show interfaces summary
SWITCH#show interfaces switchport
Typy interfaců
Hlavní interfacy na switchi jsou:

fyzické porty – switch porty a routed porty
VLANy - Switch Virtual Interface
port channel – EtherChannel interface
Switch Port
Switch Port je Layer 2 (2. vrstva OSI modelu) interface asociovaný s fyzickým portem. Porty switche jsou defaultně switch porty a jsou zařazeny do jedné nebo více VLAN. Parametry, které se týkají charakteristik přepínání, se konfigurují příkazem switchport v konfiguračním módu interfacu. Switch port může pracovat v jednom z následujících módů:

access - typicky pro koncové zařízení (PC, server, tiskárna), přijímá netagované pakety (bez určení VLANy) a zařazuje je té VLANy, kterou má nastavenu
trunk - jiný switch či aktivní prvek, komunikace je tagována a přenáší se vybrané VLANy
dynamic - vyjednává o stavu portu (access nebo trunk) pomocí protokolu DTP
tunnel - využívá IEEE 802.1q tunneling pro přenos informace o VLANě přes síť ISP
Nastavení portu do příslušného módu se provádí následujícím říkazem.

SWITCH(config-if)#switchport mode access
SWITCH(config-if)#switchport mode trunk
SWITCH(config-if)#switchport mode dynamic
SWITCH(config-if)#switchport mode dot1q-tunnel
Pokud máme routovaný port, tak je můžeme převést na switch port pomocí příkazu:

SWITCH(config-if)#switchport
Access mode
Toto je defaultní mód switch portu. Pokud je port v přístupovém módu, měli bychom jej zařadit do správné VLANy. Může být členem pouze jedné VLANy, ve výchozím stavu jsou všechny porty ve VLAN 1.

SWITCH(config-if)#switchport access vlan 100
Mimo manuálního zařazení portu do VLANy můžeme také využít protokol IEEE 802.1x (spolu s RADIUS serverem) nebo dynamické zařazení pomocí VLAN Membership Policy Server (VMPS).

Pokud na access port dorazí tagovaný paket (s označenou VLANou pomocí ISL nebo 802.1q), tak je zahozen.

Standardní hodnota MTU (Maximum Transmission Unit) pro Ethernet je 1518 B, (1500B velikost paketu + 18B hlavička a zakončení rámce). Když se použije IEEE 802.1q, tak může přijít rámec o 4B větší, tedy 1522B, když se použije ISL, tak o 30B větší, což je 1548B. Pokud port není nastaven jako trunk a přijde takto velký rámec, tak se zahodí a hlásí se jako Giant (Jumbo frame). V počítadlech pro interface se giant pakety zobrazují.

SWITCH#show system mtu
SWITCH(config-if)#system mtu jumbo 9000
Trunk mode
Trunk mode slouží primárně k tomu, abychom více switchů propojili mezi sebou a komunikace zůstala ve správné VLANě. Dnes se také často používá pro připojení některých serverů, které potřebují komunikovat do více VLAN. Pokud bychom switche propojili access portem, tak by se přenášela pouze komunikace ve VLANě, ve které by byl nastaven daný port a na druhém switchi by byl paket ve VLANě tohoto portu.

Pokud je port v trunk módu, je bodů pro konfiguraci více. U vyšších modelů switchů (obecně L3 switchů a výše) volíme metodu, kterou se k paketům dopňuje informace o zařazení do VLANy. K dispozici máme

IEEE 802.1q - standardizovaná metoda, kterou podporují všechny switche. Funguje na principu tzv. tagování, do hlavičky paketu přidá 4B informaci (2B - 0x8100 = je to 802.1q/802.1p, 2B - priorita + číslo VLANy) a přepočítá CRC. Používá se také pro QoS.
Cisco ISL - Cisco proprietární metoda, kterou podporují pouze vyšší řady switchů. Vezme celý původní paket a zabalí jej (encapsulate) jako obsah nového paketu. Přidává tedy 30B k obsahu.
SWITCH(config-if)#switchport trunk encapsulation dot1q
Následně můžeme určit, které VLANy chceme, aby se přenášeli v daném trunku. Defaultně se přenáší všechny, ale kvůli bezpečnosti a provozu můžeme chtít některé VLANy omezit. Zadáním čísla VLANy (nebo čísel oddělených čárkou či rozsah s pomlčkou) provedeme nastavení a předchozí hodnoty se smažou. Můžeme využít také pomocná klíčová slova pro modifikaci seznamu add, remove, all, none, except.

SWITCH(config-if)#switchport trunk allowed vlan 100,200
SWITCH(config-if)#switchport trunk allowed vlan add 300
Souvisejícím údajem je nastavení nativní VLANy, ta slouží k přenosu paketů, které nebyly zařazeny do žádné VLANy. Jinak řečeno, pokud do portu, který je nakonfigurován jako trunk, připojíme normální stanici (která nepodporuje trunk), tak bude komunikovat v této VLANě. Ve výchozím nastavení je to VLAN 1. Důležité je, aby na obou stranách trunku byla nastavena stejná nativní VLANa.

SWITCH(config-if)#switchport trunk native vlan 1
Více informací o konfiguraci VLAN se nachází v článku Cisco IOS 7 - konfigurace VLAN, VTP.

dot1q-tunnel mode
IEEE 802.1q tunneling umožňuje přenášet rámce, které jsou tagovány našimi čísly VLAN, přes síť service providera. Provádí se dvojité tagování, kdy se pakety, které přichází na tunnel port a jsou již otegovány naší VLANou, doplní o druhý tag s číslem VLANy, kterou se přenáší v rámci sítě service providera.

Routed Port
Routed Port je fyzický port, který funguje jako Layer 3 (3. vrstva OSI) interface, stejně jako na routeru, a komunikace probíhá pomocí routování. Routovaný port není zařazen do žádné VLANy a můžeme mu přiřadit L3 adresu (tedy IP adresu). Také nepodporuje žádné L2 protokoly, jako je DTP a STP. Routované porty jsou podporovány pouze na L3 switchích (ty podporují routování).

SWITCH(config-if)#no switchport
SWITCH(config-if)#ip address 192.168.100.2 255.255.255.0
Port security
Port security je jednoduchá a zajímavá metoda zabezpečení přístupu do sítě. Na portu, kde je nastavena, kontroluje, zda pakety přichází z povolené MAC adresy. Pokud tedy uživatel připojí do zásuvky jiné zařízení, nebude moci komunikovat.

Pro nastavení Port security musí být port ve statickém módu (trunk, access, ale ne dynamic). Zapnutí port security pro daný port:

SWITCH(config-if)#switchport port-security
Můžeme nastavit kolik MAC adres pro port (nebo určitou VLANu) je povoleno (například pokud je do portu připojen switch). Defualtní hodnota je 1.

SWITCH(config-if)#switchport port-security maximum 1
Pokud nezadáme žádné povolené MAC adresy, tak se používají adresy dynamicky (dočasně se ukládají pro aktuální komunikaci až do maxima). Nebo můžeme MAC adresy zadat ručně jako statické adresy. U dynamických adres můžeme nastavit, aby se tyto adresy ukládaly do běžící konfigurace (vytvoří se statický záznam, ale pokud neuložíme konfiguraci, tak se po restartu smažou).

SWITCH(config-if)#switchport port-security mac-address 0018.deda.2990 // pevná adresa
SWITCH(config-if)#switchport port-security mac-address 0000.02000.0004 vlan 3 // adresa na trunku ve VLAN 3
SWITCH(config-if)#switchport port-security mac-address sticky // ukládat dynamické adresy
SWITCH(config-if)#switchport port-security mac-address 001e.138c.7430 vlan voice // adresa ve Voice VLAN
Dále volíme, co se děje při porušení pravidel, tedy pokud přijde komunikace z MAC adresy, která není povolena (a dosáhlo se maxima). Default je shutdown. Možnosti jsou:

protect - nepovolená komunikace je zahazována, povolené MAC adresy stále komunikují
restrict - pošle informativní SNMP trap
shutdown - port se zablokuje, přepne do stavu Error-disabled (připomínám, že pro opětovné zapnutí je třeba jej nejprve vypnout)
SWITCH(config-if)#switchport port-security violation shutdown
Pozn.: K porušení pravidel dojde také v případě, kdy je MAC adresa zadaná pro určitý port a tato adresa se objeví na jiném portu tohoto switche.

Pokud se port přepne do Error-disabled stavu, tak je třeba zásah administrátora, aby jej opět zapnul. Je však možno nastavit i automatické znovuzapnutí portu po určité době:

SWITCH(config)# errdisable recovery cause psecure-violation
SWITCH(config)# errdisable recovery interval 60 // čas v sekundách, 60 - 86400
Pokud chceme, aby se MAC adresy pro port po určité době automaticky smazaly, můžeme použít klíčové slovo aging v řadě variant. Například pokud chceme, aby dynamické adresy měly platnost 10 minut:

SWITCH(config-if)#switchport port-security aging time 10
Ve výchozím stavu po zapnutí Port security, je povolena jedna MAC adresa, která se používá dynamicky, tedy první zařízení, které začne komunikovat. Pokud se pokusí komunikovat další zařízení, dojde k zablokování portu.

Hlavní příkazy pro zobrazení informací o Port security jsou

SWITCH#show port-security // info pro všechny interface
SWITCH#show port-security address // tabulka MAC adres a související info
SWITCH#show port-security interface f0/1 // detailní info pro určitý interface
Protected port
Mezi porty, které jsou nastaveny jako Protected, se neposílá žádná komunikace na Layer 2 (broadcast, multicast, unicast), pouze komunikace na Layer 3 (tedy s IP adresou a pomocí routování).

SWITCH(config-if)#switchport protected
Více informací o Protected Port se nachází v článku Cisco IOS 19 - Private VLAN a Protected Port.

Spanning Tree Protocol
Protokol STP - Spanning Tree Protocol slouží k zabránění vzniku smyček v síti, například u redundantní topologie nebo při chybném propojení switchů. Jedná se o standardizovaný protokol IEEE 802.1d, ke kterému existuje řada vylepšených verzí. Funguje na principu nalezení nejkratší cesty v ohodnoceném grafu a nepotřebné porty zablokuje. Základní verze STP běží na switchi defaultně a není potřeba žádná konfigurace.

Pokud je k danému portu switche připojeno zařízení jako server či pracovní stanice a tudíž na tomto portu nemůže vzniknout smyčka, tak můžeme tento port nastavit do módu portfast, který zabrání úvodnímu blokování portu a port se výrazně rychleji zapne.

SWITCH(config-if)#spanning-tree portfast
Více informací o STP se nachází v článku Cisco IOS 9 - Spanning Tree Protocol.

Nastavení IP adresy a brány
Některým interfacům můžeme nastavit IP adresu, hlavně se jedná o VLANy (SVI). Tato adresa slouží primárně ke komunikaci se switchem, ale také pro další služby, jako je routování nebo DHCP server. Zjednodušeně můžeme říct, že nastavujeme adresu switchi. Pokud nepoužíváme VLANy, tak ji musíme nastavit na VLANu 1. V opačném případě je vhodné mít speciální VLANu pro správu a zde nastavit IP adresu.

Adresu můžeme nastavit napevno nebo ji nechat přiřazovat DHCP serverem. Pokud nastavujeme adresu napevno, musíme ji zadat spolu s maskou sítě, v které je tato adresa platná (to je z důvodu dalších služeb).

SWITCH(config)#interface vlan 1
SWITCH(config-if)#ip address 192.168.190.2 255.255.255.0
V některých případech potřebujeme nastavit adresu brány (gateway address). Pokud budeme se switchem komunikovat pouze z lokálního subnetu, tak to není třeba. V opačném případě musíme adresu nastavit, aby switch věděl kam posílat odpovědi. Brána se nastavuje pro celý switch.

SWITCH(config)#ip default-gateway 192.168.190.1
UniDirectional Link Detection - UDLD
Jedná se o L2 protokol, který umožňuje fyzickou konfiguraci/propojení primárně optického kabelu (fiber-optic), ale i kroucené dvojlinky (twisted-pair). Monitoruje, zda nevzniklo pouze jednosměrné (unidirectional) spojení (Tx a Rx). Tedy u optiky, zda není přerušen jeden z dvojice kabelů a také, že jsou páry správně zapojeny na obou stranách. U metalického kabelu kontroluje, že není přerušeno jedno vlákno. Pokud detekuje jednosměrné spojení, tak se port přepne do error-disabled stavu. Stejnou konfiguraci je třeba provést na obou stranách.

Pro všechny optické porty můžeme zapnout globálně.

SWITCH(config)#udld enable
Nebo můžeme zapnout pro vybrané interfacy, to funguje i pro metaliku

SWITCH (config-if)#udld enable
Zobrazení informací o UDLD a reset vypnutých interfaců provedeme následovně.

SWITCH #show udld
SWITCH #udld reset // resetuje interfacy, které byly vypnuty pomocí UDLD
Na závěr - ukládání konfigurace
Důležité upozornění. Na závěr konfigurace je třeba provedené změny uložit do startup konfigurace, abychom o ně při restartu nepřišli.

SWITCH#copy running-config startup-config // uložit
Destination filename [startup-config]? // dotaz na jméno, stiskněte ENTER
Building configuration...
[OK]
Nebo můžeme použít kratší příkaz.

SWITCH#write
Building configuration...
[OK]
Příklady nastavení
Nastavení portu pro uživatele
SWITCH>enable // přepnutí do privilegovaného módu
SWITCH#configure terminal // přepnutí do konfigurace
SWITCH(config)#interface f0/1 // konfigurace daného portu switche
SWITCH(config-if)#shutdown // doporučeno nejprve vypnout port, měl již být vypnutý
SWITCH(config-if)#switchport mode access // port do přístupového módu
SWITCH(config-if)#switchport access vlan 100 // zařadit do patřičné VLANy
SWITCH(config-if)#description 3.14 // popis portu
SWITCH(config-if)#spanning-tree portfast // do zásuvky je zapojen počítač, rychlý náběh
SWITCH(config-if)#no shutdown // zapnutí portu
SWITCH(config-if)#exit // o úroveň zpět
SWITCH(config)#exit // o úroveň zpět
SWITCH#copy running-config startup-config // uložit
Destination filename [startup-config]? // dotaz na jméno, stiskněte ENTER
Building configuration...
[OK]
Nastavení portu pro propojení mezi switchi - trunk
SWITCH>enable // přepnutí do privilegovaného módu
SWITCH#configure terminal // přepnutí do konfigurace
SWITCH(config)#interface g1/0/25 // konfigurace daného portu switche
SWITCH(config-if)#shutdown // doporučeno nejprve vypnout port, měl již být vypnutý
SWITCH(config-if)#switchport trunk encapsulation dot1q // nastavení metody doplňování informací o VLAN, norma 802.1q, nastavuje se pouze na vyšších modelech switchů
SWITCH(config-if)#switchport trunk allowed vlan 2-200 // které VLANy se přenáší
SWITCH(config-if)#switchport trunk native vlan 1 // rámce bez VLANy se přenáší přes trunk v Native VLAN
SWITCH(config-if)#switchport mode trunk // port do TRUNK módu
SWITCH(config-if)#switchport nonegotiate // nevyjednává se trunk protokolem DTP
SWITCH(config-if)#description 3.14 // popis portu
SWITCH(config-if)#no shutdown // zapnutí portu
SWITCH(config-if)#end // skočí rovnou do privilegovaného módu
SWITCH#write // uložení konfigurace
Stejnou konfiguraci je třeba provést na druhé straně, tedy na druhém switchi a portu, kterým jsou propojeny.

Nastavení Port Security
SWITCH>enable // přepnutí do privilegovaného módu
SWITCH#configure terminal // přepnutí do konfigurace
SWITCH(config)#interface f0/5 // konfigurace daného portu switche
SWITCH(config-if)#switchport port-security // zapneme port security
SWITCH(config-if)#switchport port-security maximum 1 // počet MAC adres, 1 je default
SWITCH(config-if)#switchport port-security violation shutdown // při porušení zablokovat port, default
SWITCH(config-if)#switchport port-security mac-address sticky // napevno uložit dynamickou MAC adresu
SWITCH(config-if)#^Z // CTRL+Z skočí rovnou do privilegovaného módu
SWITCH#write // uložení konfigurace