viernes, 6 de enero de 2017

Mikrotik routerboard 411UAHR III: Completando la configuración

Hoy, día de Reyes, vamos a completar la configuración del dispositivo RB411UAHR. Ésta se ha hecho en varias fases.. Eso significa que el artículo lo escribí  en un momento determinado, después cambié algunas cosas porque me había encontrado con problemas o hice mejoras y más adelante (justo ahora mientras estoy escribiendo esta parrafada) voy a completar datos. Intentaré que se quede lo más ordenado posible para que no sea el típico caos de añadir datos que después no pegan ni con cola.

Solucionando el problema del acceso de los DNSs. Tal y como edité el anterior artículo, esos eran valores que equivaldrían a los datos del fichero hosts. Los DNS se ponen desde

/ip dns set listaDNSs

Añadiendo lista de servidores DNS a Mikrotik
Añadiendo lista de servidores DNS a Mikrotik
¡Ojo! La lista de las direcciones IP tiene que ir separada por una coma (,) pero sin espacios entre cada una de las direcciones. 

Además, me he encontrado con una utilidad 

/system route check DIR_IP

que te dice cuál sería el siguiente salto a nivel de direccionamiento. Por lo que si pones una dirección de fuera de la red (por ejemplo, la dirección IP de tus DNSs en internet), debería de indicarte el gateway

Según estoy viendo, existe "otro" ping. Al menos el comportamiento es distinto. En este caso, si lo ejecuto como 

/ping address=IP_2_PING

sí que responde, y además lo muestra en una lista. A diferencia que si accedo desde

/tools ping IP_2_PING

muestra sólo dos líneas con la velocidad en bps.

Por lo tanto, se puede dar por corregida esta incidencia.

Para la fecha y hora, quería configurarle un servidor NTP: 0.es.pool.ntp.org (de memoria). Pero a pesar de encontrarme con problemas para encontrar dónde se hacía, acabo de ver desde

/system clock print

que muestra la fecha, hora y timezone correctamente. Lo dejaré para más adelante (a ver si es que se han perdido utilidades al actualizar).

También es importante: no nos olvidemos de cambiar las contraseñas de los usuarios (en algún momento terminé creando alguno directamente) tanto de los nuevos como de los que vienen por defecto.

Ahora vamos al lío: voy a configurar una de las tarjetas wifi. Este es uno de los casos que he ido cambiando cosas, me he encontrado con otros problemas, etc.

Desde

/interface wireless print

vemos las tarjetas instaladas y su configuración:

Ver tarjetas inalambricas en Mikrotik
Ver tarjetas inalambricas en Mikrotik

Como podemos cometer el error de configurar la tarjeta (en mi caso va a ser la 1) sin seguridad (como me ha sucedido al configurarla y activarla) lo primero que se debería de hacer es ir a

/interface wireless security-profile

Esta sección nos permitirá crear un perfil de seguridad. Es decir: el perfil que indicará, entre otras cosas, el tipo de cifrado que se usará, la contraseña, etc. Un perfil que después se podrá asignar a la(s) tarjeta(s) que deseemos. Tendremos que buscar los distintos parámetros que necesitemos. Tipo de cifrado, clave(s) (wpa/wpa2...) el nombre que le vamos a asignar a esa configuración en concreto (para luego usarla), etc. Me he basado en lo que me indican en la wiki para adaptarlo a mis necesidades. Aunque he hecho unos cuantos cambios este debería de ser un ejemplo válido:

add name=nombre_molon mode=dynamic-keys supplicant-identity=nombre_molon_supplicant authentication-types=wpa2-psk,wpa-psk unicast-cipher=aes-ccm wpa-pre-shared-key="123abc123abc123abc" wpa2-pre-shared-key="123abc123abc123abc" management-protection=allowed

Y ahora ya podremos configurar los parámetros de la tarjeta de red. No nos olvidemos de indicarle qué perfil queremos usar para la seguridad:

/interface wireless
set 1 disabled=yes hide-ssid=yes wps-mode=disabled band=2ghz-b/g/n ssid=red_inalambrica mode=ap-bridge allow-sharedkey=no adaptive-noise-immunity=ap-and-client-mode antenna-mode=ant-a basic-rates-a/g=54Mbps
set 1 security_profile=nombre_molon disabled=no

Importante acordarse del wps-mode, que se me había quedado activado. Sólo lo pondremos si queremos reventar la seguridad que nos otorgan las claves WPA/WPA2.

Tampoco hay que olvidarse de ponerle su propia dirección IP a cada una de las tarjetas wifi con las que trabajemos. Recordemos que se hacía:

