ene 12

Servidor de descargas con mldonkey (III)

SEPTIMO PROBLEMA: tenía lowID. La solución es sencilla, una redirección de puertos en el router. Sin embargo, no son únicamente los puertos de los servidores a los que nos conectemos. El mldonkey utiliza algunos puertos más para gestionar la conexión (podemos verlos en el fichero de configuración downloads.ini).

Bueno, una vez instalado todo y configurado el mldonkey en el equipo viejo para poder gestionarlo desde toda la red (así se puede poner a bajar desde cualquier ordenador de la casa, y siempre se descarga en el equipo viejo), sólo faltaba un script que pasase ficheros a mi equipo en cuanto estuviesen descargados, por aquello de no llenar aquel disco duro. Como ese ordenador va a estar siempre encendido, lo más cómodo es que el script esté en mi ordenador, y cada cierto tiempo, monte la unidad de red del viejo, compruebe si hay ficheros y, si los hay, los transifera aquí con wget. El script es algo tan sencillo como ésto:

#!/bin/bash

directorio_local="*directorio donde queremos las descargas*"

mkdir $directorio_local/temporal

mount *directorio NFS*
cd *directorio NFS*/incoming/files

for i in * ; do
    cd $directorio_local/temporal

    wget -c ftp://*ip del servidor*/incoming/files/"${i}" --user=*usuario FTP* --password=*password del usuario FTP*

    tamanho1=`ls -l "${i}"`
    tamanho1=`echo $tamanho1 | cut -d\  -f5`
    tamanho2=`ls -l *directorio NFS*/incoming/files/"${i}"`
    tamanho2=`echo $tamanho2 | cut -d\  -f5`

    if [ "$tamanho1" = "$tamanho2" ] ; then
	rm -f *directorio NFS*/incoming/files/"${i}"
	mv "${i}" ../
    fi
done

umount *directorio NFS*

Como veis, en el script se hace uso de todo, del servidor ftp y del directorio NFS. Monta la unidad NFS, comprueba si hay ficheros y luego descarga cada uno por ftp. Para eso es necesario tener un servidor ftp instalado (recordad que lo instalamos al principio “para lo que pudiese hacer falta” :P ). Una vez descargado cada fichero, se comprueba si el tamaño de origen y destino coincide (está entero) y si coinciden, se borra del origen. Además, está implementado un pequeño sistema de seguridad. Los ficheros se descargan inicialmente a un directorio temporal, y cuando la descarga está completa, se mueve al directorio principal. Ésto es así por si reiniciamos el equipo mientras se está copiando algo. De esta forma, sabemos que todo lo que tenemos en el directorio principal está terminado. Tampoco pasa nada por interrumpir una transferencia, porque el parámetro -c del wget continua las descargas incompletas.

Para que se ejecute de vez en cuando, basta con añadirlo al cron (para eso hay múltiples tutoriales por ahí, nada del otro mundo). Además, se puede automatizar un poquito más. Mldonkey permite establecer usuarios, por lo que si queremos colas de descarga separadas, creamos distintos usuarios no administradores, e indicamos un directorio de ficheros descargados distinto para cada uno, indicándole al script de cada usuario que se haga con los ficheros del directorio correspondiente. No es complicado utilizando el gestor web del mldonkey.

En fin, eso es todo. Nada fácil y nada sencillo, pero al menos sí para toda la familia :P

ene 10

Servidor de descargas con mldonkey (II)

Ahora la fonera tenía millones de posibilidades más de las que tenía antes, y había que configurar todo de nuevo. Me pasé un buen rato hasta que di con una configuración que funcionase, porque según lo que pongamos, perdemos el acceso de unas redes a otras, perdemos el acceso de unas redes a internet, perdemos la posibilidad de conectarnos por ip fija… en fin, una locura. La configuración con la que me funcionó es ésta:

Configuración 1
Aquí podemos ver lo básico. La fonera está configurada para conectarse a la red con una ip fija, con su máscara y sus dns correspondientes. Debajo vemos la configuración del interfaz wifi, tambiéncon su ip fija, y especificando como puerta de enlace la ip del router (de lo contrario, no hay acceso a internet).

