"Después del juego es antes del juego"
Sepp Herberger

martes, 8 de septiembre de 2015

OpenWrt: repetidor de redes wifi con los router Astoria ARV7518 y ARV4158 de ya.com.

Ya prometí en su día continuar con OpenWrt. Como lo prometido es deuda y un Lanister siempre paga sus deudas, aquí estamos.

Despues del proyecto con un servidor usbip basado en un router Astoria ARV7158PW de ya.com, seguía teniendo otro ARV7518 (blanco) y además un ARV4518 (gris oscuro). Quería hacer con en ellos un repetidor wifi para extender un par de señales wifi que me llegaban débiles en dos ubicaciones.

Sobre este tema de la repetición/extensión de señales wifi existe una gran confusión que al final se me ha contagiado. Voy a intentar exponer lo que creo que tengo claro:

  • El repetir/extender una señal wifi puede hacerse con el mismo BSSID y contraseña o bien con una BSSID (y opcionalmente contraseña) distinta. Depende del método elegido.
  • El WDS permite extender una red wifi pero los dos routers deben ser compatibles (a veces misma marca, modelo y firmware) y usar cifrado WEP. Es  por tanto un método quisquilloso e inseguro.
  • Hay dispositivos repetidores que se pueden comprar por unos 20-30 euros, que se conectan a un enchufe de corriente, se configuran mediante un interfaz web y ya está. Esa es la forma fácil.
  • La forma divertida es utilizar OpenWRT sobre un router abandonado. Dependiendo de la tarjeta de red que tenga, se puede hacer de dos maneras:
  1. Si tiene una tarjeta de red Atheros, se puede usar el método del pseudo-bridge con el paquete relayd, que es el que usado yo en este tutorial.
  2. Si tiene una tarjeta Broadcom u otra marca, o bien Atheros y no queremos usar pseudo-bridge tenemos que pinchar un dispositivo wifi USB en el puerto correspondiente del router, que servirá para repetir/extender la señal que llegue por la tarjeta wifi propia del router. Necesitamos por tanto un dispositivo wifi USB extra compatible con OpenWRT y programar el encaminamiento entre ambas tarjetas de red.

