MLDonkey chrooted en OpenBSD 4.0
10.nov 2006
Envía un trackback
He hablado otras veces de MLDonkey, de OpenBSD y de la combinación de ambos. Ayer me llegó un correo de Hanz invitándome a traducir su nueva revisión basándose en OpenBSD-4.0, así que no me pude resistir.

Intro
Hay montones de clientes p2p para elegir pero he elegido MLDonkey porque soporta conexiones redes Bittorrent, Edonkey y Overnet. Además viene con un interfaz bonito e intuitivo, y como añadido extra puede ejecutarse sin depender de las X.Hay un port disponible para OpenBSD en /usr/ports/net/mldonkey, pero depende de X y no puede ejecutarse enjaulado, con lo que he decidido compilar mldonkey a mano y usar chrootuid para enjaularlo en su directorio propio (/mnt/misc/mldonkey en mi equipo).
Instalación
Para su instalación primero descargo las releases que he construido previamente (original, mirror):# su - # pkg_add chrootuid-1.3.tgz # tar xfvz mldonkey-2.8.1.static.i386-OpenBSD.tar.gz # mkdir /mnt/misc/mldonkey # mv mldonkey-distrib /mnt/misc/mldonkey/core
Creando el usuario
Después hay que crear el usuario y el grupo a los que corresponderá la tarea de ejecutar mldonkey:# groupadd _mldonkey # useradd -g _mldonkey -d /mnt/misc/mldonkey/ -s /bin/sh _mldonkey
Cambios en login.conf
Debemos resolver el problema de siempre, en /etc/login.conf indicamos cuantos recursos del sistema puede usar un usuario, limitaciones para que el sistema no se vuelva inestable o alguien use sus cuotas de forma malintencionada.La clase por defecto es "daemon", demasiado conservadora por estas razones; pero MLDonkey necesita abrir multitud de archivos y sockets para funcionar eficientemente, con lo que creamos otra clase diferente para root dándole más chance (para más información consultar login.conf(5) y login(1):
# nano -w /etc/login.conf
---
root:
:ignorenologin:
:datasize=infinity:
:maxproc=infinity:
:openfiles-cur=2048:
:stacksize-cur=8M:
:localcipher=blowfish,8:
:tc=default:
---
Ahora agregamos root a la clase:
# vipw
---
root:$2a$08$9vuj6yEmq/2I...f3zO:0:0:root:0:0:Charlie &:/root:/usr/bin/ksh
^^^^
---
Nota: Si recibes notificaciones lowid de algún servidor y estás seguro de que el firewall está configurado correctamente, deberías repasar la directiva openfiles-cur en la clase de login de root.
Dispositivos y configuraciones
Ahora crearemos los dispositivos (devices) y configuraciones adecuados. Necesitamos /dev/null y /dev/random dentro del chroot. También necesitamos un resolv.conf para resolver nombres de dominio:# mkdir /mnt/misc/mldonkey/dev # mknod -m 666 /mnt/misc/mldonkey/dev/null c 2 2 # mknod -m 644 /mnt/misc/mldonkey/dev/urandom c 45 2 # mkdir /mnt/misc/mldonkey/etc # cp /etc/resolv.conf /mnt/misc/mldonkey/etc # chown -R _mldonkey:_mldonkey /mnt/misc/mldonkey # chrootuid /mnt/misc/mldonkey _mldonkey core/mlnet -stdoutAhora MLDonkey se iniciará creando varios archivos de inicio y configuración en /mnt/misc/mldonkey/root/.mldonkey. Salimos de dicha ejecución con ctrl-c echándole un vistazo a los errores que pueda soltar.
Ahora editaremos los archivos de configuración para listar las IP's a las que permitiremos conectar con el interfaz web, las máximas tasas de transferencia y nuestra dirección de correo para cualquier report:
# nano -w /mnt/misc/mldonkey/root/.mldonkey/downloads.ini
---
allowed_ips = [
"127.0.0.1";
"10.0.0.255";
"192.168.0.123";]
max_hard_upload_rate = 10
max_hard_download_rate = 70
mail = "my@email.com"
---
Nota: Sigo obteniendo este mensaje de error, sin embargo el dispositivo está adecuadamente creado:
createKey: OS_Rng: open /dev/urandom operation failed with error 6Debemos asegurarnos que la partición no está montada en /etc/fstab con la opción nodev, es obvio que el problema puede venir por ahí.
Ejecución y rc.local
A continuación ejecutaremos MLDonkey como servicio (daemon) dentro de su jaula y configuraremos password para el admin:# chrootuid /mnt/misc/mldonkey/ _mldonkey core/mlnet & > /dev/null # telnet localhost 4000 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Welcome to MLdonkey Welcome on mldonkey command-line Use ? for help MLdonkey command-line: > useradd admin mypass > qAbre un navegador en http://localhost:4080, loguéate y disfruta. Para iniciar MLDonkey como servicio, al arranque de la máquina, añadimos lo siguiente a /etc/rc.local:
# nano -w /etc/rc.local
---
if [ -x /mnt/misc/mldonkey/core/mlnet ]; then
echo -n ' mldonkey'; /usr/local/sbin/chrootuid /mnt/misc/mldonkey/
_mldonkey core/mlnet & > /dev/null
fi
---
Nota: Todas las descargas completas se almacenarán en /mnt/misc/mldonkey/root/.mldonkey/incoming
Comentarios
Muchas gracias por la traducción y a HaNZ por el tuto ;D
Salu2!
Yo tambien he enjaulado mldonkey en una carpeta de mi OpenBSD. He realizado un procedimiento parecido, pero he utilizado el comando chroot, que viene de serie con Openbsd, y me he compilado mldonkey como siempre pero con la opcion static.
Escribe tu comentario
Intenta que tu comentario sea interesante y con información relevante al tema de la entrada. BBCodes disponibles:
[url=http://direccion]texto[/url], negrita: [b]texto[/b],
itálica: [i]texto[/i], subrayada: [u]texto[/u].
Para mencionar o citar a alguien (quote): [cita]texto[/cita]


