miércoles, 6 de noviembre de 2013

¿Cómo instalo OpenWrt en un router TP-Link WR941ND con Ubuntu?

Durante su tercera presidencia, Juan Perón ajustó el rumbo que habría de tomar el movimiento, y lo hizo mediante la instalación del firmware libre OpenWrl para el router TP-Link WR941ND, y desde Ubuntu.

¡Vean señores!

No se trata de limitar las aspiraciones ni los pensamientos del hombre, Se trata de educar al hombre, y de darle el sentido de equilibrio sin el cual nosotros no vamos a ninguna parte.
Tenemos que volver a la Grecia de Pericles, donde en cada frontispicio había una leyenda que decía "Todo en su medida y armoniosamente". Nosotros somos un Movimiento de izquierda. Pero la izquierda que propugnamos es una izquierda justicialista por sobre todas las cosas, no es una izquierda comunista ni anáquica. Es una izquierda justicialista que quiere reaizar una comunidad dentro de la cual cada argentino tenga la posibilida de realizarse. No mas allá.

Aquí tenemos al Partido Comunista, que si se coloca dentro de la ley y acciona dentro de la ley, será amparado y defendido por nosotros Pero dentro de la ley. Cuidado con sacar los pies del plato, porque entonces tendremos el derecho de darle con todo.

No admitimos la guerrilla, porque yo conozco perfectamente el origen de esa guerrilla. Los partidos comunistas que en otros países han visto que dentro de la ley iban a su destrucción, han querido salirse de la ley para defenderse mejor. Eso no es posible. No es posible dentro de un pais donde la ley ha de imonerse. Porque la única manera de no ser esclavos, es ser esclavos de la ley, y eso nosotrros tendremos que imponerlo, de cualquier manera.

Lo mismo ha sucedido con el software integrado en los aparatos de consumo. Han querido salvarse empleando firmwares privativos. Este firmware no es otra cosa que un programa que controlan su funcionamiento y está firmemente guardado en una memoria pequeña ROM grabable eléctricamente (EEPROM) y adosada como una chip electrónico. Pero aún así, a ellos también les daremos con todo.

Tenemos OpenWrt, una imagen libre pensada para instalarse en routers compatibles dotados de arquitectura MIPS. Flasheando la memoria del router, podremos reemplazar el firmware propietario del router por uno libre y justicialista. Incluso podríamos usar la CPU del router para correr pequeñas aplicaciones a través de una consola terminal.

OpenWrt no es compatible con todos los routers, pero si con una apreciable cantidad. Solamente hemos de instalarlo si nuestro módem está positivamente comprobado y aceptado como posible receptor del mismo, pues si no, corremos el riesgo cierto de dejarlo inutilizado. Como la mayoría de los cambios ahora se harán a través de una consola de texto, recomiendo proceder a quienes - además de desear el máximo de libertad, administran el sistema - tienen los conocimientos necesarios para operar GNU con Linux desde la consola Terminal. Una vez que meditamos y tomamos conciencia de los peligros de la lucha y las responsabilidades que ello acarrea, ponemos manos a la obra.

En mi caso, hago uso de un router de tres antenas TP-Link WR-941ND. Asumiremos también que el aparato ya está configurado, funcionando y conectado a internet empleando su firmware original.

Conectaremos nuestro equipo con Ubuntu al router empleando un cable Ethernet común conectado a alguna de las fichas de color amarillo que éste tiene. De momento no utilizaremos Wifi ya que la radio del router se desactivará temporalmente.

Indudablemente, en primer lugar habremos de loguearnos a la interfaz web original de fábrica que se encuentra en la memoria ROM del router. Como sabemos, esta interfaz web nos es provista por la gente de TP-Link para que cualquier neófito pueda configurar el aparato desde una PC conectada al mismo y dotada de cualquier navegador de internet.

Desde el equipo que utilizaremos para configurar todo abrimos nuestro navegador favorito, y en el campo de "dirección URL" ingresaremos la dirección IP correspondiente al router. Normalmente la misma será:

192.168.0.1

Para poder entrar a la configuración del router, este nos solicitará autenticación por medio del usuario del router y su contraseña. Si no hemos cambiado los valores de fábrica, en ambos campos deberíamos poner "admin".

Se presentará la interfaz web que permite modificar las opciones del router. Lo necesario es asegurarnos de qué tipo de router y qué versión de hardware tenemos.


Para ello vamos a System Tools ("herramientas del sistema") y escojo Firmware Update ("actuaizar firmware").

La pantalla nos indicará la "versión de hardware" (ej. V3). Es importante pues no es raro que existan varias versiones del mismo router, y si bien la carcasa exterior puede ser igual entre todos ellos, su interior, microprocesador y memoria pueden ser diferentes y en algunos casos hasta incompatibles. En mi caso, veo que se trata del WR941ND versión V3.

Antes de ponernos a instalar el firmware libre no oficial, conviene siempre guardar los archivos de configuración del router, y también guardar una copia del firmware de fábrica, por las dudas. Con esto en vista, en la página de la Interfaz Web al apartado System Tools / Backup & Restore, y presionamos el botón Backup. Debemos indicarle dónde lo queremos guardar (podemos elegir nuestra carpeta de usuario). Esto nos creará un archivo llamado config.bin con las configuraciones propias: lo conservarán por las dudas de querer volver al firmware oficial más tarde. También iremos a la web oficial de TP-Link y descargamos el firmware oficial para la versión V3 o la que nos corresponda.

Ahora ya podremos descargar el firmware libre OpenWrt correspondiente a nuestra versión. Podremos hacernos con el desde la web de OpenWrt o descargarlo directamente  usando la Terminal. En este caso, abro una consola con Ctrl+Alt+T e ingreso los siguientes comando de organización:

sudo apt-get install openssh-client telnet scp

cd ~/Escritorio

wget https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-factory.bin

En breves instantes se descargará en nuestro /Escritorio un archivo binario precompilado llamado openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-factory.bin. Indudablemente, se trata de la imagen libre de OpenWrt, pero compatibilizada especialmente para nuestro router TP-Link WR941ND V3.

