.. meta:: :language: it :description language=it: Networking Fundamentals: vlan :description language=en: Networking Fundamentals: vlan :keywords: Networking Fundamentals, vlan :author: Luciano De Falco Alfano P2/6 VLANs ============ .. contents:: :local: 6.0 Introduzione -------------------- 6.0.1 benvenuto ^^^^^^^^^^^^^^^^^^^ **6.0.1.1 capitolo 6: VLANs**. **6.0.1.2. attività - stazione di vacanza**. 6.1 segmentazione in VLAN --------------------------- .. _6.1.1-panoramica-riguardo-le-VLANs-label: 6.1.1 panoramica riguardo le VLANs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.1.1.1 definizioni di VLAN**. Sono un modo per raggruppare gli end device presenti nella LAN. Nell'ambito di una LAN formata da switch, ogni VLAN è una rete dati logicamente separata. Una VLAN crea un dominio logico di broadcast, che si può estendere attraverso più segmenti fisici della LAN. Una porta di uno switch può appartenere a una singola LAN. Salvo le porte che interconnettono gli switch (dette trunk) e quelle su cui insistono i telefoni IP. Ogni VLAN è un dominio di broadcast. Di conseguenza per routare il traffico da una VLAN all'altra è necessario ricorrere ai router di livello 3, o a switch dotati di funzionalità di routing a livello 3. **6.1.1.2 benefici delle VLAN**. Sono i seguenti: * maggiore sicurezza; * riduzione dei costi; * migliori performance; * domini di brodcast di dimensioni inferiori; * maggiore efficienza dello staff IT; * maggiore efficienza di gestione; * migliore supporto all'organizzazione dell'azienda. Ogni VLAN corrisponde ad una sottorete IP. **6.1.1.3 tipi di VLAN**. Sono i seguenti: * data (user); * default (initial, all ports); * native (trunk: tagged and untagged traffic); * management; Visualizza la situazione generale delle VLANs:: S# show vlan brief **6.1.1.4 voice VLAN**. Le VLAN voce hanno appositi requisiti per supportare il voice over IP: * banda passante garantita; * priorità di trasmissione rispetto i dati utente; * capacità di aggirare le aree congestionate; * ritardi inferiori ai 150 msec. **6.1.1.5 packet tracer - chi ascolta i broadcast?** 6.1.2 VLANs in un ambiente multi-switch ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.1.2.1 VLAN trunks** sono collegamenti tra switch che supportano il passaggio di dati di più VLAN. Il protocollo è il IEEE 802.1Q per i trunk in Fast Ethernet, Gigabit Eth, 10-Gigabit Eth. Esistono NIC in grado di seguire il protocollo IEEE 802.1Q, ad esempio per server che devono essere in grado di interfacciare più VLAN. **6.1.2.2 controllare i domini di broadcast con le VLAN** **6.1.2.3 tagging Ethernet frames per l'identificazione di VLAN**. La frame Ethernet modificata secondo IEEE 802.1Q, ha un nuovo campo, detto **tag**. lungo 4 byte, tra il campo source MAC address e il campo Type/Length: ========= ========= ====== ============= ======= ===== DST MAC SRC MAC TAG Type/Length Data FCS ========= ========= ====== ============= ======= ===== *tag* è formato da: * **type**; lungo 2 byte; *tag protocol ID* (TPID) ; per Ethernet è 0x8100; * **Pri**; lungo 3 bits; User priority; supporta l'implementazione del livello di servizio; * **CFI**, 1 bit; Canonical Format Identifier; abilitazione al trasporto di frame Token Ring tramite Ethernet; * **VID**, 12 bits; VLAN ID; valore max 4096. Il *tag* è inserito dallo switch. Questo quando riceve una frame Ethernet su una porta assegnata a una VLAN, inserisce nell'header il *tag*, quindi ricalcola il FCS e lo inserisce nella coda della nuova frame. **6.1.2.4 VLAN native e tagging 802.1Q**. Una frame nativa è il formato, senza VLAN tag, inviato dal *end device*. Anche il traffico di controllo tra switch è privo di VLAN tag. La *native VLAN* trasporta frame in formato nativo, senza VLAN tag. Di conseguenza Cisco elimina eventuali frame inviate tramite native VLAN che presentino il VLAN tag. Questo può creare incompatibilità con apparati di altri produttori. Nel caso di LAN Cisco, gli apparati non devono taggare il traffico che inviano allo switch. Quando uno switch Cisco riceve frame non taggate su una porta trunk, le inoltra alla VLAN nativa. Se non vi sono device associati alla VLAN nativa e non vi sono altre porte trunk, queste frame vengono eliminate. La VLAN nativa di default è la VLAN 1. Quando si configura una porta trunk, si assegna un *default port VLAN ID* (PVID) come identificativo della VLAN nativa. Se questa operazione non viene effettuata, la VLAN nativa è quella di default: la VLAN 1. **6.1.2.5 voice VLAN tagging**. Una porta di switch può essere usata per connettere un Cisco IP phone, che a sua volta può collegare un PC. In questo caso la porta dello switch è analoga ad un trunk che accetta due VLAN: quella del telefono IP e quella del PC. Il flusso voce può essere gestito dallo switch in tre modi: * voice VLAN (tagged) con Class of Service (CoS) di layer 2; * data VLAN (tagged) con CoS di layer 2; * data VLAN (untagged) senza CoS di layer 2. **6.1.2.6 attività - predire il comportamento dello switch** **6.1.2.7 packet tracer * investigare l'implementazione di una VLAN** 6.2 implementazione di VLAN ----------------------------- 6.2.1 assegnazione della VLAN ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.2.1.1 range delle VLAN negli switch Catalyst** variano a seconda del modello di switch. Nei 2960 e 3560 si possono configurare oltre 4000 VLAN. Ci sono: * **normal range VLANs** numerate da 1 a 1005. I numeri da 1003 a 1005 sono pre-assegnati (fibra ottica e token ring); la loro configurazione viene salvata nel file permanente in flash RAM di nome `vlan.dat`; gestite dal VLAN trunking protocol (VTP); * **extendend range VLANs** da 1006 a 4094; configurazione nel file `running-config`; sono più limitate; VTP non le gestisce. **6.2.1.2 creare una VLAN** con i comandi:: S# configure terminal S(config)# vlan vlan-id S(config-vlan)# name vlan-name S(config-vlan)# end dove *vlan-id* e *vlan-name* sono parametri assegnati dall'utente. Si può inserire un elenco di VLAN separando gli identificativi con virgole, e/o un range, indicando primo e ultimo id separati da trattino. **6.2.1.3 assegnare le porte alle VLAN** con questi comandi:: S# configure terminal S(config)# interface intf-id S(config-if)# switchport mode access S(config-if)# switchport access vlan vlan-id S(config-if)# end Un porta è assegnabile ad una sola VLAN, a meno che non sia un trunk o sia connessa a un telefono IP, che a sua volta collega un end device. Per assegnare una VLAN dati + VLAN voce, ad esempio possiamo fare come segue:: S(config)# vlan 20 S(config-vlan)# name STUDENT S(config-vlan)# vlan 150 S(config-vlan)# name VOICE S(config-vlan)# exit S(config)# S(config)# interface fa0/18 S(config-if)# switchport mode access S(config-if)# switchport access vlan 20 S(config-if)# S(config-if)# mls qos trust cos S(config-if)# switchport voice vlan 150 S(config-if)# end Dove *mls quos trust cos* abilita la classificazione QoS basata sulla classe di servizio (CoS) assegnata dal telefono IP. **6.2.1.4 cambiare assegazione della porta alla VLAN**. Per resettare l'assegnazione riportandola a VLAN1 (il default):: S(config)# interface intf-id S(config-if)# no switchport access vlan Per cambiare assegnazione (ad es. passando la porta da VLAN 20 a 30):: S(config)# interface intf-id S(config-if)# switchport mode access S(config-if)# switchport access vlan 30 **6.2.1.5 cancellare VLAN** dopo avere **disasseganto** le relative porte:: S(config)# no vlan vlan-id Si può cancellare tutta la configurazione delle VLAN eliminando il relativo file `vlan.dat`:: delete flash:vlan.dat Attenzione alla eventuale necessità di cancellare anche [#]_ lo `startup-config`:: erase startup-config **6.2.1.6 verificare le VLAN** sono utili i comandi di visualizzazione della vlan:: S# show vlan [brief | id vlan-id | name vlan-name | summary] oppure il dettaglio delle caratteristiche di una porta [#]_:: S# show interfaces [intf-id | vlan vlan-id] | switchport] 6.2.2 trunk di VLAN ^^^^^^^^^^^^^^^^^^^^^^ **6.2.2.1 configurare trunk link IEEEE 802.1Q**. Un trunk veicola il traffico di più VLAN, usualmente collegando due switch. Si configurano in modo analogo le due porte degli switch coinvolti, come segue:: S(config)# interface intf-id S(config-if)# switchport mode trunk S(config-if)# switchport trunk native vlan vlan-id S(config-if)# switchport trunk allowed vlan vlan-list S(config-if)# end Dove *intf-id*, *vlan-id* e *vlan-list* sono argomenti forniti dall'utente. Attenzione al fatto che le *native* VLAN devono essere identificate dallo stesso identificativo in entrambi gli switch. Il comando *switchport mode trunk* attiva il *Dynamic Tranking Protocl* (DTP). L'esempio di configurazione si riferisce ad uno switch 2960. Questo utilizza automaticamente l'incapsulamento IEEE 802.1Q per i trunk. Altri switch possono richiedere di indicare esplicitamente l'incasulamento da utilizzare nel trunk. **6.2.2.2 resettare il trunk a default** si devono eliminare le configurazioni del trunk:: S(config)# interface intf-id S(config-if)# no switchport trunk allowed vlan S(config-if)# no switchport trunk native vlan S(config-if)# end Nota: non è necessario indicare gli identificativi delle VLAN permesse e nativa. Per controllare:: S# show interfaces intf-id switchport dove *intf-id* è l'dentificativo della porta, indicato dall'utente. Per togliere la porta dalla modalità *trunk* la si deve mettere in *access*:: S(config)# interface f0/1 S(config-if)# switchport mode access S(config-if)# end **6.2.2.3 verificare la configurazione del trunk** si usa il comando:: S# show interfaces intf-id switchport dove *intf-id* è l'identificativo della porta da controllare. **6.2.2.4 packet tracer - configuring trunks** **6.2.2.5 lab - configuring VLANs and trunking** 6.2.3 Troubleshoot VLAN e trunk ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.2.3.1 problemi di indirizza mento IP con le VLAN**. Ogni VLAN deve avere una subnet univoca. Se nella stessa VLAN vi sono due PC con subnet diverse non riusciranno a comunicare. L'errore più comune consiste nell'assegnzione di indirizzi IP errati. **6.2.3.2 VLAN mancanti** se gli indirizzi IP sono corretti, e perdura il mancato dialogo tra componenti della stessa VLAN, si deve seguire il seguente giagramma logico:: mancata connessione la porta è assegnata la VLAN esiste verificare la connessione tra device nella stessa --> alla VLAN corretta? -- si --> in vlan.dat? -- si --> della rete dati VLAN ^ | ^ | | no | no | | | | | V | V +- assegnare la porta | creare la VLAN alla VLAN corretta +--- in vlan.dat Per il primo step, si usa:: S# show vlan e:: S# show mac address-table Per il secondo step (cancellata la VLAN associata alla porta):: S# show vlan non visualizzerà la VLAN. E con:: S# show interfaces fa0/1 switchport si verifica se la VLAN in questione è associata alla porta ed è inattiva. **6.2.3.3. introduzione al troubleshooting di trunk**. Si parla di *VLAN leaking* quando una porta accetta frame di VLAN diverse dalla propria, ovverro tende a comportarsi come se fosse un trunk. Nel caso di trunk si segue la sequente logica per controllarlo:: troubleshoot le VLAN native della le modalità di di trunks ------> della porta locale -- si ----> trunk delle porte -- si --> trunk operativo ^ e la corrispondente ^ sono compatibili? | sono uguali? | | | | | | | no | no | | | | | V | V | modificare le native | configurare staticamente +--- VLAN in modo che +--- le porte su entrambi i corrispondano devicice del trunk Sia per il primo step che per il secondo step si usa:: S# show interfaces fa0/1 trunk Se le VLAN native non coincidono si hanno fenomeni di leak. Perciò il CDP segnala con messaggi di errore questi casi. **6.2.3.4 problemi comuni con i trunk** sono i seguenti: +------------------------+------------------------------------+ | problem | result | +========================+====================================+ |native VLAN mismatch | risk security & result unintended | +------------------------+------------------------------------+ |trunk mode mismatch | loss of connectivity | +------------------------+------------------------------------+ |VLAN permesse nei trunk | unexpected trafic or no traffic | +------------------------+------------------------------------+ In caso di problemi con i trunk effettuare i troubleshooting seguendo la tabella dalll'alto in basso. **6.2.3.5 incorrect port mode**. Usando:: S# shoew interfaces trunk si osserva l'elenco dei trunk nello switch. Se manca la porta voluta, con:: S# show interfaces fa0/1 switchport si possono osservare nel dettaglio le caratteristiche della porta indagata. I controlli predetti vanno effettuati in entrambi gli switch alle estremtà del trunk. **6.2.3.6 elenco VLAN non corretto**. Anche gli elenchi delle VLAN permesse devono collimare. Sono visualizzati dal comando:: S# show interfaces trunk **6.2.3.7 packet tracer - troubleshooting a VLAN implementation - scenario 1** **6.2.3.8 packet tracer - troubleshooting a VLAN implementation - scenario 2** **6.2.3.9 lab - troubleshooting VLAN configurations** 6.3 Inter-VLAN routing utilizzando Routers --------------------------------------------- 6.3.1 Operazioni di Inter-VLAN routing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.3.1.1 cosa è inter-VLAN routing**? Il traffico in una VLAN rimane separato dalle altre perchè ogni VLAN è un dominio di broadcast. Per far comunicare end device appartenenti a VLAN diverse è necessario effettuare una operazione di routing tra le due VLAN, utilizzando funzioni del layer 3. Questo processo è detto inter-VLAN routing. I classici switch layer 2, al massimo possono effettuare routing statico a layer 3. Ma ciò è insufficiente per supportare un elevato numeri di sistemi e VLAN. Per questo motivo è necessario utilizzare switch multilayer o dei router veri e propri. Vi sono tre possibilità: * **legacy** inter-VLAN routing; * **router-on-a-stick**; * **layer 3 switching** usando interfacce SVI. Qui si considerano solo le prime due possibilità. **6.3.1.2 legacy Inter-VLAN routing**. Si utilizza un router con una interfaccia per ogni VLAN che si deve mettere in comunicazione. Questo metodo ha costi elevati, sia d'impianto che di espansione. Per questo motivo è poco utilizzato. **6.3.1.3 router-on-a-stick Inter-VLAN routing**. Router moderni permettono di configurare una interfaccia verso la rete switchata come un trunk link. In tal modo serve una sola interfaccia fisica tra router e LAN per effettuare il routing di più VLAN. A sua volta la porta dello switch verso il router deve essere in trunk mode. Il router separa il traffico delle diverse vlan utilizzando delle sottointerfacce. Queste sono interfacce virtuali software, associate ad una sola interfaccia fisica. **6.3.1.4 attività - identificare i tipi di Inter-VLAN routing** 6.3.2 configurare Legacy Inter-VLAN routing ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.3.2.1 configurare Inter-VLAN routing: preparazione**. Il router deve avere una interfaccia fisica per ogni VLAN da gestire. Ogni interfaccia ha un indirizzo IPv4 della stessa subnet della VLAN. **6.3.2.2 configurare Inter-VLAN routing: configurazione dello switch**. È la prima attività da effettuare. le porte cui sarà attestato il router devono essere assegnate alle VLAN previste. Ricordarsi di copiare la configurazione corrente in quella di startup. **6.3.2.3 configurare Inter-VLAN routing: configurazione del router**. Dopo avere configurato lo switch, si prosegue con il router assegnando gli indirizzi IPv4 alle interfaccie fisiche. Ricordarsi di attivare l'interfaccia. **6.3.2.4 Lab - configurare Inter-VLAN routing**. 6.3.3 configurare Inter-VLAN routing con Router-on-a-stick ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **6.3.3.1 configurare router-on-a-stick: preparazione**. Qui utilizziamo il VLAN trunking, e, nel router, il concetto di sottointerfaccia: ovvero più interfaccie software che insistono su una singola interfaccia fisica. L'interfaccia fisica è collegata a una porta trunk dello switch. E ogni sottointerfaccia ha un indirizzo IPv4 appartenente alla sottorete della VLAN cui deve essere connessa. **6.3.3.2 configurare router-on-a-stick: configurazione dello switch**. Si configura la porta verso il router in trunk mode:: S(config)# interface fa0/1 S(config-if)# switchport mode trunk S(config-if)# end **6.3.3.3 configurare router-on-a-stick: configurazione delle sottointerfacce** del router. Ad esempio come segue:: R(config)# interface g0/0.10 R(config-subif)# encapsulantion dot1q 10 R(config-subif)# ip address 172.17.10.1 255.255.255.0 R(config-subif)# interface g0/0.30 R(config-subif)# encapsulantion dot1q 30 R(config-subif)# ip address 172.17.30.1 255.255.255.0 R(config-subif)# interface g0/0 R(config-if)# no shutdown Il comando *interface g0/0.10* passa alla configurazione della sottointerfaccia *10* della interfaccia fisica *g0/0* [#]_. Il comando *encapsulantion dot1q 10* configura la sottointerfaccia per gestire la VLAN *10* tramite trunk con protocollo IEEE 802.1Q. Questo comando **deve precedere** l'assegnazione dell'indirizzo IPv4. È possibile utilizzare il comando *encapsulantion dot1q 99 native* (si noti il *native* finale) per configurare la gestione di una VLAN nativa. L'abilitazione dell'interfaccia fisica vale per tutte le sue sottointerfacce configurate. È possibile abilitare separatamente le singole sottointerfacce [#]_. **6.3.3.4 configurare router-on-a-stick: verificare le sottointerfacce**. Nel router il comando:: R# show vlan permette di valutare la configurazione delle sottointerfacce. È bene controllare anche la tabella di routing:: R# show ip route **6.3.3.5 configurare router-on-a-stick: verificare il routing**. Effettuate le configurazioni predette, verificare che gli end device di VLAN diverse riescano a pingarsi a vicenda. Eventualmente si può utilizzare il comando tracert (traceroute). **6.3.3.6 packet tracer - configurare router-on-a-stick per Inter-VLAN routing** **6.3.3.7 Lab - configurare Inter-VLAN routing basato su trunk 802.1Q** **6.3.3.8 packet tracer - Inter-VLAN routing challenge** 6.4 Sommario ---------------- 6.1.4 conclusioni ^^^^^^^^^^^^^^^^^^ **6.4.1.1 class activity - inside track** **6.4.1.2 packet tracer - skills integration challenge** **6.4.1.3 capitolo 6: VLAN** -------------------- .. [#] si noti la differenza dei comandi: **delete** per la `flash` RAM, ed **erase** per la `nvram`. .. [#] si noti l'uso del plurale: *ineterfaces* .. [#] di solito si usa per la sottointerfaccia lo stesso identificativo della VLAN che deve gestire. È una convenzione per semplificare la memorizzazione, non è obbligatorio. .. [#] Non in packet tracer.