Actualizar Cisco IOS de forma segura

En este post veremos como actualizar el sistema operativo de un switch Cisco.

Podemos pensar que ya existe información en el site de Cisco para realizar este proceso, pero considero que no es completa.

Es muy importante verificar varias cosas que pueden pasarse por alto y considero que hay que tenerlas muy en cuenta:

  • Siempre hay que verificar la integridad de los datos que nos descargamos e instalamos para evitar desastres.
  • Hay que revisar las “release notes, field notes y bugtool “ del software a instalar porque nos podemos encontrar que actualicemos un software y nos esté afectando un bug que antes no existía.
  • Es muy recomendable comprobar la estabilidad, el rendimiento etc del nuevo software para nuestro dispositivo en un laboratorio y en la medida de lo posible simular el patrón de tráfico, rutas, tiempos de respuesta, paquetes por segundo etc ( dependerá del dispositivo, claro ). Si deseamos usar dispositivos profesionales de prueba, siempre podemos alquilar un IXIA. También las pruebas de estrés nos permitirán comprobar si en las especificaciones de un producto nos están engañando

Es decir, si vamos, por ejemplo, a actualizar un router BGP porque la nueva versión nos ofrece netflow, ip sla o lo que sea y soluciona unos bugs, nos podemos encontrar la desagradable sorpresa de que el equipo arranque bien, pero cuando reciba las trescientos y pico mil rutas de internet ipv4 se nos caiga la sesión bgp con el peer y empiece a “flapear” por falta de memoria. Aquí podríamos incorrectamente pensar que según las especificaciones de la IOS, nuestro equipo soporta el software, pero no, cada cual tiene un patrón de tráfico, unas placas y configuraciones diferentes.

Vamos a actualizar un switch catalyst 3750 en stack.

  • Descargamos el software del site oficial de Cisco y apuntamos el hash md5 o sha :

e9c810e7ebad6d53f022885a4e9f9840

En linux existe md5sum y en windows podemos usar MD5summer. Si en windows creamos  un fichero de texto con el md5, cambiamos la extensión de .txt a .md5 y usamos el mismo nombre+extensión que el fichero a verificar, de forma automática verificará el hash del fichero al hacer doble click :

  • Verificamos que tenemos espacio suficiente en el switch. A continuación subimos el fichero al dispositivo, en este caso mediante un servidor tftp donde tenemos la nueva IOS.
sw-stack#dir flash1:
Directory of flash1:/

    2  -rwx     6972726   Mar 1 1993 19:55:44 +00:00  c3750-ipservicesk9-mz.122-25.SEB.bin
    3  -rwx          24   Mar 2 1993 23:31:52 +00:00  private-config.text
    4  -rwx        1048   Mar 2 1993 23:31:52 +00:00  multiple-fs
    6  -rwx         616   Mar 3 1993 00:41:30 +00:00  vlan.dat
    7  -rwx        3468   Mar 2 1993 23:31:52 +00:00  config.text

15998976 bytes total (9018368 bytes free)
sw-stack#dir flash2:
Directory of flash:/

    2  -rwx     6972726   Mar 1 1993 20:29:43 +00:00  c3750-ipservicesk9-mz.122-25.SEB.bin
    3  -rwx        3468   Mar 2 1993 23:31:52 +00:00  config.text
    4  -rwx         616   Mar 2 1993 05:29:02 +00:00  vlan.dat
    5  -rwx          24   Mar 2 1993 23:31:52 +00:00  private-config.text
    6  -rwx        1048   Mar 1 1993 00:04:10 +00:00  multiple-fs

15998976 bytes total (9018368 bytes free)

Vemos que sólo nos quedan 9 MB libres y por tanto no podemos tener las dos IOS en la flash a la vez.
Podemos liberar espacio o hacerlo hacerlo arrancar por tftp.
En este ejemplo, liberamos espacio de la flash ( flash1 y flash2 que es un stack !! )

sw-stack#delete flash1:/c3750-ipservicesk9-mz.122-25.SEB.bin
Delete filename [c3750-ipservicesk9-mz.122-25.SEB.bin]?
Delete flash:c3750-ipservicesk9-mz.122-25.SEB.bin? [confirm]

sw-stack#delete flash2:/c3750-ipservicesk9-mz.122-25.SEB.bin
Delete filename [c3750-ipservicesk9-mz.122-25.SEB.bin]?
Delete flash:c3750-ipservicesk9-mz.122-25.SEB.bin? [confirm]

