OpenWRT en Huawei 553

34
OpenWRT en Huawei 553: LuCi Samba FTP MLDonkey Transmission Wifi rtorrent, etc. « : 08-06-2011, 13:46 (Mircoles) » Para poder instalar OpenWRT necesitaremos PuTTY (si usamos windows) y descargar el firmware de la rama 'trunk' (las últimas versiones 'estables' aún no dan soporte para ester router). Desde aquí http://downloads.openwrt.org/snapshots/trunk/brcm63xx bajamos el fichero openwrt-HW553-squashfs-cfe.bin Ahora para poder actulizar con el nuevo firmware, deberemos entrar en el modo 'rescate' del router: lo apagamos, pinchamos el botón de reset y encendemos el router manteniendo pulsado el botón durante 30 segundos. Configuramos la ip de nuestra tarjeta de red dentro del rango 192.168.1.x (podemos usar la 192.168.1.2 en adelante) con máscara de red 255.255.0.0 (no es necesario configurar puerta de enlace ni nada más). Abrimos nuestro navegador y tecleamos la ip 192.168.1.1 Aquí cargaremos el firmware recién descargado. Damos a update y tras unos minutos, veremos como el router se reinicia (únicamente veremos iluminado el led de power).

Transcript of OpenWRT en Huawei 553

Page 1: OpenWRT en Huawei 553

OpenWRT en Huawei 553: LuCi Samba FTP MLDonkey Transmission Wifi

rtorrent, etc.

« : 08-06-2011, 13:46 (Mircoles) »

Para poder instalar OpenWRT necesitaremos PuTTY (si usamos windows) y descargar

el firmware de la rama 'trunk' (las últimas versiones

'estables' aún no dan soporte para ester router).

Desde aquí http://downloads.openwrt.org/snapshots/trunk/brcm63xx bajamos el fichero

openwrt-HW553-squashfs-cfe.bin

Ahora para poder actulizar con el nuevo firmware, deberemos entrar en el modo

'rescate' del router: lo apagamos, pinchamos el botón de reset y

encendemos el router manteniendo pulsado el botón durante 30 segundos.

Configuramos la ip de nuestra tarjeta de red dentro del rango 192.168.1.x (podemos

usar la 192.168.1.2 en adelante) con máscara de red

255.255.0.0 (no es necesario configurar puerta de enlace ni nada más).

Abrimos nuestro navegador y tecleamos la ip 192.168.1.1

Aquí cargaremos el firmware recién descargado. Damos a update y tras unos minutos,

veremos como el router se reinicia (únicamente veremos

iluminado el led de power).

Page 2: OpenWRT en Huawei 553

Ya tenemos operativo OpenWrt

Instalación de LuCi

Las versiones del 'trunk' no incorporan interfaz web, así que será lo primero que

instalemos.

A partir de ahora y con el fin de actualizar los paquetes, deberemos contar con conexión

a internet. Conectamos un puerto LAN del HG553 al router adsl/cable que nos 'de'

internet (lógicamente nuestro PC deberá seguir conectado también).

Configuramos PuTTY para una sesión de telnet a la ip 192.168.1.1 (puerto 23) y

conectamos.

Si os fijáis, nos avisa de que hay que cambiar el password del usuario root. Lo hacemos

Código: passwd

Nos pedirá el nuevo password, confirmación del mismo y listos.

Ya podemos cerrar la sesión telnet.

Ahora deberemos configurar PuTTY para una sesión de ssh a la ip 192.168.1.1 (puerto

22). Conectamos.

Lo primero será editar el fichero network. Así que ...

Citar

vi /etc/config/network

Debemos editar el apartado de la lan

A modo de ejemplo os pongo mi configuración:

Citar

Page 3: OpenWRT en Huawei 553

config interface lan

option type bridge

option ifname eth1

option proto static

option ipaddr 10.0.0.94

option netmask 255.0.0.0

option gateway 10.0.0.1

option dns 8.8.8.8

Debeís cambiar las opciones marcadas en negrita adecuándolas a las de vuestra red.

Reiniciamos el router:

Código: reboot

Ahora debemos adecuar los parametros de nuestra tarjeta de red, de acuerdo a nuestra

configuración habitual.

En mi caso y tomado el ejemplo anterior como guía, mi pc quedaría con la ip

10.0.0.2, subred 255.0.0.0, puerta de enlace predeterminada 10.0.0.1 (mi router adsl) y

dns principal 8.8.8.8

Volvemos a lanzar una sesión de PuTTY, pero teniendo en cuenta que ahora deberemos

configurarlo para conectarse con la ipaddr (dirección ip asignada al HG553) que

pusimos en el fichero network. En mi caso 10.0.0.94 (protocolo ssh y puerto 22).

Para comprobar que todo funcione bien, podemos lanzar un ping a google

Código: ping www.google.com

Si la respuesta es correcta, seguimos adelante. De lo contrario algún parámetro habrá

quedado mal configurado (toca repasar).

Podemos parar el comando ping con CONTROL + C

Actulizamos la lista de paquetes disponibles

Código: opkg update

Y ahora procedemos a instalar LuCI y todos los paquetes necesarios para su

funcionamiento

Código: opkg install luci-mod-admin-full

opkg install luci-lib-fastindex

opkg install luci-theme-base

opkg install luci-theme-openwrt

opkg install uhttpd

Habilitados el 'demonio' del servidor web

Page 4: OpenWRT en Huawei 553

Código: /etc/init.d/uhttpd enable

Y ahora lo iniciamos

Código: /etc/init.d/uhttpd reload

Ya tenemos OpenWRT instalado con LuCI, su interfaz web

Wifi.

El driver incluido en el firm, es open source (aunque se podría instalar el propietario de

broadcom).

Para tener un modo 'cliente transparente' deberemos configurarlo usando el método

Pseudobridge (Routed Client with relayd):

http://wiki.openwrt.org/doc/recipes/relayclient

Lo primero será instalar el paquete relayd así que:

Código: opkg update

opkg install relayd

Lo habilitamos para que se ejecute al inicio

Código: /etc/init.d/relayd enable

Paramos el firewall

Código: /etc/init.d/firewall stop

Y ahora lo desactivamos para que no se inicie automáticamente

