Tenemos en casa una cobertura inalámbrica muy maja que nos da acceso a guifi.net (o a internet), pero siempre hay algún recoveco de la casa donde la señal Wifi llega muy baja. Una habitación alejada, la buhardilla, la caseta del perro, etc. ¿Sería posible hacer llegar allí la cobertura inalámbrica sin tener que tirar cable? Sí que se puede.
Requisitos: OpenWRT
El tutorial se basa en la configuración personal realizada sobre un router TP-LINK WR740N (unos 15 euros), al que le hemos puesto el último firmware OpenWRT. Tal vez funcione con otros firmwares y con otro hardware, pero este tutorial no los cubre.
El firmware OpenWRT utilizado es la ultimísima versión de OpenWRT, attitude adjustment, actualmente en fase beta pero que funciona perfectamente.
A modo de referencia, decir que el firmware OpenWRT que tenemos que flashear es el que corresponde a la arquitectura ar71xx, de la versión correspondiente a nuestro router WR740N (normalmente la v4 a no ser que el router sea muy antiguo), para particiones squashfs, y si vamos a flashearlo de cero, que es lo que os recomiendo, la versión factory. Si cumplís esos requisitos, el archivo que deberíais bajaros se parecera a éste: http://downloads.openwrt.org/attitude_adjustment/12.09-beta/ar71xx/generic/openwrt-ar71xx-generic-tl-wr740n-v4-squashfs-factory.bin
Lo que vamos a conseguir
Al router le vamos a aplicar una configuración en la cual, sin tener que enlazarlo por cable a la red casera (únicamente por wifi), se conectará como cliente a nuestra red wifi principal, y repetirá esa señal a otras ubicaciones de la casa donde no llegaba. Es decir, modo repetidor. El servidor DHCP seguirá estando en el router principal, pero el SSID del nuevo router será diferente.
La receta
Partimos de la base que ya tenemos el router configurado a la última versión de OpenWRT. Lo primero que haremos será entrar al router y enlazarlo como cliente a nuestra red Wifi principal. Es conveniente también cambiarle la constraseña de root. Os pongo unos pantallazos de guía ya que todo esto se puede realizar desde el interfaz web.
Sin explicarlo muy en detalle, vamos a la seccion Network, Wifi, y para nuestra radio0 hacemos un scan para ver las señales disponibles. Cuando veamos la señal de nuestra red pulsamos el botón Join Network, ponemos la contraseña de acceso al wifi casero y le damos a guardar. Ya tenemos el router conectado como cliente a nuestra red.
Adicionalmente (última captura), yo configuraría la red local (los 4 puertos ethernet del router) con un segmento de red diferente del de la red principal, para que no entre en conflicto. Por ejemplo, si nuestra red principal es la 192.168.1.0/24 y el router tiene la IP 192.168.1.1, a nuestro router repetidor lo pondremos en la red 192.168.2.0/24, con la IP 192.168.2.1. Esa IP podremos accederla si conectamos un cable al switch de 4 puertos del router.
Seguidamente, entramos al router por SSH e instalamos el paquete relayd:
ssh root@192.168.1.1
root@192.168.1.1's password:
BusyBox v1.19.4 (2012-08-19 15:43:58 UTC) built-in shell (ash)
Enter 'help' for a list of built-in commands.
_______ ________ __
| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -__| || | | || _|| _|
|_______|| __|_____|__|__||________||__| |____|
|__| W I R E L E S S F R E E D O M
-----------------------------------------------------
ATTITUDE ADJUSTMENT (Bleeding Edge, r33210)
-----------------------------------------------------
* 1/4 oz Vodka Pour all ingredients into mixing
* 1/4 oz Gin tin with ice, strain into glass.
* 1/4 oz Amaretto
* 1/4 oz Triple sec
* 1/4 oz Peach schnapps
* 1/4 oz Sour mix
* 1 splash Cranberry juice
-----------------------------------------------------
root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Inflating http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/attitude_adjustment.
root@OpenWrt:~# opkg install relayd
Installing relayd (2011-10-24-4e8f1fa4ca2b176500362843a9e57ea5abd4b7a3) to root...
Downloading http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/relayd_2011-10-24-4e8f1fa4ca2b176500362843a9e57ea5abd4b7a3_ar71xx.ipk.
Configuring relayd.
root@OpenWrt:~#
Una vez instalado, lo habilitamos en el arranque:
root@OpenWrt:~# /etc/init.d/relayd enable
Ahora viene el paso más delicado, y que deberemos hacer en línea de comandos. Estableceremos un doble modo de funcionamiento inalámbrico, uno como cliente a nuestro AP (ya está configurado), y otro como AP para los clientes de este nuevo router. Para ello, utilizaremos el DHCP del router principal, de manera que las IP's que asignará nuestro nuevo router serán de la misma subred que el router principal.
Veamos cómo hacerlo.
1. Editamos el archivo /etc/config/wireless
Este archivo lo tenemos casi configurado con la config inalámbrica en modo cliente que hemos aplicado vía web, sólo nos falta añadir al final del archivo unas líneas que indiquen que el router también funciona en modo wifi AP:
En este caso hemos creado una nueva sección de wifi en modo AP, donde los clientes deberán conectar con seguiridad WPA2/PSK, cuyo SSID sera nuevo-router-casero, y la contraseña será micontraseñamuysecreta. Todo esto último se puede cambiar al gusto.
2. Editamos el archivo /etc/config/network
En este archivo debemos añadir la configuración necesaria para que se haga relay de tráfico de un interfaz a otro. Añadimos al final estas líneas:
El dhcp que vamos a utilizar es el del router principal, así que en este archivo lo que haremos será deshabilitarlo todo. El archivo se ha de quedar así:
config dhcp lan
option interface lan
option start 100
option limit 150
option leasetime 12h
option ignore 1
config dhcp wan
option interface wan
option ignore 1
Y ya está, si todo ha ido bien reiniciamos el router, lo ponemos en la ubicación que habíamos pensado y todos los clientes que conecten al nuevo SSID tendrán conexión con mucha mejor señal que antes.