logo

Acerca de

Bienvenido a mi blog, el sitio perfecto para mis inquietudes, experiencias e idas de olla sobre temas de hoy en día.

Historia al azar

Categorías

Últimas entradas

Últimos comentarios

Enlaces

Meta

photo Luis PeraltaEstado Jabber
Ziritione
Castellón Spain
39.997638, -0.064030

Sindica

Sindícame, por cortesía del subliminal Atom.

12 febrero 2009

Desde hace exactamente una semana estoy tomando medidas de temperatura y humedad en mi casa. Y no lo estoy haciendo con un termómetro de mercurio pegado en la pared y apuntando los resultados en una libreta. Más bien decidí aprovecharme un poco de la tecnología y montarlo vía un par de sensores de temperatura y humedad enganchados que cuelgan de un pincho USB.

Topé por casualidad con el proyecto USBTenki (tiempo, en japo) y me dije que ya que teníamos el sistema de videovigilancia listo, por qué no aprovechar otro de los cuatro puertos USB del Mac Mini (mini.ziritione.org). El proyecto tiene todo para montar los medidores completos: desde los esquemas de la placa del circuito hasta el firmware que se ocupa tratar los valores, pasando por el plugin de munin para pintar ya las gráficas bonitas desde el principio.

Si tenéis un ordenador siempre enchufado como es mi caso, es una cosa curiosa que tener en marcha. Cierto es que los valores interesantes serían quizá más bien los del exterior que los del interior de casa, pero por un lado el cable de metro y medio no llega hasta la ventana más cercana y por otro no me apetece tener que agujerear o dejar la ventana abierta.

Me imagino que si veo que la temperatura sube de 28º o 29º una noche, es que hay fiesta en el piso ;) Como es habitual, una imagen vale más que mil palabras:

Temperatura y humedad en mi casa
1 febrero 2009

I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

Del viernes al domingo de la semana que viene repetiré FOSDEM, la conferencia europea de desarrolladores de software libre, en Bruselas. Y esta vez no iré solo: fresus of death viene también. La otra vez que estuve fue en 2005, y ya escribí un resumen de lo que vi. Este año las charlas tampoco tienen mala pinta. Pero lo mejor de estos eventos no son las charlas, sino el ambientillo profundamente geek que las rodea y poner cara a la gente con la que tanto has hablado y nunca has visto.

¿Alguien más tiene pensado ir para allá?

23 diciembre 2008

Últimamente ya no llevo portátil encima en la mayoría de los viajes porque suelo tirar del iPhone para echar un vistazo al correo o navegar rápidamente para algo que necesite. De ahí que venga bien tener el dns2tcp también en el teléfono.

El mérito de esto no lo tengo yo, sino Jay Freeman (saurik), que alguno conocerá por ser el autor de Cydia, el sistema de gestión de software que ha montado para el iPhone basado en Debian. Gracias a él podemos hacer:

wget http://apt.saurik.com/debs/dns2tcp_0.4.3-1_iphoneos-arm.deb
dpkg -i dns2tcp_0.4.3-1_iphoneos-arm.deb

Y a funcionar. Yo intenté montar la toolchain durante un buen rato y desistí, pero sólo hubo que hacerle la sugerencia a Jay y 9 minutos (de reloj) después, habeamus paquete.

14 diciembre 2008

Lo que voy a contar no es nada nuevo. Lo que sí que es nuevo para mí es lo sencillo que se ha vuelto montar un túnel TCP sobre el protocolo del DNS a día de hoy. Si no recuerdo mal, fue el Kaminsky el primero que hizo un PoC (luego llegando a hacer streaming de audio y vídeo). Alex, en su día, también se curró un buen tutorial. La utilidad de estos sistemas no es otra que atravesar un cortafuegos para conectarnos a internet en un caso muy común: el del portal cautivo en los puntos de acceso wifi, como La Fonera u otros tantos típicos en hoteles y aeropuertos.

Lo que yo he puesto en marcha ha sido el dns2tcp que, como su propio nombre indica, nos permite encapsular una conexión tcp bajo el protocolo DNS.

En los ejemplos: micro es un Linux en mi casa que hace de servidor, elrojo es un Linux detrás de un portal cautivo.

La configuración, incluso con IP dinámica en mi caso, es bastante sencilla. Más teniendo en cuenta que intrepid tiene los paquetes ya hechos.

En el servidor:

micro$ sudo apt-get install dns2tcp
micro$ cat /etc/dns2tcpd.conf
listen = 0.0.0.0
port = 5353
# If you change this value, also change the USER variable in /etc/default/dns2tcpd
user = nobody
chroot = /tmp
domain = tunnels.ziritione.org
ressources = ssh:127.0.0.1:22

