Posts Tagged ‘cisco’

RIP v2 e default routes su router cisco

In questo articolo terminiamo la trattazione sul RIP iniziata nei precedenti articoli, RIP e configurazione sui router cisco e RIP: load balancing e integrazione delle rotte statiche, fornendo una comparazione tra il RIPv1 e il RIPv2.

Entrambe le versioni di RIP sono dei protocolli distance vector, sono facili da configurare e usano l’hop count come metrica (dopo 15 hop la rete viene posta come irraggiungibile), usano l’holddown timers e lo split horizon per evitare i routing loops. I router hanno conoscenza delle sottoreti direttamente connesse e gli aggiornamenti includono informazioni sulla topologia (almeno la metrica); tali aggiornamenti avvengono in maniera periodica.

Il RIPv2 apporta dei vantaggi rispetto alla prima versione del protocollo. In particolare il RIPv2:

  • supporta il classless routing;
  • include nei routing updates le subnet mask;
  • ha un meccanismo di autenticazione negli updates (utilizza la criptatura MD5);
  • invia gli aggiornamenti in multicast (indirizzo 224.0.0.9) anziché in broadcast;
  • usa un routing tag con VLSM.

La configurazione del RIPv2 è identica a quella del RIPv1, l’unica differenza sta nell’inserire il comando version 2, come da esempio sotto:

Router(config)#router rip
Router(config-router)#version 2
Router(config-router)#network network-number

Per la verifica della configurazione si possono utilizzare i comandi show ip protocols, show ip route e show ip interface brief oltre, ovviamente, a show running-config. Il troubleshooting del RIPv2 può avvenire con il comando debug ip rip mentre per disattivare il debug basta inserire no debug all oppure undebug all.

Prima di concludere parliamo della rotta di default (default route). In generale, un router apprende il percorso verso una data destinazione in tre modi: attraverso una rotta statica (l’amministratore inserisce manualmente la rotta), con una rotta dinamica (grazie agli aggiornamenti inviati secondo un protocollo di routing) oppure per mezzo di una default route.
L’amministratore di rete può definire manualmente una rotta di default, cioè il percorso da seguire nel caso in cui non conosca alcuna rotta per raggiungere la destinazione. La rotta di default porta come vantaggio l’avere una ridotta tabella di routing e un percorso di default per destinazioni non conosciute.
La default route può essere impostata dal comando ip default-network in reti che utilizzano routing dinamico:

Router(config)#ip default-network rete

ad es.:

Router(config)#ip default-network 192.168.10.0

oppure attraverso una rotta statica, ad es.:

Router(config)#ip route 0.0.0.0 0.0.0.0 s0/0

dove gli zeri sia nel campo ip che nella subnek mask indicano ogni rete di destinazione con qualsiasi maschera. L’s0/0 è interfaccia su cui inviare i pacchetti (nell’esempio la seriale 0, dovete modificarla in base alle vostre esigenze).

Introduzione alle Access Control Lists su router Cisco e alle wildcard mask

Le Access Control Lists (nel seguito ACLs) sono una lista di condizioni utilizzate per “controllare” il traffico e si applicano alle porte del router che decide se far passare un determinato pacchetto oppure bloccarlo. I criteri decisionali si basano sull’indirizzo IP sorgente, quello di destinazione, sulle porte e sui protocolli. Le ACLs possono essere usate con qualsiasi protocollo routed di livello rete come IP e IPX. Elenchiamo alcuni aspetti positivi apportati dalle ACLs:

  • limitano il traffico della rete aumentando così le performance;
  • effettuano un controllo di flusso sul traffico;
  • offrono un livello base di sicurezza per l’accesso alla rete;
  • decidono quale tipo di traffico inoltrare e quale bloccare.

Se non vi è alcuna ACLs configurata sul router tutti i pacchetti vengono inoltrati senza distinzione.

Vediamo ora il funzionamento di un’ACLs. L’ordine in cui vengono immesse le ACLs è fondamentale in quanto l’IOS effettua un controllo sulle condizioni dall’alto verso il basso, ovvero dalla prima condizione immessa fino all’ultima. Se ad esempio la prima condizione permette l’inoltro di tutto il traffico tutte le altre verranno ignorate! Bisogna fare quindi molta attenzione.
Quando una condizione è verificata il pacchetto viene inoltrato o bloccato in base alla regola impostata nella ACLs; se nessuna delle condizioni nell’ACLs combacia,  implicitamente vi è un deny any in fondo alla lista, di default e, quindi, il pacchetto verrà scartato.

