jueves, 15 de diciembre de 2016

aMule: configuracion para no tener una ID baja, instalación y arranque automático de amuled y amuleweb en Raspberry Pi y funcionamiento de amuleCMD

BitTorrent es un protocolo diseñado para el intercambio de archivos punto a punto (peer-to-peer) en Internet. Es uno de los protocolos más comunes para la transferencia de archivos grandes. Es útil para buscar películas recien estrenadas, juegos, música, software de reciente creación pero si lo que quiere es buscar archivos raros, puede que no lo encuentre.


Megaupload tuvo la mayor biblioteca virtual de la historia pero el FBI decidió cerrarlo. Su sucesor Mega  prefiere compararse con servicios de almacenamiento en la nube como Dropbox y borra los archivos protegidos con derechos de autor.

Por eso sigo utilizando el eMule, concretamente un clon llamado aMule ¿Por qué? Si quiere encontrar archivos raros con escasas fuentes, esta es la mejor opción y la más cómoda.

Escribo este artículo porque he conocido a personas que me han dicho que no les gusta usar el eMule porque dicen que no funciona nada bien, las descargas son lentas, consume muchos recursos del ordenador, etc.

aMule

aMule es un programa de intercambio P2P libre y multiplataforma, similar al conocido eMule que funciona tanto con la red eDonkey como con Kademlia.

Deriva del código fuente de xMule, el cual deriva del proyecto lMule, el primer intento de portar el cliente eMule a GNU/Linux. Al igual que eMule, aMule se distribuye y publica bajo los términos de la licencia GNU GPL.

El objetivo de aMule es ser un "eMule multiplataforma", funcionando actualmente en los sistemas operativos GNU/Linux, FreeBSD, OpenBSD, NetBSD, Solaris, Mac OS X, Irix y Windows, y en las arquitecturas x86, AMD64, UltraSPARC, PowerPC, Macintosh (G4, G5,...), Xbox y NSLU2.

Existen dos versiones de aMule, la versión estable, y la versión de desarrollo (SVN), que se publica diariamente con los últimos avances, aunque no se asegura su estabilidad. aMule admite también enlaces magnéticos.



Puertos TCP & UDP

De acuerdo con el FAQ oficial,4 la aplicación utiliza los siguientes puertos por defecto. El tráfico es desde la perspectiva del cliente:
4662 TCP (entrada y salida): Transferencias de cliente a cliente (P2P).
4665 UDP (entrada y salida): Utilizado para recibir y enviar peticiones de búsqueda globales. Éste siempre es el puerto anterior +3.
4672 UDP (entrada y salida): Protocolo eMule extendido: Queue Rating, File Reask Ping, etc.

Adicionalmente, otros elementos de la red eDonkey, como los servidores, o aplicaciones auxiliares de aMule, utilizan los puertos siguientes:
4661 TCP (salida): Puerto en el que los servidores eDonkey esperan conexiones (definido por el servidor). No utilizado en Kad.
4711 TCP: Puerto WebServer. Utilizado para acceder a aMule por web.
4712 TCP: Puerto de Conexiones Externas (EC).5 Utilizado para la comunicación de aMule con otras aplicaciones (ej: aMule WebServer o aMuleCMD).

La mayoría de estos puertos son configurables.

Arquitectura modular

A diferencia de eMule, aMule puede ser compilado como un único programa monolítico o como un "demonio", lo que permite su ejecución en segundo plano, sin interfaz gráfica y con un menor consumo de recursos. Para comunicarse con el programa existen tres interfaces diferentes:

aMuleCMD: cliente de línea de comandos.
aMuleGUI: cliente de interfaz gráfica. Actualmente en desarrollo, por lo que le faltan muchas de las opciones de la versión monolítica, además de ser inestable.
aMuleWEB: servidor web que permite el manejo mediante un navegador web.

Además, existe todo un protocolo de comunicación5 creado para poder desarrollar aplicaciones que se comuniquen bidireccionalmente con el núcleo del programa.

Instalación  de aMule en distribuciones GNU/Linux basadas en Debian

user@linuxmint~ $  sudo aptitude install amule

Configuracion del aMule para no tener una ID baja

La ID es un número de varias cifras. Cuando se ejecuta el aMule y se conecta a un servidor, este servidor le asigna un número de cliente a usted. ID es tu identificación en la red para comunicar con los otros usuarios y servidores. En este artículo pueden leer las diversas causas que provocan que un cliente tenga una ID baja. La ID baja ralentiza las descargas, dispara el consumo de recursos de su equipo, dificulta la navegación por Internet e impide la ejecución correcta de una aplicación P2P como es aMule y la compartición de archivos entre los clientes de la aplicación.

Ejecute el programa y pinche en la pestaña de "opciones", se abrirá una ventana, pinche en "conexiones". Puede dejar los valores de los puertos que tiene el aMule por defecto, pero yo los cambio y me va perfectamente. El resto se puede dejar tal como está:

Puerto TCP estándar: 50000
Puerto UDP para peticiones del servidor (TCP + 3): 50003
Puerto UDP estándar (Kad/búsqueda global): 50200


Si dispone de router, escriba 192.168.1.1 en la barra de direcciones de su navegador para acceder a él. A continuación, se debe abrir unos puertos que usa el programa, los puertos con protocolo TCP que usan todos los servidores de la red eDonkey y rango de puertos para facilitar las descargas y subidas P2P de otros usuarios con usted.


Yo abro los siguientes puertos en mi router:

Abrir el puerto 21 protocolo TCP
Abrir el puerto 25 protocolo TCP
Abrir el puerto 80 protocolo TCP
Abrir el puerto 443 protocolo TCP
Abrir el puerto 4232 protocolo TCP
Abrir el puerto 1176 protocolo TCP
Abrir el puerto 3883 protocolo TCP
Abrir el puerto 9939 protocolo TCP
Abrir el puerto 5041 protocolo TCP
Abrir el puerto 50000 protocolo TCP
Abrir el puerto 50003 protocolo UDP
Abrir los puertos desde 50004 hasta 50199 protocolo TCP y UDP
Abrir el puerto 50200 protocolo UDP

Nota: algunos servidores de la red eDonkey pueden caer, aparecer otros nuevos servidores y los puertos pueden cambiar en un futuro, si hay nuevos servidores con puertos nuevos o han cambiado los puertos, tendrá que abrirlos en el router.


Guarde los cambios para la IP interna del equipo en el que tenga instalado el aMule.

Para saber la IP interna de su equipo, escriba en el terminal:

user@linuxmint ~ $ ifconfig

Si usted usa un modem, debería configurar un cortafuegos (firewall) de software, que le permita cerrar todos los puertos y solo tener abiertos los puertos necesarios para la ejecución del diversos programas, entre ellos el aMule.


Instalación de amule-daemon

pi@raspberrypi:~ $   ~ $  sudo apt-get install amule-daemon

Configuración de amuled

pi@raspberrypi:~ $  ~ $ cd .aMule

Es necesario crear un password para hacer correr el amuled

pi@raspberrypi:~ $  ~ $ echo -n tu_contraseña | md5sum

Se genera una password alfanúmerico: "3f34g345g85b3434r8g89808080001fjd  –"

pi@raspberrypi:~ $  ~ $ sudo gedit amule.conf

Busque en el  texto del archivo amule.conf  "AcceptExternalConnections=0" y sustituyalo por  "AcceptExternalConnections=1"

Busque en el  texto del archivo amule.conf "ECPassword=" y añada el password alfanúmerico para que quede de la siguiente forma: "ECPassword=3f34g345g85b3434r8g89808080001fjd"

Busque en el texto del archivo amule.conf "Password=" y escriba el password que usted ha creado para hacer correr el amuled: "Password=tu_contraseña"

Para hacer correr la interfaz gráfica, Añadir al archivo amule.conf

[WebServer]
Enabled=1
Port=4711

Guarde los cambios en el archivo amule.conf

Para  hacer correr el amuled en segundo plano y cerrar el terminal:

pi@raspberrypi:~ $  amuled &

AMuleCMD

AMuleCMD es una utilidad de linea de comandos que permite el control del aMule o aMuled tanto local como remotamente.

Para ejecutar aMuleCMD, escriba "amulecmd" en la línea de comandos. El programa se iniciará y mostrará el indicador "aMulecmd $". Ejemplos de comandos disponibles

Add
Cancel
Connect
Disconnect
Download
Exit
Get
Help
Pause
Quit
Reload
Results
Resume
Set
Show
Shutdown
Statistics
Search global
Status

Por ejemplo, si usted quiere encontrar la película "El acorazado Potemkin":

aMulecmd $ Search global El acorazado Potemkin

Si quiere ver los resultados de la busqueda:

aMulecmd $ Results

Aparecerá una lista enumerada con los archivos disponibles y si quiere descargar la primera búsqueda:

aMulecmd $ Download 1

Si quiere ver como va la descarga:

aMulecmd $ Show dl

aMuleweb

pi@raspberrypi:~ $  amuleweb --write-config --host=localhost --password=tu_contraseña--admin-pass=otra_contraseña

y genera /home/pi/.aMule/remote.conf

Nota: "AdminPassword=" en remote.conf y "ECPassword=" en amule.conf tienen que ser el mismo. Usted puede generar sus contraseñas manualmente .

pi@raspberrypi:~ $ amuleweb &

Escribe en la barra de direcciones de tu navegador la IP interna de tu Paspberry Pi acompañado del puerto 4711, en mi caso http://192.168.1.37:4711 e introduce la contraseña.

Inicio automático del aMuled 

Si desea que aMuled se ejecute al arrancar la Raspberry Pi, hay que crear un archivo en Bash con el nombre amuled. Copie y pegue el siguiente texto en cursiva:

#!/bin/sh
### BEGIN INIT INFO
# Provides:     aMuled
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: aMule provides an eMule like connection to the ed2k and kademlia networks 
# Description:
#
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/amuled
WEB=/usr/bin/amuleweb
NAME=/usr/bin/amuled
DESC=amuled
RUNAMULE=no
USER=pi #He instalado el aMule con el usuario "pi" podría ser otro


test -x $DAEMON || exit 0


set -e


case "$1" in
  start)
    echo -n "Starting $DESC: "
       su $USER -c "$DAEMON -f"
       while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
       su $USER -c "$WEB --quiet &"
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
       killall --quiet --ignore-case $WEB
       killall --quiet --ignore-case $DAEMON
    echo "$NAME."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
       killall --quiet --ignore-case $WEB
       killall --quiet --ignore-case $DAEMON
    sleep 1
       su $USER -c "$DAEMON -f"
       while ! netstat -l -n -p -t | grep -q amuled ; do sleep 1 ; done
       su $USER -c "$WEB --quiet &"
    echo "$NAME."
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac

exit 0

Los scripts que se ejecutan al inicio del sistema se encuentra en el directorio /etc/init.d
Mueva el archivo en Bash aMuled al directorio "/etc/init.d":


pi@raspberrypi:~ $  sudo mv amuled /etc/init.d

Conceda permisos de ejecución al archivo "amuled":

pi@raspberrypi:~ $  sudo chmod 755 /etc/init.d/amuled

Los runlevels o niveles de ejecución (0 a 6) son modos de iniciación y terminación del sistema  para UNIX. Mediante el comando update-rc.d se crea enlaces simbólicos por defecto a todos los runlevels

pi@raspberrypi:~ $  sudo update-rc.d amuled defaults
Reinicia el Raspberry Pi y para comprobar si funciona, escriba el siguiente comando:

pi@raspberrypi:~ $ ps aux | grep amule


Copiar los archivos descargados en el Raspberry Pi a otro disco duro desde otro equipo

La idea de copiar archivos descargados en la carpeta Incoming del Raspberry Pi y pasarlos al directorio a otro disco duro desde otro equipo, puede resultar atractiva si no dispone de disco duro externo, y hacerlo desde el equipo en el que trabajas de forma habitual, lo es todavía más.

En caso de no tener asignada una IP estática, es necesario saber la IP dinámica del Raspberry Pi en su red:

user@linuxmint  ~ $  sudo nmap -sP 192.168.1.1-254


En este caso, la IP del Raspberry Pi es 192.168.1.37. Desde el otro equipo, escriba el siguiente comando en el terminal:

user@linuxmint  ~ $ scp pi@192.168.1.37:~/.aMule/Incoming/*.* /media/datos

Para no tener que buscar la IP interna del Raspberry Pi, podemos utilizar el servicio que ofrece  la web http://www.noip.com/. y sustituir la IP dinámica del Raspberry Pi por un Domain Name Server que identifique tu ordenador (host). Por ejemplo: nombre_de_tu_host.ddns.net

user@linuxmint  ~ $ scp pi@ nombre_de_tu_host.ddns.net:~/.aMule/Incoming/*.*  /media/datos

Lo que hacemos es copiar los archivos utilizando el comando scp (Secure Copy) y SSH. SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotasa través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X (Sistema de Ventanas X) para poder ejecutar programas gráficos si tenemos ejecutando un Servidor X (en sistemas Unix y Windows).