[toc]
Introduzione
E’ bene, se dobbiamo eseguire delicate operazioni su di un router, eseguire il backup dell’IOS a fronte anche di evitare i soliti “ho dato un erase flash per sbaglio”. Per fare ciò, entra in gioco il protocollo TFTP (Trivial File Transfer Protocol) ovvero l’equivalente del protocollo FTP con la sostanziale differenza di utilizzo del protocollo di trasmissione UDP e non TCP. Questa caratteristica non assicura la corretta ricezione di tutti i pacchetti.
Il protocollo TFTP, visto la sua limitatezza, è utilizzato solitamente per il trasferimento file tra un computer e un apparato di rete quale switch o router.
Una sessione TFTP prevede i seguenti cinque tipi di pacchetti:
- RR: Read Request (Richiesta di lettura);
- WR Write Request (Richiesta di scrittura);
- DATA: Byte di dati;
- ACK: Acknowledgment (Accettazione della sessione e/o pacchetto)
- ERR: Errore;
Installazione di un TFTP server
Non sto qui a spiegare il procedimento di installazione su Windows in quanto molto banale: cerchiamo su Google un qualsiasi server TFTP, ad esempio PumpKin e lo installiamo. Per quanto riguarda Linux io consiglio di installare atftpd come TFTP Server. Su Debian è sufficiente un semplice:
# apt-get install atftpd
Apt-get, come sempre, scaricherà il pacchetto e lo installerà, preoccupandosi anche di avviare fin da subito il servizio tftpd. Il servizio TFTP è in ascolto sulla porta 69. Se non avete a vostra disposizione apt-get, potete usare il gestore di pacchetti della vostra distribuzione o comunque scarivarvi i sorgenti e compilarveli.
Una volta installato, creiamo la directory in cui il demone TFTP lavorerà e avviamo atftpd come segue:
$ mkdir /tftpboot $ /usr/sbin/atftpd --daemon --no-multicast --group nobody --tftpd-timeout 0 -m 1000 /tftpboot
Ma a cosa può servire nel nostro caso avere un server TFTP? Come detto precedentemente, questo protocollo è solitamente utilizzato per trasferimenti di file tra un computer e un apparato di rete. L’IOS dei router Cisco predispone svariati comandi per sfruttare il TFTP che ci sarà utile per fare, ad esempio, il backup e/o upload del nostro IOS o della configurazione. Tengo a specificare, comunque, che un TFTP server non deve essere necessariamente un computer ma tranquillamente anche un altro router.
Bene. Prestiamoci ora a far interagire il router con il nostro TFTP server. Per prima cosa assicuriamoci che i due abbiano la facoltà di comunicare attraverso TCP/IP. Proviamo, quindi, dal router a pingare l’indirizzo IP del server TFTP:
router#ping 192.168.0.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.0.2, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/4 ms router#
Corretto. Il router pinga il server TFTP.
Vediamo cosa possiamo fare sfruttando tale servizio. L’IOS mette a disposizione vari comandi come copy flash tftp, copy tftp flash e altri che ora vedremo.
Backup dell’IOS: copy flash tftp
Questo comando serve per copiare (copy) il contenuto della memoria flash cioè l’IOS (flash) all’interno del nostro server TFTP (tftp). In sostanza facciamo un backup dell’immagine dell’IOS per salvaguardarci da ipotetiche problematiche legate a operazioni “delicate” come l’aggiornamento dell’IOS stesso.
Prima ci siamo assicurati che il router e il server TFTP potessero comunicare tramite TCP/IP. Assicuriamoci anche che il servizio TFTP sia effettivamente avviato nel server. Nota importante: nei sistemi operativi Unix occorre prima creare un file che abbia lo stesso nome con il quale salveremo l’IOS. Poniamo quindi il caso di avere, nel nostro router, un IOS di nome c2600-js-mz.122-11.T1.bin e di voler salvarlo nel nostro server.
Nella directory del TFTP (di solito /tftpboot) creeremo, quindi, il file omonimo e gli assegneremo anche i corretti permessi:
debian:/tftpboot# touch c2600-js-mz.122-11.T1.bin debian:/tftpboot# ls c2600-js-mz.122-11.T1.bin debian:/tftpboot# debian:/tftpboot# chmod a+w c2600-js-mz.122-11.T1.bin debian:/tftpboot#
Bene. Ora, nel router, possiamo procedere con il backup dell’IOS sul server TFTP:
router# copy flash tftp Source filename []? c2600-js-mz.122-11.T1.bin Address or name of remote host []? 192.168.0.2 Destination filename [c2600-js-mz.122-11.T1.bin]? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!! 15771048 bytes copied in 48.908 secs (322464 bytes/sec)
Fatto. Abbiamo appena salvato l’IOS. Questi comandi sono facilmente interpretabili: copia il contenuto della memoria flash all’interno del server TFTP.
Backup della configurazione: copy running/startup-config tftp
Abbiamo a nostra disposizione due comandi: copy running-config tftp e copy startup-config tftp che rispettivamente servono a copiare e salvare la configurazione attuale (cioè quella che il router utilizza in questo momento preciso ma che non è detto che sia la configurazione di startup) e quella appunto di startup.
router#copy startup-config tftp Address or name of remote host []? 192.168.0.2 Destination filename [cisco2600-confg]? !! 964 bytes copied in 0.044 secs (21909 bytes/sec) router#
o comunque running-config a seconda di quello che serve.
Aggiornamento dell’IOS: copy tftp flash
Quando abbiamo la necessità di implementare e utilizzare una nuova tecnologia o servizio, può accadere che l’IOS attualmente in uso nel nostro router o switch che sia, non sia più in grado di adempiere a quanto da noi voluto. Questo perchè esiste un IOS per ogni tipologia di feauture. Procuriamoci, pertanto, il nuovo IOS e mettiamolo in /tftpboot del server TFTP. Dopo di che:
Password: cisco2600>en Password: router# router#copy tftp flash Address or name of remote host []? 192.168.0.2 Source filename []? c2600-ipbase-mz.123-13.bin Destination filename [c2600-ipbase-mz.123-13.bin]? Accessing tftp://192.168.0.2/c2600-ipbase-mz.123-13.bin... Erase flash: before copying? [confirm] Erasing the flash filesystem will remove all files! Continue? [confirm] Erasing device... eeeeeeeeeeeeeeeeeeeeeeeeeeeeee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ...erasedee Erase of flash: complete Loading c2600-ipbase-mz.123-13.bin from 192.168.0.2 (via FastEthernet0/1): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [OK - 9507696 bytes] Verifying checksum... OK (0x7CE9) 9507696 bytes copied in 66.360 secs (143275 bytes/sec) router#
Poniamo attenzione a questa domanda: Erase flash: before copying? [confirm]. Se confermiamo, tutto il contenuto della memoria flash verrà cancellato. Ricordo che la memoria flash è in grado di contenere molteplici versioni di IOS, quindi possiamo anche rispondere “No”.
Il nuovo IOS è appena stato copiato dentro la memoria flash del nostro router. Ora, per far sì che il router utilizzi il nuovo IOS, lo dobbiamo riavviare. Quindi:
router#reload Proceed with reload? [confirm] *Mar 1 01:01:43.623: %SYS-5-RELOAD: Reload requested by console. Reload Reason: Reload command. System Bootstrap, Version 12.2(7r) [cmong 7r], RELEASE SOFTWARE (fc1) Copyright (c) 2002 by cisco Systems, Inc. C2600 platform with 65536 Kbytes of main memory
Una volte terminato il reload, verichiamo che effettivamente il router abbia caricato il nuovo IOS:
router#sh flash System flash directory: File Length Name/status 1 9507696 c2600-ipbase-mz.123-13.bin [9507760 bytes used, 6745164 available, 16252924 total] 16384K bytes of processor board System flash (Read/Write) router#
Come possiamo vedere dall’output del comando, abbiamo il nostro nuovo IOS.
Aggiornamento della configurazione: copy tftp startup-config/running-config
Poniamo il caso di dover cambiare la configurazione del nostro Cisco. Se sono cambiamenti minimi, li possiamo effettura manualmente. Al contrario, se sono radicali, apportarli manualmente è solo uno spreco di tempo. Se abbiamo un file di configurazione già fatto e pronto a essere usato, possiamo usare il comando copy tftp startup-config per caricare direttamente l’intera nuova configurazione.
router#copy tftp startup-config Address or name of remote host []? 192.168.0.2 Source filename []? new_config Destination filename [startup-config]? Accessing tftp://192.168.0.2/new_config... Loading new_config from 192.168.0.2 (via FastEthernet0/1): ! [OK - 3110 bytes] Smart-init will be enabled upon reload. [OK] 3110 bytes copied in 9.964 secs (312 bytes/sec) router#
Ecco fatto, abbiamo appena copiato la nuova configurazione nella memoria NVRAM. Stiamo attenti a fare questo. Se state facendo delle prove fate attenzione a non copiare nella NVRAM (quindi usando startup-config) una configurazione che non conoscete: ricordatevi che potrebbe avere della password criptate, in tal caso dovrete ricorrere al Password Recovery. Piuttosto, copiatevi sempre la nuova configurazione in running-config (copy tftp running-config).
Bene, siamo giunti al termine di questo breve ma utile documento.