martes, julio 04, 2017

Recuperación de un punto de acceso inalámbrico (AP) Cisco con la flash borrada y sin imagen de arranque

Hay ocasiones en que, por diferentes circunstancias, debemos configurar de cero un punto de acceso inalámbrico (AP de ahora en adelante) de Cisco al que se le ha eliminado la imagen de arranque. Quizás se haya corrompido, quizás la hayamos borrado sin habernos acordado de cargar otra imagen antes de reiniciar el AP, puede que se haya cortado la alimentación mientras estábamos subiendo la nueva imagen... No importa cómo haya ocurrido, el resultado es que tendremos un AP que arrancará, si nos conectamos por consola para ver el arranque, con la temible frase "The system is unable to boot automatically because there are no bootable files to boot." y a continuación mostrará un triste prompt:

ap:

Y nada más. En este modo tenemos una serie de comandos limitados para poder reconfigurar el AP desde cero y cargar una imagen mediante TFTP. Veamos cómo.

Para empezar, los AP de Cisco pueden funcionar  en dos modalidades:

  • Modo ligero: el AP tiene cargada una imagen ligera que se limita a ponerlo en contacto con una controladora wireless donde reside la inteligencia, y que pasa los parámetros al AP sobre cómo debe configurar sus radios en lo relativo a canales, potencia... En este modo la gestión del AP es muy limitada y la configuración se realiza a través de la controladora. Es un modo pensado para el despliegue de muchos APs en una misma sede y cuya gestión y configuración manual y por separado sería inmanejable.
  • Modo autónomo: el AP carga una imagen autónoma tras cuyo arranque podemos gestionarlo total y completamente. Corre de nuestra cuenta configurar el SSID, los canales de emisión, la potencia y el resto de parámetros. Es el modo adecuado si tenemos que desplegar tan solo uno o unos pocos APs.

La única diferencia entre ambos modos a nivel de arranque es el tipo de imagen que utilizan y que tendremos que descargar de la web de Cisco según necesitemos. En cuanto a recuperación a partir de cero es indistinto que utilicemos una imagen ligera o una imagen autónoma.

Los comandos del boot loader

 El boot loader es el punto donde nos quedamos cuando el AP no encuentra una imagen con la que arrancar, el prompt "ap:" del que hablábamos antes. El boot loader dispone de una serie de comandos que nos permitirán recuperar el AP y que podemos ver introduciendo el símbolo ?:

ap: ?
           ? -- Present list of available commands
         arp -- Show arp table or arp-resolve an address
        boot -- Load and boot an executable image
         cat -- Concatenate (type) file(s)
 clear_ether -- clear ethernet port statistics
        copy -- Copy a file
      delete -- Delete file(s)
         dir -- List files in directories
dump_save_regs -- dump saved regs in OCM
       etest -- test emac driver code
  ether_init -- initialize ethernet port
  flash_init -- Initialize flash filesystem(s)
      format -- Format a filesystem
        fsck -- Check filesystem consistency
        help -- Present list of available commands
    init_pci -- initialize pci bridge
    led_test -- cycle led patterns
      memory -- Present memory heap utilization information
       mkdir -- Create dir(s)
        more -- Concatenate (display) file(s)
      rename -- Rename a file
       reset -- Reset the system
  reset_gpio -- reset gpio
       rmdir -- Delete empty dir(s)
         set -- Set or display environment variables
    set_baud -- set baud rates
    set_gpio -- set gpio
   set_sleep -- Pause (sleep) for a specified number of seconds
  show_ether -- show ethernet port statistics
    show_pci -- show pci setting
switch status -- report push button switch status
         tar -- extract or listing a tar file
    test ram -- read at address
   tftp_init -- Initialize tftp file system
        type -- Concatenate (type) file(s)
       unset -- Unset one or more environment variables
     version -- Display boot loader version


Recuperando la imagen

 Para volver a cargar una imagen válida en nuestro AP vamos a necesitar:

  • Conexión por consola al AP (vía PuTTY, TeraTerm o nuestra aplicación de consola favorita) y conexión por cable ethernet entre el AP y un PC (o un switch al que vayan conectados AP y PC).
  • Un servidor TFTP (tftp32 sirve perfectamente) corriendo en el PC con la imagen que vayamos a cargar en el AP.
  • Configurar los parámetros adecuados en el AP y a continuación cargarle la imagen.

Un AP Cisco 1131.
Como ejemplo usaremos la recuperación de un AP Cisco modelo 1131.

El AP arranca con una serie de parámetros por defecto que podemos ver con el comando set:

ap: set
 

?=
DEFAULT_ROUTER=10.0.0.1
ENABLE_BREAK=no
IP_ADDR=10.0.0.1
MANUAL_BOOT=no
NETMASK=255.255.255.224
RELOAD_REASON=36
TERMLINES=0


Los parámetros que nos interesan son DEFAULT_ROUTER (la puerta de enlace), IP_ADDR (la IP de la interfaz ethernet del AP) y NETMASK (la máscara de red). Tenemos dos opciones:

  • O configuramos el PC al que vaya conectado el AP con una IP entre 10.0.0.2 y 10.0.0.30 (fijaos en la IP y máscara que ya tiene el AP por defecto) para que ambos puedan verse.
  • O, más comodamente, configuramos el AP con una IP, una máscara y un puerto de enlace en el rango de nuestra red para poder acceder al TFTP sin problemas.