Donde tunnels.ziritione.org será la zona que utilizaremos para nuestro propósito. El porqué de poner el servidor en el puerto 5353 lo contaré más adelante. En nuestro servidor DNS además tendremos que añadir la zona con el mismo nombre:


...
www      86400   IN   CNAME   main.ziritione.org.
tunnels  86400   IN   NS      magallanes.mine.nu.
...

De nuevo, en mi caso, magallanes.mine.nu es un host mapeado contra la IP dinámica de mi casa gracias a DynDNS (esto lo hace el router ADSL). En ese mismo router está redigirigo el puerto 53 (el del DNS) al 5353 de micro, que es donde tenemos el tcp2dnsd.

Ahora, en cualquier otra máquina de internet podemos listas los resources que hemos configurado:

$ dns2tcpc -z tunnels.ziritione.org 192.168.0.10
Available connection(s) : 
	ssh

Y ahora montamos el proxy para que redirija el tráfico que le llegue al puerto 2222 al resource ssh y lanzamos un ssh contra él que nos monte un proxy SOCKS en el puerto 8888:

elrojo$ dns2tcpc -r ssh -l 2222 -z tunnels.ziritione.org 192.168.0.10 &
Listenning on port : 2222
elrojo$ ssh -D 8888 -p 2222 localhost
Password:
micro$

Si ahora configuramos un firefox en local y le decimos que hay un proxy SOCKS en localhost en el puerto 8888 haremos que nuestro tráfico web funcione a través de micro, la máquina que tenemos en casa.

2 diciembre 2008

¿Cómo hacer un Mac un poco más útil (de hecho, el doble)? Pues instalándole una máquina virtual con un Linux dentro. Que sí, que OSX es muy bonito y para eso lo tengo (para ver pelis en el salón), pero para otro tipo de tareas necesito un jugador de verdad. Así que no mordáis.

La solución de virtualización que he probado es la única que conozco gratuita para Mac: VirtualBox, que bien me recomendó calavering. Instalas sin problema: siguiente, siguiente, aceptar. Montas la máquina virtual (un intrepid de Ubuntu), la configuras, va todo como la seda. Pero ahora quieres que la máquina virtual arranque cuando se inicia OSX y además que no te moleste con un icono en el dock.

Solución: un StartupItem de OSX. La primera cosa que pensé levantaba mi máquina virtual única y exclusivamente, pero intentando hacer las cosas mejor me dije que por qué no hacerlo un poco más genérico. Puesto que VirtualBox permite definir atributos o propiedades sobre cada una de las VMs que maneja, qué mejor que aprovecharlas. Añadamos la propiedad 'launchatboot' a la VM micro:

$ VBoxManage guestproperty set micro launchatboot true
$ VBoxManage guestproperty get micro lauchatboot     
VirtualBox Command Line Management Interface Version 2.0.6
(C) 2005-2008 Sun Microsystems, Inc.
All rights reserved.

Value: true

Siguiente paso: crear el directorio /Library/StartupItems/VBoxLauncher:

$ sudo mkdir /Library/StartupItems/VBoxLauncher

Ahora editamos el archivo /Library/StartupItems/VBoxLauncher/StartupParameters.plist y le atizamos lo siguiente (descargar):

{
  Description     = "VirtualBox VM boot launcher";
  Provides        = ("VBoxLauncher");
  Uses            = ("VirtualBox");
  OrderPreference = "None";
}

Y por último editamos /Library/StartupItems/VBoxLauncher/VBoxLauncher (descargar):

#!/bin/sh
#
# VBoxLauncher - luis peralta
# http://www.ziritione.org

. /etc/rc.common

# Set this to the user who created the VMs
USER=peralta
PROPERTY="launchatboot"

StartService()
{
   UUIDS=`sudo -i -u $USER /usr/bin/VBoxManage list vms|grep "^UUID:"|cut -d" " -f 13`
   for uuid in $UUIDS
   do
      ConsoleMessage "launching $uuid vm"
      sudo -i -u $USER /usr/bin/VBoxManage guestproperty get $uuid $PROPERTY > /dev/null && sudo -i -b -u $USER /usr/bin/VBoxHeadless -startvm $uuid > /dev/null
   done
}


StopService()
{
   UUIDS=`sudo -i -u $USER /usr/bin/VBoxManage list runningvms|tail +5`
   for uuid in $UUIDS
   do
      sudo -i -u $USER /usr/bin/VBoxManage controlvm "$uuid" poweroff > /dev/null
      ConsoleMessage "$uuid stopped"
   done
}


RestartService()
{
    StopService
    StartService
}


RunService "$1"

Y zás, al siguiente arranque tenemos las máquinas virtuales que tengan la propiedad launchatboot en marcha sin hacer nada. En la web de Apple recomiendan usar launchd en vez de StartupItems para estas cosas, que es el futuro. Desde luego será cosa del futuro porque el script de launchd lo hará otro, no me cabe duda, en el futuro.