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