Configuración 2
Tenemos varios modos de funcionamiento para la fonera. Como ya hay un router actuando de puerta de enlace, si nos fiamos de la ayuda, deberíamos poner la fonera como router y no como puerta de enlace. Sin embargo, si hacemos ésto perdemos la conexión a internet de todos los dispositivos que se conecten a la fonera. Es necesario configurarla como puerta de enlace.

Configuración 3
En cuanto al modo de funcionamiento, debe ser como punto de acceso. En el tipo de red, podría haber puesto b sin problemas, porque sigue siendo superior a la velocidad del USB del ordenador viejo. Sin embargo, ésto limitaría a todos los demás equipos que se pudiesen conectar, por lo que preferí dejarla en mixed, con los rates en auto.

Configuración 4
Ésto es MUY importante. Debemos desactivar el firewall. De lo contrario, no devuelve ni los pings.

Bueno, una vez configurado el firmware nuevo, intenté dejar las redes como estaban y acceder de una red a la otra. Sorpresa, todavía no funcionaba y recibía el mismo mensaje de paquetes filtrados de antes. Aquí ya tenía un nudo cerebral, pero tras intentar varias cosas, se me ocurrió establecer rutas estáticas, y resultó ser la solución. Establecí ésta en el router:

                       Menu 12.1.1 - Edit IP Static Route

                    Route #: 2
                    Route Name= mldonkey
                    Active= Yes
                    Destination IP Address= 192.168.1.5
                    IP Subnet Mask= 255.255.255.0
                    Gateway IP Address= 192.168.0.2
                    Metric= 1
                    Private= No

Con ésto desde windows ya podía acceder desde una red a la otra, pero desde linux no. Evidentemente el problema residía en que en linux había que establecer la misma ruta para el sistema, que en windows se hace automáticamente (punto a favor). Fácil, simplemente añadir ésto en /etc/network/interfaces, en el campo donde configuráis vuestra tarjeta de red:

up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2

Esto significa que para acceder a cualquier elemento de la red 1, se debe pasar por 0.2, que es el interfaz cableado de la fonera.

Con ésto ya podía acceder por red desde el equipo nuevo al viejo y viceversa. Ahora había que montar los directorios del viejo en red dentro del nuevo, preferiblemente como una carpeta, para aumentar la comodidad. Ésto se hace de forma muy sencilla con NFS. Basta con seguir este tutorial. Una vez hecho ésto ya podía acceder desde este ordenador al viejo, a sus ficheros y demás.

SEXTO PROBLEMA: al acceder de esta forma e intentar copiar un fichero de un equipo a otro, no me da problemas siempre que los ficheros sean inferiores a 5 megas. Cuando intento transferir ficheros mayores, empieza a transmitir a saco, satura la red… Pensé que podría ser culpa del equipo viejo, porque tiene 10 años y el receptor está conectado a un puerto USB1.0 (ni siquiera es 1.1), por lo que la velocidad de transferencia está limitada a 1.5Mbps (no llega a 200 kB/s), y quizás se saturaba con el flujo entrante. Para descartarlo, probé a transmitir un fichero desde el equipo viejo al nuevo, y la red se saturaba igual, así que el problema es de la red en sí. Estuve indagando mecanismos de control de flujo, para limitar la velocidad, etc, pero no encontré nada que lo pudiese hacer de forma sencilla. Sin embargo me di cuenta de que con wget, podía transferir ficheros de un equipo a otro reduciendo considerablemente la saturación. Va bastante lento, aproximadamente a 1/3 de la velocidad que podría dar de sí la red (va a una media de unos 50 kB/s), pero bueno, al menos funciona, y supongo que con un equipo de hace 10 años, otro de hace 6, una fonera y dos paredes de por medio, no puedo pedir mucho más.

Una vez hecho todo ésto, instalé en el equipo antiguo el mldonkey

