# LibreMesh y PfSense

Para la configuración de la redinc.org en la vereda La esperanza en el municipio Buenos Aires Cauca, se decidio por la utilización del Firmware LibreMesh para la implementación de una red MESH y que a su vez se integrara a esta red un Firewall que permitiera el manejo de un portal cautivo para el control del acceso a Internet y manejar diferentes formas de permitir el acceso a internet por parte de los clientes de la red.

Esta configuración en si misma representa un reto ya que los Firmware libres que implementan protocolos modernos para redes mesh como BMX6 o BMX7 que a su vez logran que el enrutamiento a la red sea dinamico no son 100% compatibles con enrutamientos estaticos en redes tradicionales para esto tuvimos que hacer una configuración especial en donde mezclamos lo mejor de los dos mundos y tener una configuración que cumpliera con los requisitos de la comunidad en cuanto al control que se requiere del acceso a Internet.

### Diseño de la red.

Entre las configuraciones posibles a la hora de diseñar el red, el direccionamiento IP y el tamaño de la misma elegimos una que nos permitiera tener una red bastante grande y que fuera compatible con los protocolos de la red MESH

La red definida cumple con los siguientes parametros:

Address:   10.17.0.0             
Netmask:   255.255.0.0 = 16      
Wildcard:  0.0.255.255           =>
Network:   10.17.0.0/16          
Broadcast: 10.17.255.255         
HostMin:   10.17.0.1             
HostMax:   10.17.255.254         
Hosts/Net: 65534                 

De esta forma cada uno de los equipos de la red y de los nodos de la Mesh tendran una ip del tipo 10.10.x.x/16 al comportarse como una sola red no es necesario realizar tareas complejas de enrutamiento para agregar equipos con diferentes caracteristicas o firmwares a la red MESH

LibreMesh de forma automatica crea sobre esta red grande segmentos de red que le permite a cada nodo tener su propio servidor DHCP y DNS Forwarder que entrega a los clientes segun el nodo al que se conectan.

Este tipo de configuración a su vez permite que la red tenga una especio de Itinerancia o Roaming por defecto logrando que clientes en movimiento salten de nodo sin notar intermitencias en el servicio al cambiar de nodos.

Una detalle importante a tener en cuenta es que la definicón del direccionamiento IP de la red la genera automaticamente LibreMesh basado en el nombre de la red segun el archivo de configuración que creamos para la compilación del Firmware, estos archivos pueden encontrarse en el siguiente enlace:

https://github.com/kleper/network-profiles/tree/master/RedINC-Comunitaria

### Segmento de RED Servidores

Al realizar la configuració de los primeros nodos elegimos que los servidores iban a pertenecer a un segmento de red creado por uno de los nodos que es el:

10.17.95.0/16 

Los servidores quedaron con las siguientes IP:

- Firewall: 10.17.95.1
- Servidor contenidos Locales: 10.17.95.2

#### Direccionamiento IP para equipos que no pueden conectarse a la RedMES

Teniendo en cuenta que segun el tipo de equipos que tiene la RedINC y las diferentes tecnologias que se quieren implementar y probar y que deben quedar formando parte de la RedMESH se puede utilizar casi que cualquier IP que este en el rango explicado para definirla de forma estatica en estos equipos, en especifico se puede coger el rango de IPS desde 10.17.0.10 hasta 10.17.0.100 para agregar equipos de forma estatica y estos deben poder ser accesibles desde cualquier punto de la red.

Teniendo en cuenta lo anterior un equipo con el que se quiera hacer un enlace punto a punto debe llevar la siguiente configuración:

IP: 10.17.0.10
Netmask: 255.255.255.0
Gateway: 10.17.95.1
DNS: 10.17.95.1

Los demas equipos solo es ir creciendo el numero final de la dirección ip conservando las configuraciones de Netmask, GW y DNS. Ejmeplo:

10.17.0.10 - 10.17.0.11 - 10.17.0.12 ... ETC

Esta es la configuración sugerida para los diferentes enlaces Punto a Punto que tiene la red, para las BTS y para los equipos de TVWS.


### LibreMESH

Para poder que el Firmware LibreMesh que compilamos para la RedINC fuera compatible con nuestro Firewall debimos agregar a la configuración de cada uno de los equipos las siguientes lineas en los siguientes archivos al interior de cada router:

En la seccion **config interface 'lan'** del archivo:
- /etc/config/network
    - option gateway '10.17.95.1'

Captura de la pantalla de como queda la configuración en un nodo:
    
![](https://docutopia.tupale.co/uploads/upload_149056723c629710a2a9399a4b1564b1.png)

En la seccion **config dnsmasq** del archivo:
- /etc/config/dhcp
    - list dhcp_option '3,10.17.95.1'
    - list dhcp_option '121,10.0.10.0/8,10.17.150.224'
    - list dhcp_option '249,10.0.10.0/8,10.17.150.224'
    - list address '/.redinc.org/10.17.95.2'
    - list address '/firewall.redinc.org/10.17.95.1'

Captura de la pantalla de como queda la configuración en un nodo:

![](https://docutopia.tupale.co/uploads/upload_c4a050523742e2d711ba631249098a3a.png)

Las lineas:

    - list dhcp_option '121,10.0.10.0/8,10.17.150.224'
    - list dhcp_option '249,10.0.10.0/8,10.17.150.224'

El valor 10.17.150.224, debe cambiar segun la IP de cada uno de los nodos.

La configuración anterior lo que hace es decirle a cada nodo que tiene Internet en la red LAN por medio de la puerta de enlace 10.17.95.1 que es nuestro PfSense

Y que el servidor DHCP de cada uno de los nodos entregue a los clientes la puerta de enlace la ip de nuestro PfSense y que defina unas rutas estaticas necesarias para que los clientes puedan ver el resto de la red, tambien agregamos un par de lineas que permiten que a nivel de dns se definan las ip del dominio redinc.org

Los firmware compilados para la RedINC se pueden descargar del siguiente enlace:

https://tms.openstreetmap.co/lime/

En esta carpeta se puede encontrar 2 compilados del firware:

1. lime_default: Se utiliza para routers con mas de 5MB de memoria flash disponible.
2. lime_mini: Se utiliza para routers con menos de 4MB de memoria flahs disponible

Para saber que routers son adecuados para cada firmware visite la pagina de libremesh y revise el hardware soportado y el tamaño de firmware que recomiendan.

# Actualización generación automatica del Firmware

La ultima configuración realizada en el profile de la RedINC en el [repositorio de LibreMESH](https://github.com/libremesh/network-profiles/tree/master/RedINC-Comunitaria) permite que se compile el firmware y ya quede configurado con las opciones que necesita la red para hacer que todos los clientes vean al PfSense como gateway.

Esto ademas permite que podamos utilizar [el CHEF de LibreMesh para generar el Firmware](https://chef.libremesh.org/) el profile que se debe usar para generar el Firmware es el que se llama **hacklime**.



# PfSense

La configuración del PfSense para agregarlo a la red creada con LibreMesh no es diferente a la que se explica en el siguiente enlace:

https://docutopia.tupale.co/qmp+pfsense

Solo hay que tener en cuenta el direccionamiento IP y que ya no es necesario agregar ninguna ruta estatica adicional en el Firewall.

### RedINC.org

La IP de la WAN quedo configurada con la IP: 192.168.40.254/24