/ip address add interface=nombreInterfaz address=direccionIp netmask=mascaraRed 

No des por hecho que están puestas. Muchos cambios de aquí para allá pueden liarte. Y esto podría ser una de las razones por las que no eres capaz de conectarte a esa tarjeta de red en concreto.

Falta otro paso más: activar la comunicación entre las distintas tarjetas del sistema. Por ejemplo, entre las dos tarjetas integradas en el sistema. Eso significa que si se intenta hacer un ping de una de las tarjetas a la otra no vamos a obtener respuesta. También me he encontrado algún ejemplo (o eso parece) en el que usan NAT para hacer esa comunicación. Primero miraré cómo hacerlo con las opciones de bridge. Además, en algún caso he visto un ejemplo en el que configuraban WDS. Aunque me ha costado encontrarlo (y lo tenía en una de las páginas ya abiertas), WDS fundamentalmente convierte varios APs en un hub/switch.

/interface bridge add=nombreBridge
/interface bridge port add interface=ether1 bridge=nombreBridge
/interface bridge port add interface=wlan1 bridge=nombreBridge

Varias cosas sobre el bridge:

  • Su dirección MAC está toda a ceros en consola. En la GUI me aparece con la MAC de la tarjeta ethernet. Habrá que estudiar si se le pone una (por ejemplo, impersonalizando algunas de las que tiene el dispositivo) o si deja tal cual está.
  • He visto cómo le asignan una dirección IP al bridge (como una tarjeta más): 
/ip address add interface=nombreBridge address=ipBridge netmask=netMask comment=descripcion


Con esto he conseguido que un equipo conectado a la wifi pueda salir a Internet a través del punto de acceso. Pero no me deja(ba) hacer ping a otros dispositivos dentro de la misma red. Incluyendo desde el mismo Mikrotik. Hay que tener mucho cuidado al activar y desactivar las distintas direcciones IP que se tengan configuradas. Para solucionar este problema: buscamos en

/ip route print

Veremos que tenemos la dirección del gateway en una línea en la siguiente línea las distintas tarjetas con una sóla dirección IP. Pues fundamentalmente es como si esa dirección IP dijera por dónde va a salir. Ahí, en nuestro caso, tendremos que conseguir que ponga aquella que tiene asignado el bridge. Una forma puede ser ir a

/ip address set NUMERO_IP disabled=yes

para cada una de las que no queremos que aparezcan. Después las podemos volver a activar, pero así se fuerza a que ponga la que queremos que sea la principal. Seguro que hay otras formas, pero esta es una de ellas.

Con respecto a al cliente NTP, he tenido que hacer un ping al servicio 0.es.pool.ntp.org para obtener su dirección IP porque no me está dejando poner su URL (aunque hay vídeos donde sí se ve que se puede hacer).

/system ntp client set enabled=yes primary-ntp=193.145.15.15 server-dns-names=listaDNSs

Y ya tendríamos el equipo puesto en hora (casi) siempre en punto.

Es posible que toque hacer algún cambio más ya que la señal que me aparece en uno de los móviles para la tarjeta mini-PCI es mínima. De todas formas, para la integrada no va nada mal.

A medida que vaya solucionando estos problemas lo iré avisando. Aunque para ello tenga que mirarlo en la interfaz web o la herramienta WinBox que según entiendo al fin y al cabo parsea la interfaz web en una GUI para Windows. 

domingo, 1 de enero de 2017

Mikrotik routerboard 411UAHR II: Configuracion puerto serie

Una vez el dispositivo de Mikrotik está montado y ya tengo el cable nullmodem para conectarme (actualicé el artículo añadiendo en la lista este último), es hora de arrancar el aparatejo.

Probaré a usar como emulador de consola el putty. Y los parámetros que he indicado son:

  • Velocidad: 115200 bps
  • Data bits: 8
  • Bit de parada: 1
  • Paridad: No
  • Control de flujo: según las instrucciones, no funciona del todo bien el control de flujo. Primero probaré a no ponerlo y después veré si tira poniéndolo y después, si acaso, pongo el que nombran: RTS/CTS.
Por lo que quedaría así:

Configuración de putty para acceder al Mikrotik RB411UAHR por nullmodem/puerto serie
Configuración de putty para acceder al Mikrotik RB411UAHR por nullmodem
También es importante ir a la consola de administración de dispositivos, y mirar en la sección de Puertos (COM y LPT) para saber cómo se llama el puerto con el que vais a trabajar (yo lo tengo que cambiar).

Después vamos al árbol de Session y seleccionamos Serial:

Putty para iniciar serial en RB411UAHR
Putty para iniciar serial en RB411UAHR
Al iniciar la sesión no aparecerá nada hasta que no encendamos el cacharro. En mi caso es la primera vez que lo inicio. Y esto es lo que me ha aparecido:

Mirkrotik arrancado en puerto serie
Mirkrotik arrancado en puerto serie
Varias cosas que debería de hacer:
  • Actualizar: me sonaba haber visto que la última versión andaba por la 6 y pico. Como aparece la 5.25, toca actualizar. 
  • Presionar una tecla para acceder al setup. Además, el kernel no lo ha cargado correctamente. 
  • Mirar el usuario y contraseña por defecto. 
Por lo tanto, miraré si puedo configurarlo para que lo conecte a la red cableada y se baje automáticamente la actualización.

Para el primer acceso, usuario por defecto es admin y su contraseña vacía. En la página oficial de Mikrotik ofrecen distintas formas para acceder (entre otras las que he usado yo).

Al introducir las credenciales obtenemos:

Primer inicio de sesión en dispositivo Mikrotik
Primer inicio de sesión en dispositivo Mikrotik
Ahora hay que cambiar la dirección IP por defecto: 192.168.88.1.

Para la consola me ha costado poder acceder a la shell. Me estaba ofreciendo información pero no sabía si era para poder interactuar. Hasta que en momento determinado, la he visto. Ahora, ¿Cómo le indico qué quiero hacer? Los comandos cls, clear, help... No ayudan. Pero en el mismo instante en el que le mandamos el caracter "?" (sin comillas) nos muestra un menú. Si seleccionamos uno de los contenidos de se menú nos lleva a esa "carpeta" (actúa como tal). Y así sucesivamente:

Menú de Mikrotik
Menú de Mikrotik
Lo que no sé es qué diferencia hay entre cada uno de los colores de los elementos mostrados. Si hago un print obtengo la tabla de las direcciones IP:

Mikrotik: ip address print
Mikrotik: ip address print
Y así puedo cambiar la dirección IP:

set 0 comment "comentario" address direcionIP netmask mascaraRed interface ether1

Cambiar IP por defecto a Mikrotik
Cambiar IP por defecto a Mikrotik
Y hay que poner el gateway. Tengo mis dudas de que sea esta la opción, pero según el manual, para el entorno gráfico hay que usar éste, por lo tanto, lo daré por hecho y a ver qué pasa:

add gateway IP_GATEWAY

Configurar gateway en Mikrotik
Configurar gateway en Mikrotik
Y los DNSs, eliminando el que viene por defecto (la direccion IP que venía por defecto):

remove 0
add address IP_DNS1
add address IP_DNS2

Configurar DNSs en Mikrotik
Configurar DNSs en Mikrotik
[Inciso]
Este artículo ya lo tenía escrito, pero no publicado: esta sección realmente añade servidores DNS, sino entradas estáticas (por eso estamos en "static") al más estilo hosts. Aunque lo explicaré en el próximo artículo (esto es un auto-spoiler), la resolución de nombres se puede añadir en /ip dns set servers listaServidores
[/Inciso]

Ahora tengo que buscar dónde está el ping y una vez encontrado, conectar el cable de red.

Al ir a lo que equivaldría a /tools/ping IP_DNS_EXTERNO no obtengo resultados, por lo que el gateway no está del todo bien configurado. Resulta que haciendo más pruebas es extraño: los DNSs que siempre uso sí que me devuelven datos desde otros equipos, desde el RB no, pero sí que hay resultados con los de Google (8.8.8.8, 8.8.4.4). 

Quiero revisar los temas de las licencias, porque me da que si no lo gestiono bien, me puedo llevar la desagradable sorpresa de que se resetee él solo a las 24 horas de haberlo encendido. Pero buscando bastante me he encontrado con que con la wiki oficial dice que "los dispositivos RouterBOARD vienen con una licencia preinstalada, si has comprado un dispositivo RouterBOARD, no hay que hacer nada relacionado con las licencias". Por lo tanto, con respecto a este tema ya puedo estar tranquilo. 

Fin día 1

Día 2:

Mientras, más cosas a tener en cuenta: el reloj. Mientras estaba entrando de nuevo al sistema, me he acordado del reloj, que está desactualizado (ahora estamos en 1970). Buscando en el manual, indican que a partir de la versión 6.27 se puede hacer automáticamente (autodetect). Una vez más, la actualización ayudará mucho. Y aun así, también está el cliente ntp. 

Antes de nada: actualización (y veamos si puede descargarse las cosas teniendo en cuenta que sólo consigue hacer ping a algunas redes)

