TP-LINK TL-WR941ND v5.1

De Hacklab La Paz - r00thouse

Configuraciones realizadas

  • Wiki:
  • Fecha: 13/12/2014
  • Firmware: Openwrt 12.09
  • BATMAN: 2012.3.0

OpenWRT

Hemos utilizado el post #44 del siguiente link para grabar el firmware. https://forum.openwrt.org/viewtopic.php?pid=220561

Para evitarse el proceso de modificar el binario y recompilarlo hemos subido el binario para descargarse:

Próximamente ;)

Luego de tener el binario se debe hacer una actualización de firmware al router para poder instalar openwrt. La actualización puede hacerse desde la interfaz web de administración del dispositivo.

BATMAN

Una vez instalado el sistema operativo hemos seguido esta guía de instalación


Es una descripción de las acciones seguidas para configurar un nodo de esta primera versión.

/etc/config/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 type 'bridge'
	option proto 'static'
	option ipaddr '192.168.3.1' # ip del nodo (asignacion manual)
	option netmask '255.255.255.0'
	option _orig_ifname 'bat0 eth0'
	option _orig_bridge 'true'
	option ifname 'bat0 eth1'

config interface 'wan'
	option ifname 'eth0'
	option proto 'dhcp'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '0 1 2 3 4'

config interface 'mesh'
	option _orig_ifname 'adhoc0'
	option _orig_bridge 'false'
	option proto 'static'
	option ipaddr '192.168.100.1'
	option netmask '255.255.255.0'

Basicamente hay que configurar la interfaz lan con una ip estática (de otra manera no se autoasigna ip) y agregar las líneas

option _orig_ifname 'bat0 eth0' option _orig_bridge 'true' option ifname 'bat0 eth1'

Luego agregar la interfaz mesh como se ve arriba.

/etc/config/wireless

config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'
	option macaddr 'e8:94:f6:04:e6:e2'
	option hwmode '11ng'
	option htmode 'HT20'
	list ht_capab 'LDPC'
	list ht_capab 'SHORT-GI-20'
	list ht_capab 'SHORT-GI-40'
	list ht_capab 'TX-STBC'
	list ht_capab 'RX-STBC1'
	list ht_capab 'DSSS_CCK-40'
	option disabled '0'
	option txpower '27'
	option country 'US'

config wifi-iface 'wmesh'
	option device 'radio0'
	option ifname 'adhoc0'
	option network 'mesh'
	option mode 'adhoc'
	option ssid 'mesh'
	option bssid 'E8:DE:27:3A:C6:DF' # MAC arbitraria (debe ser comun para los nodos dentro de la mesh)
	option encryption 'none'

Agregar la interfaz wifi-iface wmesh como se ve arriba

/etc/config/batman-adv

config 'mesh' 'bat0'
        option 'interfaces' 'mesh'
        option 'aggregated_ogms'
        option 'ap_isolation'
        option 'bonding'
        option 'fragmentation'
        option 'gw_bandwidth'
        option 'gw_mode'
        option 'gw_sel_class'
        option 'log_level'
        option 'orig_interval'
        option 'vis_mode'
        option 'bridge_loop_avoidance'

/etc/config/dhcp

Nota.- Revisar si la siguiente configuracion es necesaria.

 config dhcp
 	option start '100'
	option leasetime '12h'
	option limit '150'
	option interface 'mesh'

Al reiniciar las conexiones de red, debería existir una red mesh accesible desde wifi y si los nodos se apagan la conexión entre clientes debe persistir.


Segunda versión de configuración (wara-mesh) Hemos configurado esta red completamente desde archivos de configuración, a continuación su descripción.

/etc/config/wireless

Agregar las siguientes lineas al archivo

                                   
# interfaz wireless publica        
config wifi-iface                  
        option device 'radio0'     
        option encryption 'none'   
        option network 'lan'       
        option mode 'ap'           
        option ssid 'nodo2-wifi'   
