Articolo scritto in collaborazione con Claudio Di Gregorio
Nella configurazione di un router Cisco i comandi immessi, di volta in volta, vengono salvati nella memoria RAM. Il router li rende immediatamente operativi ma il loro effetto si esaurirebbe in caso di spegnimento dell’apparato. Per rendere la configurazione effettiva, anche dopo un successivo riavvio del sistema, è necessario salvarla nella memoria NVRAM, da dove verrà caricata alla riaccensione del router.Alcune considerazioni sono d’obbligo:
- Le configurazioni presenti in RAM e in NVRAM possono anche non essere uguali;
- La configurazione attiva in RAM viene trasferita nella memoria NVRAM solo a seguito di uno specifico comando eseguito dall’amministratore del router;
- E’ consigliato copiare una configurazione in RAM e in NVRAM solo quando si è sicuri del corretto funzionamento della stessa.
*modalità privilegiata: è possibile visualizzare tutti i dati di funzionamento del router e viene abilitata la possibilità di cambiarne la configurazione (Router#)
*modalità configurazione: è possibile variare i parametri di funzionamento del router e procedere alla sua configurazione (Router (config)#)
*sub-menù di configurazione di una funzione specifica (ad esempio la configurazione di una interfaccia): (Router (config-if)#)
b) – Router# – Per uscire dalla modalità privilegiata (Privileged mode) è sufficente digitare: disa
I comandi vanno imputati manualmente nella corretta sintassi del Cisco CLI (command line interface)
Ogni comando è disponibile in forma negata e affermata: è possibile abilitare una determinata funzione digitando “stringa_di_comando” e disabilitare la funzione stessa digitando “no stringa_di_comando“.
La linea di comando (comprendente i comandi e i messaggi di errore) spesso scrolla oltre la cornice dello schermo e quindi assume una forma diversa che si desume dal carattere ‘$‘. Laddove appaia questo carattere all’inizio della command line significa che parte del comando è stata scrollata per garantire la continuità a video. Per rivisitare tutto il comando è possibile usare le funzioni di editing qui descritte.
Le funzioni di editing sono garantite da una serie di comandi che agiscono sul cursore. Le principali sono:
|
Comandi di editing |
|
| Ctrl-A | Posiziona il cursore all’inizio della linea di comando |
| Esc-B |
Torna indietro di una parola |
| Ctrl-B |
Torna indietro di un carattere |
| Ctrl-E |
Posiziona il cursore alla fine della linea di comando |
| Ctrl-F |
Va avanti di un carattere |
| Esc-F |
Va avanti di una parola |
|
Comandi storici |
|
| Ctrl-P o freccia verso l’alto |
Richiama l’ultimo comando digitato |
| Ctrl-N o freccia verso il basso |
Richiama il comando precedente |
| Router > show history |
Mostra il buffer dei comandi |
| Router > sterminal history size number-of-lines |
Stabilisce la lunghezza del buffer |
| Router > no terminal editing |
Stabilisce la lunghezza del buffer |
| <tab> |
Completamento automatico dei comandi |
Come indicato in tabella, esiste anche una funzione di editing “avanzata” che non garantisce coerenza e interpretazione di tutti gli script scrritti dagli utenti. Per disabilitarla è sufficente digitare ‘no terminal editing’ .
E’ possibile, in ogni momento, consultare l’help dell’IOS. Questa operazione è possibile attraverso la digitazione del “?“. La risposta a video restituisce una lista di comandi ( generalmente 22 righe, ma dipende dalla versione dell’IOS) preceduta dalla dicitura “Exc Commands:” che indica la disponibilità dei comandi relativi alla modalità in esecuzione. Alla fine dell’elenco appare la dicitura “–More–” che indica ulteriori comandi disponibili.
Per accedere a questi ulteriori comandi e quindi a una successiva scrollata video è necessario cliccare sull barra spaziatrice della tastiera. Cliccando il tasto Return lo scrolling avverrà riga per riga. Per disporre di un help più analitico è possibile digitare il comando desiderato, seguito dal punto di domanda (es. “enable ?” ).
Ci sono diverse funzioni accessibili attraverso la CLI dell’IOS Cisco che permettono di interagire con l’help:
- Un primo livello potrebbe essere quello di scrivere direttamente il comando (per esempio il settaggio della data e ora)
Se scriviamo il comando sbagliato:
Router# clock
avremo come risposta:
Translating “CLOCK”
% Unknow command or computer name, or unable to find computer address - Una buona cosa, a questo punto, è quella di chiedere all’IOS quali sono le esatte sintassi dei comandi che iniziano per “cl” in modo da avere una lista dei comandi disponibili
Se digitiamo:
Router# cl?
Utilizzando la sintassi esposta che utilizza la wild card “?” avremo come risposta:
Router# cl?
clear clock
che rappresentano i comandi disponibili nella modalità in uso (# = privileged mode) - A questo punto siamo pronti ad immettere il comando nella corretta sintassi:
Router# clock
avremo come risposta:
% Incomplete command
in quanto non è stata indicata nessuna opzione per il comando - Per avere a disposizione le opzioni del comando sarà sufficente richiedere l’help contestuale al comando stesso:
Router# clock?
ed avremo la risposta che segue con le opzioni disponibili:
set Set the time and date - Finalmente possiamo immettere il comando, seguito dall’opzione, ma mancano sisuramente i parametri. E la CLI ce lo indicherà immediatamente:
Router# clock set
% Incomplete command
Ma siamo, ormai, in grado di chiedere all’Ios come proseguire:
Router# clock set ?
ed avremo la risposta ai nostri dubbi, utile per settare, finalmente data e ora:
Current time ( hh : mm : ss ) - L’help dell’ IOS è molto sofisticato e ci chiederà ulteriori informazioni laddove non abbiamo inserito correttamente tutti i parametri previsti dal comando e dalle sue opzioni:
Router# clock set 13:45:22
avremo una nuova risposta di comando incompleto:
% Incomplete command
a cui, ormai sappiamo rispondere con la riproposizione del comando seguito dal simbolo di aiuto:
Router# clock set 13:45:22 ?
e otterremo la corretta sintassi da usare:
<1-31> Day of the mmonth
MONT Month of the year
Qui potremo incappare in un errore di valutazione dell’help. Analizzando la risposta vediamo che i giorni vengono indicati in un range NUMERICO, mentre il mese viene indicato come stringa. Se per caso digitiamo un comando in forma errata del tipo:
Router# clock set 13:45:22 05 12
l’errore sarà chiaro ed indicato dal marcatore ‘^’ che indica il puntatore relativo al parametro errato in una stringa di comando :
Router# clock set 13:45:22 05 12
^
% Invalid input detect at the ‘^’ marker - Siamo quasi in grado di completare il comando inputando quasi tutti i parametri e ricevendo l’ultima segnalazione che ci sarà, ora, chiarissima e facilmente intuibile:
Router# clock set 13:45:22 05 December
% Incomplete command
<1993-2035> YEAR
A prima vista sembra complicato ma la sua interattività ci salvaguarda da qualsiasi possibile errore
Va detto anche che, a seconda della versione dell’IOS, non tutte le risposte dell’help sono compatibili, ma la modalità e la interattività sono le stesse.
Il software Cisco IOS include diversi comandi che possono essere utilizzati per testare la connettività di base in una rete IP.
I principali problemi che avvengono sulla rete IP risultano essere dati da errori nello schema di indirizzamento. Per testare la rete è possibile utilizzare molti comandi tra cui:
- telnet Per connettersi ad un utente remoto è possibile connettersi con il comando Telnet, un protocollo che è parte della suite tcp/ip e fornisce un terminale virtuale impostando la connessione tra un router ed un pc. Telnet permette di verificare il software a livello applicazione tra stazioni di origine e destinazione. Un router può avere fino a 5 connessioni simultanee in Telnet.
- Ping è un tool che testa la connettività al livello di rete. Esso opera trasmettendo un serie di pacchetti ICMP Echo alla destinazione e mantenendo traccia delle risposte ICMP Echo che la destinazione trasmette al ritorno. E’ possibile utilizzare il Ping con le sue caratteristiche di default (5 pacchetti da 100byte, 2 secondi di timeout) dalla modalità utente, mentre in modalità priviliegiata sono disponibili più opzioni. Conosciuto quindi come “Ping Esteso” le opzioni aggiuntive comprendono: variazione delle dimensioni dei pacchetti, incremento del valore di timeout, trasmissione di più di 5 pacchetti alla volta, non frammentazione nell’Ip Header e utilizzo del ping per altri protocolli quali IPX e AppleTalk.
Un esempio di output del ping con indirizzo 172.20.2.1, l’indirizzo IP del nostro host di destinazione:
Router1# ping 172.20.2.1
Type Escape sequence to abort.
Sending 5, 100-byte ICMP Echoes to 172.20.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/15/64 ms
La serie di 5 punti esclamativi indica che la risposta dei pacchetti è stata ricevuta pienamente dal nostro router. Diversamente, un punto (.) indica destinazione non raggiungibile.
- Trace: un altro comando per testare la connettività di rete è il traceroute. Il comando Trace è simile al comando ping, ad eccezione che invece di testare la connessione end-to-end, il trace testa ogni “salto” (hop) attraverso tutto il percorso fatto dal pacchetto, hop-to-hop. Il comando Trace ha il vantaggio di generare messaggi di errore quando un pacchetto eccede il proprio Time to Live (TTL). Il beneficio del comando Trace è quello di dire l’ultimo router raggiunto durante tutto il tragitto.
- show ip route: il router offre potenti tool per determinare la configurazione corrente della tabella di routing.
L’esempio seguente si riferisce all’output del comando “show ip route” senza un indirizzo.
Router# show ip route
Codes: I – IGRP derived, R – RIP derived, O – OSPF derived,
C – connected, S – static, E – EGP derived, B – BGP derived,
* – candidate default route, IA – OSPF inter area route,
i – IS-IS derived, ia – IS-IS, U – per-user static route,
o – on-demand routing, M – mobile, P – periodic downloaded static route,
D – EIGRP, EX – EIGRP external, E1 – OSPF external type 1 route,
E2 – OSPF external type 2 route, N1 – OSPF NSSA external type 1 route,
N2 – OSPF NSSA external type 2 route
Gateway of last resort is 131.119.254.240 to network 129.140.0.0
O E2 150.150.0.0 [160/5] via 131.119.254.6, 0:01:00, Ethernet2
E 192.67.131.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
O E2 192.68.132.0 [160/5] via 131.119.254.6, 0:00:59, Ethernet2
O E2 130.130.0.0 [160/5] via 131.119.254.6, 0:00:59, Ethernet2
E 128.128.0.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
E 129.129.0.0 [200/129] via 131.119.254.240, 0:02:22, Ethernet2
E 192.65.129.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
E 131.131.0.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
E 192.75.139.0 [200/129] via 131.119.254.240, 0:02:23, Ethernet2
E 192.16.208.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
E 192.84.148.0 [200/129] via 131.119.254.240, 0:02:23, Ethernet2
E 192.31.223.0 [200/128] via 131.119.254.244, 0:02:22, Ethernet2
E 192.44.236.0 [200/129] via 131.119.254.240, 0:02:23, Ethernet2
E 140.141.0.0 [200/129] via 131.119.254.240, 0:02:22, Ethernet2
E 141.140.0.0 [200/129] via 131.119.254.240, 0:02:23, Ethernet2
- Show interfaces: l’interfaccia di un router si compone di 2 parti, fisica (hardware) e logica (software).
A livello fisico troviamo l’hardware: cavi, connettori e interfacce creano la connessione tra i dispositivi.
A livello data-link troviamo il software: il controllo dell’informazione, messaggi keepalive e informazioni utente. Questa informazione è il dato, che viene passato tra le due interfacce connesse al router.
Quando viene testato il collegamento fisico e data-link le domande da farsi sono:
- c’è un segnale Carrier Detect? (individuazione del suono di collegamento)
- il collegamento fisico tra i dispositivi è funzionale?
- sono stati ricevuti i messaggi keepalive?
- i pacchetti dati possono essere trasmessi attraverso il collegamento fisico?
Uno dei più importanti elementi del comando show interfaces serial è visualizzare appunto lo stato della linea e del protocollo data link.
Analizziamo l’output del comando show interfaces serial 1:
Serial1 is up: lo stato della linea è avviato da un segnale Carrier Detect e si riferisce allo stato del livello fisico.
line protocol is up: il protocollo di linea è avviato da frames keepalive e si riferisce al livello data link.
- Debug è un tool che può essere utilizzato per ottenere informazioni dettagliate di diagnostica dal proprio router come i processi di routing, i messaggi che il router riceve e trasmette, il controllo del traffico Real-Time. E’ necessario fare molta attenzione nell’utilizzo di questo tool su una rete attiva. Le fasi di debug rallentano notevolmente la rete, quindi è consigliabile attivarlo per diagnosticare il problema e successivamente disattivarlo. Di default il router trasmette messaggi di errore di sistema dal debug alla console terminale. E’ possibile reindirizzare i messaggi ad un host Unix o un buffer interno attraverso il comando “terminal monitor”.
Il protocollo CDP
CDP è uno dei migliori metodi per capire la propria topologia di rete. Cisco Discovery Protocol è un protocollo indipendente (livello 2) incluso nei dispositivi quali router e switch. Lo scopo principale del CDP è quello di scoprire piattaforme e protocolli sui dispositivi confinanti. Ogni dispositivo configurato per il CDP trasmette periodicamente messaggi a livello MAC di indirizzi multicast. Questi avvisi includono informazioni sulla versione del software e della piattaforma. Ciò rende possibile vedere tutti gli altri dispositivi sulla rete senza avere informazioni del codice vendor del mac address incluso nei dispositivi Cisco. Quando un dispositivo in esecuzione con IOS viene avviato il CDP si avvia automaticamente permettendo al router di rilevare automaticamente tutti i dispositivi adiacenti che hanno il CDP attivo.
Utilizzando il comando show cdp neighbors è possibile visualizzare gli aggiornamenti del CDP sul router locale.Il contenuto della tabella CDP può essere visualizzato con i seguenti comandi:
ROUTER1# show cdp neighbors
Capability Codes: R – Router, T – Trans Bridge, B – Source Route Bridge
S – Switch, H – Host, I – IGMP, r – Repeater
DeviceID LocalIntrfce Holdtme Capability Platform Port ID
ROUTER3 Tok 0 143 RBRS P4 Tok 0/0/0
ROUTER2 Ser 1 170 R 4700 Ser 1
ROUTER2 Ser 0 170 R 4700 Ser 0
Il comando appena eseguito mostra le informazioni sui dispositivi locali Cisco collegati al dispositivo, che nel nostro caso è il router. Per dispositivi collegati “localmente” si intende un dispositivo sullo stesso segmento Lan o connesso via interfaccia seriale.
Il “Device ID” è il nome host del router confinante. La colonna “Local Interfce” indica l’interfaccia sul router alla quale sono connessi i dispositivi confinanti, mentre la colonna “port ID” indica l’interfaccia collegata sul router remoto.
Router#sh cdp neighbors
Capability Codes: R – Router, T – Trans Bridge, B – Source Route Bridge
S – Switch, H – Host, I – IGMP, r – Repeater
DeviceID LocalIntrfce Holdtme Capability Platform Port ID
Switch Fas 0/0 238 S 1900 1Router Ser 0/0 138 R 2500 Ser 0
Router Ser 0/1 138 R 2500 Ser 0
Il CDP è un ottimo tool per risolvere i problemi sulla rete, permettendo di determinare i dispositivi confinanti che causano problemi.