De acuerdo a lo que me indican, una actualización de todo el sistema no la puedo hacer con la consola. Por lo tanto, tiraré vía web. 

En la página oficial de descargas buscamos el modelo de nuestro dispositivo en la lista, tal y como he marcado de ejemplo en la imagen:

Paquetes de descarga de actualizaciones de Mikrotik
Paquetes de descarga de actualizaciones de Mikrotik

Después, desde la interfaz web, vamos al menú File, y seleccionamos el fichero *.npk. En mi caso, también he seleccionado el fichero .zip. Puede que hubiera sido mejor haberlo hecho en dos pasos. Nada más reiniciar se procede a la instalación:

Actualización del Mikrotik 01
Actualización del Mikrotik 01
Y el proceso:

Actualización del Mikrotik 02
Actualización del Mikrotik 02
Para que al reiniciar:

Mikrotik actualizado
Mikrotik actualizado

/system routerboard upgrade

Y al reiniciar ya lo tenemos. 

Los siguientes pasos los haré en el próximo post para evitar alargar este mucho más. Entre otros terminaré de hacer alguno de los pasos que ya he comentado y que se han quedado en el tintero.

¡¡¡Por cierto!!! ¡¡Feliz año nuevo!!

miércoles, 28 de diciembre de 2016

Webcam leyendo huellas dactilares

¿Os he contado alguna vez que he conseguido hacer que la webcam de mi equipo actuase de lector de huellas?

Aunque al final ha sido sencillo, me ha dado algunos problemas. Por lo que no te recomiendo que lo hagas si no estás muy seguro. El proceso que se está explicando en la fecha de publicación de este artículo podría dejar el registro en mal estado. Si quieres replicar el proceso es bajo tu responsabilidad:

  1. Con el software de la webcam me he sacado foto de la huella dactilar en cuestión. Esa foto la he guardo en c:\Windows\System32\ con el nombre fngprint.tif porque otro formato dañaría la calidad de la imagen.
  2. Después, he creado un fichero en c:\Windows\System32\drivers llamado fngprint.inf, al cual accederá el driver de mi webcam: lgtec.sys. Este fichero .inf tendrá el siguiente contenido
[rhand]
finger1=c:\Windows\System32\fngprint.tif
  1. Ahora toca actualizar la clave de registro de nuestro usuario. Por lo que tendremos que ir a la carpeta HKEY
    _USERS\_USER_SID_\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\AccessHW\
En esta clave hay que añadir una clave de DWORD: se llamará fngprint y tendrá como valor la ruta del driver fngprint.inf.

Ahora sólo queda cerrar sesión y ya tienes tu propio lector de huellas sin necesidad de incluir uno cuando en tu equipo no viene integrado. 

¡¡Espero que lo podáis aprovechar muy bien!!

domingo, 25 de diciembre de 2016

Mikrotik Routerboard 411UAHR I: Montaje

Llevaba mucho tiempo queriendo hacer un cacharro de estos. Y haciendo una búsqueda me encontré con este tipo de tarjetas. Son de la marca Mikrotik, cuyo hardware lo venden como Routerboard (en ocasiones se encuentra como las siglas RB). Pues bien, Papá Noel, durante todo un mes me ha estado trayendo los distintos componentes para montarme el cacharro.

Para montarme el dispositivo estuve buscando las distintas tarjetas que podía adquirir. Una de las cosas que quería era que tuviese puerto serie (el DB9 de toda la vida). La razón: ¿frikismo? ¿poder configurar el aparato desde el puerto sin depender de direcciones IP? No sé. Pero después de MUCHO (meses) tiempo mirando, comparando, volviendo a mirar... Terminé decidiéndome por uno en concreto: RB411AH. Sin embargo, cuando me llegó, resulta que era otra ligeramente superior: RB411UAHR. Y lo bueno es que todos los componentes que ya había pedido eran perfectamente válidos. Así, para montar el aparato necesitaríamos:

  1. Tarjeta: RB411UAHR
  2. Caja: CA411-711 *1
  3. Fuente de alimentación: 18POW
  4. Antenas. En mi caso adquirí unas TP-Link. TL-ANT2405CL.
  5. Pigtails: MMCX/RP SMA Jack bulkhead. Debería de ser esta. *2
  6. Cable USB-Serie: Goobay 68875 [update] y nullmodem Nimo Electronic[/update]
  7. Tarjeta Mini-PCI: R52nM
