Esta guía muestra cómo usar un despliegue Wi-Fi TP-Link Omada — puntos de acceso EAP gestionados por un Omada Software Controller — como NAS de portal cautivo de Powerlynx, utilizando el flujo RADIUS + External Web Portal.
El controlador Omada (no cada EAP individual) es el cliente RADIUS y el receptor de CoA/PoD (UDP 3799). Un cliente que se une al SSID del hotspot es redirigido a la página de bienvenida de Powerlynx. Tras iniciar sesión o realizar el pago, Powerlynx envía automáticamente el navegador del cliente de vuelta al endpoint /portal/radius/browserauth del controlador, y el controlador realiza el intercambio RADIUS (auth + accounting) con Powerlynx a través de un túnel WireGuard.

!Importante: Solo controlador on-premise — ¡Omada Cloud no funciona!
Ambas configuraciones descritas a continuación requieren un controlador Omada autohospedado / on-premise. En Omada Cloud no funciona — el controlador en la nube no puede recibir RADIUS PoD ni CoA (UDP 3799) de Powerlynx, por lo que la desconexión remota y la autorización dinámica son imposibles.
Hay dos formas de crear un hotspot TP-Link Omada con Powerlynx, según si usas un gateway TP-Link Omada (serie ER):
Configuración 1 — Host Ubuntu / Omada Software Controller como gateway + TP-Link EAP. Úsala cuando no tengas (o no quieras usar) un gateway TP-Link. El servidor Ubuntu con el Omada Software Controller asume el rol de “gateway”: termina el túnel WireGuard hacia Powerlynx a nivel de SO y actúa como cliente RADIUS y receptor de CoA/PoD. Solo necesitas ese servidor más un TP-Link EAP — sin router/gateway Omada. El acceso a Internet de los clientes lo proporciona el router/enlace ascendente existente del sitio. Esta guía documenta esta configuración.
Configuración 2 — Controlador Omada + gateway TP-Link Omada (serie ER) + TP-Link EAP. Úsala cuando sí uses un gateway TP-Link Omada; el gateway termina el túnel WireGuard hacia Powerlynx (el WireGuard integrado de Omada es una función exclusiva del gateway) y actúa como cliente RADIUS. La configuración del lado Powerlynx es la misma que en la Configuración 1.
Solo la Configuración 1 está documentada paso a paso a continuación (es la configuración validada de extremo a extremo). Si necesitas ayuda con la Configuración 2 (gateway TP-Link Omada), contacta al equipo de soporte de Powerlynx en support@powerlynx.app.
Requisitos
- Host Linux — Ubuntu 16.04 / 18.04 / 20.04 / 22.04 / 24.04 o Debian 8–12 (64 bits). Windows también es compatible.
- OpenJDK 17+ (64 bits) para la versión v5.15.20 del controlador y superiores (las versiones anteriores usan Java 8+).
- MongoDB hasta la versión 8 para v5.15.20+ (hasta v7 para 5.14.20+).
- Apache Commons Daemon (jsvc) — se recomienda v1.0.15 con OpenJDK 17.
- Omada Software Controller, línea v5 (esta guía usa 5.15.x; la versión actual en distribución es v6.2.x — elige 5.15.x en “Previous Version” en la página de descarga).
- Un TP-Link Omada EAP (p. ej. EAP225 v3+).
- IP estática para el host del controlador — la adopción del EAP y la configuración RADIUS la referencian por IP.
- Una Ubicación de Powerlynx y un hotspot ya creados.
Cómo configurar TP-Link Omada con Powerlynx: guía de integración paso a paso
Resumen rápido de la configuración
- Instalar el Omada Software Controller en el host Ubuntu
- Adoptar el EAP y crear la WLAN del hotspot (SSID)
- Configurar el túnel WireGuard entre el host del controlador y Powerlynx
- Configurar el hotspot de Powerlynx (tipo de NAS, NAS IP, secreto RADIUS)
- Configurar el Portal y el perfil RADIUS de Omada
- Establecer los atributos RADIUS recomendados en el tipo de NAS de Powerlynx
- Verificar: capturar tráfico RADIUS y probar una sesión completa
Pasos detallados
Paso 1. Instalar el Omada Software Controller
Instala el Omada Software Controller (línea v5) en el host Ubuntu. Los enlaces de descarga e instalación oficiales están en la sección de Referencias al final de esta guía.
# 1. OpenJDK 17 + jsvc sudo apt update sudo apt install -y openjdk-17-jre-headless jsvc curl gnupg # 2. MongoDB 8.0 curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \ sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] \ https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | \ sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list sudo apt update && sudo apt install -y mongodb-org # 3. Instala el .deb del controlador (descárgalo desde la página oficial — ver Referencias) sudo dpkg -i omada_v5.15.24.19_linux_x64_*.deb # Si dpkg da error por la versión de jsvc: # sudo dpkg --ignore-depends=jsvc -i omada_v5.15.24.19_linux_x64_*.deb # 4. Iniciar sudo tpeap start tpeap status
Abre la interfaz en https://<controller-ip>:8043 y ejecuta el asistente de configuración: crea la cuenta de administrador, crea un sitio y omite el acceso a Omada Cloud (esta es una configuración on-prem).
Nota: El primer arranque puede tardar varios minutos. Los puertos web (8043/8088) solo se abren al final del arranque — consulta logs/server.log hasta que los puertos estén abiertos.

Verifica la instalación:
java -version # OpenJDK 17 sudo tpeap status # "Omada Controller is running" sudo ss -tlnp | grep -E '8043|8088' # puertos web escuchando = arranque finalizado
Si el host tiene firewall, abre estos puertos (controlador v5.x):
| Puerto | Función |
|---|---|
| TCP 8043 / 8088 | Gestión HTTPS / HTTP + portal cautivo |
| TCP 8843 | Portal cautivo HTTPS |
| UDP 29810 | Descubrimiento del EAP |
| TCP 29811–29814 | Adopción / gestión / firmware del dispositivo |
| TCP 29815–29816 | Datos del dispositivo / CLI remoto (v5.9+) |
| UDP 1812 / 1813 (salida) | Auth / accounting RADIUS → Powerlynx |
| UDP 3799 (entrada) | CoA / PoD (desconexión) ← Powerlynx |
Paso 2. Adoptar el EAP y crear la WLAN (SSID)
Enciende el EAP en la misma red L2 que el controlador; aparecerá en Devices. Adóptalo y espera a que el estado sea CONNECTED. Crea una WLAN / SSID para el hotspot (Settings → Wireless Networks → WLAN) y asígnale un nombre — esta guía usa Power-TPLink. Para un laboratorio, tanto Open como WPA-Personal funcionan; los hotspots de producción normalmente usan un SSID abierto para que el portal cautivo pueda interceptar a los clientes no autenticados. El Portal (Paso 5) se aplica luego a esta WLAN.


El nombre del SSID debe coincidir en ambos lados. Powerlynx determina a qué Ubicación y Página de bienvenida pertenece una sesión por el nombre del SSID (no por el realm/dominio RADIUS). El nombre de la WLAN definido en el EAP Omada (aquí Power-TPLink) debe introducirse exactamente como el SSID en el lado de Powerlynx — en la Ubicación y en su Página de bienvenida. Si los nombres difieren, la sesión no se asignará a la página de bienvenida / ubicación correcta.


Paso 3. Configurar el túnel WireGuard (host del controlador ↔ Powerlynx)
Instala WireGuard en el host Ubuntu:
sudo apt update && sudo apt install -y wireguard
-
En Powerlynx, crea el hotspot: Location → Hotspots → Add. En el primer paso del asistente (Initial settings), introduce un título, elige NAS type =
TP-Link (cloud)y haz clic en Next.

En el paso de Configuration, establece Connection type = WireGuard, haz clic en Generate Wireguard keys, introduce el secreto RADIUS y finaliza el asistente. Copia la clave privada del cliente ahora — solo se muestra en el momento de la generación.

La clave privada del cliente se muestra solo una vez. “Regenerate keys” es destructivo — genera un nuevo par y elimina el peer existente, por lo que el host tendría que reconfigurarse con la nueva clave.
2. Toma el endpoint del servidor y la clave pública del servidor desde la página de configuración VPN del hotspot en Powerlynx (la vista “Configure VPN”). Crea /etc/wireguard/wg0.conf en el host Ubuntu:
[Interface] PrivateKey = <client-private-key-from-generate> Address = <controller-tunnel-ip>/32 [Peer] PublicKey = lPYDyIwk5X4tyUMNT9ny/nyPSyHwk31mzm2ahOH7iV0= Endpoint = 139.84.243.134:443 AllowedIPs = 172.16.0.1/32 PersistentKeepalive = 15
Actívalo, habilítalo al arranque y verifica:
sudo wg-quick up wg0 # iniciar el túnel ahora sudo systemctl enable wg-quick@wg0 # iniciar automáticamente al arrancar systemctl status wg-quick@wg0.service # debe estar "active (exited)" sudo wg show # peer, último handshake, contadores de transferencia ping -c4 172.16.0.1 # confirmar conectividad a través del túnel
Un ping exitoso a la dirección del túnel de Powerlynx confirma que el túnel está activo:

Paso 4. Configurar el hotspot de Powerlynx
En el hotspot de Powerlynx (Location → hotspot), establece los siguientes campos:
| Campo | Valor |
|---|---|
| NAS type | TP-Link (cloud) |
| Connection type | WireGuard |
| NAS IP | <controller-tunnel-ip> (la dirección WireGuard del controlador) |
| RADIUS secret | <tu-secreto-radius> |

Paso 5. Configurar el Portal y el perfil RADIUS de Omada
Esta es la configuración crítica. En el controlador: Settings → Authentication → Portal y Settings → Profiles → RADIUS Profile.
| Configuración | Valor | Nota |
|---|---|---|
| Authentication Type | RADIUS Server | No elijas “External Portal Server” — ese es el flujo obsoleto de API del controlador que Powerlynx no usa. |
| External Web Portal URL | https://yourpowerlynxdomain.app/redirect-flow |
Reemplaza yourpowerlynxdomain.app con tu propio dominio de Powerlynx. |
| Disconnect Requests | Enabled | Activa el listener PoD. |
| Receiver Port | 3799 | |
| Authentication Mode | PAP | CHAP como alternativa. |

Perfil RADIUS
| Configuración | Valor | Nota |
|---|---|---|
| Authentication Server | 172.16.0.1:1812 |
Por IP, no por hostname — un hostname rompe el accounting silenciosamente. |
| Accounting Server | 172.16.0.1:1813 |
Igual — por IP. |
| Auth / Accounting / CoA password | <tu-secreto-radius> |
Exactamente el secreto RADIUS del hotspot, en los tres campos. |
| Accounting | Enabled | |
| Interim Update Interval | 300 s (producción) / 60 s (laboratorio) | Debe mantenerse por debajo de accounting_interval × factor de Powerlynx — ver Paso 6. |

Pre-Authentication Access (Walled Garden)
En la pestaña Access Control del Portal, activa Pre-Authentication Access y añade tu dominio de Powerlynx a la lista, para que un cliente no autenticado pueda acceder a la página de bienvenida de Powerlynx antes de iniciar ses

Paso 6. Establecer los atributos RADIUS recomendados
Establece estos valores en las plantillas de atributos del tipo de NAS de Powerlynx (Config → System → NAS Types). Estos valores son los que hacen que la limitación de velocidad, el tiempo de sesión, la dirección del accounting y la desconexión funcionen correctamente con Omada.
| Grupo | Atributo | Valor recomendado | Por qué |
|---|---|---|---|
| Rate limit | WISPr-Bandwidth-Max-Up | {{ mul .tx_rate_limit 1024 }} |
Límite de subida (kbps → bps). |
| Rate limit | WISPr-Bandwidth-Max-Down | {{ mul .rx_rate_limit 1024 }} |
Límite de bajada (kbps → bps). |
| Access-Accept | Session-Timeout | {{ .time_left }} |
Tiempo restante por cupón. |
| PoD | User-Name | {{ .mac }} |
Identifica al cliente a desconectar. |
| PoD | Calling-Station-Id | {{ .mac | upper | replace ":" "-" }} |
Crítico — debe coincidir con el formato MAC de Omada. Ver más abajo. |
| Accounting | Invert accounting | ON | Ver más abajo. |

El formato de Calling-Station-Id es lo que hace que PoD funcione. Omada identifica las desconexiones por una MAC en MAYÚSCULAS con GUIONES (p. ej. AA-BB-CC-DD-EE-FF). El {{ .mac }} normal de Powerlynx genera minúsculas con dos puntos, que Omada no reconoce — la desconexión se ignora silenciosamente sin ACK. Usa {{ .mac | upper | replace ":" "-" }} para que el valor coincida con el formato propio de Omada.
Invert accounting (ON): Omada sigue el estándar RFC — Acct-Input = subida, Acct-Output = bajada. Con Invert accounting activado, Powerlynx asigna estos valores a la dirección correcta de bajada/subida en su interfaz.
Intervalo de Interim Update: Powerlynx cierra forzosamente una sesión si no llega ninguna actualización de accounting dentro del plazo accounting_interval × factor (los campos del tipo de NAS de Powerlynx). La condición es: Omada Interim Update interval < accounting_interval × factor de Powerlynx. Producción (recomendado): establece Accounting interval = 300 y factor = 2 en el tipo de NAS de Powerlynx (ventana de cierre de 600 s), y Omada Interim Update Interval = 300 s.
Paso 7. Verificar
En el host del controlador, captura el tráfico RADIUS en la interfaz del túnel:
sudo radsniff -i wg0 -p 1812 -x # captura 1812/1813/3799 # o, solo para desconexión: sudo tcpdump -ni wg0 -vv 'udp port 3799'
| Fase | Resultado esperado |
|---|---|
| Auth | Access-Request → Access-Accept. User-Name = MAC (sin separador, mayúsculas); Calling-Station-Id = MAC mayúsculas-guiones; NAS-IP-Address = <controller-tunnel-ip>. |
| Accounting | Start → Interim (en el intervalo configurado) → Stop; dirección de bajada/subida correcta con Invert ON. |
| PoD / desconexión | Activa la desconexión desde Powerlynx al inicio de la sesión. Éxito = Disconnect-Request (Calling-Station-Id en mayúsculas-guiones) → Disconnect-ACK → cliente desconectado con causa Acct-Stop que no es Session-Timeout. |
El paquete Disconnect-ACK es la señal definitiva de éxito del PoD. Si ves un Disconnect-Request pero no hay ACK, revisa el formato del Calling-Station-Id (Paso 6).
Tras una sesión exitosa, comprueba los dispositivos autorizados / en línea en dos lugares:
- Powerlynx — la página de Sessions de nivel superior (y la vista de sesiones de la Ubicación) lista las sesiones activas/en línea: MAC del cliente, plan/cupón, datos usados, inicio y vencimiento.
- Controlador Omada — Clients muestra el dispositivo como AUTHORIZED (tipo de auth
Radius – …); Hotspot Management → Authorized Clients muestra bajada/subida por cliente, hora de inicio y vencimiento, y estado.

Limitaciones y puntos a tener en cuenta
CoA-Request NO es compatible con Omada — devuelve CoA-NAK (Error-Cause "Unsupported-Attribute"). Solo funciona Disconnect/PoD. Cualquier funcionalidad que dependa de un CoA a mitad de sesión no tendrá efecto en Omada; requiere desconexión y reautenticación.
Las sesiones de prueba no son utilizables actualmente con el tipo de NAS TP-Link Omada. Con las sesiones de prueba activadas, el flujo de prueba no funciona en Omada — el cliente se autoriza y luego se desconecta inmediatamente (Session-Timeout = 0). Deja las sesiones de prueba deshabilitadas en las ubicaciones servidas por un hotspot TP-Link Omada, y usa cupones en su lugar.
El WireGuard integrado de Omada es exclusivo del gateway — no funciona en un Software Controller. Termina WireGuard a nivel de SO en el host del controlador (wg-quick).
Los servidores RADIUS deben configurarse por IP, no por hostname — un hostname rompe el accounting silenciosamente.
Omada Cloud no tiene un endpoint funcional de CoA/PoD — se requiere un controlador autohospedado para que la desconexión funcione.
Referencias
- Omada Software Controller — descarga, todas las versiones
- Instalar el Software Controller en Linux (FAQ 3272)
- Puertos usados por el controlador Omada (FAQ 3281)
- RADIUS + External Web Portal API (FAQ 2912)
- Omada Software Controller — descripción del producto
- Controlador Omada SDN — guía de usuario
- TP-Link EAP225 (v3) — punto de acceso
- RFC 2869 — Extensiones RADIUS (Acct-Interim-Interval)
- Documentación Powerlynx — TP-Link Omada
Con el Omada Software Controller, el túnel WireGuard y el perfil RADIUS configurados en Powerlynx, tu despliegue de EAP TP-Link Omada está completamente integrado: los usuarios son redirigidos al portal de bienvenida, autenticados mediante RADIUS y gestionados a través del control de sesiones CoA/PoD. Para la documentación completa de la plataforma Powerlynx, visita docs.powerlynx.app.