Como he adelantado, voy a usar el método del pseudo-bridge con relayd, aprovechando que ambos routers Astoria tienen tarjeta Atheros (eso se ve en la página de http://wiki.openwrt.org dedicada a cada router).

1. Instalación de OpenWRT

Si ya tenemos cargado OpenWRT o bien el router no es de este tipo, podemos saltarnos este apartado.

El primer paso es cargar OpenWRT en ambos routers. Eso está sobradamente explicado en mi entrada previa y en estás páginas:


Conviene leerse todo varias veces para tener claro todo el proceso, la carga de OpenWrt en estos routers no es trivial. Además hace falta conseguir un conversor TTL-USB para conectar via puerto serie en los pines de la placa base del router y poder cargar el firmware desde minicom u otra utilidad de comunicación por puerto serie.

A la hora de cargar OpenWRT tenemos que decantarnos por el firmware mas adecuado posible. Después de múltiples pruebas puedo decir que los que mejor me han funcionado cotidianamente y a la hora de instalar/actualizar luego desde los repositorios de software de OpenWRT son:

  1. Attitude: mas estable, pone la wifi a 3db maximo
  2. Barrier: un pelín menos estable, pero pone la wifi a 20db. Es la que aconsejo: https://downloads.openwrt.org/barrier_breaker/14.07/lantiq/xway/openwrt-lantiq-xway-ARV7518PW-squashfs.image

El hilo de referencia para cualquier duda y problema es éste del foro Seguridad Wireless. Aquí vienen explicados todos los problemas, hay enlaces en abundancia y siempre te echan una mano si te pasa algo inesperado.

Recordemos que, de forma general, tras instalar OpenWRT el router queda iempre configurado con la IP 192.168.1.1 y podemos conectar a el por cable ethernet usando el comando telnet sin contraseña. En la primera conexión es conveniente dar una contraseña al usuario root y a partir de entonces las conexiones se harán con ssh.

2. Configurar el repetidor.

Ya tenemos OpenWRT y nuestro router tiene tarjeta de red wifi Atheros, así que vamos a configurarla como repetidor. Hay varios métodos, mis fuentes han sido:

Tras leer lo anterior y ver las distintas posibilidades me decidí por usar el método de pseudo-bridge con relayd, ya que mis  router  tienen una sola tarjeta de red. Este método hace que con una sola tarjeta y antena wifi podamos "levantar" dos tarjetas de red virtuales: una recibe la señal como cliente wifi conectado a la red remota y la otra crea un punto de acceso (con un BSSID nuevo) que reemite la señal con mas potencia de la que llega. Ambas tarjetas se conectan entre sí con el software relayd.

La documentación disponible sobre relayd que he consultado es:
Los pasos preliminares son instalar el paquete relayd y wireless-tools. Para toda la configuración tenemos que conectar con cable de red el router con un PC y usar la conexión ssh para introducir los comandos y configuraciones.

root@OpenWrt:/root# opkg update
root@OpenWrt:/root# opkg install wireless-tools
root@OpenWrt:/root# opkg install relayd
root@OpenWrt:/root# /etc/init.d/relayd enable
Con wireless-tools se nos instalan dos comandos muy útiles:
  • iwconfig: que nos muestra la configuración de las tarjetas wifi, si están conectadas y en que modo están funcionando.
  • iwlist: comando que nos muestra una lista de las redes wifi detectadas, para que veamos si nos llega la red que queremos repetir. Este escaneo de las señales wifi se hace con:
root@OpenWrt:/root# iwlist wlan0 scan
Veamos ahora como configurar los diferentes ficheros que entran en juego, esto lo podemos hacer con un editor de textos sencillo como nano o vi. Antes de nada aclarar dos cosas:
  • Suponemos que la red wifi a la que nos queremos conectar tiene IP en el rango 192.168.1.X y el router wifi principal tiene la IP 192.168.1.1 y activo el servidor DHCP, mientras que la tarjeta wifi de nuestro router con OpenWRT se configurará con la IP 192.168.1.254
  • La tarjeta ethernet de nuestro router se configurará con la IP 192.168.10.1, para que no esté en el mismo rango que la red wifi. Eso quiere decir que una vez establecida está IP para conectarnos al router por cable tendremos que usar una dirección del rango 192.168.10.X en la tarjeta de red del PC usado.
Empezamos con etc/config/network:

root@OpenWrt:/etc/config# cat network
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 ifname 'eth0'
 option type 'bridge'
 option proto 'static'
 option ipaddr '192.168.10.1'
 option netmask '255.255.255.0'
        option gateway '192.168.1.1'
        option dns   '192.168.1.1'

config interface 'wwan'
 option proto 'static'
        option ipaddr '192.168.1.254'
        option netmask '255.255.255.0'
        option gateway '192.168.1.1'

config interface 'stabridge'
        option 'proto' 'relay'
        option 'network' 'lan wwan'
        option ipaddr '192.168.1.254'

Repetimos para que quede claro: la tarjeta de red cableada se configura con la ip 192.168.10.1, para que no entre en conflicto con la red inalámbrica, que está en el rango 192.168.1.X.  De ese rango, el router principal estará en 192.168.1.1 y nuestro router repetidor tendrá la IP 192.168.1.254 en su tarjeta wifi. En el caso de que nuestra wifi trabaje con otros rangos nos toca adaptar todo a esos rangos.

Seguimos por /etc/config/dhcp:
root@OpenWrt:/etc/config# cat dhcp

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'
 option ipaddr '192.168.1.254'

Como se puede ver, desactivamos el servidor dhcp en todos los dispositivos de nuestro router, debido a que el servidor dhcp que se usará será el que trae el router principal.

A continuacion vemos /etc/config/wireless:
root@OpenWrt:/etc/config# cat wireless 

config wifi-device 'radio0'
 option type 'mac80211'
 option hwmode '11g'
 option path 'pci0000:00/0000:00:0e.0'
 option htmode 'HT20'
 option disabled '0'
 option channel '1'
 option txpower '30'
 option country 'ES'

config wifi-iface
 option network 'wwan'
 option encryption 'psk'
 option device 'radio0'
 option mode 'sta'
 option bssid '20:08:E0:1A:EF:00'
 option key '023AB82VBT207E'
 option ssid 'RED_PPAL'

config wifi-iface
        option device 'radio0'
        option mode 'ap'
        option ssid 'RED_PPAL_EXT'
        option encryption 'psk'
        option key '021FC3DABDEFF9'
        option network 'lan'
Comentemos, porque aquí está lo importante:

Las partes en rojo serían las que se deben modificar para adaptar a nuestro caso.
  • En la primera parte configuramos el interfaz de red "radio0" en modo "sta", es decir, cliente de una red llamada RED_PPAL, con el BSSID 20:08:E0:1A:EF:00 y la contraseña especificada allí. Su canal de emisión es el 1. Estos datos los podemos haber sacado con el comando "iwlist wlan0 scan"
  • En la segunda parte configuramos el mismo interfaz "radio0" ahora como "ap", es decir punto de acceso que emite una red llamada RED_PPAL_EXT con la contraseña indicada.
  • Ambas redes están conectadas entre si por "relayd" con la configuracion que pusimos en /etc/config/network en el apartado que reproduzco a continuaciónor:
    config interface 'stabridge'
            option 'proto' 'relay'
            option 'network' 'lan wwan'
            option ipaddr '192.168.1.254' 
  • Para generar un archivo wireless inicial que nos sirva de esqueleto con las opciones básicas podemos usar el comando:
root@OpenWrt:/etc/config# wifi detect > /etc/config/wireless

Despues de todo esto podemos reiniciar el router o bien hacer:
root@OpenWrt:/etc/config# wifi restart
root@OpenWrt:/etc/config# /etc/initd.d/network reload

Para que se apliquen todos los cambios. Una vez hecho todo podemos hacer un ifconfig para ver si todas las IP están bien:

root@OpenWrt:/etc/config# ifconfig
br-lan    Link encap:Ethernet  HWaddr 00:00:83:89:C0:00  
          inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::200:83ff:fe89:c000/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3675589 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3947947 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:171524389 (163.5 MiB)  TX bytes:1227898183 (1.1 GiB)

eth0      Link encap:Ethernet  HWaddr 00:00:83:89:C0:00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:262442 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2985540 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15931319 (15.1 MiB)  TX bytes:126165971 (120.3 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wlan0     Link encap:Ethernet  HWaddr 74:31:70:E3:C5:2C  
          inet addr:192.168.1.254  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::7631:70ff:fee3:c52c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3969028 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9536355 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1289510975 (1.2 GiB)  TX bytes:656004708 (625.6 MiB)

wlan0-1   Link encap:Ethernet  HWaddr 76:31:70:E3:C5:2C  
          inet6 addr: fe80::7431:70ff:fee3:c52c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3418118 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3950724 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:207491261 (197.8 MiB)  TX bytes:1296309014 (1.2 GiB)

Con iwconfig veremos que las dos tarjetas de red wifi virtuales están en el modo correcto y si vemos el espacio radioeléctrico con un dispositivo wifi (un móvil con Wifi Analyzer, por ejemplo) nos aparecerá  con una potencia estupenda la nueva red RED_PPAL_EXT a la que podremos conectarnos y ver que recibimos una IP sumistrada por el router wifi principal y que nos conectamos a la red que comparte éste sin problema.

Y con esto acaba el artículo de OpenWRT. Si encontrase alguna otra cosa interesante más que se pueda hacer le dedicaré otro artículo....

Addenda 28/Julio/2017: hubo una pequeña cosa (comentada en los enlaces referenciados) que se me pasó comentar y que luego he tenido que implementar varias veces. Siempre se me olvidaba anotarlo aquí y siempre perdía un rato recordando el paso que faltaba. De hoy no pasa que lo apunte.

Es un problema con el firewall de OpenWrt: si lo dejamos tal cual viene de serie corta el tráfico entre lan y wwan, por lo que conectamos a la red wiri nueva y recibimos IP, pero no deja navegar. La solución es sencilla: o deshabilitamos el firewall o, menos bruto, permitimos el tráfico entre ambas redes. Para permitir el tráfico hay que editar /etc/config/firewall y modificarlo así (en negrita la parte que seguramente tengamos que tocar/añadir):
.....
.....
config 'zone'
 option 'name' 'lan'
 option 'input' 'ACCEPT'
 option 'output' 'ACCEPT'
 option 'forward' 'ACCEPT'
 option 'network' 'lan wwan'
.....
.....
Después reiniciamos el firewall y ya funcionará bien todo:
root@OpenWrt:/# /etc/init.d/firewall restart
Con esto ya tenemos configurado nuestro Astoria, un pequeño gran router que nos está dando un servicio tremendo.

2 comentarios:

  1. Quisiera hacer un repetidor con el arv7518, tiene todo el software original, sabes si hay una forma de instalar el openwrt por USB o por cable? Me da miedo cagarla al abrir físicamente el router, además que de esos cables no se nada.
    Gracias y saludos

    ResponderEliminar
    Respuestas
    1. Hola. Lamentablemente creo que no se puede hacer. El bootloader de este Router es bastante puñetero y no deja facilmente meter otros firmwares y el firmware que viene por defecto tampoco permite instalar OpenWrt. Pasate por http://foro.seguridadwireless.net/openwrt/openwrt-para-roters-astoria-de-ya-com/ para preguntar a los expertos, pero creo que te dirán lo mismo que yo.
      Un saludo.

      Eliminar