Le ACLs utilizzano le wildcard mask per impostare le condizioni. Una wildcard mask è formata da 32 bit suddivisa in 4 ottetti (esattamente come gli indirizzi IP) dove lo zero indica il bit nell’indirizzo da esaminare mentre l’1 il bit corrispondente nell’indirizzo da ignorare.  Vi sono 2 wildcard particolari che sono la 0.0.0.0 e la 255.255.255.255: la prima è sostituita dalla parola chiave host (verifica tutto l’IP) mentre la seconda dalla parola chiave any. Più avanti faremo un esempio pratico, prima però passiamo alla definizione delle ACLs sui ruoter Cisco.

Ci sono diversi tipi di ACLs: standard, extended e named. Quando una ACLs viene configurata gli viene assegnato un identificativo univoco che identifica anche il tipo di ACLs in base a un range di identificativi. I range disponibili sono:

  • standard IP: 1-99, 1300-1999
  • extended IP: 100-199, 2000-2699
  • AppleTalk: 600-699
  • IPX: 800-899
  • extended IPX: 900-999
  • IPX Service Advertising Protocol: 1000-1099

Per inserire le regole in una ACLs si utilizza il comando access-list seguito dai vari parametri mentre per associarla a un’interfaccia si utilizza il comando access-group. La regola generale è:

Router(config)#access-list access-list-number {permit deny} {test-conditions}

mentre sull’interfaccia:

Router(config-if)#{protocol} access-group access-list-number

Vediamo un esempio pratico mostrando il funzionamento della wildcard. Supponiamo di voler bloccare in ingresso all’interfaccia ethernet1 il traffico proveniente dalla rete 172.16.0.0/16 con una stardard ACLs con identificativo 2 mentre bisogna lasciar passare tutto il resto del traffico dalla rete 172.0.0.0/8, i comandi saranno:

Router(config)#access-list 2 deny 172.16.0.0 0.0.255.255
Router(config)#access-list 2 permit 172.0.0.0 0.255.255.255
Router(config)#interface e0
Router(config-if)# ip access-group 2 in

La prima condizione forma un valore di confronto (applicando la wildcard) che, se rispecchiato dall’indirizzo del pacchetto in ingresso, tale pacchetto sarà scartato.

IP addess 172.16.0.0 10101100 00010000 00000000 00000000
wildcard mask 00000000 00000000 xxxxxxxx xxxxxxxx
Valore di confronto 10101100 00010000 xxxxxxxx xxxxxxxx

Se in arrivo ho un pacchetto da un host con IP 172.16.4.64 avrò una situazione di questo tipo:

IP addess 172.16.4.64 10101100 00010000 00000100 01000000
wildcard mask 00000000 00000000 xxxxxxxx xxxxxxxx
Valore di confronto 10101100 00010000 xxxxxxxx xxxxxxxx

il valore di confronto combacia e quindi, per la regola impostata, il pacchetto verrà scartato. Viceversa, la seconda regola mi forma un valore di confronto del tipo:

IP addess 172.0.0.0 10101100 00000000 00000000 00000000
wildcard mask 00000000 xxxxxxxx xxxxxxxx xxxxxxxx
Valore di confronto 10101100 xxxxxxxx xxxxxxxx xxxxxxxx

Se ho un pacchetto in ingresso all’interfaccia da un host con IP 172.8.10.1:

IP addess 172.8.10.1 10101100 00001000 00001010 00000001
wildcard mask 00000000 xxxxxxxx xxxxxxxx xxxxxxxx
Valore di confronto 10101100 xxxxxxxx xxxxxxxx xxxxxxxx

tale pacchetto verrà inoltrato in quanto il valore di confronto coincide con la regola impostata nell’ACLs.

La verifica della configurazione delle ACLs si effettua attraverso i comandi show. Il comando show ip interface mostra le informazioni sulle ACLs impostate sulle interfacce. Il comando show access-list mostra, invece, il contenuto di tutte la ACLs programmate sul router.

Nel prossimo articolo vedremo la configurazione dei vari tipi di ACLs.

IGRP: caratteristiche, metrica e configurazione

L’Interior Gateway Routing Protocol (IGRP) è un protocollo distance vector proprietario cisco. Essendo un protocollo distance vector l’IGRP invia aggiornamenti periodici di routing per mantenere la consistenza delle informazioni al variare della rete (per l’inserimento di nuove destinazioni o per identificare reti irraggiungibili).

Gli update di routing dell’IGRP vengono inviati ogni 90 secondi ai router appartenenti allo stesso AS (ricordiamo che l’IGRP è un protocollo IGP). Le caratteristiche principali di tale protocollo sono:

  • adattamento automatico alle variazioni anche in reti con topologia complessa;
  • flessibilità nella gestione di reti con diverse caratteristiche di banda e latenza;
  • scalabilità necessaria per reti molto estese.

Di base l’IGRP sceglie il percorso su cui instradare un pacchetto in base a una metrica basata sulla banda disponibile e sul ritardo. Tuttavia, l’IGRP può essere configurato per tenere conto, oltre che della banda e del ritardo, anche del carico in quel momento e dell’affidabilità della rete.  Tale metrica è, ovviamente, più accurata dell’hop count utilizzato dal RIP per scegliere il percorso di un pacchetto fino a destinazione. Vediamo meglio i parametri principali utilizzati nella metrica per la scelta del percorso:

  • banda: si tiene conto della banda delle reti che si attraversano fino a destinazione;
  • ritardo: ritardo cumulativo calcolato sulle interfacce oltrepassate lungo il percorso;
  • affidabilità: l’affidabilità del collegamento fino a destinazione determinato con lo scambio di informazioni riguardo la raggiungibilità delle reti nel tempo;
  • carico: il carico di un link verso la destinazione misurato in bit/secondo.

L’IGRP implementa le funzioni di holddowns, split horizons e poison reverse updates (già trattati in un precedente articolo). Tale protocollo non supporta le VLSM, supportate invece da un altro protocollo proprietario cisco che è l’EIGRP.

Passiamo adesso alla configurazione del protocollo. Il processo di routing si attiva con il comando router igrp in modalità configurazione (per disabilitarlo basta inserire il comando no router igrp). Perché il comando sia completo bisogna inserire anche un as-number, ovvero un identificativo per il processo IGRP; tutti i router che partecipano al processo di routing devono avere lo stesso as-number. Nel successivo menu bisogna inserire le reti direttamente connesse su cui inviare e ricevere gli update tramite il comando network (esattamente come accade per il RIP). Facciamo un esempio. Vogliamo inserire su un router 2 reti con identificativo di processo 101, i comandi saranno:

Router(config)# router igrp 101
Router(config-router)# network 192.168.10.0
Router(config-router)# network 192.168.11.0

RIP e configurazione su router Cisco

Il Routing Information Protocol (RIP) è un protocollo distance vector che può essere utilizzato nella versione 1 (RIPv1 o Classful Routing Protocol) o nella versione 2  (RIPv2 o Classless Routing Protocol). Il RIPv2 apporta delle caratteristiche importanti alla precedente versione come la possibilità gestire informazioni addizionali di routing, introduce dei meccanismi di autenticazione per rendere sicuri gli update della routing table e supporta le subnet mask a lunghezza variabile (variable-length subnet mask o VLSM). Il RIP usa l’hop count come metrica per la scelta del percorso. Il numero massimo di hop nel percorso è di 15, poi la rete viene posta come irraggiungibile. Di default, i routing updates vengono inviati ogni 30 secondi in broadcast.

Vediamo adesso come si configura il RIP sui router Cisco. Il primo comando da utilizzare è router rip e, successivamente, si utilizza il comando network per indicare al router le interfacce sulle quali inviare e ricevere i routing updates. Tali reti sono direttamente connesse al router. Facciamo un esempio con un router che è direttamente connesso alle reti 10.0.0.0 e 192.168.10.0, i comandi saranno:

Router(config)#router rip
Router(config-router)#network 10.0.0.0
Router(config-router)#network 192.168.10.0

Cosa accade se si inviano pacchetti verso una subnet sconosciuta? Il pacchetto viene scartato; per ovviare a ciò sui Cisco è abilitato di default il comando ip classless che inoltra il pacchetto di una subnet sconosciuta alla migliore supernet route. La supernet route è una rotta che copre un ampio range di subnet con una singola entry (per disabilitarlo bisogna inserire il comando no ip classless in configuration mode).

Come indicato nel precedente articolo, il RIP è un protocollo distance vector che soffre dei problemi di routing loops e count-to-infinity che portano a inconsistenza delle tabelle di routing dovute e una lenta convergenza del protocollo. Per ovviare a ciò il RIP utilizza le seguenti tecniche:

  • Split horizon
  • Poison reverse
  • Holddown counters
  • Triggered updates

Alcuni di questi servizi possono richiedere configurazione. Il RIP permette un massimo di 15 hop, quindi l’utilizzo del RIP è limitato nelle reti di grosse dimensioni. Inoltre, in alcuni casi, è necessario poter disabilitare lo split horizon; tale operazione va fatta direttamente sull’interfaccia interessata tramite il comando:

Router(config-if)#no ip split-horizon

E’ possibile modificare l’holddown timer che di default è di 180 secondi, per farlo basta digitare il comando:

Router(config-router)#timers basic update invalid holddown flush [sleeptime]

l’impostazione di default è

Router(config-router)#timers basic 30 180 180 240

