viernes, junio 27, 2014

MacOS X Mavericks y Wifi: Curioso problema de conectividad

Tendo desde hace bastantes años instalado un punto de acceso F5D7130 de la casa Belkin que he usado con sucesivas versiones de MacOS X desde la 10.4 Tiger sin ningún tipo de problema de conectividad. Está configurado para usar WPA con AES como algoritmo de cifrado

Hace un par de días, me traje el ordenador del trabajo que que utiliza MacOS X Mavericks. Este ordenador era incapaz de conectarse correctamente a Internet a través de la red WiFi que usaba dicho punto de acceso. Los síntomas eran curiosos:

  • El ordenador se conecta a la WiFi.
  • Configurado para usar DHCP, no obtiene respuesta desde el servidor DHCP del router.
  • Configurado una IP fija, tampoco es capaz de llegar al router.
  • Si levanto un tcpdump en la interfaz de red, se ve perfectamente tráfico de difusión con origen en otros ordenadores conectados a la Wi-Fi

Tras probar todo tipo de cosas, decidí cambiar en el punto de acceso el algortimo de cifrado de AES a TKIP. Automáticamente, el Mac se conectó a la red sin problemas. El inconveniente es que TKIP tiene problemas de seguridad que pueden comprometer la comunicación.

jueves, junio 26, 2014

Tres libros sobre redes TCP/IP

Hace unos días me planteaba que tres libros recomendaría a alguien que quisiera aprender sobre redes, centrándome en el mundo TCP/IP. Mi terna sería la siguiente:

TCP/IP Illustrated, Vol. 1: The Protocols

El primer volumen de la serie TCP/IP Illustrated donde se describe la familia de protocolos TCP/IP. El sencillo estilo de Stevens es capaz de describirnos los protocolos desde el punto de vista de uso, no de las áridas especificaciones de las mismas. En el año 2011 se ha publicado una nueva edicción de este libro.

Interconnections: Bridges, Routers, Switches, and Internetworking Protocols (2nd Edition)

El estupendo Interconnections: Bridges, Routers, Switches, and Internetworking Protocols de Radia Perlman. Publicado en 1999, pero que trata en profundidad todos los algortimos de rutado y los protocolos que se usan el el mismo. Desde los usados en la capa ethernet, como el Spanning Tree Protocol, hasta algoritmos de rutado inter dominio como intra dominio: OSPF, IS-IS, BGP. Si de verdad te interesa saber como el funcionamiento interno de los protocolos que constituyen el corazón del rutado de Internet, este es tu libro.

Unix Network Programming, Volume 1: The Sockets Networking API

Si se quiere utilizar los protocolos TCP/IP existen diversas APIs para usar. El API más universal para acceder a los protocolos deriva del mundo Unix y se conoce como API sockets: Estupendamente descrita en Unix Network Programming, Volume 1: The Sockets Networking API , con multitud de ejemplos en diferentes sistemas operativos. De este libro hay tres edicciones..

miércoles, junio 18, 2014

Promox: Controlar el estado del enlace de red en una máquina KVM

Proxmox es una plataforma de virtualización que ofrece tanto la posibilidad de utilizar contenedores - paravirtualización - a través de openvz como virtualización de sistemas a través de kvm, plataforma de virtualización basada a su vez en qemu. Lo suelo usar para probar sistemas Linux con máquinas virtuales a través de kvm.

Hace unos días tuve la necesidad de comprobar con un software determinado respondía a la pérdida del enlace ethernet y si se disparaban los procesos que tenía configurado correctamente. Para poder interactuar con una máquina virtual que está corriendo se utiliza la utilidad qm, concretamente la opción monitor, acompañado por el vmid de la máquina que se quiera controlar.

root@proxmox ~ # qm monitor 101
Entering Qemu Monitor for VM 101 - type 'help' for help
qm>

Una vez conectados al control de la máquina virtual, se puede obtener la información de las interfaces de red que se tienen configuradas en el mismo con la ayuda del comando info network

qm> info network
net0: index=0,type=nic,model=e1000,macaddr=56:7c:16:86:6b:4a
\ net0: index=0,type=tap,ifname=tap101i0,script=/var/lib/qcmu-server/pve-bridge,downscript=/etc/kvm/kvm-ifdown net1: index=0,type=nic,model=e1000,macaddr=8e:53:38:3c:01:cc
\ net1: index=0,type=tap,ifname=tap101i1,script=/var/lib/qemu-server/pve-bridge,downscript=/etc/kvm/kvm-ifdown net2: index=0,type=nic,model=e1000,macaddr=46:64:f4:b1:47:6c
\ net2: index=0,type=tap,ifname=tap101i2,script=/var/lib/qemu-server/pve-bridge,downscript=/etc/kvm/kvm-ifdown

Ahora, con ayuda del comando set_link nombre on|off se puede controlar el estado del enlace. Por ejemplo, para simular la desconexión del cable en la interfaz net1:

qm> set_link net1 off

Referencias

viernes, junio 13, 2014

Fotografiando en analógico

En esta época de cámaras digitales, puede que no tenga demasiado sentido seguir fotografiando en analógico. Sin embargo, tenía cierto gusanillo por volver a tirar en analógico tras lo que he ido aprendiendo estos últimos años con las digitales. Más pausado, pensando mejor como hacer las fotos - aquí cada copia cuesta dinero - y como ver la exposicion. Tras estar tirando las Navidades pasadas con una vetusta Canon AE-1 Program de más de 30 años que tenían mis padres , decidí buscar una cámara de segunda mano analógica para calmar el gusanillo. Por algo más de 20 euros, conseguí una Nikon F65 en bastante buen estado. Enfoque automático, varios modos programables, lenta como ella sola enfocando - acostumbrado a una D80 -, sincronización de flash 1/90. Pero lo suficiente para pasar un rato divertido con ella.

Después de revelar el carrete - reconozco que no me esperaba sacar 23 de las 24 fotos -, me ha llamado muchísimo la atención lo bien que quedan las fotos en papel. Supongo que en parte, porque no suelo pasar las fotos que hago con la digital a papel. Ya aproveché el revelado para que me digitalizaran las fotos. Aquí os dejo dos fotos tomadas en el templo de Debod, eso sí al medio día y con luz bastante dura.


Templo de Debod

domingo, junio 08, 2014

Autotools, tutorial de uso (V): Añadiendo opciones

Cuando se están generando scripts de configuración con ayuda de las autotools, puede que interese activar o desactivar opciones en función de parámetros en la línea de comandos que se le pase al script. Por ejemplo, si se quiere que el script reciba un parámetro que sea --enable-sys-debug, que indique que el programa debe de configurarse para tener depuración interna

La macro que ayuda a implementar de manera sencilla esta funcionalidad es AC_ARG_ENABLE. Esta macro recibe cuatro parámetros, los dos primeros obligatorios y los otros dos opcionales.

  • feature que es la propiedad que deseamos activar a través de la macro.
  • help Que es una cadena que indica el texto de ayuda. Suele ser bastante cómodo usar la macro AS_HELP_STRING que nos ayuda a formatear el texto de ayuda de manera sencilla
  • Acciones si si: Conjunto de shell script (o macros) si usamos la opción que queremos
  • Acciones si no: Conjunto de shell script (o macros) si no usamos la opción.

Por ejemplo, se va a implementar la opcion --enable-sys-debug, la cual si está presente definirá una macro en el preprocesador C que se llamará HAVE_SYS_DEBUG y tendrá valor la cadena "1" mientras que sino está presente dicha macro tendrá el valor "0". Como en los casos anteriores las fuentes están en Autotorial tut3. La parte interesante en este caso está en las siguientes líneas del fichero configure.ac:

AC_ARG_ENABLE(sys-debug,[AC_HELP_STRING([--enable-sys-debug],
    [Habilita la depuración interna (por defecto no)])],
    [AC_DEFINE([HAVE_SYS_DEBUG],["1"],[Activada la propiedad 1])],
    [AC_DEFINE([HAVE_SYS_DEBUG],["0"],[Desactivada la propiedad 1])])

Ahora, el script de configure que se generará tendrá una nueva opción que será --enable-sys-debug. Si partiendo del código fuente de la tercera parte del tutorial generamos el script de configure, y vemos la ayuda:

./autogen.sh
...
Optional Features:
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --disable-dependency-tracking  speeds up one-time build
  --enable-dependency-tracking   do not reject slow dependency extractors
  --enable-sys-debug      Habilita la depuración interna (por defecto no)
...

Ahora, si se configura el programa con la opción --enable-sys-debug, compilamos y ejecutamos el programa veremos como el valor de la macro del preprocesador C que hemos definido es "1":

swordcoast:tut3 terron$ ./autogen
swordcoast:tut3 terron$ ./configure --enable-sys-debug
swordcoast:tut3 terron$ make clean
swordcoast:tut3 terron$ make
swordcoast:tut3 terron$ # Omitidas todas las salidas excepto la de este comando
swordcoast:tut3 terron$ ./tut3
HAVE_SYS_DEBUG = 1
swordcoast:tut3 terron$

Si se repite la operación, pero sin pasar el parámetro --enable-sys-debug el resultado de ejecutar el programa sería:

swordcoast:tut3 terron$ ./tut3
HAVE_SYS_DEBUG = 0
swordcoast:tut3 terron

Esta entrada es una introducción al manejo de los parámetros que se le puede pasar en línea de comando a lso configure. Sin embargo hay dos aspectos importantes sobre los cuales se ha pasado por alto:

  • El uso de la macro AC_DEFINE. Hay que explicar donde y como se definen estos valores para usar en el preprocesador de C
  • La lectura de valores en la línea de comandos y como pasar dichos valores a nuestros programas.

Referencias

sábado, junio 07, 2014

Los tipos negativos del BCE y un poco más allá

Ayer, en la rueda de prensa posterior a la reunión del Banco Central Europeo, una de las medidas estrellas que se presentó fue los tipos negativos de depósito , cobrando un 0.1% a los bancos por depositar su dinero en las cuentas del Banco Central. Por ejemplo, la banca española tiene unos 2000 millones de euros depositados en el banco central.

Supongo que el objetivo del banco central es poner a funcionar la polea de la transmisión de la política monetaria que parece ser que está bastante rota. Problema aparte, es pensar si existe una demanda solvente de crédito y que el sistema financiero no se meta otra vez en la barra libre de préstamos.

Sin embargo, a mi me gustaría ir un poco más allá, proyectando esta nueva idea a la relación entre banca comercial y los ahorradores: Se está dando todo tipo de facilidades para funcionar cada vez más sin efectivo. Un ejemplo, es el control del máximo dinero que se puede usar para una transacción en efectivo - siempre con la excusa del fraude -. Pero, ¿qué ocurrirá cuando todos los medios de pagos sean electrónico?. El escenario que me planteo - no sé si será una pesadilla - es que llegado un momento de crisis y si los Estados quieren aplicar políticas de demanda, imponga una tasa negativa a los depósitos que existan en los bancos, con la esperanza de que la gente gaste su dinero al ver que lo va perdiendo conforme pase el tiempo. Es decir, penalizar el ahorro.

No sé si será economía ficción, pero reconozco que es un escenario que me produce mucha intranquilidad. Eso sin entrar, en las posibilidades de control por parte de diversos agentes que pueden aparecer.

martes, junio 03, 2014

TenFourFox

Hay que reconocer el estupendo trabajo que han realizado la gente que mantiene el proyecto TenFourFox, un port del navegador Firefox a las antiguas plataformas de Apple que utilizan PowerPC, con versiones para toda la gama de microprocesadores desde el G3 hasta el G5. Esta opción nos permite utilizar un navagador que se desarrolla y que tiene los problemas de seguridad convenientememte corregidos en máquinas antiguas. El único problema que puede tener es que no funciona ni el Flash ni el Java bajo el mismo, pero tampoco es algo demasiado problemático.

Hay una reflexión interesante que hacer cuando uno utiliza un equipo antiguo para navegar. ¿Por qué ahora necesita uno para realizar las mismas tareas que hace diez años un maquinón?. Aquí no se trata de crujir números en análisis estadísticos, tratamiento digital de señales o virtualización. Se trata de navegar y leer el correo. Eso se hacía perfectamente hace diez años con un navegador o con código nativo. Al final, otra capa por encima, si que conviene mucho a los grandes gigantes de Internet, pero ...