sw-stack#copy tftp: flash1:
Address or name of remote host [10.0.15.8]?
Source filename [c3750-ipbasek9-mz.122-55.SE4.bin]?
Destination filename [c3750-ipbasek9-mz.122-55.SE4.bin]?
Accessing tftp://10.0.15.8/c3750-ipbasek9-mz.122-55.SE4.bin...
Loading c3750-ipbasek9-mz.122-55.SE4.bin from 10.0.15.8 (via Vlan2): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!!!!!!!!!!!!!O!!!!!!!!!!!!!!
[OK - 12067601 bytes]

12067601 bytes copied in 213.298 secs (56576 bytes/sec)
  • Intentamos verificar el hash md5 del ios pero como estamos en un stack cuyo master es el switch2, no nos muestra el flash1 como flag del verify . Así que ejecutamos el verify en el switch1 mediante el comando remote:
sw-stack#verify /md5 flash1:/?
% Unrecognized command
sw-stack#verify /md5 flash?
flash2:  flash:  

sw-stack#remote command 1 verify /md5 flash:/c3750-ipbasek9-mz.122-55.SE4.bin

Switch : 1 :
------------
.................Done!
verify /md5 (flash:/c3750-ipbasek9-mz.122-55.SE4.bin)
= e9c810e7ebad6d53f022885a4e9f9840
  • Confirmamos que el hash md5 es correcto y repetimos el proceso con el flash2, no pongo el resultado pues es idéntico. Esta vez si funcionará el comando verify directamente:

verify /md5 flash2:/c3750-ipbasek9-mz.122-55.SE4.bin

  • Modificamos el arranque del switch para que busque nuestro fichero:
sw-stack(config)#boot system switch all flash:/c3750-ipbasek9-mz.122-55.SE4.bin
sw-stack(config)#do show boot
BOOT path-list      : flash:/c3750-ipbasek9-mz.122-55.SE4.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    :
Auto upgrade        : yes
-------------------
Switch 1
-------------------
BOOT path-list      : flash:/c3750-ipbasek9-mz.122-55.SE4.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    : 

Auto upgrade        : no
  • Ya podemos reiniciar el equipo y verificar con show version:
Switch Ports Model              SW Version            SW Image
------ ----- -----              ----------            ----------
     1 26    WS-C3750-24TS      12.2(55)SE4           C3750-IPBASEK9-M
*    2 26    WS-C3750-24TS      12.2(55)SE4           C3750-IPBASEK9-M
  • Actualización de IOS en formato “tar” por consola:

Si lo que queremos es usar un IOS en formato “tar” seguiremos otro procedimiento.
Se puede actualizar la IOS usando un navegador o por consola.
Partimos de que tenemos un switch catalyst 2960 con IOS 12.2(50)SE5 y vamos a actualizar a 15.0.2-SE2.
Nuestro IOS ya era inicialmente un tar descomprimido en el directorio c2960-lanbasek9-mz.122-50.SE5

switch-2960#dir flash:
Directory of flash:/

    2  -rwx        1824   Mar 1 1993 01:08:23 +01:00  vlan.dat
    3  -rwx        1504  Oct 22 2012 18:47:04 +02:00  private-config.text
    5  drwx         512   Mar 1 1993 01:10:17 +01:00  c2960-lanbasek9-mz.122-50.SE5
  560  -rwx       21392  Oct 22 2012 18:47:04 +02:00  config.text
  561  -rwx        2072  Oct 22 2012 18:47:04 +02:00  multiple-fs

Borramos el directorio con el IOS antiguo
switch-2960#delete /recursive /force flash:/c2960-lanbasek9-mz.122-50.SE5

Como ho hay espacio para el nuevo IOS, descomprimimos el fichero localizado en un servidor tftp (ip=10.0.10.44) sobre la flash del switch:
switch-2960#archive tar /xtract tftp://10.0.10.44/c2960-lanbasek9-tar.150-2.SE2.tar flash:

Cambiamos el boot var para el arranque:
switch-2960#show boot 
BOOT path-list      : flash:/c2960-lanbasek9-mz.122-50.SE5/c2960-lanbasek9-mz.122-50.SE5.bin
Config file         : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break        : no
Manual Boot         : no
HELPER path-list    : 
Auto upgrade        : yes
Auto upgrade path   : 
NVRAM/Config file
      buffer size:   65536
Timeout for Config
          Download:    0 seconds
Config Download 
       via DHCP:       disabled (next boot: disabled)

switch-2960#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
switch-2960(config)#boot system flash:/c2960-lanbasek9-mz.150-2.SE2/c2960-lanbasek9-mz.150-2.SE2.bin
switch-2960(config)#exit
switch-2960#wr
Building configuration...
[OK]!
switch-2960#reload

 

 

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *