Nota
Antes de comenzar, es importante asegurarse de que ya tengas instalado y configurado correctamente el servidor RADIUS. Si aún no has completado esta parte, te recomiendo seguir las instrucciones detalladas en el manual de instalación y configuración del servidor FreeRADIUS. Puedes acceder a ese manual aquí: Instalar y configurar FreeRadius con Amazon Lightsail con Mikrotik
Agregar Mikrotik como cliente NAS al FreeRadius
El diagrama describe la topología básica de red entre un servidor FreeRadius y un router MikroTik, donde ambos dispositivos deben ser capaces de comunicarse entre sí. Aquí está la explicación del diagrama:
Se muestra cómo el servidor FreeRadius y un router MikroTik se conectan en la misma red. El MikroTik tiene la dirección IP 192.168.20.1, mientras que el FreeRadius tiene la dirección IP 192.168.20.254. Ambos dispositivos se comunican usando el protocolo RADIUS para gestionar la autenticación y autorización de usuarios en la red. El MikroTik envía solicitudes al FreeRadius para verificar las credenciales de los usuarios y permitir el acceso adecuado a la red.
Archivo adjunto 4185
1Agregar Enrutador (Mikrotik) al FreeRadius.
Para agregar un enrutador MikroTik al servidor FreeRadius, necesitas insertar un registro en la tabla nas en la base de datos radius.
Acceder a la base de datos de FreeRadius.
Sudo mysql
Use radius;
Insertar registro en la tabla nas.
INSERT INTO nas (nasname, shortname, type, secret, description) VALUES ('direccion_ip_del_enrutador', 'nombre_corto', 'other', 'clave_compartida', 'descripcion del enrutador);
Nota
NOTA: LA IP QUE COLOCAS EN EL COMANDO ES EL DE LA IP PUBLICA DEL MIKROTIK
Nota
OJO: la ip que se coloca es la ip publica de donde esta conectado el mikrotik, para este caso lo pudimos obtener haciendo un speedtest y es el que nos arroja
Archivo adjunto 4200
Otra opción para poder ver la ip publica a la que estas conectado es el siguiente, mediante el servidor radius en caso de que en el speedtest te muestre uno distinto
En el servidor radius(Ubuntu) Coloca el siguiente comando : sudo tcpdump -ni any icmp
Archivo adjunto 4201
En la captura se ve claramente esto: In IP 190.9.108.2 > 172.26.8.188: ICMP echo request
Eso significa que tu MikroTik está saliendo a Internet con la IP pública 190.9.108.2
y que tu servidor (52.54.83.214 / 172.26.8.188 interna) recibe los paquetes desde esa dirección.
Y esa es la ip que se coloca en el archivo sudo nano /etc/freeradius/3.0/clients.conf
Para validarlo en el mikrotik la ip publica
Corrobora que tengas los dns de Google agregados en el mikrotik
Si el mikrotik es versión 6 puedes validar con:
/tool fetch url="http://api.ipify.org" mode=http dst-path=ip.txt
Archivo adjunto 4211
Luego revisa el contenido con:
/file print
/file print detail where name="ip.txt"
/file get ip.txt contents
Archivo adjunto 4212
Nota
contents=190.9.108.2 significa que esa es la IP pública con la que tu Mikrotik sale a Internet,
y por lo tanto sí estás detrás de NAT
si el mikrotik es version 7
/tool fetch url="https://api.ipify.org" output=user
Ejemplo de como se agregaria el comando ya sabiendo la ip publica del mikrotik:
INSERT INTO nas (nasname, shortname, type, secret, description) VALUES ('19.9.108.2', 'FR', 'other', 'clave123', 'prueba radius');
Donde:
- nasname: Es la dirección IP o el nombre DNS del enrutador MikroTik. Es el identificador del dispositivo que se está agregando.
- shortname: Es un nombre corto o alias para el enrutador. Puede ser útil para identificar rápidamente el dispositivo.
- type: Indica el tipo de dispositivo NAS (Network Access Server). En este caso, usas 'other' para indicar que es otro tipo de dispositivo, como un MikroTik.
- secret: Es una clave compartida que se utiliza para autenticar y encriptar las comunicaciones entre el servidor RADIUS (FreeRadius) y el dispositivo NAS (MikroTik). Debes proporcionar una clave segura aquí. (Esta clave la usaremos para agregarla en el Mikrotik)
- description: Es una descripción opcional del enrutador MikroTik. Puedes usar esto para añadir más contexto sobre el dispositivo.
Esto permite que FreeRadius identifique y autentique correctamente el enrutador MikroTik cuando este se comunique con el servidor para solicitar autenticación y autorización de usuarios.
Se valida con select * from nas
Debe aparecer algo como esto donde deberá estar asignado la ip que colocaste en el comando (IP publica de donde sale el mikrotik)
Archivo adjunto 4210
Ahora reinicia y depura:
sudo systemctl restart freeradius
sudo systemctl stop freeradius
sudo freeradius -X (opcional para ver logs)
2 Agregar el servidor FreeRadius al Router Mikrotik
Acceder al Router mikrotik ir la sección Radius y agregar nuevo registro [+]
Archivo adjunto 4189
Donde:
- Service: Aquí debes seleccionar el modo de uso del servidor RADIUS. En este caso "PPP", que es el protocolo que se utilizará para la autenticación de Point-to-Point Protocol, comúnmente utilizado para conexiones de acceso remoto.
- Address: Debes ingresar la dirección IP del servidor FreeRadius. Esta dirección indica dónde se encuentra el servidor RADIUS que procesará las solicitudes de autenticación y autorización.
- Protocol: Por defecto, el protocolo utilizado para las comunicaciones RADIUS es UDP (User Datagram Protocol), que es un protocolo de transporte liviano y eficiente.
- Secret: La clave secreta es un código compartido entre el router MikroTik y el servidor RADIUS. Sirve para autenticar y encriptar las comunicaciones entre ambos. Debes utilizar la misma clave que se creó en el paso 1 al agregar un registro en la tabla "nas" del servidor RADIUS.
- Authentication Port: El puerto de autenticación (por defecto 1812) es el punto de entrada en el servidor RADIUS donde el router MikroTik enviará las solicitudes de autenticación de usuarios para su procesamiento.
- Accounting Port: El puerto de contabilidad (por defecto 1813) es el puerto en el servidor RADIUS donde se registrarán las actividades de los usuarios, como la duración de la sesión y el uso de ancho de banda.
Nota
Por defecto, cada instancia de Lightsail usa una IP pública dinámica. Eso significa que si apagas o reinicias la instancia, Amazon puede asignarle una nueva IP pública automáticamente.
ASIGNAR IP ESTATICA A INSTANCIA DE AMAZON
Amazon Lightsail te permite asignar una IP estática gratuita por cada instancia.
Esa IP no cambia aunque apagues, reinicies o recrees la instancia (mientras esté asignada).
Nos vamos a la instancia en amazon y en redes vemos la ip publica y le damos clic en vincular una Ip estatica
asignamos nombre para identificar la ip y le damos clic en crear y vincular
Archivo adjunto 4186
ahora la ip cambio a una estática y es con la que se estará trabajando
Archivo adjunto 4187
Ahora ya podemos continuar insertando el registro en el mikrotik nas con la nueva ip publica
Quedando por ejemplo de la siguiente manera
Ejemplo
Archivo adjunto 4191
3 HABILITA PUERTOS EN INSTANCIA DEL SERVIDOR
Tienes que permitir el acceso por icmp por ping y udp a los puertos 1812 y 1813 en la instancia de Amazon
En Lightsail → Redes, abre:
Archivo adjunto 4192
Y agrega las regla, quedando de la siguiente manera
Archivo adjunto 4193
Y así al darle ping a la ip publica de la instancia de amazon se llega de manera correcta
Archivo adjunto 4194
Nota
El ping correcto nos indica que se alcanza el servidor radius desde el mikrotik correctamente
Al configurar estos parámetros, el router MikroTik establecerá una comunicación segura con el servidor FreeRadius a través del protocolo RADIUS. Esto permitirá que el router envíe solicitudes de autenticación y autorización, y reciba respuestas para permitir o rechazar el acceso de los usuarios a la red. La clave secreta garantiza la autenticación y la privacidad de las comunicaciones entre los dos dispositivos.
En resumen, has completado exitosamente la configuración de FreeRadius y MikroTik para establecer un sistema de autenticación centralizada en tu red. Ahora estás preparado para gestionar el acceso de los usuarios, ya sea a través de PPP, Hotspot u otros servicios.
4 AGREGA REGLAS EN FIREWALL
Nota
Estas reglas solo se agregan si su M
Nota
ikrotik usa NAT o está detrás de un router, si el Mikrotik tiene asignado una ip publica no debe ser necesario estas reglas firewall
Para que permita la conexión por pppoe se agregan dos reglas en filter rules
# Acepta respuestas ya establecidas
/ip firewall filter add chain=input connection-state=established,related action=accept place-before=0 comment="ACCEPT established/related"
# Permite respuestas UDP *desde* el RADIUS (el reply llega desde 52.54.83.214:1812 a un puerto alto del MT)
/ip firewall filter add chain=input in-interface=ether6 protocol=udp src-address=52.54.83.214 action=accept place-before=0 comment="Allow RADIUS replies"
Si el MK es versión 6 el comando es el siguiente:
# 1) Acepta conexiones ya establecidas/relacionadas (INPUT)
# (esto permite la respuesta UDP del RADIUS)
/ip firewall filter add chain=input connection-state=established,related action=accept comment="ACCEPT established/related"
# 2) Permite explícitamente las respuestas desde tu servidor RADIUS por la WAN
# (ajusta ether6 si tu WAN es otra)
/ip firewall filter add chain=input in-interface=ether6 protocol=udp src-address=44.252.124.178 action=accept comment="Allow RADIUS replies"
# 3) (Opcional) Si tienes DROP al final del INPUT, sube estas reglas al inicio
Colocando la ip publica del servidor radius con el protocolo udp
Quedando las reglas de la siguiente manera
Archivo adjunto 4197
Archivo adjunto 4195
Archivo adjunto 4196
EN EL SERVIDOR DE RADIUS APLICA LOS SIGUIENTES COMANDOS PARA ABRIR LOS PUERTOS UDP 1812 Y 1813
sudo ufw allow 1812/udp
sudo ufw allow 1813/udp
sudo ufw reload
sudo systemctl status freeradius
sudo ss -lunp | grep 181
Debes ver udp *:1812 y udp *:1813 por freeradius
Archivo adjunto 4198
5 Configuración MikroTik PPPoE Server con freeRADIUS Server
Ahora se guiara a través del proceso de utilizar FreeRadius como servidor RADIUS y MikroTik como servidor PPPoE para establecer una autenticación y autorización robusta en tu red. A lo largo de los siguientes pasos, aprenderás cómo crear usuarios con asignaciones de IP estáticas y dinámicas, así como cómo limitar el ancho de banda para estos usuarios, todo administrado directamente desde FreeRadius.
Una vez hayas configurado exitosamente el servidor RADIUS, estarás listo para comenzar con los pasos que se describen en este manual. Descubrirás cómo crear usuarios con asignaciones de IP estáticas y dinámicas y cómo aplicar restricciones de ancho de banda a través del servidor FreeRadius. Sigue cada paso cuidadosamente para lograr una autenticación segura y un control eficiente del acceso a tu red partiendo de la topologia que se muestra al inicio del manual
6Activar Autorización Radius en el protocolo PPP
En Mikrotik acceder a PPP > Secrets > PPP Authentication&Accounting y activar: Use Radius.
Archivo adjunto 4202
7 Creación de usuarios con IP Estática.
Para este ejemplo se creara un usuario para autenticación y autorización PPPoE con los siguientes datos:
- User: user1
- Password: 123456
- IP: 192.168.90.2
En nuestro servidor, acceder a la base de datos de FreeRADIUS
sudo mysql
USE radius;
Y creamos el usuario con los siguientes sentencias de sql.
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user1', 'Cleartext-Password', ':=', '123456');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user1', 'Framed-Protocol', ':=', 'PPP');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user1', 'Simultaneous-Use', ':=', '1');
INSERT INTO radreply
(username, `attribute`, op, value)
VALUES('user1', 'Framed-IP-Address', '=', '192.168.90.2');
Los registros que estás viendo en las tablas radcheck y radreply son parte de la configuración completa de un usuario para autenticación PPP en FreeRadius. Cada tabla almacena diferentes tipos de atributos relacionados con la autenticación y la autorización del usuario. A continuación, se explico el propósito de cada atributo y por qué se crearon varios registros para el mismo usuario:
En la tabla radcheck:
- Cleartext-Password: Este registro establece la contraseña en texto claro para el usuario. Cuando el usuario intenta autenticarse, el servidor FreeRadius verificará la contraseña ingresada con la almacenada en este registro. Es importante tener en cuenta que almacenar contraseñas en texto claro no es una práctica segura. En entornos de producción, se recomienda usar métodos de almacenamiento seguro, como hash y salting.
- Framed-Protocol: Este registro establece el protocolo que se utilizará durante la sesión. En este caso, el valor 'PPP' indica que el protocolo será PPP, que es comúnmente utilizado para conexiones PPPoE y autenticación de acceso remoto.
- Simultaneous-Use: Este registro controla la cantidad de sesiones simultáneas que el usuario puede tener activas. Establecerlo en 1 significa que solo se permitirá una única sesión activa al mismo tiempo para el usuario.
En la tabla radreply:
- Framed-IP-Address: Este registro especifica la dirección IP que se asignará al usuario durante la sesión. En este caso, la dirección IP '192.168.90.2' se asignará al usuario 'user1'.
Ahora, respecto a por qué se crearon varios registros para el mismo usuario, esto se debe a que cada registro representa un atributo específico que se utiliza para configurar diferentes aspectos de la autenticación y la autorización. FreeRadius utiliza tablas separadas para almacenar atributos que tienen diferentes propósitos. Por ejemplo, radcheck almacena atributos relacionados con la autenticación, mientras que radreply almacena atributos de autorización que se enviarán al cliente durante la sesión.
En resumen, la creación de múltiples registros con diferentes atributos en las tablas radcheck y radreply es una práctica común para configurar de manera completa y detallada la autenticación y la autorización de usuarios en un servidor FreeRadius. Cada atributo cumple una función específica en el proceso de autenticación y acceso a la red.
Comprobamos conexión en una PC Windows
Archivo adjunto 4203
Archivo adjunto 4204
Verificamos la conexión del usuario en nuestro Router.
Archivo adjunto 4205
8 Creación de usuarios con IP Dinámica
Para este ejemplo se creara un usuario para autenticación y autorización PPPoE con los siguientes datos:
- User: user2
- Password: 123456
- IP: Dinámica (Por medio de un Pool)
Accedemos a la base de datos de nuestro servidor freeRadius, y ejecutamos las siguientes sentencias sql.
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user2', 'Cleartext-Password', ':=', '123456');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user2', 'Framed-Protocol', ':=', 'PPP');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user2', 'Simultaneous-Use', ':=', '1');
INSERT INTO radreply
(username, `attribute`, op, value)
VALUES('user2', 'Framed-Pool', '=', 'dhcp_pool1');
Como se puede notar las sentencias son iguales a como se creo en el paso 2 al crear usuario con IP Estática, la única diferencia en estas consultas es tabla radreply
INSERT INTO radreply
(username, `attribute`, op, value)
VALUES('user2', 'Framed-Pool', '=', 'dhcp_pool1');
El atributo Framed-Pool en la tabla radreply es utilizado en FreeRadius para asignar un pool específico de direcciones IP a un usuario durante una sesión. Los pools de direcciones IP se utilizan comúnmente en entornos de acceso remoto, como conexiones PPP o PPPoE, para asignar direcciones IP dinámicas a los usuarios mientras se autentican en la red.
Cuando se utiliza el atributo Framed-Pool, el servidor FreeRadius selecciona una dirección IP disponible del pool especificado y la asigna al usuario durante la sesión. Esta dirección IP se utilizará para la conexión del usuario y se liberará una vez que la sesión finalice.
Nota
Es importante que el nombre del pool que se ingresa en la tabla redreply para el usuario, también exista en el Router y en el profile default que este ligado al server PPPoE.
En este ejemplo el nombre del pool es: dhcp_pool1
Archivo adjunto 4206
Cliente autenticado.
Archivo adjunto 4207
[NUMERO_PASO]9/NUMERO_PASO] Control ancho de banda.
Para este ejemplo se creará el siguiente cliente con los siguientes datos de configuración
- User: user3
- Password: 123456
- IP: 192.168.90.90
- Velocidad (ancho de banda): 5 Megas Download / 5 Megas Upload
Acceder a base de datos free radius y crear el usuario usando las siguientes sentencias
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user3', 'Cleartext-Password', ':=', '123456');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user3', 'Framed-Protocol', ':=', 'PPP');
INSERT INTO radcheck
(username, `attribute`, op, value)
VALUES('user3', 'Simultaneous-Use', ':=', '1');
INSERT INTO radreply
(username, `attribute`, op, value)
VALUES('user3', 'Framed-IP-Address', '=', '192.168.90.90');
Para el control ancho de banda utilizaremos el atributo "Mikrotik-Rate-Limit" en la tabla radreply de la base de datos de FreeRadius es utilizado para controlar el ancho de banda de un usuario al conectarse a través de un router MikroTik. La sintaxis general del valor del atributo es la siguiente:
Mikrotik-Rate-Limit = 'Upstream/DownstreamBurst-Limit/Burst-ThresholdBurst-Time/priority'
En la base de datos ingresamos la regla para limitar 5M/5M al usuario: user3
INSERT INTO radreply
(username, `attribute`, op, value)
VALUES('user3', 'Mikrotik-Rate-Limit', '=', '5M/5M 0/0 0/0 0/0 8 500K/500K');
Ahora, desglosemos el valor 5M/5M 0/0 0/0 0/0 8 500K/500K en la sentencia SQL:
Donde:
- 5M/5M: Esto establece la velocidad de subida (upstream) y bajada (downstream) del usuario en 5 Mbps para ambas direcciones.
- 0/0: Aquí, 0 se utiliza para indicar que no se establece ningún límite de ráfaga (burst) en las velocidades.
- 0/0: Esto también indica la falta de límites de ráfaga para umbrales.
- 0/0: Al igual que los dos casos anteriores, estos valores indican la falta de limitación de ráfaga.
- 8: Este número representa la prioridad. En este caso, se establece una prioridad de 8 para el usuario.
- 500K/500K: Finalmente, se establece una velocidad de subida (upstream) y bajada (downstream) de 500 Kbps para ambos.
Una vez el servidor halla autenticado y autorizado al usuario mandara al mikrotk los parametros de velocidad por medio de un queue dinamico.
Archivo adjunto 4208
Si nos conectamos y realizamos un speedtest podemos ver que se limita a lo que se asigno
Archivo adjunto 4209