Forma 2: Instalacion de API Freeradius en Mikrotik

Integración de API Freeradius

Para instalar y usar freeradius necesitamos 3 componentes, una base de datos (mysql), Freeradius (Servicio) y API Freeradius (Webservice).

Wisphub API Freeradius es un sistema que nos permite actualizar la información como datos de acceso de nuestros usuarios en el proyecto de freeradius, de forma sencilla funciona como intermediario entre wisphub y freeradius para realizar operaciones. Para poder utilizar esta función es importante seguir una serie de pasos, de igual manera es importante cumplir con ciertos requisitos, a continuación se detallan los pasos a seguir para poder usar esta función.

Porque no instalar freeradius (Servicio) y la base de datos en el mikrotik?

Debido a la carga de todos los componentes, el peso de los mismos y el consumo de recursos podrian interferir con el uso normal del mikrotik por lo que no es recomendable realizar esta accion. Solo se recomienda Instalar Api Freeradius en el Mikrotik.

Instalar Api freeradius en un mikrotik

Nota

Para instalar Wisphub Freeradius (Webservice) en un mikrotik es necesario:

  • Contar con un mikrotik con arquitectura compatible
  • Tener el uso de contenedores activado
  • Una base de datos ya funcional, con las tablas creadas, alcanzable por el mikrotik y que permita la conexion.
  • Contar con el servicio de freeradius, alcanzable por el mikrotik y que permita la conexion
  • Si no tienes los dos anteriores y tienes conocimientos de freeradius y servidores puedes ver como instalarlos aqui

Requisitos

  1. Mikrotik v7.4 o superior
  2. Mikrotik con arquitecturas compatibles x86, amd64
  3. Al menos 1GB de almacenamiento disponible
  4. En caso de no contar con un Mikrotik compatible, se puede hacer uso de  CHR o algun dispositivo capaz de soportar el uso de contenedores (Docker)

 

Habilitar Contenedores en Mikrotik

 

Para poder hacer uso de los contenedores en nuestro Mikrotik, es necesario descargar el archivo all_packages de la página oficial de Mikrotik., es importante asegurese de descargar el archivo correspondiente a su Mikrotik de lo contrario no podrá hacer uso de los contenedores.

Una vez haya descargado el archivo, debera descomprimir el archivo e importar el archivo container a nuestro Mikrotik.

Una vez importado el archivo, será necesario reiniciar nuestro Mikrotik, podemos hacerlo desde System/Reboot.

Nota

En caso de que el archivo all_packages correspondiente a su versión de Mikrotik no cuente con el archivo container no podrá hacer uso de esta función, por lo que, en caso de querer utilizar Wisphub freeradius tendrá que depender de algún dispositivo externo que soporte el uso de contenedores, de igual manerá tendra que crear sus respectivas reglas para indicar que sera este dispositivo el encargado de ejecutar el proyecto.

Finalmente para poder hacer uso de los contenedores es necesario ejecutar el comando

/system/device-mode/update container=yes

Esto pedirá una confirmación que podemos realizar con el boton mode del Mikrotik, en caso de no contar con este boton es necesario desconectar el Mikrotik de la corriente, esperar unos segundos y conectarlo nuevamente, con esto deberia quedar habilitado el uso de contenedores en nuestro Mikrotik.

Crear Reglas en Mikrotik

Una vez hayamos habilitado el uso de contenedores es necesario agregar algunas configuraciones para nuestro contenedor.

Añadir interfaz veth para el contenedor

    /interface/veth/add name=veth1 address=172.17.0.2/24 gateway=172.17.0.1

Crear un bridge para nuestro conenedor, utilizar la interfaz veth

    /interface/bridge/add name=containers
    /ip/address/add address=172.17.0.1/24 interface=containers
    /interface/bridge/port add bridge=containers interface=veth1

Configurar NAT para el tráfico saliente

    /ip/firewall/nat/add chain=srcnat action=masquerade src-address=172.17.0.0/24

Configurar redireccionamiento 

/ip/firewall/nat/add chain=dstnat protocol=tcp dst-port=8146 action=dst-nat to-address=172.17.0.2 to-ports=8146 comment=CONTENEDOR

Con esta instrucción estamos especificando que todo aquello que llegue por el puerto 8146 sea redirigido a nuestro contenedor, el cuál será el encargado de interactuar entre el freeradius y wisphub

Crear entorno del contenedor

En el siguiente apartado se muestran variables de ejemplo, sin embardo deben de ser reemplazados por los datos correctos, como la base de datos con la cual se conectara el webservice, esta debe estar creada y permitir conexiones desde el mikrotik.

    /container/envs/add name=wisphub_api_freeradius_envs key=SECRET_KEY value="CADENA_ALEATORIA"
    /container/envs/add name=wisphub_api_freeradius_envs key=DEBUG value=1
    /container/envs/add name=wisphub_api_freeradius_envs key=ALLOWED_HOSTS value="127.0.0.1,*"
    /container/envs/add name=wisphub_api_freeradius_envs key=DB_NAME value="radius"
    /container/envs/add name=wisphub_api_freeradius_envs key=DB_USER value="radius"
    /container/envs/add name=wisphub_api_freeradius_envs key=DB_PASSWORD value="radpass"
    /container/envs/add name=wisphub_api_freeradius_envs key=DB_HOST value="db"
    /container/envs/add name=wisphub_api_freeradius_envs key=DB_PORT value="3306"

Crear mount del contenedor

    /container/mounts/add name=etc_wisphub_api_freeradius src=disk1/etc_wisphub_api_freeradius dst=/etc/wisphub_api_freeradius
    /container/mounts/add name=dnsmasq_wisphub_api_freeradius src=disk1/etc-wisphub_api_freeradius.d dst=/etc/wisphub_api_freeradius.d

Estas son algunas variables de entorno para el uso de nuestro contenedor, puede cambiar los valores si asi lo desea.

Añadir registry-url

    /container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/pull

Esto nos permitirá descargar imagenes de los repositorios de Docker.

Nota

Las instrucciones anteriores son necesarias para un correcto funcionamiento del contenedor, puede realizar modificaciones a las instrucciones siempre y cuando estas funcionen correctamente, puede basarse de las intrucciones aqui mostradas y modifcarlas de la manera mas conveniente. En aquellas instrucciones que especificas una ruta(src) tenga en cuenta que es donde se alojará nuestro contenedor, de igual manera si asi lo desea puede especificar otra ruta.

Descargar Imagen del Proyecto

Una vez hayamos realizado las configuraciones previas, procedemos a descargar la imagen con el siguiente comando, asegurese de ejectuar el comando correspondiente a la arquitectura de su Mikrotik.

X86, AMD64


/container/add remote-image=soportewisphub/wisphub_api_freeradius:V100 interface=veth1 root-dir=disk1/wisphub-freeradius-webservice/ envlist=wisphub_api_freeradius_envs mounts=dnsmasq_wisphub_api_freeradius,etc_wisphub_api_freeradius hostname=api logging=yes start-on-boot=yes cmd="./compose/commands/up.sh"

ARM


/container/add remote-image=soportewisphub/wisphub_api_freeradius_arm:V100 interface=veth1 root-dir=disk1/wisphub-freeradius-webservice/ envlist=wisphub_api_freeradius_envs mounts=dnsmasq_wisphub_api_freeradius,etc_wisphub_api_freeradius hostname=api logging=yes start-on-boot=yes cmd="./compose/commands/up.sh"

ARM64


/container/add remote-image=soportewisphub/wisphub_api_freeradius_arm64:V100 interface=veth1 root-dir=disk1/wisphub-freeradius-webservice/ envlist=wisphub_api_freeradius_envs mounts=dnsmasq_wisphub_api_freeradius,etc_wisphub_api_freeradius hostname=api logging=yes start-on-boot=yes cmd="./compose/commands/up.sh"

A continuación comenzara la descarga de nuestro contenedor, en este punto unicamente debemos esperar a que se descargue la imagen

Nota

En el comando antes mencionado, en root-dir se especifica la ruta, en este caso será dentro de disk1, en caso de ser una ruta diferente sera necesario cambiar este valor.

Una vez se haya extraido será necesario inicializarlo, hasta este punto nuestro contenedor deberia funcionar correctamente e iniciarse cada vez que el dispositivo este encendido, por lo que, la configuración restante se haría del lado de Wisphub

 

Acceder al contenedor y generar API Key de conexion

Si tu mikrotik es accesible por ip publica o a travez de una VPN todo el trafico del puerto 8146 se enviara al contenedor por lo que debe ser accesible a travez de ese puerto, por lo que se puede acceder al servicio con [IP]:8146/admin, con el usuario y contraseña por defecto.

User: admin

Pass: password

Una vez dentro nos diriginos a la seccion de API Keys:

Al dar clic en API keys, una vez dentro de la seccion, damos clic en agregar API Key:

Agregamos los datos necesarios:

Nombre: Un nombre para identificar el API Key

Expires: Podemos dar clic a los botones de today y now y depues reemplazar el año para colocar una fecha futura, esta será la fecha de expiración, puede ser algunos años hacia adelante.

Luego de guardar podremos visualizar el API Key, es importante guardarlo en un lugar seguro, ya que solo podra visualizarse una vez, y no sera posible volver a verlo.

Agregar conexion a wisphub

Debido a que un Mikrotik puede tener conexion con wisphub de formas diferentes es necesario colocar la direccion IP adecuada para poder tener alcance al API de freeradius.

Es necesario configurar un evento API Personalizado desde Wisphub. Luego de agregar un router nos vamos a la seccion de editar, depues de eso nos vamos a la seccion de eventos API Personalizados.

 

1) Conexion por IP publica

Si tienes ip publica debes colocar la ip publica de tu mikrotik que contenga el API freeradius. Seguido de eso agregamos el puerto y seleccionar la opcion de freeradius. Tambien deberas colocar tu Api-Key y guardar al final de la pagina.


 

1) Conexion por VPN

Si tienes conexion por VPN deberas colocar la IP que te da el sistema luego de generar tu script de conexion, seguido del puerto y seleccionar la opcion de freeradius. Tambien deberas colocar tu Api-Key y guardar al final de la pagina.

Escenarios de instalacion

  1. Diagrama de Red: El diagrama muestra direcciones IP de ejemplo.
  2. Formulario: En el formulario, sustituye las IPs de ejemplo del diagrama con las IPs reales que usarás en tu red.

 

 


13 de Mayo de 2024 a las 18:19 - Visitas: 716