Configuración de LibreMesh

tags: LibreMesh

Introducción

LibreMesh tiene un sistema de configuración basado en los siguienes principios:

  • Ser simple de configurar y entender qué configuraciones están en uso en cada nodo
  • Basado en la idea de configuraciones compartidas a nivel Comunidad con personalizaciones posibles por Nodo.
  • Mantenible en el tiempo, por actualizaciones de firmware, agregar nuevos nodos en la comunidad, etc.
  • Poder realizar configuraciones complejas.

El sistema de configuración es fundamental para entender el funcionamiento interno de LibreMesh, sin embargo no es necesario entenderlo antes de empezar una red LibreMesh!

Configuración geek free usando el FirstBootWizard

Si tu comunidad quiere desplegar una red geek free es recomendable hacerlo usando la lime-app utilizando el FirstBootWizard. Esta aplicación simplifica la configuración inicial de los nodos y permite a nuevos nodos sumarse a una red existente, todo a travez de una interfaz amigable que no requiere conocimientos previos de redes.

En cambio si tu comunidad es una comunidad de geeks entonces quizas no quieran utilizar el FirstBootWizard.

Una vez iniciada la red utilizando el FBW les participantes de la red pueden realizar algunos cambios de configuración a travez de la lime-app. A medida que vayan surgiendo necesidades en la comunidad que no se cubran actualmente con la lime-app les participantes de la red podrán aprender a realizar estos cambios a travez de ssh u otras herramientas y siguiendo la documentación a continuación.

Configuración para administradores de red

LibreMesh utiliza a UCI como sistema de configuración ya que UCI es tambien es utilizado por OpenWrt. UCI es una base de datos de que es facilmente modificable tanto desde línea de comandos como editando los archivos de configuración directamente.
Todos los archivos de configuración de UCI se encuentran en el directorio /etc/config/. Los archivos de configuración de LibreMesh que pueden ser editados para son: /etc/config/lime-node y /etc/config/lime-community. El resto de los archivos de configuración no deben ser modificados directamente, ver ### No editar otros archivos de configuración que no sean de libremesh.

Niveles de configuración Comunidad y Nodo

Para ayudar a la comunidad a mantener sus configuraciones, la configuración de los nodos de la red se estructura jerarquicamente en 3 niveles:

  1. Nodo, archivo /etc/config/lime-node
  2. Comunidad, archivo `/etc/config/lime-community
  3. Default, archivo /etc/config/lime-defaults

Donde la configuración realizada a nivel de Nodo toma prioridad por sobre Comunidad y esta a su vez tiene prioridad por sobre el Default.
De esta forma cuando la mayoria de los nodos comparten cierta caracteristica la misma puede (y conviene) configurarse a nivel comunidad y solo modificarla en el nivel de Nodo en los nodos donde esa configuración difiere.
El nivel Default contiene todos los valores de configuración en su valor por defecto.

Ejemplo

Supongamos que queremos configurar la distancia máxima wireless de los nodos de 2.4GHz de la comunidad en 300 metros pero en dos de los nodos A y B configurarla en 1000m. Lo podríamos hacer de la siguiente forma:

En lime-community de todos los nodos tendriamos:

config lime 'wifi'
	# other options
	option distance_2ghz '300'

Y en los archivos lime-node de los nodos A y B:

config lime 'wifi'
	option distance_2ghz '1000'

Funcionamiento

Al correr el comando lime-config lo primero que sucede es que se procesan los niveles Node, Comunidad y Default y se genera el archivo /etc/config/lime-autogen. Este archivo es el que contiene la configuración que realmente va a utilizarse por libremesh para configurar el sistema.

The executable lime-config reads such file and writes all the resulting complex configuration in many other configuration files.
In order to apply modifications to the configuration file, it has to be executed running +lime-config+ in the node's root console and the router has to be rebooted with the reboot command.

Configurando cosas no previstas en LibreMesh

Si quieres realizar una configuración para la cual LibreMesh no tiene una opción entonces necesitas usar configuraciones genéricas y lime-assets.

Generic configs

Specifies generic configurations of type uci set to modify the configs of another package.

Example:

 config generic_uci_config libremap
    list uci_set "libremap.settings=libremap"
    list uci_set "libremap.settings.community=our.libre.org"
    list uci_set "libremap.settings.community_lat=-200.123"
    list uci_set "libremap.settings.community_lon=500.9"

Los lime-assets

XXX Qué son, cómo se usan.

Defining specific files

If you need a file to be present in the root filesystem you can use the copy_asset directive.
copy_assetcopy a file from the assets directory into a specified path dst.

For example if you want to config collectd for your community then you can place the collectd.conf file at
/etc/lime-assets/community/collectd.conf and use the following config at your lime-community file:

config copy_asset collectd
   option asset 'community/collectd.conf'
   option dst '/etc/collectd.conf'

Running config scripts

If you need that a script to be executed at first boot or each time lime-config runs use the run_asset config option. Usar este método de configuración como último recurso si los otros métodos no son suficientes.

run_asset executes a file from the assets directory. The execution may be at first boot, using ATFIRSTBOOT, or when lime-config is run using ATCONFIG.

For example to run the script myscript.sh from /etc/lime-assets/community/myscript.sh at first boot

 config run_asset dropbear
     option asset 'community/myscript.sh'
     option when 'ATFIRSTBOOT'

Note

ATFIRSTBOOT runs the first time the firmware is booted, so it also runs when you do a firmware upgrade.

Nota

Este método de configuración reemplaza los scripts uci-defaults.

Importante

No editar otros archivos de configuración que no sean de libremesh

La configuración de un nodo libremesh solo debe realizarse a travez de los archivos de configuración de libremesh
y nunca editando directamente los otros archivos de configuración. Esto es así ya que los cambios realizados en archivos de configuración por fuera del sistema de configuración de libremesh se pueden perder cuando:

  • se realice un cambio en la configuración de libremesh
  • se haga un upgrade de firmware

Nunca modificar los Defaults ni el autogenerado

A pesar de que podria ser cómodo modificar directamente /etc/config/lime-defaults o inclusive /etc/config/lime-autogen esto no debe hacerse ya que en el futuro cuando querramos entender la configuración que tenemos del nodo no vamos a poder distinguir si cambiamos una configuración o no.

Quiero cambiar una opción para probar, dónde la cambio?

Tengo que configurar todas las opciones?

No, las configuraciones por del nivel Default proveen una configuración que permite tener una experiencia de red mesh sin tener que cambiar nada.

Cómo hago para ver todas las opciones estan en uso actualmente en un nodo?

Ver el archivo lime-autogen

Quiero cambiar algo pero pero no encuentro una opcion de libremesh para realizarlo

Para eso existen las configuraciones genéricas y los lime-assets. Ver la sección de configuración XXX

Howtos

  • Cómo usar las configuraciones de ap, apnode, mesh
  • Cómo poner una radio como cliente de otra red (para que el nodo haga de gateway)
  • Cómo poner un password de administración para toda la red
  • Cómo ponerle password al wireless
Select a repo