13 dic 2002

Primi cenni ai comandi della CLI

Articolo scritto in collaborazione con Claudio Di Gregorio

Configurazione: FLASH e memoria, terminale e rete








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.
La configurazione corrente del router può essere salvata (o letta) anche via rete, attraverso il protocollo TFTP. Si può quindi optare per un salvataggio in rete (anziché in NVRAM) su uno specifico TFTP server, ottenendo un file testuale della configurazione. Va da se che è possibile procedere all'inverso caricando sul router una configurazione presente in un server TFTP.

Menù e comandi
L'IOS ha interfaccia completamente testuale. I suoi menù seguono un'organizzazione gerarchica su N livelli annidati:

* modalità utente: è possibile visualizzare alcuni dati di funzionamento del router (Router>)
*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)#)

E' possibile passare da un livello all'altro con specifiche parole chiave ("conf-t" "int s0" e molti altre che vedremo); per uscire dallo specifico sottomenù si usa la parola chiave exit (in pratica con exit si torna sempre indietro di un livello). La parola chiave end permette invece il ritorno diretto, da qualunque sottomenù di configurazione, alla modalità privilegiata.

a) - Router> - Per uscire dalla modalità utente (User mode) è sufficente digitare: exit
b) - Router# - Per uscire dalla modalità privilegiata (Privileged mode) è sufficente digitare: disa
c) - Router (config)# - Per uscire dalla modalità di configurazione (Global configuration mode) è sufficente digitare: Exit
d) - Router (config-mode)# - Per uscire da una specifica modalità di configurazione (Other configuration mode) : ad esempio la modalità di configurazione di un interfaccia "Router (config-if)#"è sufficente digitare: Exit

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".

Ogni comando è disponibile in forma abbreviata (corrispondente ad accorciare le parole dei vari comandi) purché quella parola non sia ambigua. Il comando corrente è automaticamente è completato con la pressione del tast Tab.

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-APosiziona 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' .


Utilizzo dell'Help dell'IOS

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.


Testing di Rete

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 1

Router 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.

Nessun commento: