vanescar
08-04-06, 14:49
Introduzione
E' bene, se dobbiamo eseguire delicate operazioni sul router, eseguire il backup dell'IOS in uso. Per fare cio' entra in gioco il protocollo TFTP (Trivial File Transfer Protocol) ovvero l'equivalente del protocollo FTP con la sostanziale differenza che usa il protocollo di trasmissione UDP e non TCP quindi non abbiamo la sicurezza della totale e corretta ricezione dei pacchetti.
Il protocollo TFTP, visto la sua limitatezza, è usato 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 basta un semplice
# apt-get install atftpd
Apt-get come sempre scaricherà il pacchetto e lo installerà, avviando anche fin da subito il servizio tftpd! Il servizio TFTP è in ascolto sulla porta 69! Se non avete a vostra disposizione apt-get, potete comunque usare il gestore di pacchetti della vostra distribuzione o comunque scarivarvi i sorgenti e compilarveli!
Ma a cosa puo' servire nel nostro caso avere un server TFTP? Come detto all'inizio, questo protocollo è abitualmente usato per trasferimenti di file tra un computer e un apparato di rete. L'IOS dei router Cisco predispone di svariati comandi per sfruttare il TFTP che ci sarà utile per fare ad esempio il backup e upload dell'IOS o della configurazione! Specifichiamo comunque che un TFTP server non deve essere necessariamente un computer ma puo' essere benissimo 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#
Bene, il router pinga il server TFTP. Ora vediamo cosa possiamo fare sfruttando questo 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), ovvero backuppare l'immagine dell'IOS nel caso dovessimo fare operazioni delicate come l'aggiornamento dell'IOS stesso.
Ci siamo assicurati prima che il router e il server TFTP possano comunicare tramite TCP/IP. Assicuriamoci ora 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 che sul nostro router abbiamo un IOS di nome c2600-js-mz.122-11.T1.bin e che vogliamo salvarcelo sul nostro server. Nella directory del TFTP (di solito /tftpboot) creeremo quindi il file omonimo e gli daremo anche i corretti permessi:
debian:/tftpboot# vi 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#
Ok bene, ora sul 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)
Ecco 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 runna 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 che usiamo attualmente non ci basti più. Questo perchè ogni IOS implementa varie tecnologie. Procuriamoci quindi il nostro nuovo IOS e mettiamolo in /tftpboot, ovvero la directory del nostro 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 versione dell'IOS, quindi possiamo anche rispondere di no. Bene, il nuovo IOS è appena stato copiato dentro la memoria flash del nostro router! Ora, per far sì che il router runni il nuovo IOS lo dobbiamo rebootare! 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#
Bene, abbiamo il nostro nuovo IOS.
Aggiornamento della configurazione: copy tftp startup-config/running-config
Poniamo il caso di dover cambiare la configurazione sul nostro Cisco. Se sono cambiamenti minimo, 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.
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 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.
Autore: Federico Lagni (http://www.areanetworking.it/index.php/Federico_Lagni)
E' bene, se dobbiamo eseguire delicate operazioni sul router, eseguire il backup dell'IOS in uso. Per fare cio' entra in gioco il protocollo TFTP (Trivial File Transfer Protocol) ovvero l'equivalente del protocollo FTP con la sostanziale differenza che usa il protocollo di trasmissione UDP e non TCP quindi non abbiamo la sicurezza della totale e corretta ricezione dei pacchetti.
Il protocollo TFTP, visto la sua limitatezza, è usato 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 basta un semplice
# apt-get install atftpd
Apt-get come sempre scaricherà il pacchetto e lo installerà, avviando anche fin da subito il servizio tftpd! Il servizio TFTP è in ascolto sulla porta 69! Se non avete a vostra disposizione apt-get, potete comunque usare il gestore di pacchetti della vostra distribuzione o comunque scarivarvi i sorgenti e compilarveli!
Ma a cosa puo' servire nel nostro caso avere un server TFTP? Come detto all'inizio, questo protocollo è abitualmente usato per trasferimenti di file tra un computer e un apparato di rete. L'IOS dei router Cisco predispone di svariati comandi per sfruttare il TFTP che ci sarà utile per fare ad esempio il backup e upload dell'IOS o della configurazione! Specifichiamo comunque che un TFTP server non deve essere necessariamente un computer ma puo' essere benissimo 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#
Bene, il router pinga il server TFTP. Ora vediamo cosa possiamo fare sfruttando questo 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), ovvero backuppare l'immagine dell'IOS nel caso dovessimo fare operazioni delicate come l'aggiornamento dell'IOS stesso.
Ci siamo assicurati prima che il router e il server TFTP possano comunicare tramite TCP/IP. Assicuriamoci ora 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 che sul nostro router abbiamo un IOS di nome c2600-js-mz.122-11.T1.bin e che vogliamo salvarcelo sul nostro server. Nella directory del TFTP (di solito /tftpboot) creeremo quindi il file omonimo e gli daremo anche i corretti permessi:
debian:/tftpboot# vi 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#
Ok bene, ora sul 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)
Ecco 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 runna 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 che usiamo attualmente non ci basti più. Questo perchè ogni IOS implementa varie tecnologie. Procuriamoci quindi il nostro nuovo IOS e mettiamolo in /tftpboot, ovvero la directory del nostro 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 versione dell'IOS, quindi possiamo anche rispondere di no. Bene, il nuovo IOS è appena stato copiato dentro la memoria flash del nostro router! Ora, per far sì che il router runni il nuovo IOS lo dobbiamo rebootare! 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#
Bene, abbiamo il nostro nuovo IOS.
Aggiornamento della configurazione: copy tftp startup-config/running-config
Poniamo il caso di dover cambiare la configurazione sul nostro Cisco. Se sono cambiamenti minimo, 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.
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 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.
Autore: Federico Lagni (http://www.areanetworking.it/index.php/Federico_Lagni)