Configurazione avanzata della rete Relatore: Gianni Caldonazzi L'obiettivo: Introdurre argomenti di rete avanzati semplicemente. Per far questo analizzaremo nei singoli dettagli un esempio complesso o quasi.....
Architettura Poniamo di avere 4 o 5 sedi distanti da collegare tra di loro in LAN Non useremo collegamenti WAN, assumiamo di avere la fortuna di poter collegare i palazzi in fibra ottica Tutti i collegamenti devono avere una sorta di ridondanza come sicurezza A B C D E
Struttura del palazzo Ogni palazzo avrà il suo switch di palazzo, i suoi switch di piano e le stazioni di lavoro con telfono IP. Uno dei palazzi conterrà la sala macchine IT 10.0.x.x = VLans dati 10.1.x.x = VLans telefoniche x = Vlans collegamenti tra palazzi
Cosa considerare sul piano Su di un piano abbiamo: Stazioni di lavoro Telefoni Adottiamo Vlan separate o miste? Prioritiziamo il traffico voce con DIFFServ Basta uno switch a collegare tutto? Si = collegamento in aggregazione 802.3ad No = usiamo lo STP, RSTP oppure MSTP
Cos'è una VLan? Tecnica che permette di segmentare il dominio di brodcast in sottoreti non comunicanti tra di loro. Letteralmente suddividere in reti virtuali Le porte possono essere: Tagged = Etichettate, impostano l'etichetta della VLan a cui appartiene la porta se il pacchetto viene spedito oppure gestiscono l'etichetta del pacchetto che ricevono UnTagged = Non etichettate, non gestiscono le etichette delle Vlan. Tutto viene passato alla Vlan a cui appartiene la porta
Cos'è il DIFFServ? E' una rilettura del campo TOS (type of service) del pacchetto IP Permette di differenziare meglio il traffico Lo switch usa le code hw per instradare il traffico sulle porte: Code a più alta priorità vengono svuotate prima Tipicamente le code possono essere: Da 0 (bassa) a 7 (alta) Da 0 a 3 Da 0 a 1
Perchè il DiffServ? Non dipende dalle Vlan Posso usarlo anche se alcune connessioni tra switch sono Untagged, tipicamente sulle dorsali Posso facilmente modificare la precedenza od impostarla associando un'altra coda a quello specifico Code-Point del DiffServ
Cos'è l'aggregazione di porte 802.3ad? Tecnica che permette di raggruppare due o più porte di uno switch per: Sicurezza Velocità = somma delle singole porte Può essere usata in sala macchine per poter collegare in Bonding macchine Linux; in questo caso potrò avere: Load Balancing switch assisted, vera 802.3ad Load Balancing non assistita Failover Vedremo dopo in dettaglio la configurazione quando parleremo della sala macchine
Cos'è STP, RSTP o MSTP? Sono protocolli per eliminare eventuali loop intenzionali o meno a livello 2 STP = Spanning Tree Protocol (semplificando) manda dei pacchetti su tutte le porte dello switch verificando che non tornino indietro se si vede tornare indietro il pacchetto provvederà a disabilitare la porta che lo Tx o Rx RSTP = Rapid STP Migliora l'algoritmo di gestione velocizzandolo MSTP = Multi STP Gestisce la chiusura differenziata fra VLans
Configuriamo lo switch di piano Consideriamo un switch L2 Dopo un primo cappello di configurazione che serve ad indicare: Nome host Server di sincronia ora Altre info generali Andremo a definire: Le Vlan Lo Spanning Tree oppure l'uso del Trunk
Esempio configurazione – trunk (1/3) # Informazioni di comodo e di tempo hostname "SwitchPalazzoAPiano2" snmp-server contact snmp-server community "public" Operator snmp-server community "manager" Unrestricted time timezone 60 time daylight-time-rule Middle-Europe-and-Portugal timesync sntp # Indico il default GW e il server di tempo sntp server sntp unicast ip default-gateway interface 49 no lacp exit
Esempio configurazione – trunk (2/3) interface 50 no lacp exit # Creo il trunk trunk Trk1 LACP # Creo le VLan vlan 1 name "DEFAULT_VLAN" no ip address no untagged 1-48,Trk1 exit vlan 501 name "VLan1" untagged 1-24 ip address tagged Trk1 exit
Esempio configurazione – trunk (3/3) vlan 401 name "VLanVoIP1" untagged ip address tagged Trk1 voice exit # Abilito il Diffserv e lo RSTP qos type-of-service diff-services spanning-tree spanning-tree Trk1 priority 4 spanning-tree force-version RSTP-operation password manager password operator
Esempio di configurazione – RSTP (1/3) # Solito cappello informativo e per l'ora hostname "SwitchPalazzoAPiano1" snmp-server contact snmp-server community "public" Operator snmp-server community "manager" Unrestricted time timezone 60 time daylight-time-rule Middle-Europe-and-Portugal timesync sntp sntp server sntp unicast # Imposto il default gateway ip default-gateway
Esempio di configurazione – RSTP (2/3) # Genero le VLan vlan 1 name "DEFAULT_VLAN" untagged no ip address no untagged 1-48 exit vlan 401 name "VLanVoIP1" ip address tagged 1-50 voice exit
Esempio di configurazione – RSTP (3/3) vlan 501 name "VLan1" untagged 1-48 ip address tagged exit # Abilito il Diffserv e il RSTP qos type-of-service diff-services spanning-tree spanning-tree force-version RSTP-operation password manager password operator
Lo switch di palazzo Conviene avere collegate solamente le porte: Dei piani E quelle per raggiungere gli altri palazzi In questa maniera potremo monitorare lo switch grazie al protocollo SNMP e alle Trap Sarà uno switch Layer 3: Ci permetterà di usare il percorso più corto per raggiungere l'altro palazzo Se usassimo L2 e STP per controllare la ridondanza non potremmo avere questa oppurtunità Useremo RIP per le tabelle d'instradamento
Cosa sono l'SNMP e le Trap Simple Network Managemend Protocol: Permette di interrogare gli apparati per averne lo stato Permette di impostare alcuni valori e quindi modificare il comportamento dell'apparato Trap: E' un messaggio di notifica di un evento „anomalo” Può o meno avere importanza per un amministratore Normalmente vi è un programma che riceve le Trap e agisce di conseguenza avvisando o meno chi di dovere
Cos'è il RIP Routing Internet Protocol: E' forse il più semplice protocollo per la compilazione automatica delle tabelle di instradamento La versione 2, rispetto alla 1, permette di trasmettere anche la maschera di sottorete, permettendo così di avere tabelle aggiornate anche con sottoreti personalizzate rispetto a quelle standard (vedermo un esempio nei collegamenti tra sedi) Esistono altri protocolli: IGRP, EIGRP (entrambi di Cisco), OSPF, BGP; però sono più complicati o proprietari rispetto a RIP e non vale la pena
Configuriamo lo switch di palazzo Come anticipato gli switch di palazzo sono dei dispositivi Layer 3, ovvero gestiscono l'instradamento dei pacchetti su reti differenti. Lo switch genera le VLans di palazzo e le due per il collegamento ai palazzi addiacenti. Escludo dallo Spanning Tree le porte di backbone (49 e 50 che collegano ai palazzi addiacenti), questo perchè ciò che non è necessario è meglio che non appesantisca la rete
Esempio di configurazione (1/3) # Disabilitiamo lo STP per le porte di backbone bridge port stpState 1:49-50 disable # Creazione delle VLan bridge vlan create 2 VLan2Link bridge vlan create 3 VLan3Link bridge vlan create 402 VLanVoIP2 bridge vlan create 502 VLan2 # Assegnamo le porte alle singole VLan bridge vlan modify name 1 "Default VLAN" bridge vlan modify addPort 1 1:48 untagged bridge vlan modify addPort 2 1:49 untagged bridge vlan modify addPort 3 1:50 untagged bridge vlan modify addPort 402 1:1-4 tagged bridge vlan modify addPort 502 1:1-4 tagged
Esempio di configurazione (2/3) # Assegno gli IP di gestione alle VLan protocol ip interface add primary protocol ip interface add primary protocol ip interface add primary protocol ip interface add primary # Istruisco il RIP su quali IP propagare protocol ip rip mode enabled protocol ip rip sendMode doNotSend protocol ip rip poisonReverse enabled protocol ip rip sendMode RIPv2 protocol ip rip poisonReverse enabled protocol ip rip sendMode RIPv2 protocol ip rip poisonReverse enabled protocol ip rip sendMode RIPv2 protocol ip rip poisonReverse enabled protocol ip rip sendMode RIPv2 protocol ip rip poisonReverse enabled
Esempio di configurazione (3/3) # Imposto l'instradamento di default protocol ip route default # Indico qual'è il DHCP da usare per ogni VLan protocol ip udpHelper add protocol ip udpHelper add # Per ora non usiamo traffico multicast bridge multicastFilter igmp snoopMode disable # Alcune informazioni di comodo system management name "SwitchPalazzoB" system management location "Palazzo B" system management contact
La sala macchine IT Come promesso un rapido accenno alla sala macchine. Posso riassumere così: Trattiamo la sala macchine a Layer 2 Usiamo MSTP o RSTP Possiamo usare il trunk (802.3ad) per la connessione di alcuni server Converrebbe raddoppiare lo switch centrale e usare VRRP (Virtual Router Redundant Protocol) Non affrontiamo quest'ultimo punto qui però
Cos'è VRRP E' un protocollo per assumere l'IP gestito da un'altro switch, se questo si guasta, per poter dare continuità di servizio al default gateway impostato sui server Praticamente i due switch della sala macchine hanno una configurazione uguale come Vlan e contengono anche un riferimento incrociato all'altro switch Uno è master per un IP, mentre l'altro è slave Al presentarsi di un guasto lo slave diventa momentaneamente master dell'IP non più disponibile
Impostare su Debian l'aggregazione di due eth Il sito di riferimento è: Verifichiamo il buon funzionamento delle schede: # mii-tool eth0: negotiated 100baseTx-FD flow-control, link ok eth1: negotiated 100baseTx-FD flow-control, link ok Per la verità il tool mii è un po' datato, sarebbe meglio usare ethtool, che però va installato
Verifiche sul kernel Va verificato che il kernel supporti il bonding, la sequenza di comandi elencati qui verificano ciò: # modprobe –list | grep bonding /lib/modules/ /kernel/drivers/net/bonding/bonding.ko # cat /boot/config-$(uname -r) | grep -i bonding CONFIG_BONDING=m Visto che lo strumento mii è quello di default, sarà usato da noi per il monitoraggio delle schede. Verifichiamo che nel kernel sia configurato correttamente: # cat /boot/config-$(uname -r) | grep -i mii CONFIG_MII = y # modprobe –list | grep -i mii /lib/mosules/ /kernel/drivers/net/mii.ko
Installazione e configurazione Aggiungiamo il pacchetto ifenslave che servirà per la gestione del bond: # apt-get update && apt-get install ifenslave Creiamo l'alias per il bonding modificando il file /etc/modprobe.d/aliases: #Bonding ethernet tratto da howtoforge.net/nic_bonding # Le mie eth sono delle bnx2 alias bond0 bnx2 alias bond1 bnx2 options bonding mode=1 miimon=100 La cosa migliore per capire le varie opzioni è quella di ricercare il file bonding.txt in google, pizzicando l'ultima versione disponibile (al momento 12 Nov 2007)
Riassunto del parametro mode Mode = 0, Bilanciamento Round Robin; spedisce alternativamente sulle varie eth. Si ha load-balancing e fault tollerance Mode = 1, Active-backup; una sola eth è attiva, le atre si attiveranno in sequenza solo al fallimento della precedente Si ha solo fault tollerance Mode = 2, bilanciamento xor; la scelta viene fatta con politica hash, tipo MAC-src XOR MAC-dst Si ha load-balancing e fault tollerance Mode = 3, broadcast; invia su tutte le schede Si ha solo fault tollerance Mode = 4, 802.3ad Dynamic link aggregation; lo switch deve supportarlo ma è il vero trunk Si ha load-balancing e fault tollerance Mode = 5 e 6, sono molto particolari ed è meglio leggerli direttamente da bonding.txt; necessitano di prerequisiti
Completamento configurazione Creiamo il file /etc/modulis/actions e aggiungiamo: probeall bond0 eth0 eth1 bonding NOTA: Forse sull'ultima versione di Debian non serve nemmeno, ma essendo una riga... Ora aggiungiamo i moduli: # update-modules Modificamo il file /etc/network/interfaces: # Bonding auto bond0 iface bond0 inet static address netmask network broadcast gateway up ifenslave bond0 eth0 eth1 down ifenslave -d bond0 eth0 eth1
Verifiche e riavvio Proviamo a caricare il modulo: # modprobe bonding Riavviamo la rete oppure un reboot e tutto dovrebbe andare: # /etc/init.d/networking restart
Riferimenti
Licenza della presentazione Autore: Gianni Caldonazzi Licenza: Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia License Info: