[desarrollo] Script o programa para automatizar configuraciones de enrutadores

Intro

Un nodo en la red libre debería formar parte de la red troncal para extenderla. Para poner un nodo en la troncal de LaOtraRed se necesita configurar el enrutador e instalar ciertos programas en el mismo.

Si hablaríamos de hacer estos pasos manualmente se pueden resumir en:

  1. Conseguir un enrutador al que se pueda instalar un sistema operativo libre como openwrt (ver más).
  2. Instalar el sistema operativo libre en el enrutador.
  3. Instalar algunos de los programas adicionales necesarios (mayormente sólo el programa bmx7).
  4. Realizar configuraciones en el enrutador (ver referencia de configuraciones)

Problemática

No cualquier persona es capaz de hacer estos cambios en el enrutador fácilmente, si la instalación se hace incorrectamente el equipo podría quedar brickeado.

Plan

Ya que existen las herramientas podríamos automatizar este proceso con un script o programa pequeño.

Digamos que el script se llame chef-lor.sh se deberían poder pasar argumentos para generar archivos de configuración y copiarlos en /etc/config/ del enrutador, por ejemplo:

chef-lor.sh ipv6 [ssid_wifi] [password_wifi]

Donde:

  • ipv6: es la dirección ipv6 del segmento de red que le pertenece al nodo.
  • ssid_wifi: (opcional) el nombre de la red wifi a la que el nodo tratará de conectarse buscando otros nodos.
  • password_wifi: (opcional) el password de la red wifi si se proporciona,

Por ejemplo:

chef-lor fc01:1934:1:05::

Generaría los archivos de configuración network, wireless, dhcp, bmx7, firewall para copiarlos al directorio /etc/config del router con las configuraciones necesarias para que el router sea parte de la red troncal de LaOtraRed.

En este hilo deberíamos poner información para abstraer el proceso de configuracion para desarrollar el script o programa :sunglasses:

Para que un programa automatice la configuraciones necesarias es necesario identificar las partes que hay que modificar. Por la cantidad de routers que componen un nodo hay básicamente dos casos.

  1. Nodos con un sólo enrutador
  2. Nodos con más de un enrutador (con routers de exterior)

Primero empezaré tratando de desglosar lo necesario para el primer caso.

Nodo con un sólo enrutador

En este tipo de nodos el enrutador es parte de la red troncal y también se encargaría de dar conexión adicional su red interna, referencia en la wiki.

               protocolo bmx7
(Router) ----------------------- (Otros Nodos
   |                            (en la red Troncal )
   |
 Red interna

1. Configuración de interfaces de red

Involucra el archivo /etc/config/network, modificando la interfaz LAN, definiendo una nueva interfaz MESH.

  • LAN que servirá como interfaz privada para equipos en una red local propia del nodo que tengan acceso a LaOtraRed.
  • MESH dedicada a la sesión bmx7 para unirse a la red troncal, aquí se asignan direcciones IPv6 públicas que este nodo anuncia o exporta al resto de la red.

2. Configuración inalámbrica

Modificando el archivo /etc/config/wireless, se ajusta un WiFi de conexión y sus parámetros para formar parte de una nube LOR por defecto. (ver configuración nubes LOR) en este caso se crea un puente con la interfaz MESH

3. Configuración de enrutamiento bmx7

El archivo /etc/config/bmx7, se hace configuraciones para anunciar el bloque IPv6 correspondiente al nodo y también IPv4 por túneles.

4. Configuración de Firewall

En /etc/config/firewall Se definen reglas a LAN y MESH local para permitir conexiones de LAN a MESH (el resto de la red troncal) pero bloquear intentos de inicio de conexión de equipos desde la red troncal hacia la red privada es decir de MESH a LAN.

5. Configuración de DNS

Para resolver dominios que terminan en .lor se ajusta dnsmasq para que apunte a un servidor DNS que se encarga de esta tarea. Adicionalmente aquí se configura la resolución de dominios para INTERNET y LaOtraRed, de tal forma que las peticiones a dominios .lor vayan hacia equipos de LaOtraRed y otros dominios como .com .net .org, etc vayan hacia INTERNET.