Servidor de descargas con mldonkey (IV)

ene 08

Servidor de descargas con mldonkey (I)

Una vez configurada la red, comprobé que con el otro ordenador tenía internet. Efectivamente, el ordenador viejo ya hacía pings a google como un campeón. Le instalé un servidor ssh para poder controlarlo (sin pantalla ni teclado, sería un poco complicado xD) y un servidor ftp para lo que pudiese hacer falta. Los configuré (para más ayuda, google es el camino) y andando. Luego reinicié el cacharro y configuré la bios para que no parase el arranque ante ningún error (por razones de fecha [ese cacharro tiene la pila de la bios gastada], teclado [press F1 to continue, y no hay teclado] y demás), y una vez hecho todo ésto, intenté acceder desde éste al viejo. Tacháaaaaaaaaaan.

CUARTO PROBLEMA: no había acceso desde una red a la otra. Ningún ordenador de la red 0 podía comunicarse con ninguno de la red 1, ni siquiera para hacer pings (el mensaje era que los paquetes estaban siendo filtrados):

fenix:/home/sparkster# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.153.1 icmp_seq=1 Packet filtered

Lo extraño es que desde la red 1 sí tenía acceso a la 0. Tras trastear con varias posibilidades (cambiar máscaras de subred [estaban todas a 255.255.255.0], intentar con la misma red [se me iba al carajo la conexión a internet, cosas de la fonera], cambiar la red 0 por la 1 y la 1 por la 2, etc), supuse que el problema de todo estaba en la fonera, así que decidí la solución más salomónica, más peligrosa, que me dio más problemas y que a la larga era la única solución posible para evitar problemas futuros: flashear la fonera.

Los que tengáis una fonera, sabréis que es una mierda. El firmware que trae es una cacadelavaca, con muy pocas posibilidades, muy capado… Además cada vez que enchufas la fonera, se conecta a internet, cambia el firmware ella solita y hace las de dios. Además leí que el firmware que anda rulando por ahí, de dd-wrt, es bastante completo, lo que ya me hizo decidirme de todo.

QUINTO PROBLEMA: todos los tutoriales que hay para flashear la fonera (TODOS, ABSOLUTAMENTE TODOS) están mal, tienen errores, están incompletos… Vamos, que fue una odisea. Pensé que había estropeado la fonera 3 o 4 veces, porque no se resseteaba, no podía acceder a ella, no servía con desenchufarla… Y resulta que era otro paso de esos “complicados” que no figuran en los tutos… No voy a enlazar ningún tutorial porque no recomiendo intentar flashearla a menos que estéis muy familiarizados con redboot, con telnet y con ssh, además de haber flasheado ya cosas con anterioridad, porque es muy fácil que por culpa de toda esa morralla incompleta que hay por ahí os quedéis sin fonera. En cualquier caso, los pasos que tuve que seguir yo para flashearla son los siguientes (no servirá para que hagáis nada, pero os hacéis una idea).

  1. Entrar en la fonera para verificar la versión del firmware. Era una avanzada, por lo que había que downgradearla
  2. Resetear la fonera para downgradear el firmware (pulsando reset entre 30 y 40 segundos)
  3. Una vez reseteada, configurar la interfaz cableada poniéndola con ip fija (ya la tenía así, pero al resetear se pierde la configuración)
  4. No permitir que la fonera se conecte a internet para que no se actualice el firmware, abrir un script que hay por la web para hacerle un chanchullo al cacharro y que me permita acceder por ssh
  5. Acceder por ssh y cambiar unos cuantos parámetros para que me permita el acceso por redboot y que no se actualice el firmware
  6. Acceder por telnet para cargar los ficheros del redboot y alguna cosilla más. Reiniciar la fonera
  7. Acceder por redboot para cargar parte del firmware nuevo
  8. Enchufar la fonera, esperar 5 segundos, abrir una sesión telnet antes de que pasen 8, cancelar el arranque para que no se cuelgue (flipa) y cargar más cosillas del firmware
  9. Reiniciar la fonera con el firmware nuevo