# mas configuraciones           
config wifi-iface               
        option device 'radio0'  
        option ifname 'mesh0'   
        option encryption 'none'
        option network 'mesh'   
        option mode 'adhoc'     
        option bssid 'CA:FE:BA:BE:06:DF'
        option ssid 'wara-mesh' # nombre de la mesh

NOTA IMPORTANTE Guardar el archivo y luego comprobar en la interfaz web que se crea una red wifi con ssid wara-mesh

/etc/config/network

                                                      
# se modifica agrega lo siguiente                       
config interface 'lan'                                  
        option ifname 'eth1 bat0' # las que haran bridge
        option type 'bridge'                          
        option proto 'static'                         
        option ipaddr '10.0.0.2' # ip unica del router
        option netmask '255.255.0.0'
                             
# nueva interfaz mesh        
config interface 'mesh'       
        option ifname 'mesh0' 
        option proto 'none'   
        option mtu '1528'

/etc/config/batman-adv

config 'mesh' 'bat0'
        option 'interfaces' 'mesh0'
        option 'aggregated_ogms'
        option 'ap_isolation'
        option 'bonding'
        option 'fragmentation'
        option 'gw_bandwidth'
        option 'gw_mode'
        option 'gw_sel_class'
        option 'log_level'
        option 'orig_interval'
        option 'vis_mode'
        option 'bridge_loop_avoidance'

Una vez realizados los cambios reiniciar el router con

reboot -f

Recuperando con failsafe

En caso que no haya forma de conectarse remotamente por ninguna red a OpenWRT (tal vez el router se quedó sin dirección IP), este firmware cuenta con un modo failsafe que sirve para cuando ocurren estas cosas.

El caso en el que se recuperó fue el siguiente: después de hacer algunas configuraciones y reiniciar los servicios de openWRT ya no existía ninguna red inalámbrica y no era posible ver el router por ninguna red cableada (no ping, ni desde dhcp, ni con ip estática).

OpenWRT cuenta con modo failsafe, leer

Los pasos son los siguientes:

  • Desconectar el router de cualquier red cableada
  • Encender el router
  • En el panel frontal del router se ve que el LED de SYS parpadea al iniciar el router (2 veces por segundo)
  • Cuando el LED de SYS tenga esa secuencia de parpadeos presionar el boton frontal para activar el modo failsafe
    • En el caso del TL WR941ND no hay que presionar el botón frontal, hay que presionar el botón trasero de reset WPS
  • Uno se encuentra en modo failsafe cuando el LED de SYS comienza a parpadear muy rápido
  • En teoría ninguna red tenía dirección IP pero cuando está en failsafe el router tendrá la IP 192.168.1.1
    • El primer intento fue conectar la laptop con los puertos lan (amarillos) del router y no se podía hacer ping
    • El segundo intento fue conectar la laptop con el puerto wan (azul) del router y el ping ya se podía realizar. $ ping 192.168.1.1
  • Ejectutar: $ telnet 192.168.1.1 que permite ingresar como root directamente sin necesidad de password
  • Ya siguiendo con la documentación de openwrt para volver al estado inicial del router
    • $ mount_root
    • $ firstboot
    • $ reboot -f

Referencias

  1. https://es.wikipedia.org/wiki/Red_en_malla
  2. https://en.wikipedia.org/wiki/Mesh_networking#See_also
  3. https://es.wikipedia.org/wiki/Red_inal%C3%A1mbrica_mallada
  4. https://en.wikipedia.org/wiki/Wireless_mesh_network#Research_topics
  5. http://jornadas.cafelug.org.ar/8/es/filminas/tercer%20dia/LUGRo-Mesh:%20Tecnolog%C3%ADa%20Mesh%20aplicada%20a%20redes%20WiFi%20Comunitarias/LUGRo-Mesh%20-%20slides%20charla%208vas%20JRSL.pdf
  6. https://en.wikipedia.org/wiki/ISM_band
  7. Documental: Free the network
  8. http://www.open-mesh.org/projects/batman-adv/wiki/Quick-start-guide
  9. http://www.open-mesh.org/projects/batman-adv/wiki/Batman-adv-openwrt-config