Creo que primero contaré el primer problema que tuve. La caja que veréis en la foto no se va a corresponder exactamente con lo que se muestra en las imágenes oficiales. La parte trasera no tiene los mismos agujeros (tiene 4 en vez de los 3 que podréis ver en las que nos muestran). Y el otro problema es que encontré (y lo he perdido) un sitio con la foto de una caja igual a la que me llegó en la que indicaban que no serviría para conectores MMCX. Además de haber comparado las medidas encontradas (4x12x18) no coincidían en altura  Total, que la devolví (a parte de otros problemillas varios) y cuando pedí otra a otro proveedor me llegó la misma. Total, que decidí probar y como veréis en las fotos, por lo pelos SÍ encaja. 

Este es el material que he necesitado:

Mikrotik RouterBoard 411UAHR: Material
Mikrotik RouterBoard 411UAHR: Material
Como se puede observar, la caja incluye más cosas (importante): los distintos frontales, las tapas para las antenas, tornillos (tanto internos como externos) y una palometa que va a un tornillo de marcado con el símbolo de toma de tierra.

Con este este material vamos ensamblando las piezas como si de un Mecano se tratase. 

La primera operación fue instalar la tarjeta mini-pci en la placa:

Mikrotik 411UAHR + Mini-PCI R52nM
Mikrotik 411UAHR + Mini-PCI R52nM
Ahora toca instalar este bloque en la carcasa. Como he comentado, y ante el temor de no poder terminar de cerrar la caja, lo hice por pasos. Primero puse dos tornillos de los cuatro que tenía y miré si se podía cerrar:

Mikrotik RB411UAHR + R52nM + Carcasa CA411-711
Mikrotik RB411UAHR + R52nM + Carcasa CA411-711
Como se puede apreciar, hay espacio "suficiente" para que se termine de cerrar. Por lo que tocaba hacer la siguiente prueba con los pigtails. Me he encontrado con que la foto con la prueba de estos la hice más adelante: 

Mikrotik 411UAHR + Pigtails
Mikrotik 411UAHR + Pigtails
Además, sólo tenía dos pigtails. Los compré pensando en una tarjeta no tuviera integrada Wifi. Por lo que uno de los que ya disponía tenía que ir a esta integrada. Además, la pegatina en el RJ45 lo decía: es obligatorio ponerle antena a la integrada. 

Con respecto a estos pigtails hay otro problema. Como se puede ver (más adelante es posible que sea mejor) la caja se podrá cerrar. Pero resulta que sobresalen bastante; es decir: son más pequeños que los agujeros que tiene la caja (según he leído a posteriori, son de tipo N-Female) por lo que van a quedar medio colgando y por lo tanto, las antenas quedarán a la virulé

Mikrotik RB411UAHR, CA411-711, R52nM
Mikrotik 411UAHR casi montado
Buscando una solución, me encontré con un foro del propio Mikrotik que decían que también se podía agujerear con un taladro, algo que estoy dispuesto a hacer, o poner unas cabezas enormes u otros pigtails, que ya veré si lo hago o busco una solución a lo McGiver (mi primera opción). 

Una vez cerrada la caja, puse el frontal, quedando así:

Frontal CA411-711
Frontal CA411-711
Y ya está. A parte del problema con las antenas, ya lo tendría para iniciarlo (que aún no lo he hecho). 

Mikrotik RB411UAHR en CA411-711 cerrada
Mikrotik RB411UAHR en CA411-711 cerrada
Y en principio esto es todo. Seguro que me dejo algún detalle, pero para ver cómo queda un sistema de estos comprado por piezas seguro que es suficiente (y más de uno le puede ayudar a saber qué puede comprar y qué le puede salir rana).

Ya, para otra ocasión, espero poder contar algo más de estos cacharros. Pero mientras que no me pegue... Y si consigo hacer algún apaño para las antenas, también lo diré por aquí. 

sábado, 24 de diciembre de 2016

¡Felices fiestas! - 2016

Espero que todos vosotros tengáis unas felices fiestas y felices navidades en este año 2016 que está terminando. Lo importante es pasarlo bien con las personas más importantes para vosotros. Espero que así sea. ,Y ya de paso, si se tienen vacaciones, mejor que mejor, ;) Para celebrarlo, os dejo aquí un video, una vez más, de Coldplay. Espero que os guste:

martes, 29 de noviembre de 2016

Clonado de discos con fallos: ddrescue

Hace unas dos semanas me pasaron un equipo para que lo arreglase. El problema: una actualización de Windows no se instaló correctamente. Lo que podía ser algo sencillo terminó con un cambio de disco.

Para empezar, el sistema intentaba hacer una reparación por su cuenta, es decir: había detectado un fallo y automáticamente entraba en modo reparación. Y no finalizaba.

Tampoco permitía acceder al menú avanzado pulsando F8, por lo que en ese instante esa opción para buscar soluciones no estaba disponible.

La única opción sería arrancar con un USB de Windows 10 y buscar la solución desde el pincho. Una de las configuraciones que hice fue indicarle al equipo desde el setup de la BIOS que me permitiera pulsar F2 o F12 para mostrar el menú de los dispositivos de arranque. Una vez tuve montada la unidad de arranque me llevé una desagradable sorpresa: quise tirar para atrás la instalación de la actualización a través la opción del punto de restauración sin ningún éxito: no se había creado ninguno. Raro, teniendo en cuenta que en teoría se crea uno justo antes de que se apliquen las actuaciones.

¿Qué más podía hacer? Solicitar hacer la auto-reparación, pero desde el USB. Tampoco hubo éxito. Si terminaba, era para reinicarse otra vez mostrando incluso mensajes de error.

¿Qué más hice? En alguno de estos arranques con el USB hice el famoso

sfc /scannow

Pero tampoco funcionó. De hecho, si no recuerdo mal, apenas empezó y ya había finalizado.

Por lo tanto, configuré el arranque de Windows para que me mostrara un menú con las distintas instalaciones para tener acceso a la posibilidad de pulsar F8 con total éxito:

bcdecit /set {bootmgr} displaybootmenu yes

Así, ya con acceso al menú principal, decidí arrancar en modo seguro, en el que se supone que se cargarían los menos controladores posibles. Y ahí estaba, arrancando normalmente hasta que me ofreció parar el checkdisk. No recuerdo si lo dejé pasar en ese instante o no. Creo que no. Pero después también daría su trabajo. El caso es que al rato ya estaba con acceso al sistema. Por lo tanto, reinicié, entré en modo normal (no usé el menú de F8) y ya estaba dentro. Esto parecía que ya sólo quedaba montar la actualización que había dado problemas y terminar de pasar el chkdsk en condiciones. Nada más lejos de la realidad.

Por un lado, se veía que el equipo de vez en cuando se bloqueaba un poco. Y por otro, que la actualización (KB3200970: lo bueno que tiene el guardar las ventanas durante meses) no se instalaba ni "para atrás". Estuve buscando y según los hallazgos resulta que esa actualización había estado dando problemas. Además, según los logs de Windows Update ya se había intentado instalar bastantes veces. Por lo que decidí pasar a la siguiente tarea: revisar el disco duro.

Como en cada arranque seguía pidiendo pasar el chequeo, quise forzarlo yo. Como no recuerdo todas las opciones las opciones que puse, puedo enumerar:
  • Desde Windows arrancado
  • Desde el USB
  • Arrancando Windows: En el que se quedaba en el 4% durante aproximadamente una hora.
Sobretodo esta última opción, que ya la había visto en algún momento (lo dejaba un poco menos de tiempo) no me terminaba de gustar. Desde el sistema arrancado con el disco duro no terminaba de convencerme y no había resultados que ayudasen. Incluso llegué a dejar la operación una noche y poco a poco se iba mostrando cómo el tiempo para finalizar iba subiendo, llegando a indicar 4 horas y pico para luego terminar a medias. Por lo que decidí hacer otra cosa: sabiendo la marca del disco, buscar en la página de su fabricante y coger la herramienta de validación que ofrece. ¿Quién mejor que el propio fabricante para decirte si el disco está bien o no? Una vez instalada hice dos pasadas: la express y la exhaustiva. El resultado casi se olia: en ambas opciones la herramienta indicaba que había errores en el disco. Sí, soy consciente de que se podría haber intentado arrancar el equipo y haber hecho el scan con el sistema offline.

Por lo tanto, para resumir, tenemos:
  • Un equipo que no ha sido capaz de instalar en varias ocasiones una actualización (¿error de la propia actualización?¿del sistema operativo?¿de hardware?).
  • Un sistema operativo que cada pocos minutos, por no decidir algo menos, se bloquea durante unos segundos
  • Un disco duro que el sistema operativo no es capaz de reparar los sectores de su sistema de ficheros y la herramienta del fabricante indicando errores.
Ante la posibilidad de que el disco duro pudiera romper del todo antes o después, con la consecuente pérdida de datos, hice una operación que no era nueva para mí: clonar ese disco cuanto antes. Con una salvedad: la herramienta de clonado sería otra a la usada habitualmente (dd): ddrescue. (Por si estáis pensando en una clonadora, ahora mismo no dispongo de ninguna. Pero todo se andará, :D ).

Dos pasos: físico y lógico.

El físico: comprar un disco duro nuevo de, como mínimo, el tamaño original del disco. Incluso de la marca si es posible. A la vez, adquirir una carcasa para convertir el interno original a USB. Colocar cada uno de los discos en su posición: instalar el disco nuevo en el equipo y el antiguo en la carcasa. La carcasa no se enchufa todavía. Aunque se pueda hacer de la otra forma (clonar y después cambiar), me gusta hacerlo así.

Ahora, el lógico, es decir, lo que hice con software.

Arranqué un Kali y tirando del entorno gráfico que trae por defecto usé un terminal. No sabría decir si ddrescue estaba instalado. Mis primeros intentos de lanzarlo no funcionaron, pero el resultado final es que lo pude usar.

Aquí eché de menos un aparatito que me podía salvar de un posible desastre: un bloqueador de escritura. Resulta que esta operación es delicada porque si te equivocas podrías clonar un disco completamente nuevo (o no, según te estén vendiendo un disco que ya ha sido usado) sobre el importante, perdiendo todos los datos. Lo bueno de ddrescue con respecto a dd es que el primero es capaz de continuar con sectores defectuosos e intentar recuperar sus datos. Sin embargo, dd se puede llegar a parar o, a una mala, si se le indica conv=noerror,sync (lo he tenido que buscar, ¿eh?) continúa si se encontrasen errores, pero no hace el intento de ver si se pueden recuperar (o eso es lo que he entendido).

Como nunca había usado ddrescue busqué la información para ejecutarlo. Una de las cosas que he me ha gustado mucho es que no tienes que preocuparte de si pones el parámetro de origen y destino mal (En dd ¿if era la salida de la lectura o era la entrada de lo que vas a escribir? ¿Lo contrario con of? Te acuerdas durante un tiempo pero luego...):

ddrescue lista_parámetros dicoOrigen discoDestino fichero_log

Así de sencillo. Además, la otra cosa buena que tiene es que al guardar los resultados en un fichero de salida (.log, .txt, .etc) si se parase el proceso podrías continuar más adelante. Y es muy importante, porque puedes hacer distintas pasadas tal y como recomiendan hacer. Consejo que yo seguí.

ddrescue -v -R -n /dev/sdc /dev/sda /root/result_v2.log -f