Código: /etc/init.d/firewall disable

Configuramos el sistema (timezone) de acuerdo a nuestra zona horaria.

Desde LuCi: Network / Wifi Advanced setting configuramos el country code a España.

después de esto podremos usar los canales 12 y 13.

Debemos editar el fichero wireles:

Código: vi /etc/config/wireless

Citar

config 'wifi-device' 'radio0'

option 'type' 'mac80211'

option 'macaddr' '00:24:d2:15:1c:cd'

Page 5: OpenWRT en Huawei 553

option 'hwmode' '11g'

option 'disabled' '0'

Cambiamos la opción de 'disabled' de 1 a 0. Con esto, acabamos de activar el wifi del

router.

Editamos el fichero network

Código: vi /etc/config/network

Añadimos un nuevo interface llamado wwan con protocholo dhcp

Quedándonos así:

Citar

config 'interface' 'wwan'

option 'proto' 'dhcp'

Ahora añadimos otro, este, tendrá el nombre stabridge:

Citar

config 'interface' 'stabridge'

option 'proto' 'relay'

option 'network' 'lan wwan'

Como veis, este nuevo interface es el que usa el paquete relayd que instalamos

previamente.

Ahora toca editar el fichero de configuración wireless

Código: vi /etc/config/wireless

Más o menos así:

Citar

config 'wifi-device' 'radio0'

option 'type' 'mac80211'

option 'macaddr' '00:24:d2:15:1c:cd'

option 'hwmode' '11g'

option 'disabled' '0'

option 'txpower' '20'

option 'country' 'ES'

option 'channel' '13'

option 'distance' '12'

config 'wifi-iface'

option 'device' 'radio0'

option 'network' 'wwan'

option 'mode' 'sta'

Page 6: OpenWRT en Huawei 553

option 'ssid' 'ssid_de_la_red_a_conectar'

option 'encryption' 'psk'

option 'key' 'pass_de_la_conexion'

Lógicamente, debemos sustituir '13', 'ssid_de_la_red_a_conectar' y

'pass_de_la_conexion' por los datos oportunos.

Yo tengo configurada mi red en wpa-psk, si no es vuestro caso, deberéis cambiarlo

también.

Ahora hay que desactivar el dhcp:

Código: vi /etc/config/dhcp

Citar

config dhcp lan

option interface lan

option start 100

option limit 150

option leasetime 12h

option ignore 1

Option ignore debe estar en 1 (desactivado)

Ahora reiniciamos el servicio dhcp

Código: /etc/init.d/dchp restart

reconfiguramos el interfaz wifi

Código: wifi down; wifi

Para terminar, debemos volver a editar el fichero network.

Código: vi /etc/config/network

De nuevo, pongo el mío de ejemplo

Citar

config interface loopback

option ifname lo

option proto static

option ipaddr 127.0.0.1

option netmask 255.0.0.0

config interface lan

option type bridge

option ifname eth1

option proto static

Page 7: OpenWRT en Huawei 553

option ipaddr 10.0.1.94

option netmask 255.0.0.0

option gateway 10.0.0.1

option dns 8.8.8.8

config interface wan

option ifname eth0

option proto dhcp

config 'interface' 'wwan'

option 'proto' 'dhcp'

config 'interface' 'stabridge'

option 'proto' 'relay'

option 'network' 'lan wwan'

option 'ipaddr' '10.0.0.94'

En el interface lan, la opción ipaddr es la importante. Deberá estar en una subred

distinta a la que tenéis actualmente. En mi caso ha pasado de ser 10.0.0.94 a 10.0.1.94

Y en el inteface stabridge, opción ipaddr podremos la que teníamos hasta ahora

(10.0.0.94 para mí).

Esto en principio os puede resultar algo lioso (aunque en realidad no lo es si

entendemos que hay una redirección de tráfico entre dos interfaces), pero es la forma de

poder acceder desde 'detrás' del Huawei a la red principial y viceversa.

Rebotamos, esperamos unos minutos y todo debería funcionar. Si nos hemos

equivocado en algo y no podemos acceder al router, probamos con la ip que asignamos

en la interface lan (es posible que también tengamos que cambiar la ip de nuestra tarjeta

de red).

Samba

Instalamos samba, el servidor de impresión y varios paquetes necesarios para el soporte

de dispositivos usb

Código: opkg install luci-app-samba

opkg install luci-app-p910nd

opkg install kmod-usb-printer

opkg install kmod-usb2

opkg install kmod-usb-core

opkg install kmod-usb-ohci

opkg install usbutils

opkg install kmod-usb-storage e2fsprogs kmod-fs-vfat kmod-nls-cp437

kmod-nls-iso8859-1

opkg install ntfs-3g kmod-fs-ext4

Los dos últimos paquetes son para el soporte de ficheros ntfs y ext3/ext4. Deberéis

escoger uno o ambos dependiendo del formato del disco duro/pendrive que conectéis al

router.

Page 8: OpenWRT en Huawei 553

Después de la instalación, rebotamos.

Código: reboot

Ahora vamos a empezar a crear la estructura de directorios para compartir/descargar.

En mi caso, el disco tienes 2 particiones, una en formato ntfs (con unas copias de

seguridad), a la cual llamaré /130 gigas, y otra en formato ext2 a la que le pondré el

nombre de 35 gigas

Creamos los directorios para el montaje

Código: mkdir /mnt/130gigas

mkdir /mnt/35gigas

Editamos el fichero rc.local y añadimos las ordenes de montaje de las particiones (para

que se monten al inico del sistema)

Código: vi /etc/rc.local

Quedaría así

Citar

# Put your custom commands here that should be executed once

# the system init finished. By default this file does nothing.

ntfs-3g /dev/sda1 /mnt/130gigas -o rw,sync

mount -t ext2 /dev/sda2 /mnt/35gigas -o rw,sync

exit 0

Añadimos samba al inicio

Código: /etc/init.d/samba enable

Iniciamos samba

Código: /etc/init.d/samba start

Añadimos un usuario al sistema (necesario para compartir archivos)

Código: vi /etc/passwd

Citar

root:PcJ8cToKAkeCk:0:0:root:/root:/bin/ash

network:*:101:101:network:/var:/bin/false

nobody:*:65534:65534:nobody:/var:/bin/false

Page 9: OpenWRT en Huawei 553

daemon:*:65534:65534:daemon:/var:/bin/false

jar:*:1000:65534:jar:/mnt/130gigas:/bin/ash

Os pongo el contenido de mi fichero de ejemplo. La última línea, es la que debéis

añadir/editar, sustituyendo mi usuario (jar) por el vuestro, y la ruta del directorio del

usuario (/mnt/130gigas) por la vuestra.

Ponemos password al usuario

Código: passwd jar

Añadimos el password de samba para el usuario

Código: smbpasswd -a jar el_password_que_querais

Ahora debemos editar la configuración de las carpetas/directorios compartidos

Código: vi /etc/config/samba

Mi fichero de ejemplo

Citar

config 'samba'

option 'homes' '1'

option 'name' 'Huawei'

option 'description' 'Huawei'

option 'workgroup' 'GRUPO_TRABAJO'

config 'sambashare'

option 'name' '130gigas'

option 'path' '/mnt/130gigas'

option 'read_only' 'no'

option 'writeable' 'yes'

option 'create_mask' '0777'

option 'dir_mask' '0777'

option 'guest_ok' 'no'

option 'users' 'jar'

config 'sambashare'

option 'name' '35gigas'

option 'path' '/mnt/35gigas'

option 'read_only' 'no'

option 'writeable' 'yes'

option 'create_mask' '0777'

option 'dir_mask' '0777'

option 'guest_ok' 'no'

option 'users' 'jar'

Page 10: OpenWRT en Huawei 553

Comento:

option 'name' 'Huawei' (este es el nombre de equipo que veremos en nuestra red)

option 'description' 'Huawei' (una descripción del equipo)

option 'workgroup' 'GRUPO_TRABAJO' (el grupo de trabajo de vuestra red)

Como se puede ver, yo comparto dos directorios/carpetas. En ambos los permisos son

de lectura/escritura y sólo tiene acceso el usuario 'jar'

Rebotamos la máquina.

Código: reboot

Accedemos a nuestra red, a ver si todo está bien y vemos el router. De ser así, al intentar

entrar a los nuevos recursos compartidos se nos pedirá usuario (el usuario de sistema

que creamos) y contraseña (la que pusimos con el comando 'smbpasswd jar

el_password_que_querais')

Transmission

Para tener el ciente torrent transmission debemos instalar 3 paquetes

Código: opkg install transmission-daemon transmission-web transmission-remote

Acordaros previamente de actualizar la lista de paquetes

Código: opkg update

Lo primero, será añadir transmission para que se ejecute automáticamente cada vez que

se inicie el sistema (esto es opcional, lógicamente)

Código: /etc/init.d/transmission enable

Antes de iniciarlo por primera vez, vamos a editar el fichero de configuración de

acuerdo a nuestras necesidades y a crear una carpeta para los ficheros de condiguración

temporales de la sesión

Código: mkdir /etc/config/trans

vi /etc/config/transmission

Pongo el mío de ejemplo y comento después los parámetros más importantes

Citar

config transmission

option enabled 1

option config_dir '/etc/config/trans'

Page 11: OpenWRT en Huawei 553

option run_daemon_as_user root

option alt_speed_down 50

option alt_speed_enabled false

option alt_speed_time_begin 540

option alt_speed_time_day 127

option alt_speed_time_enabled false

option alt_speed_time_end 1020

option alt_speed_up 50

option bind_address_ipv4 '0.0.0.0'

option bind_address_ipv6 '::'

option blocklist_enabled false

option blocklist_url ''

option cache_size_mb 2

option dht_enabled true

option download_dir '/mnt/35gigas/torrents/incoming'

option download_queue_enabled true

option download_queue_size 4

option encryption 1

option idle_seeding_limit 30

option idle_seeding_limit_enabled false

option incomplete_dir '/mnt/35gigas/torrents/temp'

option incomplete_dir_enabled true

option lazy_bitfield_enabled true

option lpd_enabled false

option message_level 1

option open_file_limit 32

option peer_congestion_algorithm ''

option peer_limit_global 200

option peer_limit_per_torrent 50

option peer_port 51413

option peer_port_random_high 65535

option peer_port_random_low 49152

option peer_port_random_on_start false

option peer_socket_tos 0

option pex_enabled true

option port_forwarding_enabled true

option preallocation 1

option prefetch_enabled 1

option queue_stalled_enabled true

option queue_stalled_minutes 30

option ratio_limit 1.2

option ratio_limit_enabled true

option rename_partial_files true

option rpc_authentication_required false

option rpc_bind_address '0.0.0.0'

option rpc_enabled true

option rpc_password 'el_password_del_interfaz_web'

option rpc_port 9091

option rpc_url '/transmission/'

option rpc_username 'jar'

Page 12: OpenWRT en Huawei 553

option rpc_whitelist '127.0.0.1,10.0.0.*'

option rpc_whitelist_enabled true

option scrape_paused_torrents_enabled true

option script_torrent_done_enabled false

option script_torrent_done_filename ''

option seed_queue_enabled false

option seed_queue_size 10

option speed_limit_down 100

option speed_limit_down_enabled false

option speed_limit_up 120

option speed_limit_up_enabled true

option start_added_torrents true

option trash_original_torrent_files false

option umask 18

option upload_slots_per_torrent 14

option utp_enabled true

option scrape_paused_torrents true

option watch_dir_enabled false

option watch_dir ''

option config_dir '/etc/config/trans' (directorio para los ficheros temporales de

configuración y dónde se almaceran los archivos .torrent que estamos descargando)

option enabled 1 (deberéis modificar el 0 por un 1)

option download_dir '/mnt/35gigas/torrents/incoming' (directorio dónde se moverán los

torrents terminados)

option download_queue_enabled true (este parámetro debe estar en true, de lo

contrario los ficheros finalizados no se moverán a la carpeta anterior)

option incomplete_dir '/mnt/35gigas/torrents/temp' (directorio temporal)

option incomplete_dir_enabled true (debe estar en true)

option peer_limit_global 200 (es el número total de peers/clientes)

option peer_limit_per_torrent 50 (número de peers/clientes por torrent)

option peer_port 51413 (puerto que usará transmission, deberá estar abierto en el

router-adsl o router/neutro que os de salida a internet)

option ratio_limit 1.2 (yo he puesto que al llegar al ratio 1.2 de compartición, los

torrents se detengan)

option ratio_limit_enabled true (para que la opción anterior sea efectiva esta, debe

estar en true)

option rpc_enabled true (debe estar en true)

option rpc_password 'el_password_del_interfaz_web' (este será el password que se nos

solicitará cuando nos conectemos mediante el webui)

option rpc_port 9091 (el puerto por el cual accederemos al webui)

option rpc_username 'jar' (el usuario del webui)

option rpc_whitelist '127.0.0.1,10.0.0.*' (aquí limitaremos el rango de ips que se podrán

conectar al webui, yo he puesto el rango de mi red 10.0.0.*)

option rpc_whitelist_enabled true (debe estar en true para que el parámetro anterior

sea efectivo)

option speed_limit_down 100 (límite de velocidad de descarga)

option speed_limit_down_enabled false (como no quiero limitar la velocidad de bajada,

pongo la opción en false)

option speed_limit_up 120 (límite de subida)

option speed_limit_up_enabled true (como quiero limitar la subida, para no saturar la

Page 13: OpenWRT en Huawei 553

línea, pongo la opción en true)

Una vez modificado, iniciamos transmission

Código: /etc/init.d/transmission start

Para conectarnos al webui, abrimos en el navegador la dirección de nuestro router

añadiendo 9091 como parámetro, tal que así http://10.0.0.94:9091 (la ip de mi Huawei

es la 10.0.0.94).

Introducimos usuario y contraseña y ya podemos añadir torrents (mediante el icono de

la parte superior izquierda).

El webui, es algo 'sencillito'. Si queremos tener un control total sobre transmission,

recomiendo instalar la siguiente aplicación: http://code.google.com/p/transmisson-

remote-gui/ . Hay versiones para windows, linux y Mac.

Servidor de impresión.

Entre los paquetes que instalamos al inicio, estaba el servidor de impresión. Si lo

hicimios de forma correcta, ahora desde LuCi podremos verlo y configurarlo.

La ruta es LuCi/Services/p910nd - Printer Server. Marcamos enable y Bidirectional

Mode.

Ahora, para añadir la impresora a un equipo con WindowsXP (con win7 o Linux es

muy similar):

Inicio/Configuración/Impresoras y Faxes

Escogemos Agregar impresora. Nos saldrá el asistente, damos a siguiente.

Seleccionamos Impresora Local conectada a este equipo y desmarcamos Detectar e

instalar mi impresora Plug & Play automáticamente. Damos a siguiente.

En esta nueva ventana seleccionamos Crear nuevo puerto y escogemos en el tipo de

puerto Standar TCP/IP port. Siguiente.

Otra vez siguiente.

En nombre de impresora o direccion ip, ponemos la ip que hayamos asignado al router.

Siguiente.

En la nueva ventana, escogemos en Tipo de dispositivo Personalizado y nos aseguramos

(pinchando en configuración) que el puerto es el 9100 y que el protocolo esté marcado

como sin formato (win7 indicada Raw).

Le damos a finalizar, y ahora escogemos (de entre la inmesa lista) nuestra impresora

(marca y modelo).

Por último, podemos imprimir una página de prueba para comprobar el correcto

funcionamento

Servidor FTP

Fácil.

Actualizamos la lista de paquetes

Page 14: OpenWRT en Huawei 553

Código: opkg update

Instalamos pure-ftpd

Código: opkg install pure-ftpd

Lo configuramos

Código: vi /etc/config/pure-ftpd

Citar

config pure-ftpd

option port '21'

option noanonymous '1'

option chrooteveryone '1'

option maxclientsperip '10'

option maxclientsnumber '4'

option peruserlimits '3:4'

option umask '133:022'

option authentication 'unix'

option enabled '1'

Añadimos el servicio al inicio

Código: /etc/init.d/pure-ftpd enable

Lo ponemos en marcha

Código: /etc/init.d/pure-ftpd start

MLDonkey

MLDonkey (http://mldonkey.sourceforge.net/Main_Page) es un cliente p2p

multiplataforma y multiprotocolo.

Tiene un consumo de recursos muy comedido, así que va realmente bien en equipos

limitados en hardware (como un router).

Para que funcione en nuestro hg553 con OpenWRT, este, debe estar compilado con

FPU Emulation. Los firmwares que podemos descargar del servidor de OpenWRT no

están compilados con esta opción, así que, o bien compilamos nosotros mismos o nos

bajamos alguna que sí la incluya (hay varias en este hilo).

Lo primero será instalar screen (el que quiera saber más:

http://es.wikipedia.org/wiki/Screen) que lo necesitaremos más adelante.

Código: opkg update

opkg install screen

Page 15: OpenWRT en Huawei 553

Ahora nos descargamos los binarios de mldonkey compilados para nuestra plataforma

desde aquí: Versión 3.1.0

Versión 3.1.3

Una vez descomprimido veremos varias carpetas: full, minimal, mormal y normal_gd,

que corresponden a los diferentes protocolos soportados. Como yo únicamente lo uso

para la red edonkey (que incluye kademlia), siempre uso la versión minimal (que

además es la que menos recursos consume).

Así pues, esa será la carpeta que nos 'quedemos'. Dentro de ella, hay otra (mldonkey-

distrib-3.1.0.CVS) que por comodidad renombraremos como mldonkey. Dentro de esta,

debemos descomprimir el fichero libraries.tar.bz2.

Ahora, copiamos la carpeta mldonkey al pendrive o disco duro que tengas conectado a

nuestro router (podéis usar winscp para hacerlo).

Abrimos putty y creamos en el disco duro un script para ejecutar mldonkey (yo lo he

llamado start_mlnet)

Código: vi /mnt/2gigas/start_mlnet

Adecuar las rutas a vuestro caso:

Código: #ruta donde tenemos mldonkey y sus ficheros de configuración

MAIN_FOLDER="/mnt/2gigas/mldonkey/"

#ruta a la carpeta lib (el fichero libraries.tar.bz2 descomprimimos

previamente

MY_LIBRARY_PATH="/mnt/2gigas/mldonkey/lib/"

LD_LIBRARY_PATH=$MY_LIBRARY_PATH:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

#este es el comando para ejecutarlo, en la primera parte 'apuntamos'

el directorio de mldonkey

#y en la segunda parte al ejecutable en sí, que es mlnet

export MLDONKEY_DIR="/mnt/2gigas/mldonkey/" &&

/mnt/2gigas/mldonkey/mlnet

Guardamos el fichero y lo hacemos ejecutable

Código: chmod +x /mnt/2gigas/start_mlnet

Lanzamos screen y ejecutamos nuestro script

Código: screen

/mnt/2gigas/start_mlnet

Page 16: OpenWRT en Huawei 553

Si todo va bien, veremos en pantalla algo así:

Código: 2012/04/12 15:29:55 [cO] Starting MLDonkey 3.1.0.CVS ...

2012/04/12 15:29:55 [cO] Language EN, locale ANSI_X3.4-1968, ulimit

for open files 1024

2012/04/12 15:29:55 [cO] raised ulimit for open files from 1024 to

4096

2012/04/12 15:29:55 [cO] MLDonkey is working in /mnt/2gigas/mldonkey

2012/04/12 15:29:55 [cO] creating new MLDonkey base directory in

/mnt/2gigas/mldonkey

2012/04/12 15:29:55 [cO] loaded language resource file

2012/04/12 15:29:55 [DNS] Resolving [OpenWrt] ...

2012/04/12 15:29:56 [DNS] Resolving [www.mldonkey.org] ...

2012/04/12 15:29:56 [DNS] Resolving [mldonkey.sf.net] ...

2012/04/12 15:29:56 [DNS] Resolving [www.mldonkey.net] ...

2012/04/12 15:29:56 [DNS] Resolving [www.google.com] ...

The core therefore is unable to get eDonkey serverlists and loading

.torrent files via dllink from websites is also impossible.

If you are using MLDonkey in a chroot environment you should

consider reading this article to get DNS support back:

http://mldonkey.sourceforge.net/Chroot

2012/04/12 15:29:56 [cO] Logging in /mnt/2gigas/mldonkey/mlnet.log

2012/04/12 15:29:59 [dMain] Core started

Es posible que la primera vez que lo ejecutemos tarde algo en 'responder' (cuando

vemos la última línea que dice [dMain] Core started) ya que debe crear una serie de

ficheros (de configuración).

Ya tenemos mldonkey en marcha, así que abrimos nuestro navegador favorito y

escribimos la ip de nuestro router seguida de : y el puerto 4080 (en mi caso:

http://10.0.0.240:4080).

Como se puede ver por la captura de pantalla, nos avisa de un problema, y es que por

defecto mldonkey viene preconfigurado para que únicamente se pueda conectar a él

desde la ip de la máquina que se ejecuta

Page 17: OpenWRT en Huawei 553

Volvemos a la ventana de putty y cerramos a las 'bravas' (con control + z) mldonkey.

Debemos editar el fichero downloads.ini para añadir el rango de las ip's admitidas.

Está así

Código: allowed_ips = [

"127.0.0.1";]

Y lo dejaremos así (repito, adecuar los parametros a vuestra caso/rango de red)

Código: allowed_ips = [

"127.0.0.1";

"10.0.0.0-10.0.0.255";]

Guardamos el fichero y volvemos a arrancar mldonkey.

Por cierto, si en algún momento al ejecutarlo no véis [dMain] Core started, sino que

simplemente parece que la aplicación se cierra sin más, mirad el fichero mlnet.log,

seguro que os da alguna pista si hay algún problema

Volvemos al navegador, y si todo ha ido bien, debéis ver una pantalla como esta:

Page 18: OpenWRT en Huawei 553

De acuerdo al aviso, lo primero será poner pass al usuario admin, así que escribimos

useradd admin este_es_el_password (poned el pass que os apetezca) y le damos a

Input

Ahora ya debería solicitarnos usuario y contraseña

Vamos a configurar las cosas más básica desde el interfaz web.

Pinchamos en Options, después en Net y habilitamos la red kademlia.

Damos a Enter para hacer efectivos los cambios.

Page 19: OpenWRT en Huawei 553

Ahora pinchamos en Options y SysInfo. Si os fijáis, en la parte inferior se os muestran

los puertos que usa mldonkey. Estos son los 3 puertos que debéis abrir en vuestro router

para tener un funcionamiento óptimo.

Page 20: OpenWRT en Huawei 553

Además, en la misma pantalla os muestra mucha información util, como la ruta de los

directorios icoming y temporal, etc.

Para no tener siempre abierto putty (ya que si lo cerramos sin más, mldonkey también

se cerrará), y si hemos usado previamente screen, podemos recuperar y luego cerrar la

sesión pulsando CONTROL + D, CONTROL + A, CONTROL + D.

Si en algún momento queremos recuperar la sesion de screen escribimos desde puttty

Código: screen -r

Para cerrar correctamente mldonkey, lo haremos desde el interfaz web: Botón Help+ y

despues KillCore

Para terminar os recomiendo instalar (en el PC dónde penséis controlar la descargas) el

gui Sancho: http://sancho-gui.sourceforge.net/

Page 21: OpenWRT en Huawei 553

Hay versiones para Linux, windows, Solaris, FreeBSD y OSX, y es bastante más

'amigable' (se puede poner en español) que el interfaz web.

Quedan muchas cosas por configurar (el usuario que verán los clientes edonkey, el

ancho de banda, etc.), pero eso ya os lo dejo a vosotros

rtorrent (cliente torrent) + rutorrent (webui)

De la wikipedia: rTorrent es un cliente de BitTorrent en modo texto capaz de rivalizar

con otros clientes de interfaz gráfica; en especial por su bajo consumo de recursos.

A diferencia de transmission, rtorrent no incluye un webui. Así que para poder controlar

el cliente desde un navegador, deberemos instalar un servidor web (el incluído con LuCi

Page 22: OpenWRT en Huawei 553

es demasiado 'sencillo'), php y diversas utilidades.

Vamos a ello.

Código: opkg install rtorrent tar screen coreutils coreutils-stat wget

opkg install lighttpd php5 php5-cgi lighttpd-mod-access lighttpd-mod-

auth lighttpd-mod-cgi lighttpd-mod-scgi mini-httpd-htpasswd

Después de unos minutos de espera, vamos a crear en nuestro disco duro o pen, los 3

directorios que necesitamos (más adelante explico para que es cada uno)

Código: mkdir /mnt/35gigas/rtorrent/

mkdir /mnt/35gigas/rtorrent/dl

mkdir /mnt/35gigas/rtorrent/sesion

Y creamos el fichero de configuración de rtorrent, que debe estar en la carpeta /root

Código: cd /root

vi .rtorrent.rc

Este es mi fichero, dónde he comentado algunas líneas.

Código: # This is an example resource file for rTorrent. Copy to

# ~/.rtorrent.rc and enable/modify the options as needed. Remember to

# uncomment the options you wish to enable.

# Minumum amount of peers to connect per torrent, if available.

min_peers = 20

# Minumum amount of peers to connect per torrent.

max_peers = 40

# Same as above but for seeding completed torrents (-1 = same as

downloading)

#min_peers_seed = 10

#max_peers_seed = 20

# Maximum number of simultanious uploads per torrent.

max_uploads = 5

# Global download rate in KiB. "0" for unlimited.

# Máxima velocidad de descarga. "0" es sin límite

download_rate = 0

# Global upload rate in KiB. "0" for unlimited.

# Máxima velocidad de subida

upload_rate = 150

# Default directory to save downloaded files. Note it doesn't support

# space yet.

#

# Directorio por defecto para las descargas

directory = /mnt/35gigas/rtorrent/trabajo/

# Watch a directory for new torrents, and stop those that have been

deleted.

#schedule =

watch_directory,5,5,load_start=/opt/share/torrent/dl/*.torrent

Page 23: OpenWRT en Huawei 553

#

# Directorio dónde rtorrent irá a buscar ficheros ".torrent"

# Todos los fichero que subamos a este directorio, será descargados

automáticamente por rtorrent

schedule =

watch_directory,5,5,load_start=/mnt/35gigas/rtorrent/dl/*.torrent

schedule = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.

#schedule = low_diskspace,5,60,close_low_diskspace=100M

# Default session directory. Make sure you don't run multiple instance

# of rtorrent using the same session directory. Perhaps using a

# relative path?

#session = /opt/share/torrent/session

# Aquí se guardarán datos de la sesión actual

session = /mnt/35gigas/rtorrent/sesion

# The ip address reported to the tracker.

#ip = rakshasa

# The ip address the listening socket and outgoing connections is

# bound to.

#bind = rakshasa

# Port range to use for listening.

# Podemos definir un rango de puertos por ejemplo 8295-8299 o un único

puerto 8299-8299

port_range = 8299-8299

# Start opening ports at a random position within the port range.

port_random = no

# Check hash for finished torrents. Might be usefull until the bug is

# fixed that causes lack of diskspace not to be properly reported.

#check_hash = no

# Set whetever the client should try to connect to UDP trackers.

use_udp_trackers = yes

# Alternative calls to bind and ip that should handle dynamic ip's.

#schedule = ip_tick,0,1800,ip=rakshasa

#schedule = bind_tick,0,1800,bind=rakshasa

#

# Do not modify the following parameters unless you know what you're

doing.

#

# Hash read-ahead controls how many MB to request the kernel to read

# ahead. If the value is too low the disk may not be fully utilized,

# while if too high the kernel might not be able to keep the read

# pages in memory thus end up trashing.

#hash_read_ahead = 10

# Interval between attempts to check the hash, in milliseconds.

#hash_interval = 100

# Number of attempts to check the hash while using the mincore status,

# before forcing. Overworked systems might need lower values to get a

# decent hash checking rate.

Page 24: OpenWRT en Huawei 553

#hash_max_tries = 10

# Max number of files to keep open simultaniously.

#max_open_files = 128

# Number of sockets to simultaneously keep open.

#max_open_sockets = <no default>

# Example of scheduling commands: Switch between two ip's every 5

# seconds.

#schedule = "ip_tick1,5,10,ip=torretta"

#schedule = "ip_tick2,10,10,ip=lampedusa"

# Remove a scheduled event.

#schedule_remove = "ip_tick1"

# Stop torrents when reaching upload ratio in percent,

# when also reaching total upload in bytes, or when

# reaching final upload ratio in percent.

# example: stop at ratio 2.0 with at least 200 MB uploaded, or else

ratio 20.0

#schedule = ratio,60,60,"stop_on_ratio=200,200M,2000"

# Aquí se definen los ratios. Yo prefiero usar el plugin 'ratio'

schedule = ratio,30,60,stop_on_ratio=200

# Encryption options, set to none (default) or any combination of the

following:

# allow_incoming, try_outgoing, require, require_RC4, enable_retry,

prefer_plaintext

#

# The example value allows incoming encrypted connections, starts

unencrypted

# outgoing connections but retries with encryption if they fail,

preferring

# plaintext to RC4 encryption after the encrypted handshake

#

# encryption = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are

down.

# May be set to "disable" (completely disable DHT), "off" (do not

start DHT),

# "auto" (start and stop DHT as needed), or "on" (start DHT

immediately).

# The default is "off". For DHT to work, a session directory must be

defined.

#

# Si habiltamos el soporte DHT necesitaremos un puerto abierto para él

dht = on

# UDP port to use for DHT.

#

# Aquí el puerto para el DHT

dht_port = 6881

# Enable peer exchange (for torrents not marked private)

#

# Se usará para el intercambio de fuentes entre pares en trackers

marcados como no privados

Page 25: OpenWRT en Huawei 553

peer_exchange = yes

#

# Do not modify the following parameters unless you know what you're

doing.

#

scgi_port = 127.0.0.1:5000

En el directorio raiz del router crearemos una nueva carpeta dónde se alojaran los

ficheros para el servidor web.

Como ya tenemos un directorio www, crearemos otro con el nombre www1 (sí soy muy

original )

Código: cd /

mkdir /www1

Nos movemos al nuevo directorio y descargamos rutorrent

Código: cd /www1/

wget http://rutorrent.googlecode.com/files/rutorrent-3.4.tar.gz

Lo descomprimimos y después, borramos el fichero comprimido.

Código: tar -xvf rutorrent-3.4.tar.gz

rm rutorrent-3.4.tar.gz

Ahora vamos a proteger el directorio /www1/ para que cuando se quiera acceder desde

el navegador a rutorrent (o cualquier otro webui que podamos instalar) nos pida usuario

y contraseña. En lugar de root (que no se refiere al usuario root del sistema) podemos

poner el usuario que nos de la gana

Código: cd /www1/

htpasswd -c ./.htpasswd root

Ahora toca editar el fichero de configuración del servidor web (lighttpd)

Código: vi /etc/lighttpd/lighttpd.conf

Voy a ir comentándolo por partes

Código: # lighttpd configuration file

#

## modules to load

# all other module should only be loaded if really neccesary

# - saves some time

# - saves memory

server.modules = (

"mod_access",

"mod_scgi",

# "mod_rewrite",

# "mod_redirect",

# "mod_alias",

"mod_auth",

Page 26: OpenWRT en Huawei 553

# "mod_status",

# "mod_setenv",

# "mod_fastcgi",

# "mod_proxy",

# "mod_simple_vhost",

"mod_cgi",

# "mod_ssi",

# "mod_usertrack",

# "mod_expire",

# "mod_webdav"

)

Debemos descomentar (quitar el "#") de las líneas:

server.modules = (

"mod_access",

"mod_scgi",

"mod_auth",

"mod_cgi",

)

Es el último paréntesis que se ve debajo de # "mod_webdav"

Y las líneas se refieren a los modulos que vamos a usar con lighttpd

Código: ## a static document-root, for virtual-hosting take look at the

## server.virtual-* options

server.document-root = "/www1/"

Aquí le indicamos el directorio en el que estarán los documentos del servidor.

Código: ## where to send error-messages to

server.errorlog = "/var/log/lighttpd/error.log"

Y aquí dónde se creará el log de errores.

Código: ## bind to port (default: 80)

server.port = 8010

Como el puerto 80 lo usa el servidor web de LuCi, debemos indicar un nuevo puerto

para lighttpd. En mi caso el 8010

Código: #### proxy module

## read proxy.txt for more info

#proxy.server = (

# ".php" => (

# "localhost" => (

# "host" => "192.168.0.101",

# "port" => 80

# )

# )

#)

scgi.server = (

"/RPC2" =>

( "127.0.0.1" =>

(

"host" => "127.0.0.1",

Page 27: OpenWRT en Huawei 553

"port" => 5000,

"check-local" => "disable"

)

)

)

Debajo del proxy module (que he dejado en la cita de ejemplo), debemos indicar los

parametros del scgi.server, que son necesarios para la comunicación entre rtorrent y el

servidor web.

Código: #### CGI module

cgi.assign = ( ".php" => "/usr/bin/php-cgi" )

La ruta de php-cgi

Código: auth.backend = "htpasswd"

auth.backend.htpasswd.userfile = "/www1/.htpasswd"

auth.require = ( "/" =>

(

"method" => "basic",

"realm" => "Introduce Usuario y Password",

"require" => "user=root"

)

)

Añadimos esto al final del fichero. Es dónde definimos el directorio protegido (para el

que creamos el usuario y password previamente con htpasswd)

Si en lugar de root, habéis usado otro usuario, debéis modificarlo aquí: "user=root"

Hemos terminado con el fichero lighttpd.conf, así que guardamos los cambios. Ahora

toca modificar php.ini para indicar la ruta de la carpeta de nuestro servidor web

Código: vi /etc/php.ini

Código: doc_root = /www1

Para que no os perdáis, está a mitad del fichero en el apartado " Paths and Directories "

Guardamos el fichero.

Vamos a ir probando las cosas ...

Desde screen, arrancamos rtorrent

Código: screen

rtorrent

Si todo ha ido bien, veremos una pantalla similar a esta.

(si en algún momento queréis cerrar rtorrent: Control + Q)

Page 28: OpenWRT en Huawei 553

Ahora para recuperar putty, y como siempre que hayamos lanzado una aplicación desde

screen: CONTROL+D, CONTROL+A, CONTROL+D

Habilitamos el nuevo servidor web para que se ejecute al inicio

Código: /etc/init.d/lighttpd enable

Y lo reiniciamos para que aplique los cambios que hemos hecho (si da algún mensaje de

error, es que hay algún módulo o parámetro mal configurado)

Código: /etc/init.d/lighttpd restart

Ahora abrimos nuestro navegador y escribimos http://ip:8010/rutorrent (dónde ip, es la

ip del hg553)

Si lo hemos hecho bien, se nos pedirá usuario y contraseña, después de introducirlo

veremos algo parecido a esta captura

Page 29: OpenWRT en Huawei 553

En el registro se nos muestran las siguientes líneas:

Código: WebUI started.

Webserver user can't access 'stat' program. Some functionality will be

unavailable.

La primera, nos dice que el WebUI ha sido iniciado, en la segunda que no puede

acceder al programa 'stat'.

Vamos a arreglarlo

Para evitar este aviso de error, hemos de crear un enlace simbólico a stat

Código: cd /www1/rutorrent

ln -s /usr/bin/stat stat

Y editar el config.php de rutorrent

Código: vi /www1/rutorrent/conf/config.php

Código: "php" => '/usr/bin/php-cgi', //

Something like /usr/bin/php. If empty, will be found in PATH.

"curl" => '', // Something like

/usr/bin/curl. If empty, will be found in PATH.

"gzip" => '', // Something like

/usr/bin/gzip. If empty, will be found in PATH.

Page 30: OpenWRT en Huawei 553

"id" => '', // Something like

/usr/bin/id. If empty, will be found in PATH.

"stat" => '/www1/rutorrent/stat', //

Something like /usr/bin/stat. If empty, will be found in PATH.

Las líneas que debemos modificar son la primera y la última. Hay que indicar la ruta a

php-cgi y a stat respectivamente.

Guardamos los cambios y recargamos la página del navegador.

El 'aviso' de stat habrá desaparecido

Ahora vamos a instalar unos cuantos plugins, que nos permitirán añadir funcionalidades

a rutorrent.

Tenéis una lista completa con una pequeña descripción aquí:

http://code.google.com/p/rutorrent/wiki/Plugins

Instalad sólo los que necesitéis, ya que cuantos más instalemos, más 'carga' innecesaria

añadiremos al servidor web.

Yo uso: ratio, diskspace y erase data

Bajamos diskspace

Código: cd /www1/rutorrent/plugins

wget http://rutorrent.googlecode.com/files/diskspace-3.4.tar.gz

Lo descoprimimos/instalamos y después borramos el fichero comprimido

Código: tar -xvf diskspace-3.4.tar.gz

rm diskspace-3.4.tar.gz

Idem con erasadata y ratio

Código: wget http://rutorrent.googlecode.com/files/erasedata-3.4.tar.gz

tar -xvf erasedata-3.4.tar.gz

rm erasedata-3.4.tar.gz

wget http://rutorrent.googlecode.com/files/ratio-3.4.tar.gz

tar -xvf ratio-3.4.tar.gz

rm ratio-3.4.tar.gz

Por último deberemos volver a moficar el fichero config.php de rutorrent para que nos

muestre de forma correcta el espacio en disco:

Código: vi /www1/rutorrent/conf/config.php

Sustituimos la línea "$topDirectory = '/';" por "$topDirectory = '/mnt/35gigas';"

Después de la instalación de los plugins, hay que recargar la página del navegador.

Ahora a disfrutarlo/configurarlo a vuestro gusto.

Page 31: OpenWRT en Huawei 553

Un aviso, la versión actual disponible para openwrt NO SOPORTA enlaces magnet.

aria2 + webui-aria2

Aria2 es un programa de descarga de ficheros en línea de comandos. Es compatible con

enlaces HTTP, FTP, BitTorrent y Metalink, y puede descargar más de un fichero a la

vez usando todo el ancho de banda disponible. Fuente: Softonic

La última versión disponible (1.15.1) es la que está en los repositorios de OpenWRT.

Para instalarlo:

Código: opkg update && opkg install aria2

Ahora a crear el fichero de configuración

Código: vi /etc/config/aria2.conf

Citar

daemon=true

enable-rpc=true

rpc-listen-port=6800

rpc-listen-all=true

####### Directorio de descargas ##########

dir=/mnt/35gigas/aria2

#Directorio dónde se alojará el log de aria2

log=/mnt/35gigas/aria2/aria2.log

log-level=warn

Page 32: OpenWRT en Huawei 553

dht-listen-port=6599

auto-save-interval=30

#seed ratio and seed time in minutes

seed-ratio=1.0

seed-time=1460

max-upload-limit=120K

event-poll=select

El puerto 6599 es el que usaremos para dht. Debemos abrirlo en el router principal para

que tenga salida a internet.

Listos, ya podemos ejecutar aria2, y lo haremos indicándole la ruta del fichero de

configuración

Código: aria2c --conf-path /etc/config/aria2.conf

Para saber si está en marcha podéis usar top o htop (si es que lo habéis instalado)

Ahora vamos a proceder a instalar el webui.

Desde un navegador, nos vamos a la web del desarollador

https://github.com/ziahamza/webui-aria2 , pinchamos en downloads y luego en

download as zip.

Descomprimimos el fichero, renombramos la carpeta a aria2web y lo copiamos con

winscp dentro del subdirectorio /www1

Ahora, abrimos el navegador y ponemos en la dirección: http://ip:8010/aria2web (dónde

ip, es la ip del hg553)

Recordar, que igual que para acceder a rutorrent, nos pedirá user y pass.

Page 33: OpenWRT en Huawei 553

IMPORTANTE: A lo largo del hilo, hay diferentes

compilaciones del firmware para este router. Alguna de éllas

ya incluyen LuCi, transmission, pure-ftp, etc. Así que es

recomendable, antes de ponerse a actualizar el router, leer el

hilo completo, ya que luego a la hora de instalar/configurar

pueden ahorrarnos mucho tiempo (y algún que otro

quebradero de cabeza)

Para el que quiera ahorrarse algunos pasos, aquí tiene un par de compilaciones.

33378: http://ubuntuone.com/0b384ZfyQc0SgePdJJQlh4 SIN ADSL. Kernel 3.3.8.

Driver wifi de Broadcom,

transmission, cliente ntp,

vpnc, crda, p910nd

(servidor de impresion),

soporte de sistema de

ficheros

ext4,fat,cifs(montar

carpetas

compartidas),soporte de

tarjetas de sonido usb,

usb, video4linux(camaras

web, todos los modulos

incluidos), modulo rt2800-

usb para adaptadores wifi

con chip Ralink, soporte

para tarjetas realtek

Page 34: OpenWRT en Huawei 553

8187,fdisk, swap-utils, bash,bzip2, usbutils, y

Luci con: Tema adicional

Bootstrap, Gestión de

puntos de montaje,

Configuración de LEDs,

Gestión del servidor de

impresora, Configuración

de transmission,

Configuración de dynamic

ns, Configuración de

samba, Configuración de

openvpn, ushare,minidlna

y los modulos para usar

modems 3g

r30875:

http://www.mediafire.com/download.php?2h9bdylt4s9x1hv SIN ADSL. Kernel

3.0.18.Tiene FPU

emulation, LuCi, driver

wifi de Broadcom,

transmission, p910nd

(servidor de impresion),

soporte de sistema de

ficheros ext4, samba,

pure-ftp (servidor de ftp),

wol, etc.

Y por cierto, para el que use las compilaciones con el driver propietario de broadcom,

la configuración del wifi que se comenta en este post, no es válida.

No hay que instalar relayd. Este driver conecta como 'cliente transparente' (en la

misma subred del AP principal) sin ningún paquete adicional. Para configurarlo desde

LuCi, activamos el wifi, escaneamos, nos unimos a la red, introducimos la clave,

indicamos que el interface asociado es LAN y listos (previamente, deberemos

haber configurado el apartado LAN, en la misma subred del router principal, y

poniendo la IP del mismo, como puerta de enlace y servidor DNS)