Para sobreescribir el firmware original por el OpenWrl libre debemos ir nuevamente a la interfaz web de configuración del router, y en el apartado "System Tool" presionamos el botón "Browse" ("explorar"). Nos tocará indicar la ruta al Escritorio donde descargaron el archivo openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-factory.bin. Conforme lo hayamos encontrado, podremos oprimir el botón Aceptar. Surgirá un cuadro advirtiéndonos del peligro inherente de flashear una memoria ROM, las consecuencias perniciosas para el aparato si lo apagamos antes de que se produzca el refresco de la memoria, etc. Si estamos seguros, presionamos Ok, y se dará inicio al cambio revolucionario que el Pueblo anhela.

La carga del nuevo software libre será patente mediante una barra de progreso, hecho que se extenderá por aproximadamente dos minutos. Luego, el aparato ser reiniciará solo, proceso que dura otros 2 minutos mas.

No sería extraño que el router no de red al cabo de este procedimiento. Esperamos un par de minutos desconectamos la alimentación eléctrica del router. Conviene también apagar y volver a encender nuestro cablemódem. Esto hará que el mismo ponga a cero su conexión (también podríamos presionar el botón trasero WPS/Reset, introduciendo un clip en su orificio).


Al reiniciarse el router y el cablemódem, se pondrá a cero todas sus configuraciones del router. (Si hubiésemos desconectado todos los dispositivos, recordemos que en la entrada WAN va conectada al cablemódem, y las entradas LAN1 a LAN4 se enlazan el resto de los dispositivos).

La mecánica a operar es la siguiente: al conectarnos por primera vez debemos configurar una contraseña de administrador del router por medio de la consola insegura Telnet. Una vez establecida esta contraseña, ya podremos ingresar y configurar el resto de las opciones por el método de consola cifrada segura SSH.

la dirección IP original de nuestro router TP-Link era 192.168.0.1, mientras que la IP que toma por defecto el firmware libre OpenWrt es 192.168.1.1. Por ello emplearemos la Terminal para loguearnos, con el siguiente Comando de Organización:

telnet 192.168.1.1

Si todo va bien, debería presentarse la siguiente pantalla y el prompt root@OpenWrt, indicándonos que estamos logueados dentro del router, con todo el poder telemático que ello representa.

Acto seguido, escribimos el comando necesario para cambiar la contraseña:

passwd

Nos aparecerá el mensaje

Changing password for root
New Password:

Tipeamos "a ciegas" una contraseña que se nos ocurra para las sesiones de configuración del router. Debemos repetirla para no tener problemas. Una vez que el procedimiento esté completo, nos indicará con el mensaje "Password for Root changed by root" ("contraseña para root cambiada por el root"). Es importante saber que una vez configurada nuestra clave a través del sistema de consola insegura telnet, la misma se desactivará, de modo que a partir de este momento sólo podremos utilizar el método de logueo seguro cifrado SSH.

Salimos de la sesión telnet con:

exit

Y nos volvemos a loguear, pero usando SSH:

ssh root@OpenWrt

Tengamos presente que también podríamos usar la dirección IP que corresponda al router, la cual normalmente sería:

ssh root@192.168.1.1

Es natural que la primera vez nuestra terminal no pueda enlazarse al router hasta autenticar la clave cifrada del mismo. Esto nos será advertido con el siguiente mensaje:

The authenticity of host 'openwrt (192.168.1.1)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xxx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)?

...debemos escribir:

yes

Así habremos establecido la conexión segura autenticada. De tener cablemódem con una conexión LAN DHCP, ya deberíamos contar internet compartida a través de la conexión cableada LAN, sin más trámite...


Configurar una conexión con usuario y contraseña (ADSL).
...Si en cambio, tuviésemos un servicio que requiere usuario y contraseña para conectarnos, tales como el servicio ADSL telefonico, redes WiMAX o similares, habremos de configurarlas primero según esos datos proporcionados por el proveedor. Para ello ingresamos los siguientes comandos:

uci set network.wan.proto=pppoe
uci set network.wan.username='usuario@proveedor'
uci set network.wan.password='contraseñadelISP'
uci commit network
ifup wan


Configurar un punto de acceso Wireless (WiFi) con OpenWrt
Lo más importante para hacer es ahora es activar y crear una nodo de conexión inalámbrica. Por defecto, la emisión Wifi estará desactivada a través de un archivo de configuración, y sólo funcionará la internet cableada. Para activar el Wifi, hemos de modificar el fichero de configuración /etc/config/wireless mediante el antediluviano y pequeño editor de texto vi, que ya está incorporado en la ROM del router.

Ingresaremos por tanto el siguiente Comando de Organización:

vi /etc/config/wireless

Esto nos abrirá el parco Vi, junto con el archivo de configuración de la red inalámbrica de OpenWrl. Originalmente, el mismo debería ser algo así:

config wifi-device  radio0
        option type     mac80211
        option channel  11
        option hwmode   11ng
        option path     'platform/ath9k'
        option htmode   HT20
        list ht_capab   SHORT-GI-40
        list ht_capab   DSSS_CCK-40
        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 1

config wifi-iface
        option device   radio0
        option network  lan
        option mode     ap
        option ssid     OpenWrt
        option encryption none


Vi es un editor antiguo, pero su pequeñísimo tamaño lo hace adecuado para incluirlo en este tipo de tareas embebidas. Debemos saber que en Vi, a diferencia de Nano u otros editores, no podremos escribir hasta que no activemos el modo de inserción de texto. Esto lo haremos presionando la tecla "i". Luego podremos escribir.

Nuestro objetivo será modificar la linea "option disabled 1" (lo cual desactiva el Wifi) a "option disabled 0". En este ejemplo, también crearemos una serie de modificaciones para crear un nodo wifi bajo protocolo de encriptación "WPA2-PSK", con una frase contraseña. En este ejemplo que os he planteado, el archivo nos podría quedarnos así:

config wifi-device  radio0
    option type     mac80211
    option channel  auto
    option hwmode    11ng
    option path    'platform/ath9k'
    option htmode    HT20
    list ht_capab    SHORT-GI-40
    list ht_capab    DSSS_CCK-40
    # REMOVE THIS LINE TO ENABLE WIFI:
    option disabled 0

config wifi-iface
    option device   radio0
    option network  lan
    option mode     ap
    option ssid     '5x1 no va a quedar ninguno VIVA PERON'
    option encryption psk2
    option key 'encripta todo por una patria justa libre y soberana'