En nuestro caso elegimos la segunda opción. El AP está conectado a la LAN donde reside el PC con el TFTP corriendo; la red en nuestro caso es 192.168.1.0/24 (y por tanto máscara 255.255.255.0) y puerta de enlace 192.168.1.1. Asignaremos al AP la IP 192.168.1.220 y de paso inicializaremos la interfaz ethernet por si durante el arranque no se hubiese inicializado correctamente.. Los comandos para configurar los valores adecuados en el AP son los siguientes:

ap: set IP_ADDR 192.168.1.220

ap: set NETMASK 255.255.255.0

ap: set DEFAULT_ROUTER 192.168.1.1

ap: ether_init

Initializing ethernet port 0...
Reset ethernet port 0...
Reset done!
ethernet link up, 100 mbps, full-duplex
Ethernet port 0 initialized: link is up


Verificamos que ahora los valores son los que queremos:

ap: set

?=
DEFAULT_ROUTER=192.168.1.1
ENABLE_BREAK=no
IP_ADDR=192.168.1.220
MANUAL_BOOT=no
NETMASK=255.255.255.0
RELOAD_REASON=36
TERMLINES=0


Todo está correcto, pero hay una peculiaridad: si desde nuestra red hacemos ping a la IP del AP no obtendremos respuesta. Esto se encuentra dentro del comportamiento normal del AP en este momento.

Ahora toca inicializar el sistema de ficheros tftp en el AP:

ap: tftp_init

tftp_init success: You can now use tftp file system!


Ya podemos intentar la transferencia de la imagen del TFTP del PC a nuestro AP. En nuestro caso usaremos una imagen autónoma con nombre "c1130-k9w7-tar.124-25d.JA.tar". El comando para cargarlo tiene la siguiente forma:

ap: tar <-table | -xtract> <tar file> <destination>

Lo que queremos es extraer la imagen, que está en formato tar, en la flash del AP, por lo que el comando final será, suponiendo que el PC donde está corriendo el TFTP tiene IP 192.168.1.10:

ap: tar -xtract tftp://192.168.1.10/c1130-k9w7-tar.124-25d.JA.tar flash:

En seguida vemos el resultado:

extracting info (283 bytes)
c1130-k9w7-mx.124-25d.JA/ (directory) 0 (bytes)
c1130-k9w7-mx.124-25d.JA/html/ (directory) 0 (bytes)
c1130-k9w7-mx.124-25d.JA/html/level/ (directory) 0 (bytes)
c1130-k9w7-mx.124-25d.JA/html/level/1/ (directory) 0 (bytes)
extracting c1130-k9w7-mx.124-25d.JA/html/level/1/appsui.js (557 bytes)
extracting c1130-k9w7-mx.124-25d.JA/html/level/1/back.shtml (506 bytes)
extracting c1130-k9w7-mx.124-25d.JA/html/level/1/cookies.js (5026 bytes).
extracting c1130-k9w7-mx.124-25d.JA/html/level/1/forms.js (17486 bytes)...
extracting c1130-k9w7-mx.124-25d.JA/html/level/1/sitewide.js (16548 bytes)...

.
.
.
extracting c1130-k9w7-mx.124-25d.JA/7101.img (131328 bytes)............................
extracting c1130-k9w7-mx.124-25d.JA/6701.img (131328 bytes)............................
extracting c1130-k9w7-mx.124-25d.JA/info (283 bytes)
extracting info.ver (283 bytes)


La extracción llevará un rato y podemos ir siguiéndola por la consola. Al final volveremos al prompt ap:. Ya solo queda arrancar el AP con el comando boot:

ap: boot

Loading "flash:/c1130-k9w7-mx.124-25d.JA/c1130-k9w7-mx.124-25d.JA"...#####################################...

File "flash:/c1130-k9w7-mx.124-25d.JA/c1130-k9w7-mx.124-25d.JA" uncompressed and installed, entry point: 0x3000
executing...

.
.
.
Proceeding with system init

Proceeding to unmask interrupts
Initializing flashfs...

.
.
.
Press RETURN to get started!
.
.
.
*Mar  1 00:00:20.094: AUTOINSTALL: FastEthernet0 is assigned 192.168.1.69
*Mar  1 00:00:59.196: %LINK-5-CHANGED: Interface Dot11Radio1, changed state to administratively down
*Mar  1 00:00:59.196: %LINK-5-CHANGED: Interface Dot11Radio0, changed state to administratively down
*Mar  1 00:00:59.196: %CDP_PD-4-POWER_OK: Full power - AC_ADAPTOR inline power source
*Mar  1 00:01:00.196: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio1, changed state to down
*Mar  1 00:01:00.196: %LINEPROTO-5-UPDOWN: Line protocol on Interface Dot11Radio0, changed state to down
*Mar  1 00:01:04.759: %SYS-5-RESTART: System restarted --
Cisco IOS Software, C1130 Software (C1130-K9W7-M), Version 12.4(25d)JA, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2010 by Cisco Systems, Inc.
Compiled Thu 09-Dec-10 15:08 by prod_rel_team
*Mar  1 00:01:04.759: %SNMP-5-COLDSTART: SNMP agent on host ap is undergoing a cold start
*Mar  1 00:01:05.714: %LINEPROTO-5-UPDOWN: Line protocol on Interface BVI1, changed state to up
*Mar  1 00:01:13.854: %DHCP-6-ADDRESS_ASSIGN: Interface BVI1 assigned DHCP address 192.168.1.69, mask 255.255.255.0, hostname ap

ap>


Vemos que el AP ha arrancado correctamente y que además ha adquirido una IP por DHCP, con lo que damos por finalizado el proceso de recuperación.

No hay comentarios:

Publicar un comentario