Algunos de esos pasos, como ya dije, estaban incompletos, erróneos o directamente no aparecían en los tutoriales (como esa sesión telnet antes de 8 segundos tras enchufar la fonera), por lo que pensé que la había jodido varias veces (tras algunos de esos pasos intermedios, la fonera deja de funcionar correctamente, y ya no es accesible de forma normal).

Servidor de descargas con mldonkey (III)

ene 06

Por razones que no vienen al caso, me vi en casa con mi PII 400MHz aburrido y más parado que un avión de mármol, así que me decidí a buscarle utilidad. Pregunté a la gentuza del foro de teleco y la solución que más me gustó fue la de montar un servidor de descargas. Ya había hecho algo parecido tiempo atrás, pero no había terminado de cuajar la idea.

En fin, vamos al turrón. Hasta ahora la red de mi casa era algo tal que así:

Como veis, había 2 ordenadores cableados conectados a un router, con las ips 5 y 6 de la red 0, así como una fonera. La fonera tenía la ip 2 de la red 0 para la interfaz cableada, y la ip 3 de la misma red para la interfaz wifi. A la fonera se conectaba una nintendo DS configurada mediante DHCP. El router, con la ip 1 era el encargado de proveer acceso a internet a todos los elementos de la red.

Pues bien, me puse al tajo. Lo primero fue instalar el sistema operativo en el otro equipo. Tenía pensado que este cacharro estuviese a pelo, con el mínimo número de programas instalados, por lo que decidí instalar como sistema Linux Debian (mentira cochina, eso ya tenía pensado hacerlo :P ) y tenerlo sin entorno gráfico ni monitor ni teclado ni nada. Pues nada, me hice con el disco de debian stable netinstall y me puse a ello.

PRIMER PROBLEMA: tenía que conseguir que el cacharro utilizase un receptor wifi USB en modo texto, sin ningún tipo de asistente. Una vez instalado, estuve un rato trasteando con ifconfig e iwconfig, y me salían unas cosas más bien raras, a pesar de que el receptor era detectado sin problemas. Lo que ocurría era que a pesar de que lo detectaba, le faltaban los drivers del mismo, ya que el kernel de linux no incluye los drivers de los receptores ralink. Pues nada, no es problema, me hice a través del otro ordenador con los módulos adecuados, los metí en un pendrive y los cargué en el equipo viejo.

SEGUNDO PROBLEMA: los módulos para el receptor son de la rama testing, y en el ordenador antiguo había instalado la rama stable. Al intentar meterlos, me salió un laberinto de dependencias incumplidas que, a pesar de intentarlo, no conseguí solucionar. Al final opté por replantearme la situación, formateé e instalé debian testing (me tuve que bajar el disco entero, no me valía la netinstall). Una vez hecho ésto, sólo tuve que instalar aparte el firmware del receptor (sólo el firmware, nada más), y el paquete wireless-tools.

TERCER PROBLEMA: esta vez el receptor funcionaba correctamente (lo probé instalando el aircrack para hacer un esnifado del aire en sí xD [descargado desde el otro equipo, claro]), pero no tenía muy claro cómo hacer para que se conectase a la fonera sin ningún asistente. Tras un par de consultas a google y a un par de colegas, di con la solución. Lo que hay que hacer es poner ésto en /etc/network/interfaces

iface *dispositivo* inet static
address *ip para el dispositivo*
netmask *mascara de subred*
gateway *ip de la interfaz wifi de la fonera*
wireless-essid *nombre de la red wifi*
auto *dispositivo*

En mi caso, decidí hacer unos cambios a la red. Puse la red cableada como red 0, y la red wifi como red 1, por lo que ahora la fonera pasaba a tener la ip 192.168.1.1 como interfaz wifi. La red ahora tenía ésta pinta:

Por tanto, mi fichero quedó tal que así:

iface wlan0 inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1
wireless-essid wlan
auto wlan0

Servidor de descargas con mldonkey (II)