Por un lado, muy arriesgado mandar la salida a una carpeta virtual. Si algo iba muy, muy mal habría que repetir toda la operación. Pero no había más conexiones USB: 1 para el USB de arranque, 2 para el disco que estábamos clonando.

  • -v: verbose, para mostrar más información
  • -n: para ignorar los errores y no hacer nada con ellos.
  • -R: según pude leer, va de "atrás adelante". Leí que si había problemas el disco era recomendable. Y aquí (https://lists.gnu.org/archive/html/bug-ddrescue/2012-05/msg00006.html) explican más o menos cómo funciona, lo que yo no era consciente era que esta opción ralentizaría el proceso.
  • -f: al detectar que podrías estar machacando información (porque se cree que hay una partición en el destino), te obliga a poner este parámetro, que significa "forzar", como indicando que estás seguro de que quieres continuar.

Poco más de 24 horas después, el proceso terminó con apenas 22 errores y unos 300 KB en errores.

ddrescue -v -R -n
ddrescue -v -R -n

Para intentar recuperar los pocos errores que dio hice una segunda pasada:

ddrescue -v -R -r1 /dev/sdc /dev/sda /root/result_v2.log -f

  • -r1: Todo sea dicho, he visto distintos formatos. El 1 lo he llegado a ver junto a la r, separado, distintos valores: -r 3. En mi caso, seguí esta indicación. En teoría es el número de intentos que tiene que hacer para recuperar ese dato.

Aunque no tengo la foto final, tardó media hora de reloj, aparecieron más errores pero el total ocupaba menos que lo que muestro en la imagen de arriba. Al final, di el disco por clonado y recuperado.

Hasta aquí, después de varios días pegándome con el disco, ya teníamos un disco completamente nuevo con el sistema operativo tal cual estaba cuando lo apagamos, con una actualización pendiente de instalar y el sistema operativo esperando a realizar un checkdisk.

Para no alargar más la historia, sólo resumir que fue coser y cantar: pude arrancar correctamente el sistema, la actualización se instaló sin dar ningún problema y el chkdsk pasó del 4% en tiempo record.

Con lo que he podido contar (seguro que alguna cosa me he dejado en el tintero como, por ejemplo, las distintas veces que creé los puntos de restauración): ¿qué habríais hecho vosotros? ¿Qué herramientas con las contáis o que sabéis hubierais usado para arreglar este equipo?

jueves, 13 de octubre de 2016

Timestamp con TSA con HTTP

Si quisiéramos enviar una request a un timestamp server, ¿Cómo lo harías? Yo conozco una TSA que antes me funcionaba (las pruebas que hacía tiraban) hasta que hace poco me encontré con que ya no tiraba el método empleado. Al menos tengo pruebas realizadas que daban resultado y ahora ya no. ¿Por qué? Porque me ahora me está pidiendo que le envíe los datos por post. [Actualización antes de publicar] Porque aun pudiendo haber funcionado con el método de más abajo, el problema no era que no estuviera llamando por post. Realmente en alguna prueba debí de quitar algún carácter y dejó de funcionar [fin actualización] Si accedemos directamente nos encontramos con:
The GET method is not allowed. Try with POST!
La siguiente pregunta es: ¿Cómo sé qué parámetros tengo que pasasrle si quiero continuar usando curl? Hice lo que todo el mundo haría en su sano juicio: leerse la mitad de la RFC1381. Es cierto que hay muchas cosas que se te escapan hasta que encuentras la sección que dice:
There is no mandatory transport mechanism for TSA messages in this document. The mechanisms described below are optional; additional optional mechanisms may be defined in the future.
Y te enumera las distintas formas. Entre las mencionadas están e-mail, fichero (con extensión .tsq o Time-Stamp query), sockets y el que estaba buscando:  HTTP(S). Pero la información que muestra ya la sabemos, porque lo estábamos usando. Pero a partir de otra búsqueda pude encontrar en Stackoverflow que hablaban de un "navegador" específico para estos menesteres. Por lo tanto, para enviar a una TSA un fichero .tsq hay que usar la herramienta tsget.

En teoría deberíamos de poder acceder a ella directamente porque se espera que esté en el path. Pero en mi caso la encontraba. Ni siquiera probando whereis. Así, con otra búsqueda más, apareció en /usr/lib/ssl/misc/. Además, lo más curioso de todo es que el comando man sí que mostraba el manual.

Ahora que ya la tenemos, nos encontramos con un nuevo bache: esta herramienta está hecha en perl y nos muestra un mensaje de error:
"&WWW::Curl::Easy::global_cleanup called at ./tsget line 196."
Aunque después descubrí que sí que había funcionado con este mensaje, hice una nueva búsqueda en la que me encontré con que se podían instalar dos cosas para eliminar el mensaje:
  • Una librería para curl y openssl: 
    • apt-get install libcurl4-openssl-dev
  • Una librería de perl:
    • perl -MCPAN -e "CPAN::Shell->force(qw(install WWW::Curl::Easy));"
Aunque en una de ellas empezó a pedirme que configurara ciertos parámetros y me ofreció hacer casas automáticamente, primero decidí hacerlo a mano. Pero terminé desistiendo y cancelé el proceso para más tarde repetirlo y permitirle hacerlo automáticamente. También hay que tener en cuenta que es posible que te haga falta instalarlo para cada usuario (lo hice con root y parecía que me también me pedía ejecutar el comando de perl para mi usuario mortal).

Una vez instaladas las cosas y encontrarme con que seguía saliendo el mensaje, pero también obtenía resultados, se puede explicar las distintas formas de llamar a la TSA. 

¿Qué estaba haciendo antes y cómo se puede hacer con el nuevo comando?

Antes estaba ejecutando esta línea, pero sin los caracteres en negrita (con ellos funciona, sin ellos no):

cat miFich.tsq > curl -s -S -H "Content-Type: application/timestamp-query" --data-binary @- http://tss.accv.es:8318/tsa -o result.tsr

Con tsget se podría ejecutar de esta forma:

./tsget -h http://tss.accv.es:8318/ts -o /ruta/destino/fich.tsr /ruta/fichero/query.tsq

Ahora si se quiere se podría añadir la ruta de esta herramienta al $PATH para no depender de tener que poner la ruta completa de los ficheros de entrada/salida. Para eso tendremos que editar el fichero /etc/profile. Para mi usuario mortal funciona, que es lo importante.

¿Qué podemos contar de todo esto?

  • Que para estas cosas nos tenemos que acordar de mirar todos los comandos letra a letra, que a veces leemos lo que queremos, no lo que realmente hay escrito.
  • Que para trabajar con una agencia de sellado de tiempo, además de curl tenemos tsget.
  • Que si una cosa no funciona, siempre puedes terminar buscando una posible solución en el RFC del tema en cuestión, si es que existe. En mi caso me lo leí hasta la mitad y como mínimo alguna cosa curiosa aprendes aunque no consigas solucionar el problema.