giovedì, Novembre 21, 2024

Cisco e TFTP

Federico Lagni
Federico Lagnihttps://www.areanetworking.it
Appassionato di innovazione in tutte le sue forme, è fondatore e CEO di AreaNetworking.it, uno dei maggiori punti di riferimento online del settore ICT. E' anche fondatore ed Event Director di alcune importanti conferenze, come Crypto Coinference, la più importante conferenza dedicata alle criptovalute e la blockchain, e il GDPR Day, una conferenza molto verticale dedicata appunto al GDPR ed alla Data Protection. Inoltre, è fondatore e Presidente di Tesla Club Italy, il primo club Tesla italiano e tra i primissimi al mondo. Al tempo stesso, è anche fondatore e CEO di Enerev, la prima azienda italiana specializzata nel noleggio a breve termine di auto Tesla, nonché società di formazione e di riferimento per diverse soluzioni dedicate alla mobilità elettrica. Partecipa ad eventi e conferenze come speaker e formatore.

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

Articoli correlati

Noleggia una Tesla per il tuo evento ICT!

Categorie