Naturalmente, en este archivo de configuración las options ssid representa al nombre de la red inalámbrica que se mostrará, mientras que encryption es la modalidad de encriptación deseada, y key es la contraseña de la red (es importante ponerlos entre 'tildes'). Las opciones completas de configuración Wifi pueden estudiarse en la wiki oficial.

Una vez que hayamos hecho la edición, debemos guardar el archivo en la memoria del router. Para ello en el editor Vi presionamos Esc para pasar al modo de comandos y luego ingresamos:

:w

...Y salimos del editor con:

:q

Ahora reiniciamos el router con el siguiente comando:

reboot

Luego de  reiniciado el router, ya debería estar emitiendo el identificador de red wifi "5x1 no va a quedar ninguno VIVA PERON". Deberíamos poder conectarnos al mismo cuando ingresemos la contraseña "encripta todo por una patria justa libre y soberana".


Cambiar el nombre del Host

Normalmente el nombre host es "OpenWrl", por lo cual para loguearnos tipeamos ssh root@OpenWrl. Si deseo cambiarlo por otro menos convencional, debo editar con Vi el archivo /etc/config/system.

En particular, busco la línea

option hostname 'OpenWrl'

... y podrán cambiarla por las que quieran (sin espacios ni caracteres especiales). Por ejemplo, podría facilitar mi memoria usando simplemente el nombre host de "router", todo en minúsculas. También podría utilizar otro nombre más difícil o cualquier convención que haga más cerrado todo.

option hostname 'router'

Guardamos el archivo y reiniciamos para que el cambio cobre efectividad, con el comando reboot. Tengamos en cuenta que ahora será necesario loguearnos remotamente con el comando:

ssh root@router


Actualizar el router

Para ello descargaremos a nuestro escritorio el fichero firmware de actualización correspondiente a nuestra versión de router. En este caso lo haremos con los comandos:

cd ~/Escritorio/

wget https://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-sysupgrade.bin

Esto descargará un archivo de actualización del sistema llamado . Lo copiaremos al router con:

scp ~/Escritorio/openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-sysupgrade.bin \root@192.168.1.1:/tmp/

Cuando lo solicite, ingresamos la contraseña del router, y se copiará el fichero. Acto seguido, nos logueamos al router. Si realizamos correctamente los pasos anteriores, usaremos el comando:

ssh root@router

Una vez que nos muestre la pantalla inicial, tipeamos

cd /tmp/

ls *.bin

Si el archivo figura correctamente, podremos utilizarlo para escribir en la memoria EEPROM. Lo haremos con el comando:

sysupgrade -v /tmp/openwrt-15.05-ar71xx-generic-tl-wr941nd-v3-squashfs-sysupgrade.bin

El proceso normalmente dura unos tres minutos, tras los cuales el router debería reiniciarse solo, y conservar las configuraciones realizadas. La pantalla de presentación cambiará y será la siguiente:


Configurar una IP fija para una impresora u otro dispositivo de red
OpenWrt normalmente asigna direcciones IP de manera dinámica, esto significa que todos los dispositivos normalmente recibirán una dirección IP aleatoria, dentro de un rango 192.168.0.100/250. Esto suele ser adecuado en aras de la seguridad, pero a veces puede complicar ciertas tareas.

Por ejemplo, si tuviésemos una impresora de red conectada al router, la misma siempre tendrá una dirección IP diferente toda vez que se encienda, con lo cual ciertos sistemas operativos privativos limitados (como Micro$oft Window$) podrían tener dificultad en detectarla y utilizarla.

Por tal motivo, en este caso nos convendrá asignarle al dispositivo (la placa de red que dota a la impresora) directamente una IP fija a través del router. El primer paso será averiguar cual es la dirección MAC de la impresora (o el dispositivo que querremos asignar).

Una forma sencilla es encender la impresora de red, conectarla al router a través de cable o wifi, y vér que IP le asigna - de momento - el router a su dirección MAC. Podremos hacerlo con el comando:

cat /tmp/dhcp.leases

El router nos devolverá una lista similar a esta:

xxxxxxxxxx 00:12:62:4f:bf:0f 192.168.1.120 impresorapirulo 01:00:15:99:6f:df:0f
xxxxxxxxxx 44:87:f2:35:1f:bf 192.168.1.110 compu mongo *
xxxxxxxxxx 00:4f:ef:31:ac:2c 102.168.1.137 compu aurelio *

xxxxxxxxxx 60:8f:5c:17:56:a2 192.168.1.124 celular101:60:8f:5c:17:56:a2


Básicamente debemos tomar nota de la dirección MAC (en purpura en el ejemplo). En este caso, la dirección MAC de la impresora es 00:12:62:4f:bf:0f.y de momento el router le ha asignado la dirección IP dinámica 192.168.1.120, Supongamos que queremos que siempre el router le asigne la dirección fija 192.168.1.105. Para ello editamos el archivo /etc/config/dhcp usando Vi para que le asigne una dirección fija a la impresora, siguiendo esos parámetros. Para ello ingresamos:

vi /etc/config/dhcp

Tipeamos el comando i para poder modificar el archivo, y agregamos el siguiente texto para cada dispositivo:

# IP fija para la impresora pirulo agregada por Perón 
config 'host'
        option ip       '192.168.1.120'
        option mac      '00:12:62:4f:bf:0f'
        option name     'impresora-pirulo'

Naturalmente, nosotros ingresamos los datos que nos correspondan a nuestro dispositivo particular. Luego grabamos presionando la tecla Esc e ingresando el comando :w y salimos del editor Vi con Esc e ingresando el comando :q.

Ahora podremos reiniciar el router con el comando reboot, y enceder la impresora conectada al router.

En este caso, ya nuestro router con OpenWrt al detectar un dispositivo cuya dirección MAC sea 00:12:62:4f:bf:0f (la de nuestra impresora), le asignará la IP fija 192.168.1.120). Podremos utilizar dicha IP para configurar la impresora en Window$, y ya no tendremos problemas.


Instalar y correr aplicaciones en el router
Tengamos en cuenta que el TP-Link WR-941NDv3 tiene un pequeño procesador ARM AR9132 de 400Mhz, y le podemos instalar programas a través de opkg, herramienta similar al dpkg de Ubuntu. Por ejemplo, si quisiéramos instalarle un programita para representar la carga a través del LED de encendido "Sys" podríasmo usar estos dos comandos:

opkg update

opkg install kmod-ledtrig-heartbeat

Esto descargará e instalará el pequeño paquete kmod-ledtrig-hearthbeat, que se encarga de mostrar a través de un "latido-parpadeo" de LEDs, la carga de la CPU. De esta manera podremos chequear visualmente a través de la simple velocidad del "latido" del la luz LED "Sys", la carga de la CPU del router.

Para asignar la función de "latido" al LED "Sys" del panel frontal del router, ingresamos los comandos:

cd /sys/devices/platform/leds-gpio/leds/tp-link:green:system
echo heartbeat > trigger

...y si quisiéramos volver todo al estado original y remover el paquete instalado usaríamos:

cd /sys/devices/platform/leds-gpio/leds/tp-link:green:system
echo default-on > trigger
opkg remove kmod-ledtrig-heartbeat

Las luces LED también se pueden asignar a funciones convencionales. Por ejemplo, si quisiéramos usar la luz LED de la función QSS para que ilustre el envío de datos WiFi, podríamos hacer:

cd /sys/devices/platform/leds-gpio/leds/tp-link:green:qss
echo phy0rx > trigger


...O si quisiéramos que se encienda cuando alguien se conecte al wifi:

cd /sys/devices/platform/leds-gpio/leds/tp-link:red:qss
echo phy0assoc > trigger

opkg cuenta con las aplicaciones del repositorio oficial de OpenWrt. Debemos consultar la web del mismo para conocerlas (se indican allí el tamaño que tienen, pues su "peso" es importante, al no tener mucho espacio libre.

En el caso del router TP-Link WR941ND V3, tienen una memoria EEPROM ("de masa") de 4 MB (de los cuales 3,3MB son ocupados por OpenWrt). Una memoria RAM de 32 MB es utilizada por OpenWrt en forma de "disco virtual borrable" y podremos acceder a ella desde la carpeta /tmp del router.

En la memoria ROM restante del router podríamos copiar indefinidamente pequeños archivitos, scripts, o información importante de solo texto.


¿Cómo cambio el color del Prompt de sesión en OpenWrt?
Podremos cambiar el color del prompt para que se ponga rojo y nos advierta que estamos en el Router, o como medida de diferenciación del prompto común. Para ello ingreso:

vi /etc/profile

Presiono la tecla i para ingresar en el modo de edición, y busco la línea:

export PS1='\u@\h:\w\$ '

...y la reemplazo por:

export PS1='\[\033[01;31m\]\u\[\033[0;35m\]@\[\033[01;33m\]\h\[\033[00;33m\]:\[\033[01;34m\]\w\[\033[00m\]$ '

Presiono Esc, y escribo el comando :wq para guardar los cambios y salir del editor Vi. Al reabrir la sesión SSH en el router, tendremos un prompt colorido.


¿Cómo puedo usar la consola web sencilla?En el caso del firmware OpenWrt para el router TP-Link WR-941NDv3, cuenta con la consola Web de configuración, la cual suele facilitar las cosas al neófito. Podremos pasarla al castellano con los comandos:

opkg update
opkg install luci-i18n-base-es luci-i18n-firewall-es
reboot

Para acceder a la consola web sencilla (llamada Luci) debo ingresar con un navegador (Firefox, Chromiun, etc) a la IP del router, normalmente 192.168.1.1.


¿Cómo puedo crear un repetidor wifi usando OpenWrt?

Si tenemos varios routers WR941ND con OpenWrt, podremos utilizarlos como router "maestro" y como router "repetidor" haciendo uso del modo WDS (wireless distribution system). Esto es así porque el WR941ND está dotado de un chipset Atheros compatible con dicha tecnología, y OpenWrt puede hacer uso de esta funcionalidad.

En este caso a fines de identificación, los llamaremos router MAESTRO y router REPETIDOR para identificar, siendo MAESTRO el que va conectado por cable a internet y ya tiene configurada la red Wifi, y REPETIDOR será el router esclavo, cuyo fin será extender el alcance de la señal.

En el router MAESTRO
Nos logueamos por ssh al router MAESTRO, y editamos con con vi el archivo /etc/config/wireless. Debemos agregarle la línea:

option wds 1

Conviene anotar los datos "type", "channel" y "country", pues habremos de incorporarlos luego al router REPETIDOR. Luego guardamos los cambios y salimos de vi. Para que los cambios sean efectivos, empleamos el comando:

uci commit wireless

En el router REPETIDOR
Ahora trabajaremos en el router REPETIDOR. Nos conectamos a el por cable y nos logueamos a él por ssh. Editamos con vi el archivo /etc/config/dhcp, buscando la sección "lan".  En dicha sección le agregamos la línea:

option ignore 1


Guardamos y salimos de Vi.

Luego editaremos el archivo /etc/config/network. En la sección "lan" de este archivo lo modificamos para que queden las siguientes líneas así:

  option proto 'dhcp'
  option hostname 'repetidorwifi'


Ahora nos encargaremos de editar el fichero /etc/config/wireless:

En la sección "radio0" del mismo debemos indicarle los datos de "type", "channel" y "country" para que coincidan con los que anotamos del archivo /etc/config/wireless del router MAESTRO.

En la sección "wifi-iface", la modificamos para que quede así:

  option device 'radio0'
  option network 'lan'
  option mode 'sta'
  option wds 1
  option ssid 'nombredelaredwifi'


Siendo nombredelaredwifi el identificador de la ren inalámbrica que está configurada en el router MAESTRO.

Una vez guardados los cambios en el archivo /etc/config/wireless del router REPETIDOR, lo reiniciamos con el comando :

reboot

Al reiniciarse, ya podremos conectarnos a él y utilizarlo como repetidor. Algo interesante de saber es que en el router REPETIDOR conviene desinstalar dhcp y el firewall, pues ya figuran en el router MAESTRO y él se encarga de procesar todo. Tener dos veces los mismos procesos no hace más que hacer todo más lento al ñudo.

Para eliminarlos, nos logueamos al router REPETIDOR, ahora con el comando:

ssh root@repetidorwifi

Y le ingresamos los siguientes Comandos de Organización:

opkg update
opkg --force-removal-of-dependent-packages dnsmasq iptables firewall kmod-ppp luci-proto-ppp
mv /etc/config/dhcp
/etc/config/dhcp.resguardo


Resetear OpenWtl
Si quisiñeramos resetear el router a su estado inicial luego de flashear la EEPROM con OpenWrl, debemos loguearnos y usar el comando:

firstboot


¿Cómo puedo restaurar el firmware original?

Si pese a las advertencias quisiera volver al firmware original privativo, puedo hacerlo, siempre y cuando el router funcione perfectamente y tengamos acceso por ssh a través de un equipo conectado por cable.

Para ello desde nuestra PC conectada por cable al router abrimos una terminal e instalamos en ella los programas necesarios:

sudo apt-get install unzip scp

Acto seguido descargamos el archivo del firmware privativo original para nuestro router en el Escritorio de la PC. En este caso, al ser el TP-Link WR941ND V3, como ya vimos, deberíamos ingresar:

cd ~/Escritorio/


wget http://www.tplink.com/Resources/software/TL-WR941ND_v3_120201.zip

unzip
TL-WR941ND_v3_120201.zip

scp ~/Escritorio/wr941nv3_en_3_13_9_up\(120201\).bin \root@192.168.1.1:/tmp/fw.bin


Esto copiará fácilmente el archivo wr941_en_3_13_9_9_up(120201).bin a la carpeta /tmp/ del router, renombrándolo como fw.bin (lo que nos evitará errores de tipeo).

Sólo nos queda loguearnos al mismo, revisar que fichero esté bien copiado, y reescribir nuevamente la EEPROM con el firmware original. Lo haremos con los siguientes Comandos:

ssh root@OpenWrt

cd /tmp/

ls -la *.bin


...nos debería listar el archivo fw.bin.

Y ahora lo flasheamos en la EEPROM con el siguiente Comando de Organización:

mtd -r write fw.bin firmware

El proceso lleva su tiempo, durante el cual no debe interrumpirse. Aparecerá el mensaje:

Unlocking firmware ...

Writing form fw.bin to firmware


Y al cabo de unos 2 minutos indicará:

Rebooting...

Luego de dejar pasar otros dos minutos, podremos nuevamente resetear el router y el cablemódem desconectándolos de la red eléctrica y volviéndolos a conecta.

Indudablemente, habremos de reconfigurar el router, contactándolo con nuestro navegador a la IP 192.168.0.1. Al solicitarnos usuario y contraseña, pondremos "admin", y ya tendremos acceso a la interfaz web original nuevamente. Para recuperar las configuraciones, usaremos el archivo config.bin que creamos al principio. En tal sentido en la interfaz web original vamos a System Tools / Backup & Restore, presionamos el botón Examinar e incicamos el archivo config.bin. Luego presionamos el botón Restore para que cargue la configuración antigua en el router. Tras un par de minutos el router se reseteará y se reconectará, y ya tendremos todo como lo teníamos originalmente.

23 comentarios:

  1. Muy bueno el artículo, hay mucho en la Red pero en Inglés, algo que no encuentro es si PSK es admitido como Repetidor Universal, no le puse el openwrt, el Firmeware que trae el TL521g no lo permite

    ResponderEliminar
    Respuestas
    1. Estimado Anónimo:

      En el caso del sistema PSK, podrás utilizarlo como repetidor (modo WDS, wireless distribution system). Necesitarás dos routers, y asumimos que ambos tienen OpenWrt: Los llamaremos BASE y REPETIDOR para identificar, siendo BASE el que va conectado por cable a internet y ya tiene configurada la red Wifi como dice el artículo, y REPETIDOR, otro aparato que puenteará todo y servirá con ese fin...

      Nos logueamos por ssh al router BASE
      Editamos con vi el archivo /etc/config/wireless y le agregamos la línea:
      option wds 1

      Luego de guardar y salir de vi, aplicamos los cambios con:

      uci commit wireless

      En el router REPETIDOR:

      Lo conectamos por cable al BASE: nos logueamos a el por ssh

      Editamos con vi el archivo /etc/config/dhcp, buscamos la sección "lan" y en la misma agregamos la línea:

      option ignore 1

      Guardamos y salimos de Vi. Luego editamos el archivo:
      /etc/config/network

      En la sección "lan" agregamos las siguientes líneas:

      option proto 'dhcp'
      option hostname 'repetidor'

      En el REPETIDOR editamos el archivo /etc/config/wireless. En la sección "radio0" debemos indicarle los datos de "type", "channel" y "country" para que coincidan con los del archivo /etc/config/wireless del router BASE.

      Luego, en el mismo archivo /etc/config/wireless del REPETIDOR, en la sección "wifi-iface", la modificamos para que quede así:

      option device 'radio0'
      option network 'lan'
      option mode 'sta'
      option wds 1
      option ssid 'nombredelaredwifi'

      Siendo nombredelaredwifi el nombre de la Wifi que está configurada en el router BASE.

      Reiniciamos el router REPETIDOR con:
      reboot

      En el router repetidor conviene desinstalar dhcp y el firewall, pues ya figuran en el router BASE y el se encarga de todo. Esto quitará un paso redundante y acelerará la navegación. Para ello en el router REPETIDOR ingresamos:

      opkg update
      opkg --force-removal-of-dependent-packages dnsmasq iptables firewall kmod-ppp luci-proto-ppp
      rm /etc/config/dhcp

      Ten en cuenta que hemos actualizado el artículo incorporando la rutina para volver al firmware original.

      Atte.

      Juan Perón

      Eliminar
    2. Muchas Gracias, compartimos una Conexión varios vecinos, yo tomo la señal wifi con la 5210, y quería distribuirla en mi casa, encontré el problema de la clave, que mi vecino puso PSK, voy a guardar el articulo y hablarlo con el vecino. Muchas Gracias

      Eliminar
  2. Fantastico aporte, en serio, excelente explicación y muy admirable la notable dedicación que le pusiste sobretodo en la parte de uso de terminal como un verdadero vikingo, mis respetos, personalmente, LuCI facilita bastante la configuración de OpenWRT sin correr tanto riesgo, pero es mucho más valioso hacerlo de la forma en la que tu lo hiciste, como un verdadero administrador.

    Mis respetos, en verdad te felicito por este tremendo y poderoso tutorial, dejando a un lado la propaganda de izquierda, es una pieza de oro.

    Congratulaciones

    ResponderEliminar
    Respuestas
    1. Estimado radioactivo:

      La auténtica liberación nunca es individual, pues quien se libere solo, sólo lo hará oprimiendo a alguien más que habrá de cargar su cadena. Este ejemplo lo hemos visto ya en profusión en toda la Historia de los hombres, y por ello nos hemos subordinado a un Estado, que en representación de todos, ha de darnos el software y la justicia social que todos merecemos.

      LuCi es excelente solución para configurar un router libre, pero lamentablemente no podrás darle carga en este caso pues el WR941ND tiene unos 4MB de EEPROM en su placa, y el OpenWRT en la versión reducida ocupa ya unos 3,3MB. LuCi y sus dependencias no pueden instalarse por falta de espacio restante, requerirás un router con EEPROM de al menos 8 MB para ello, y no es el caso de la versión de router comentada en el Artículo.
      Pero la consola puede darte todo y ocupar solo kilobytes. Recuerda en este caso aquella máxima del justicialismo que reza "Lo mejor viene en kilobytes".

      Atte.

      Juan Perón

      Eliminar
  3. En caso de no funcionar correctamente la red inalámbrica, podemos probar cargando los paquetes para atheros en OpenWrt, con los comandos:

    opkg update
    opkg install kmod-ath9k wpad-mini

    ResponderEliminar
  4. Hola soy de Lima, Perú... en casa tenemos señal de internet vía Wimax de la empresa OLO Perú, queremos ampliar la señal wifi y para esto adquirimos un router TP-Link TL-WR941ND. Necesitamos saber como configurarlo para que sirva de repetidor, tenemos también un cable ethernet por si lo necesitamos para conectar ambos router. Le agradecería nos ayudara con esto. Muchas gracias!!!

    ResponderEliminar
    Respuestas
    1. Estimado Eduardo PUza Alvarez.

      En tu caso, no podrás utilizar el TL-WR941ND como repetidor con el firmware de fábrica, pues el mismo no contempla dicha modalidad.

      Sin embargo, como dice este artículo, podrás activar el modo repetidor a través del WR-941ND si empleas el firmware OpenWrt.

      Es absolutamente necesario - sin embargo - que conozcas cual versión es la de tu router. Para ello usa tu navegador de internet para ingresar a la web de configuración, ingresando como dirección de internet la dirección IP de fábrica (192.168.1.1). Te preguntará el usuario y contraseña (usuario admin, contraseña admin o la que hayas establecido al configurarlo).

      Luego ve al apartado System Tools / Firmware Upgrade, y allí te informará la versión de Hardware de tu router 941nd. Por ejemplo, podría ser WR941N v2/v3 00000000. Esto significa que tienes un router de serie v3. (Esto es asi pues existen varios submodelos de router, distintos entre sí internamente, aunque su carcasa externa sea igual entre ellos).

      Una vez identificado, podrás cargarle al router el OpenWRT como se indica aquí. Si utilizas Linux será seguir las instrucciones del artículo, pero si usas Window$ podrás emplear un programa como Putty (gratuito) para introducir los mismos comandos.

      PRIMER CASO:
      SI cuentas con un suscriber/modem WiMAX SIN WIFI, deberías conectar el cable ethernet desde salida LAN del suscriber wimax a la entrada WAN amarilla del router TPLink, y luego configurar la red. Reencender ambos aparatos, y configurarlos. Normalmente las redes WiMAX utilizan USUARIO y CONTRASEÑA del proveedor, necesarios para enlazarte a través de una conexión PPPOE. Para configurar ello vas a 192.168.1.1 en tu navegador web, usuario admin y la contraseña del router que le hayas puesto (normalmente es admin también). Luego en la seccion Network / WAN presionas el botón DETECT, o si no usas el menu desplegable para elegir PPPOE/Russia PPPoE. Luego debes introducir el usuario y contraseña del proveedor. (por ej, eduardo@oloperu.com.pe y contraseña xxxxxxx(.

      Eliminar
    2. SEGUNDO CASO:
      Si el router WiMAX YA TIENE WIFI, y que el mismo está ya configurado para conectarse con tu proveedor wiMAX a través de la antena/panel de microondas, entonces deberías configurar el mismo para que oficie de Router Maestro, y deberías instalar el firmware OpenWRT en el router TPLink para activarle la función de Repetidor Esclavo (que no disponible con el firmware de fábrica).

      Toma nota del SSID (nombre de red wifi exacto, estando atento a las mayusculas y minusculas. También el tipo de seguridad (WEB, WPA, etc) y la contraseña. Todos estos datos deben estar ya configurados en tu modem WiMAX. En Linux podrías averiguarlos abriendo una terminal con Ctrl+Alt+T e igresar: iwlist scan.

      Instala OpenWrt como indica el artículo, y configura un usuario normalmente.

      Luego utiliza la función de esclavo:

      En el router MAESTRO Wimax, tienes que activar la función WDS.

      Conviene anotar los datos "type", "channel" y "country", pues habremos de incorporarlos luego al router REPETIDOR.

      En el router REPETIDOR
      Ahora trabajaremos en el router REPETIDOR. Nos conectamos a el por cable y nos logueamos a él por SSH usando la terminal Linux como dice en el artículo, o el programa Putty de WIndow$.

      Editarás con el programa editor de texto "vi" (en el articulo se explica cómo usar vi) el archivo /etc/config/dhcp, buscando la sección "lan". En dicha sección le agregala línea:

      option ignore 1

      Guardamos y salimos de Vi.

      Luego editaremos el archivo /etc/config/network. En la sección "lan" de dicho archivo de texto la modificarás para que queden las siguientes líneas:

      option proto 'dhcp'
      option hostname 'repetidorwifi'

      Ahora nos encargaremos de editar el fichero /etc/config/wireless:

      En la sección "radio0" del mismo debemos indicarle los datos de "type", "channel" y "country" para que coincidan con los que anotamos del archivo /etc/config/wireless del router MAESTRO.

      En la sección "wifi-iface", la modificamos para que quede así:

      option device 'radio0'
      option network 'lan'
      option mode 'sta'
      option wds 1
      option ssid 'nombredelaredwifiWIMAX'

      Siendo nombredelaredwifiWIMAX el identificador de la red inalámbrica que está configurada en el modem Wimax.

      Una vez guardados los cambios en el archivo /etc/config/wireless del router REPETIDOR, lo reiniciamos con el comando :

      reboot

      Al reiniciarse, ya podremos conectarnos a él y utilizarlo como repetidor. Algo interesante de saber es que en el router REPETIDOR conviene desinstalar dhcp y el firewall, pues ya figuran en el router MAESTRO y él se encarga de procesar todo. Tener dos veces los mismos procesos no hace más que hacer todo más lento sin aportar nada.

      Para eliminarlos, nos logueamos al router REPETIDOR, ahora con el comando:

      ssh root@repetidorwifi


      Y le ingresamos los siguientes Comandos de Organización:

      opkg update
      opkg --force-removal-of-dependent-packages dnsmasq iptables firewall kmod-ppp luci-proto-ppp
      rm /etc/config/dhcp

      Eliminar
  5. Excelente Articulo, que pasa si olvido la contrasena de root? Saludos

    ResponderEliminar
    Respuestas
    1. Estimado Anónimo:

      El procedimiento para resetear la configuración del router con OpenWRT es similar al que emplea el firmware de fábrica:

      Deberás tener acceso físico al aparato y presionar el botón de RESET del router TPLInk unos 30 segundos, y de esta manera se resetearán todas sus configuraciones y deberás volver a configurar por medio del acceso Telnet, como dice en el artículo (y restituirle una contraseña que quieras).

      El botón Reset está localizado en la parte de atrás, al lado de la toma de corriente del aparato. Debes introducir un clip o un objeto finito en dicho orificio para poder tocar el botón RESET.

      Recuerda que en el caso del firmware OpenWRT, al resetearlo se desconfigurará el Wifi, y sólo podrás acceder al router (y por ende, a internet) a través de la red cableada. Te recomendamos entonces sólo resetearlo si tienes un cable LAN Ethernet a mano como para conectarte y reconfigurarlo posteriormente, como se indica en este artículo.

      Atte.

      Juan Perón

      Eliminar
  6. Estimado General.
    De haber sabido que usted con todo su conocimiento popular había hecho un post sobre esto, hubiera acudido a el de inmediato.

    Las corporaciones impidieron por algún motivo que desconozco, que yo diera con su post, ya que cuento con el mismo modelo de router.
    Pude instalar sin mayores problemas el firmware de OpenWRT, pero al intentar modificar algunos parámetros, "me quedé afuera" como quien dice.

    Hoy reflotaré la idea de volverlo a la vida para que deje de ser una hermoso pisapapeles electrónico, ya que con el método de reset por hard no funciona y no puedo loguearme vía telnet.

    En caso de que todo esto siga sin funcionar, se le ocurre alguna otra forma de volver a la vida este hermoso soldado de las comunicaciones?

    Suyo, Emiliano.

    ResponderEliminar
    Respuestas
    1. Estimado Emiliano:

      OpenWRT funciona adecuadamente con el TPLink 941ND, pero deben seguirse las instrucciones indicadas aquí o la de la web oficial, pues si uno sin querer (o peor, queriendo) elimina los vínculos de red o las interfases ETH0 y LAN, directamente no podrá volver a operar el router, pues no se podrá volver a comunicar con el.

      Tal consideración se denomina "brick" o "enladrillar" un router, pues lo deja inoperable, y su status solo podrá discernirse a través de las luces frontales de la unidad.

      Debes encender el router presionando el botón OSS y alimentando a la vez el router, y si el modem puede entrar en modo consola, la luz PWR quedará fija y deberia parpadear la luz SYS rapidamente.

      Podrías probar inicialmente conectarte a través de Telnet. Para loguearse por Telnet, debe usar:
      telnet 192.168.1.1

      Pero esto sólo funcionará cuando no se haya configurado una sesión SSH.

      Si enciende la de SYS, podrías llegar a revivirlo copiando el firmware original u otro a través de un cable de Serial, y la consola terminal. Lamentablemente, esto requiere conocimientos de electrónica y unos pocos componentes.

      El procedimiento está en video aquí:
      https://www.youtube.com/watch?v=IHNrnLnLakE

      Si todo va bien, una vez reactivado el firmware, podrás configurar tu router como se indica aquí. Recuerda que el Justicialismo es la respuesta a las incógnitas de la Masa, y es el lugar donde debes recurrir antes de hacer algo tonto y después de ello también. Tal es la premisa de nuestro Movimiento.

      Atte.
      Juan Perón.

      Eliminar
    2. Estimado General:
      Las dificultades imperialistas han arribado para dificultar el accionar de la Masa y evitar la fiel propagación del Movimiento.
      Le pido por favor que lea las breves líneas que le dejo a continuación.

      Failsafe mode

      →generic.failsafe

      NETWORKING IN FAILSAFE MODE IS CURRENTLY BROKEN - See https://dev.openwrt.org/ticket/10436

      While the SYS LED is on immediately press the QSS button.
      If done right the SYS LED will start flashing very quickly.



      Estas tristes palabras provienen de la wiki oficial de Open WRT, para el modelo que hoy nos convoca: TPLink WR941ND
      Link: http://wiki.openwrt.org/toh/tp-link/tl-wr941nd

      Con esto puedo terminar el certificado de defunción de tan noble aparato, volviéndolo a la vida, solo de la forma que usted tan amablemente compartió conmigo en sus últimas líneas.

      Comparto pues entonces éstas tristes noticias, para ponerlo en ascuas de las situaciones con las que tenemos que lidiar los trabajadores hoy día.

      Lo saludo, aguardando sus palabras para consolar a esta masa triste y desolada.

      Eliminar
    3. Estimado Kenny:

      En el caso que nos aqueja, es un error de descuido al emininar y no reponer la configuración de red, por lo tanto su router no activa el puerto Ethernet ETH0, y no puede comunicarse con él de esta forma.

      Lamentablemente, para reponerlo a la actividad habrá de hacer el procedimiento indicado por consola serial, conectandola a un adaptador de puerto serie para la PC (suelen costar unos $100). Desafortunadamente, dicho procedimiento requiere algo de conocimiento con la soldadora. Tal vez algún técnico avezado pueda reponerlo, o le interese como un "proyecto de Domingo" para un tallercito de electrónica con Linux.

      De lo contrario no existe otra forma mas sencilla de solvenatrlo.

      Lamentamos las noticias,

      Atte.

      Juan Perón

      Eliminar
  7. Gracias por sus prontas palabras General.
    En estos días intentaré revivirlo a través de la forma física de conexión.
    Prometo comentarle mis avances (o mis decepciones), para así el pueblo pueda saber lo fácil o no que pueda resultar este método.

    Saludos en el día de la democracia!

    ResponderEliminar
    Respuestas
    1. Podrá encontrar instrucciones específicas siguiendo este procedimiento de video (en inglés).

      https://www.youtube.com/watch?v=sxVP7WGzH_A

      Para proceder necesitarás también un cable USB a Serial de 3,3 volts, preferentemente preparado para Arduino (se consiguen en casas de electrónica grandes). Presta atención que buscas el de 3,3v (el más común), ya que existen versiones con un cableado diferente, de 5 volts, y conectar uno de esos de 5v QUEMARÁ LA PLAQUETA del router.

      Uno correcto sería este:
      http://www.amazon.com/GearMo%C2%AE-3-3v-Header-like-TTL-232R-3V3/dp/B004LBXO2A/ref=pd_sim_sbs_23_2?ie=UTF8&refRID=1HGJDYQVZ68BQADSV7P7

      Para establecer la comunicación necesitas un programa de comunicación. En el ejemplo se usa Win7 y software libre. En Linux podrás utilizar el programa de comunicaciones Putty (sudo apt-get install putty).

      También necesitarás un servidor TFTP. En el video utilizan Filezilla Server para Windows7, pero en Ubuntu podrás utilizar tftp tftpd xinetd.

      Instrucciones sencillas (ingles): http://community.em.avnet.com/t5/Notes-from-the-Field/Setting-up-a-TFTP-Server-on-Ubuntu/ba-p/4682

      Ya con esto, deberías poder comunicarte con la placa durante su inicio (presionando repetida y rapidamente el botón QSS hasta que parpadee la LED sys de forma veloz.

      debes escribir entonces rapidamente "tpl" ("te pe ele") y darle Enter para ingresar a la consola terminal.

      Luego debes cargarle un firmware booteable correspondiente para el 941ND, grabarlo en la EEPROM, y reiniciar el router como se indica. Al menos tendrás un router funcional si wifi, que podrás configurar como se indica en el artículo.

      Sin embargo, te recomendamos luego actualizarle el firmware nuevamente a la versión OpenWRT BARRIER BREAKER (14.07, r42625) para TP-Link TL-WR941N/ND v2, que es el indicado en el archivo y funciona perfectamente.

      En general, no elimines los archivos, y si realizas modificaciones con vi, hazlo agregando #comentarios que expliquen que hiciste.

      Buena Suerte!

      Juan Perón

      Eliminar
    2. Estimado General.
      Como había acordado, paso por esta fuente de sabiduría para comentarle los resultados del intento de revivir el gran router de las Masas 941ND.

      El mismo finalmente tuvo su hora oficial de deceso en el día de ayer a las 16:23, cuando agotamos todas las posibilidades de que el mismo tuviera alguna respuesta desde los pines de TX y RX.

      Ayudado por un amigo experto en electrónica, realizamos todos los pasos (e inventamos otros, ya que el router no daba señales de vida en los pines mencionados) tanto del video que usted gentilmente compartió, como así también, uno específico del modelo que nos reúne: https://www.youtube.com/watch?v=sxVP7WGzH_A

      Lo más probable, es que en uno de mis intento anteriores de revivirlo por esa vía, se haya quemado el serial de la placa del router, inutilizando dicha vía de comunicación.

      Así pues, Don Juan Domingo, tristemente mi TP Link WR941ND, pasará a la inmortalidad en cada uno de nuestros corazones y vivirá eternamente en los recuerdos que cariñosamente conservo en lo más profundo de mi corazón.

      Suyo, Kenny.

      Eliminar
    3. Estimado Kenny:

      La liberación no es gratis, en el camino a recorrer habremos de dejar jirones de memorias FLASH e integrados quemados, símbolo de la Liberación que vendrá.

      Mas no debemos desistir, nuestra Libertad es el único valor al que como hombres hemos de aspirar, y la única senda de grandeza que podemos otorgar a nuestro hardware.

      Si la ignominia ha caído sobre un hardware y este sufre el hecho de vivir prisionero de un firmware cercado por la opresión, más vale quemarlo mil veces en afán de liberarlo que hacerlo emitir un solo paquete IP esclavo del Capital.

      Sea! Busque otro y continúe, pues la caida de un revolucionario no es más que simiente en la tierra para la definitiva liberación del software!

      Atte.

      Juan Perón

      Eliminar
  8. Saludos Estimado, intenté instalar luci, sin embargo, me muestra un mensaje de que no cuento con el espacio suficiente para instalarlo. Por casualidad tendrás ese firmware ya con luci?. Muchas gracias

    ResponderEliminar
    Respuestas
    1. Estimado W:

      En el caso del firmware OpenWrt indicado en el artículo, ya cuenta con la interfaz Luci incorporada (es por ello que no la deja instalar nuevamente por falta de espacio).

      Para comprobar la misma, debe usar su navegador y dirigirlo a la dirección IP del router, que normalmente es 192.168.1.1 o 192.168.0.1.

      Atte.

      Juan Perón

      Eliminar
  9. No tengo mas que agradecerte infinitamente tu articulo porque no fallo en nada, desde la primer mayuscula al ultimo punto.

    ResponderEliminar
    Respuestas
    1. Estimado Anónimo:

      Natural, natural. Su router ahora cuenta con los bytes de la libertad. Para agradecer solamente deberá gritar un estruendoso "¡Viva Perón!" toda vez que se conecte al wifi.

      También podrá ejecutar miniaplicaciones dentro del mismo, a través de la consola segura SSH. Para ello le recomendamos este otro artículo un poco más avanzado (y opcional).

      http://ubuntuperonista.blogspot.com.ar/2015/09/como-puedo-ejecutar-programas-en-openwrt.html

      Atte.

      Juan Perón

      Eliminar