Skip to content

Configuración

Introducción a la configuració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 customizaciones 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.

Para utilzar el FirstBootWizard simplemente sigue los pasos que aparecen en pantalla al
entrar en http://thisnode.info

FirstBootWizard splash

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 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.

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. Defecto, 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 Defecto.
De esta forma cuando la mayoria de los nodos comparten cierta caracteristica la misma 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 Nodo,
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.

Luego se escriben los archivos de configuración resultantes para cada paquete en base a /etc/config/lime-autogen
Para que las configuraciones se apliquen, es recomendable correr reboot luego de lime-config. Si bien hay formas más rápidas
de aplicar las modificaciones en ciertos casos, correr reboot es la única que asegura que todos los cambios se aplicaron.

Lista de secciones y opciones

La configuración se divide en tres secciones principales: system, network y wifi.

Para tener información detallada y actualizada de todas las opciones ver la referencia actualizada
en /docs/lime-example.

Opciones de sistema

Las siguientes opciones de la seccion system son las más relevantes:

config lime system
	option hostname 'LiMe-%M4%M5%M6'
	option domain 'thisnode.info'

Te sugerimos que cambies el dominio thisnode.info a un nuevo subdominio del sitio de tu comunidad, por ejemplo option domain 'mesh.altermundi.net'. Este dominio ('mesh.altermundi.net') debe ser un dominio que no exista ya afuera de la red (i.e. es una mala idea usar 'altermundi.net'). A todos los clientes que obtienen una dirección IP por DHCP y a todos los nodos de la red se le asignará un fully qualified domain (ej. 'lime-ddeeff.mesh.altermundi.net')

Configuraciones generales de red

De todas las opciones de red las más relevantes son las siguientes:

config lime network
	option primary_interface 'eth0'
	option main_ipv4_address '10.%N1.0.0/16'
	option main_ipv6_address '2a00:1508:0a%N1:%N200::/64'
	list protocols ieee80211s
	list protocols lan
	list protocols anygw
	list protocols batadv:%N1
Configuración IPv4: main_ipv4_address

Hay cuatro posibilidades:

  1. configurar una IP y subnet estática, por ejemplo '192.0.2.1/16'

  2. parametrizar con %Mn y %Nn, y configurar la subnet, por ejemplo '192.%N1.%M5.%M6/16'

  3. configurar un dirección de red (no una IP en especifico) para obtener una IP autocompletada
    dentro de la red a partir de los bits de la MAC. Esto tambien funciona con máscaras distintas de
    /24 or /16 como '192.0.128.0/17'

  4. configurar dos parámetros distintos, el primero para la subnet y el segundo para la parametrización de la IP,
    por ejemplo '192.0.128.0/16/17', resultando en una subnet /16 con dominio de broadcast (192.0.0.0/16) pero con la IP del nodo
    calculada en un rango /17 (desde la 192.0.128.0 a la 192.0.255.254).

Configuración IPv6: main_ipv6_address

La configuración es similar a la main_ipv4_address. Si se usa autocompletado como máximo se completan
los ultimos 24 bits, por lo que en este caso no es útil usar un rango mayor a /104.

Lista de protocolos: list protocols

Listado de protocolos configurados por LibreMesh. Algunos de estos require la instalación de su paquete relacionado lime-proto-…​.
Notar que por como funcionan las list (listas de UCI) configurar algunos protocolos hace que se reescriba la lista
completa de protocolos que está en los valores por Defecto.
No te preocupes si hay mas protocolos definidos que los que realmente necesitas: solamente los protocolos correspondientes a los
paquetes instalados se van a utilizar. Entonces por ejemplo si el paquete lime-proto-olsr no está instalado entonces por mas
que en la lista esté el protocolo olsr el mismo no será usado.

Configuraciones generales WiFi

De todas las opciones de red las más relevantes son las siguientes:

config lime wifi
	option channel_2ghz '11'
	list channel_5ghz '48'
	list channel_5ghz '157'
	option distance_2ghz '100'
	option distance_5ghz '1000'
	list modes 'ap'
	list modes 'apname'
	list modes 'ieee80211s'
	option ap_ssid 'LibreMesh.org'
	option apname_ssid 'LibreMesh.org/%H'
    option country 'ES'
Configuración de país: country code

El código de país por defecto no viene especificado (entonces por lo tanto el defecto suele ser US),
pero recomendamos encarecidamente que lo configuren. Si la red se encuentra en España entonces la configuración es
option country 'ES', lo que además permite el uso del canal 13 (permitido en España) que de otra forma está restringido.

distance

El parámetro distance indica la máxima distancia a la que pueden estar los otros nodos o clientes.
Un valor muy grande disminuye el rendimiento pero un valor inferior al necesario resulta en una
conección con un rendimiento muy muy malo (suelen verse paquetes duplicados (DUPs) al hacer ping).

wifi options

Cualquier opción en la forma <mode>_<option> se copia directamente a /etc/config/wireless (sin el prefijo <mode>_).

wifi Password de puntos de acceso

Para segurizar con WPA2-PSK las interfaces AP y APname, agrega las opciones key 'MiPasswordSeguro'
y encryption 'psk2'. Para un ejemplo ver en /docs/lime-example.

Configuraciones de interfaz especificas

Cambiar las opciones antes mencionadas nos permite tener una configuración de todo el sistema.

En los casos en los que diferentes interfaces de red deben tener configuraciones diferentes, véase /docs/lime-example.

Opciones parametrizables

Algunas opciones son parametrizables usando un conjunto de caracteres especiales que serán
reemplazados por información específica del nodo.

  1. MAC bytes %Mn se refiere a el byte n de la dirección de MAC de la interfaz principal.
    Por ejemplo de la MAC CA:FF:EE:BA:BB:EE %M1 se reemplazará por CA (el prime byte de la MAC)
    y %M4 por BA (el cuarto byte de la MAC).

  2. Network Identifier %Nn refiere al byte n del identificador de la nube que es un hash que se calcula
    a partir del SSID del AP (tomado del contenido de option ap_ssid …​).

  3. Hostname %H se refiere al hostname del nodo.

Configurando cosas no previstas en LibreMesh

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

Configuraciones genéricas: generic_uci_config

Se puede configurar otros archivos en /etc/config/ desde los archivos de configuración de lime usando
configuraciones genéricas.

Ejemplo para configurar la localización de /etc/config/libremap desde /etc/config/lime-community:

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, archivos para configuraciones especiales

Los lime-assets son archivos que permiten realizar configuraciones especiales. Estos archivos
se dividen en dos grupos, los del nodo y los de la comunidad. La idea es que los assets de la comunidad
sean compartidos por todos los nodos y permitan realizar configuraciones que son necesarias en todos los nodos.
En cambio los archivos (assets) del nodo están pensados para realizar configuraciones especificas en el nodo.

Definiendo archivos: copy_asset

Si se precisa que un archivo esté presente en el sistema de archivos puedes usar la directiva copy_asset.
copy_asset copia un archivo desde el directorio de assets hacia una ruta definida por la opción dst.

Por ejemplo para configurar el programa collectd para tu comunidad puedes crear un archivo collectd.conf
en /etc/lime-assets/community/collectd.conf y usarlo definiendo la siguiente configuración en el archivo
lime-community de la siguiente manera:

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

Ejecutando scripts: run_asset

Para configurar a LibreMesh para que se ejecute un script se debe usar la opción run_asset.
Usar este método de configuración como último recurso si los otros métodos no son suficientes.

run_asset ejecuta un script del directorio de assets. La ejecución puede ser en el primer booteo
(o sea, cuando inicia luego de realizarse un upgrade de firmware) usando ATFIRSTBOOT o en cada
vez que se reconfigura LibreMesh (cuando se ejecuta lime-config) usando ATCONFIG.

Por ejemplo para ejecutar el script myscript.sh guardado en /etc/lime-assets/community/myscript.sh
en el primer booteo:

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

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