Il valore del timer può essere diminuito, ma ciò va effettuato con cautela. Il valore ideale per il timer è leggermente maggiore del tempo massimo possibile per l’update sulla rete. L’intervallo di update può essere aumentato, rispetto al default pari a 30 secondi, per risparmiare banda o diminuito per migliorare la convergenza. E’ inoltre possibile disabilitare l’invio degli update su una specifica interfaccia tramite il comando:

Router(config-router)#passive-interface interface

La scelta di disabilitare gli update su talune interfacce risiede nel fatto che il RIP invia gli update in broadcast ed è necessario disabilitarli quando bisogna inviare degli update a reti non broadcast come ad esempio il Frame Relay.

Il tipo RIP da utilizzare si imposta con il comando:

Router(config-router)#version {1|2}

Di default i router cisco ricevono gli update sia del RIPv1 che del RIPv2, ma inviano solamente update di RIPv1. Il tipo di invio può essere settato con comandi appositi per inviare update di RIPv1, RIPv2 o di entrambi i tipi direttamente sull’interfaccia d’uscita:

Router(config-if)#ip rip send version {1 | 2 | 1 2}

la medesima cosa può essere fatta con la ricezione veicolando la ricezione di update RIP di una o entrambe le versioni:

Router(config-if)#ip rip receive version {1 | 2 | 1 2}

Abbiamo così concluso la trattazione sulla configurazione del RIP su Router Cisco, per effettuare la verifica della configurazione ci avvaliamo di 2 comandi: show ip route e show ip protocols. Il primo viene utilizzato in particolare per verificare che vengano ricevuti gli update degli altri router e che le route ricevute dai router vicini siano installate nella routing table; il secondo da molte informazioni sulla configurazione, ovvero se il RIP è attivo, se le interfacce inviano e ricevono correttamente gli update e se il router emette gli aggiornamenti verso le reti giuste.

Routing e rotte statiche

Il Routing è il processo usato da un router per inviare i pacchetti fino a destinazione e utilizza come metodo decisionale l’indirizzo IP di destinazione. La decisione per l’invio di pacchetti a una rete remota può avvenire in maniera statica o in maniera dinamica. In questo articolo vedremo come configurare sui router cisco le rotte in maniera statica (static routing) ovvero configurando manualmente le informazioni sulle reti remote. Ovviamente, essendo configurate manualmente, l’amministratore di rete deve aggiungere o rimuovere rotte statiche ogni volta ci sia una variazione della topologia della rete.

Sui router cisco il comando da utilizzare per inserire una rotta statica è il comando ip route seguito da 3 parametri obbligatori che sono: rete remota, maschera della rete e ip d’uscita (o l’interfaccia d’uscita). Facciamo un esempio. Si voglia inserire la rotta statica alla rete 192.168.10.0 con maschera 255.255.255.0 da un router che ha come interfaccia d’uscita una seriale (ipotizziamo la seriale1) che ha IP 192.168.4.1; possiamo definirla tramite 2 comandi equivalenti:

- Router(config)#ip route 192.168.10.0 255.255.255.0 s1

oppure

- Router(config)#ip route 192.168.10.0 255.255.255.0 192.168.4.1

poiché basta indicare o l’interfaccia d’uscita o il suo IP.

Un parametro opzionale è la distanza amministrativa (o administrative distance) che indica l’affidabilità di una rotta: una distanza amministrativa minore indica un’affidabilità maggiore. Essa può assumere un valore compreso tra 0 e 255; nelle rotte statiche, se non esplicitamente indicato, il valore della distanza amministrativa è 1.
Spesso la distanza amministrativa viene modificata per creare delle rotte statiche di backup nel caso in cui le rotte dinamiche (o dynamic routing) falliscano l’apprendimento. In questo caso bisogna indicare la rotta statica con un valore della distanza amministrativa più alta di quella del dynamic routing utilizzato. Ad esempio:

- Router(config)#ip route 192.168.10.0 255.255.255.0 s1 150

La default route è la rotta utilizzata per instradare i pacchetti che hanno una destinazione che non coincide con nessuna delle rotte che si trovano nella routing table. La default route è un tipo speciale di rotta statica che si scrive nel seguente modo:

- Router(config)#ip route 0.0.0.0 0.0.0.0 s1
oppure
- Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.4.1

ovvero inserendo come ip e maschera di destinazione a 0 e inserendo alla fine l’interfaccia d’uscita.

La verifica della configurazione avviene tramite i comandi show running-config e show ip route in modalità privilegiata. Ovviamente, per ritrovarsi la configurazione dopo il riavvio del router bisogna salvare la configurazione sulla configurazione d’avvio con il comando show running-config startup-config.