20 de Enero, 2004

Descargar imágenes ISO desde blackshell

Blackshell posee 2 discos duros, uno principal de 840MBs y otro auxiliar que se añadió posteriormente con 2GBs.

Sistema base, correo, web, FTP, no quedaba mucho sitio para poner imágenes ISO para descargar (Software Libre, claro).

Esta tarde he tomado café con Felipe y me ha dejado los 3 CDs de Mandrake Linux 9.2, que me los han pedido. Ha salido el tema, que no hay sitios todavía en elxwifi para descargar cosas (SL, insisto) y sacarle rendimiento a la red. ¿Qué más puede hacer blackshell con tan pocos recursos? NFS es la clave.

Mi máquina de escritorio (homeworld) tiene disco duro de sobra, y está conectada a blackshell mediante la red local. La idea de compartir parte de ese disco vía NFS ha funcionado sin problemas.

He instalado un servidor NFS en homeworld (corre un Debian GNU/Linux) y he exportado un directorio. De /etc/exports:

/home/iso       blackshell-lan(ro,all_squash)

De forma que blackshell puede montar ese directorio vía red local.

En el /etc/fstab de blackshell he puesto:

homeworld-lan:/home/iso /storage/ftp/pub/iso nfs \
ro,nodev,nosuid,noexec,noauto,-i 0 0

Lo que me permite montar y desmontar el sistema de archivos mediante NFS.

Pero hay un problema importante, aunque se puede solucionar. Al menos lo he solucionado :P.

Resulta que homeworld no tiene un uptime 7x24, y el NFS no soporta desconexiones. Así cuando un servidor cae, el cliente se congela hasta que el servicio se restablece.

Esto es malo, muy malo :(.

La única solución que se me ha ocurrido es que el servidor NFS se encargue de desmontar el sistema de ficheros en blackshell cuando se apague, y que lo vuelva a montar cuando homeworld esté de nuevo encendido.

Para ello he empleado sudo para permitir a un usuario sin privilegios ejecutar las llamadas a mount y umount necesarias (con NOPASSWORD), y he empleado claves RSA con SSH para ejecutar esas órdenes sin meter ninguna contraseña.

El proceso es sencillo:

  1. Se crea un par de claves con ssh-keygen SIN CONTRASEÑA. Esto puede ser un problema si la clave privada RSA se compromete, pero como homeworld es segura (detrás de un robusto cortafuegos OpenBSD, bien administrada, etc.)... no pasa nada :D.
  2. Copiamos $HOME/.ssh/id_rsa.pub a blackshell y lo añadimos al $HOME/.ssh/authorized_keys del usuario sin privilegios (con un cat x >> y mismo). Si todo va bien, un ssh usuario@blackshell nos debe dar shell sin pedir contraseña.
  3. Modificamos /etc/init.d/nfs-kernel-server:
    # en la zona del start) después de arrancar el NFS
    printf "Calling blackshell:"
    printf " WAKE UP!"
    ssh -i /home/usuario/.ssh/id_rsa usuario@blackshell-lan \
    "/usr/bin/sudo /sbin/mount /storage/ftp/pub/iso"
    echo "."
    
    # en la zona del stop) antes de apagar el NFS
    printf "Calling blackshell:"
    printf " SLEEP NOW!"
    ssh -i /home/usuario/.ssh/id_rsa usuario@blackshell-lan \
    "/usr/bin/sudo /sbin/umount -f /storage/ftp/pub/iso"
    echo "."
    
    El -i es importante para que use la identidad del usuario que queremos (sino será root), porque da la casualidad que el usuario existe en ambas máquinas. Si no existiera en homeworld, el id_rsa iría en /etc con los permisos adecuados para que solo el super-usuario tenga acceso a él.

Con esto ya se monta y desmonta el chiringuito con el servidor NFS, y lo hace homeworld sin que tengamos que andar metiendo contraseñas.

Así que si mirais el directorio iso (elxwifi) en el FTP de blackshell vereis un LEEME, si no está homeworld encendido, y un puñado de ISOs para descargar, si homeworld está ahí con su NFS.

Finalmente comentar que el umount es brusco y probablemente corte la descarga de mala manera. Supongo que con programas como wget podreis continuar bajando el fichero cuando homeworld vuelva ya que el servidor FTP lo soporta ;).

Ni que decir tiene que esto es totalmente experimental... si alguien tiene problemas, por favor: que informe :D.

Anotación por Juan J. Martínez.

Hay 2 comentarios

Gravatar

Buena manera de aumentar considerablemente el tamaño XD

A ver si monto pronto el servidor y lleno el disco duro de SL para que todo el mundo se lo baje desde elxwifi ;)

por josefu, en 2004-01-21 00:49:59

Gravatar

Lo que no se si es cosa mía o del Debian :? Resulta que el los links del nfs-kernel-server estaban mal y arrancaba antes del portmap, con la consiguiente petada.

Claro, ayer lo probé todo. Pero sin reiniciar :D. Mala idea...

por Juanjo, en 2004-01-21 08:00:57

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.