Saltar al contenido principal

Integración de firmware personalizado OpenWrt con Purple WiFi

Esta guía proporciona el manual de integración completo para desplegar firmware personalizado OpenWrt con Purple WiFi. Cubre la configuración del Captive Portal de CoovaChilli, la gestión del walled garden de iptables, la seguridad de la WiFi para el personal mediante 802.1X con hostapd y la segmentación PPSK multiinquilino con asignación dinámica de VLAN, lo que ofrece a los equipos de TI los pasos de configuración exactos necesarios para crear una red basada en la identidad en cualquier hardware compatible con OpenWrt.

📖 9 min de lectura📝 2,146 palabras🔧 2 ejemplos prácticos4 preguntas de práctica📚 10 definiciones clave

Escuchar esta guía

Ver transcripción del podcast
[0:00 - 1:00] Introduction & Context Welcome to the Purple Technical Briefing. I'm your host, and in the next ten minutes, we are going to dissect the OpenWrt custom firmware integration with Purple WiFi. If you are an IT manager, a network architect, or a CTO deploying custom firmware across hospitality, retail, or public-sector environments, this briefing is for you. We will cut through the academic theory and give you the exact playbook for configuring CoovaChilli, securing staff networks with 802.1X, and segmenting multi-tenant environments using Private Pre-Shared Keys. Why does this matter? Because deploying custom firmware like OpenWrt gives you incredible flexibility and hardware independence. But without a structured, identity-driven access control layer, that flexibility becomes a security liability. You need to capture first-party data securely, enforce GDPR compliance, and segment your traffic reliably. Let us get into the technical deep-dive. [1:00 - 6:00] Technical Deep-Dive The core of the OpenWrt integration relies on CoovaChilli. CoovaChilli is the open-source access controller that intercepts unauthenticated client traffic and redirects it to the Purple captive portal. When a guest connects to your open SSID, CoovaChilli acts as the gatekeeper. It assigns an IP address via its own internal DHCP server, running on the tun0 interface, and blocks all traffic except for what you explicitly allow in the walled garden. When the guest attempts to browse, CoovaChilli intercepts the HTTP request and issues a redirect to the Purple splash page. This is where the walled garden configuration is critical. In your chilli.conf file, you must define the HS_UAMDOMAINS parameter. This is a comma-separated list of domains that guests can reach before they authenticate. You must include splash.purple.ai, api.purple.ai, and the various CDN domains we use to serve the portal assets. If you miss a domain, the portal will fail to load, or the social login buttons will break. It is that simple. Once the guest authenticates on the Purple portal, Purple's cloud RADIUS server sends an Access-Accept message back to CoovaChilli on UDP port 1812. CoovaChilli then authorises the MAC address, opens the firewall rules for that session, and begins sending accounting data on UDP port 1813. Accounting is not optional. It is how Purple tracks session duration and data usage for your analytics dashboard. Now, let us talk about staff WiFi. You do not use CoovaChilli for staff. For staff networks, you use hostapd with WPA2-Enterprise or WPA3-Enterprise. This is standard 802.1X authentication. The access point acts as the authenticator, forwarding EAP messages to your RADIUS server. For corporate devices, you should be deploying EAP-TLS, which uses digital certificates instead of passwords. This completely eliminates credential theft. You configure hostapd.conf to point to your RADIUS server, and the RADIUS server dictates the VLAN assignment for that specific user. This brings us to one of the most powerful features in modern OpenWrt deployments: Private Pre-Shared Keys, or PPSK. In a multi-tenant environment - say, a build-to-rent property or a coworking space - you do not want fifty different SSIDs broadcasting. It ruins your airtime efficiency. Instead, you broadcast one SSID. When a device connects, hostapd sends the MAC address to the RADIUS server. The RADIUS server responds with a specific passphrase and a specific VLAN ID for that device, using the Tunnel-Password attribute. This means the retail staff member in shop A gets dropped onto VLAN 10, while the event attendee in the main hall gets dropped onto VLAN 30, all connecting to the exact same SSID. It is elegant, it scales, and it enforces least-privilege access at the edge. [6:00 - 8:00] Implementation Recommendations & Pitfalls Let us discuss implementation. When deploying OpenWrt with Purple, your first step is always retrieving your RADIUS credentials from the Purple portal. You need the primary and secondary RADIUS IP addresses, the shared secret, and the portal URL. In your OpenWrt configuration, you will define your guest network interface - typically eth1 or wlan0 - and bind CoovaChilli to it. Ensure that the HS_RADSECRET in your chilli.conf matches exactly what is in the Purple portal. A single character mismatch will cause silent authentication failures. The biggest pitfall we see is DNS resolution pre-authentication. CoovaChilli intercepts DNS requests. If your upstream firewall blocks the OpenWrt router from resolving external DNS, the captive portal redirect will fail. Ensure your OpenWrt router has unfettered DNS access to public resolvers like Google or OpenDNS. Another common issue is the captive portal detection mechanisms built into iOS and Android. Apple devices reach out to captive.apple.com to check for internet connectivity. If you whitelist captive.apple.com in your walled garden, the device thinks it has internet access and will not pop up the captive network assistant. If you want the automatic pop-up, keep Apple's domains out of the walled garden. [8:00 - 9:00] Rapid-Fire Q&A Let us do a rapid-fire Q and A. Question one: Can I run CoovaChilli and hostapd 802.1X on the same OpenWrt access point? Yes. You bind CoovaChilli to your guest SSID interface, and you configure hostapd with 802.1X on your staff SSID interface. They operate independently. Question two: Does Purple support dynamic VLAN assignment with OpenWrt? Yes. Purple's RADIUS servers can return standard RADIUS attributes, including Tunnel-Type, Tunnel-Medium-Type, and Tunnel-Private-Group-ID, instructing OpenWrt to drop the authenticated user onto a specific VLAN. Question three: What happens if the OpenWrt router loses connection to the Purple RADIUS server? CoovaChilli will fail to authenticate new sessions. Existing authorised sessions will remain active until their session timeout expires. Always configure the secondary Purple RADIUS server to ensure high availability. [9:00 - 10:00] Summary & Next Steps To summarise: OpenWrt provides a robust, hardware-agnostic platform for enterprise WiFi. By integrating CoovaChilli for guest access and hostapd for secure staff and multi-tenant PPSK, you build an Identity-Based Network. Purple abstracts the complexity of the RADIUS infrastructure, providing a cloud-managed portal that captures first-party data and ensures compliance. Your next step is to audit your current custom firmware deployments. Ensure your walled gardens are fully populated, verify your RADIUS accounting intervals, and begin planning your migration from shared PSKs to dynamic PPSK segmentation. Thank you for listening to the Purple Technical Briefing. To learn more about how Purple can secure and monetise your guest WiFi, visit purple.ai. Until next time.

header_image.png

Resumen ejecutivo

OpenWrt es el firmware de elección para los equipos de TI que necesitan independencia de hardware sin sacrificar el control de nivel empresarial. Desplegado en establecimientos de hostelería, comercio minorista y del sector público, proporciona una pila de red basada en Linux totalmente configurable. Sin embargo, de forma predeterminada, OpenWrt es un lienzo en blanco. Sin una capa de identidad estructurada, las redes de invitados se vuelven ingobernables, las redes del personal siguen siendo inseguras y los entornos multiinquilino colapsan en una única red plana.

Esta guía proporciona el manual de integración definitivo para conectar OpenWrt a la plataforma de RADIUS en la nube y Captive Portal de Purple. Cubrimos cuatro escenarios de despliegue distintos: redirección al Captive Portal de invitados mediante CoovaChilli, configuración del walled garden de iptables, WiFi segura para el personal mediante hostapd con IEEE 802.1X y segmentación multiinquilino mediante claves precompartidas privadas (PPSK) con asignación dinámica de VLAN. Al finalizar, dispondrá de los parámetros de configuración exactos, los modos de fallo comunes y los marcos de decisión necesarios para desplegar una red basada en la identidad, lista para producción y que cumpla con el GDPR, en cualquier hardware compatible con OpenWrt.

Purple opera en más de 80 000 establecimientos activos y ha procesado 440 millones de inicios de sesión en 2024 (datos internos de Purple, 2024). La arquitectura descrita aquí es la misma que se despliega a gran escala en cadenas hoteleras, redes de tiendas minoristas y centros de transporte.

Análisis técnico detallado

La arquitectura del Captive Portal de CoovaChilli

Al desplegar WiFi de invitados en OpenWrt, CoovaChilli es el controlador de acceso estándar del sector. Funciona como un demonio de Captive Portal que intercepta el tráfico de clientes no autenticados, asigna direcciones IP a través de su servidor DHCP interno en la interfaz virtual tun0 y aplica políticas de walled garden mediante reglas de iptables que gestiona directamente.

El flujo de autenticación funciona de la siguiente manera. Un dispositivo de invitado se asocia con el SSID abierto. CoovaChilli asigna al dispositivo una dirección IP de su grupo interno (normalmente 10.1.0.0/24). Cuando el dispositivo envía su primera solicitud HTTP, CoovaChilli la intercepta y emite una redirección HTTP 302 a la URL de la página de bienvenida de Purple. Durante esta fase de preautenticación, el dispositivo está aislado: solo puede acceder a los dominios incluidos explícitamente en la lista de permitidos del walled garden.

Una vez que el invitado se autentica en el portal de Purple, el servidor RADIUS en la nube de Purple envía un mensaje Access-Accept a CoovaChilli en el puerto UDP 1812. A continuación, CoovaChilli actualiza sus reglas de iptables para permitir el acceso a internet a esa dirección MAC específica y comienza a transmitir datos de contabilidad (duración de la sesión, bytes transferidos) al servidor de contabilidad RADIUS de Purple en el puerto UDP 1813. La contabilidad no es opcional: es el mecanismo mediante el cual Purple rellena su panel de WiFi Analytics con datos de sesión.

architecture_overview.png

Walled garden: iptables y listas de dominios permitidos

El walled garden es el elemento de configuración más crítico desde el punto de vista operativo en cualquier despliegue de Captive Portal. CoovaChilli gestiona el walled garden a través de dos mecanismos: el parámetro uamallowed para direcciones IP individuales y el parámetro uamdomains para la inclusión en listas de permitidos basadas en dominios con inspección de DNS.

Para una integración con Purple, las entradas mínimas requeridas en el walled garden son:

Dominio Propósito
*.purple.ai Recursos del portal, API y puntos de conexión de autenticación
*.googleapis.com Google Fonts e inicio de sesión de Google
*.gstatic.com Comprobación de conectividad de Google y recursos estáticos
*.facebook.com API de inicio de sesión de Facebook
*.fbcdn.net CDN de Facebook para recursos de inicio de sesión
captive.apple.com Detección de CNA de Apple (ver nota a continuación)
connectivitycheck.gstatic.com Detección de Captive Portal de Android

Nota sobre la gestión de CNA de Apple: Si incluye captive.apple.com en the walled garden, los dispositivos iOS detectarán la conectividad a internet antes de la autenticación y suprimirán la ventana emergente del Captive Network Assistant. La mayoría de los despliegues en hostelería excluyen deliberadamente este dominio para forzar la aparición automática del portal. La elección correcta dependerá del diseño de la experiencia del invitado que desee ofrecer.

WiFi segura para el personal: hostapd e IEEE 802.1X

Las redes de invitados exigen una incorporación sin fricciones. Las redes del personal exigen una seguridad absoluta. Para los usuarios internos, OpenWrt utiliza hostapd para facilitar la autenticación IEEE 802.1X. En esta arquitectura, el punto de acceso OpenWrt actúa como autenticador, reenviando mensajes del protocolo de autenticación extensible (EAP) entre el dispositivo cliente (suplicante) y el servidor RADIUS de Purple.

Para los dispositivos corporativos, EAP-TLS es el estándar obligatorio. Se basa en la autenticación mutua mediante certificados (tanto el servidor como el dispositivo cliente presentan certificados digitales), lo que elimina por completo las contraseñas y los riesgos asociados de robo de credenciales o phishing. Para entornos que aún no están listos para una infraestructura de clave pública (PKI) completa, PEAP-MSCHAPv2 proporciona una opción provisional razonable, utilizando un túnel cifrado para proteger las credenciales de nombre de usuario y contraseña.

Cuando un miembro del personal se autentica correctamente, el servidor RADIUS devuelve atributos de autorización. El atributo clave para la segmentación de la red es Tunnel-Private-Group-ID, que indica a OpenWrt que asigne dinámicamente al usuario a la VLAN correcta. Este es el mecanismo detrás de las redes basadas en la identidad: la identidad del usuario, y no su ubicación física, determina su acceso a la red.

Segmentación multiinquilino: OpenWrt PPSK configuración

En entornos multiinquilino (espacios de coworking, propiedades de alquiler institucional [BTR], centros comerciales con múltiples vendedores o estadios con zonas de patrocinadores independientes), emitir múltiples SSIDs resulta costoso a nivel operativo y poco eficiente en términos de RF. Cada SSID adicional añade una sobrecarga de tramas de gestión, lo que reduce el tiempo de transmisión disponible para el tráfico de datos.

Las claves precompartidas privadas (PPSK), a veces llamadas PSK dinámicas, resuelven este problema. Se emite un único SSID. Cuando un dispositivo intenta conectarse, hostapd envía la dirección MAC del dispositivo al servidor RADIUS a través de un Access-Request estándar. El servidor RADIUS valida la dirección MAC en su base de datos y devuelve un Access-Accept que contiene dos atributos críticos: el atributo Tunnel-Password (la contraseña única para ese dispositivo) y el atributo Tunnel-Private-Group-ID (la asignación de VLAN). El dispositivo se conecta utilizando su contraseña única y se ubica directamente en su VLAN asignada.

Esto significa que el gerente de una tienda y el asistente a un evento pueden conectarse al mismo SSID pero ser redirigidos a redes completamente separadas y aisladas en función de su identidad única.

ppsk_multitenant_diagram.png

Guía de implementación

Paso 1: Recuperar las credenciales de RADIUS de Purple

Antes de modificar la configuración de OpenWrt, recupere los siguientes datos de la consola de administración del portal de Purple:

  • Dirección IP del servidor RADIUS primario
  • Dirección IP del servidor RADIUS secundario (para redundancia)
  • Secreto compartido de RADIUS
  • URL de la página de bienvenida (Splash Page) del Captive Portal
  • URL de redirección posterior a la autenticación

Paso 2: Instalar y configurar CoovaChilli para WiFi de invitados

Instale el paquete coova-chilli a través de opkg:

opkg update && opkg install coova-chilli

El archivo de configuración principal es /etc/chilli/defaults. Defina los parámetros de red principales:

# Interfaces de red
HS_WANIF=eth0           # Interfaz de internet ascendente
HS_LANIF=wlan0          # La interfaz WiFi de invitados (o una subinterfaz VLAN)

# Subred de invitados
HS_NETWORK=10.10.20.0
HS_NETMASK=255.255.255.0
HS_UAMLISTEN=10.10.20.1 # IP de CoovaChilli en la red de invitados
HS_UAMPORT=3990

# Integración con RADIUS de Purple
HS_RADIUS=
HS_RADIUS2=
HS_RADSECRET=
HS_NASID=venue-openwrt-01

# Página de bienvenida de Purple
HS_UAMSERVER=

# Walled garden: lista de permitidos basada en dominios
HS_UAMDOMAINS=".purple.ai,.googleapis.com,.gstatic.com,.facebook.com,.fbcdn.net"

Habilite e inicie el servicio:

/etc/init.d/chilli enable
/etc/init.d/chilli start

Paso 3: Configurar la interfaz inalámbrica de OpenWrt para el SSID de invitados

En /etc/config/wireless, defina el SSID de invitados como una red abierta vinculada a la interfaz que gestionará CoovaChilli:

config wifi-iface 'guest_wifi'
    option device 'radio0'
    option network 'guest'
    option mode 'ap'
    option ssid 'Venue_Guest'
    option encryption 'none'
    option isolate '1'

El aislamiento de clientes (isolate '1') evita que los dispositivos de los invitados se comuniquen entre sí, un control de seguridad obligatorio para cualquier red compartida.

Paso 4: Configurar hostapd para WiFi de personal 802.1X

Para el SSID del personal, configure WPA2-Enterprise en /etc/config/wireless:

config wifi-iface 'staff_wifi'
    option device 'radio0'
    option network 'staff_vlan10'
    option mode 'ap'
    option ssid 'Venue_Staff'
    option encryption 'wpa2'
    option server ''
    option port '1812'
    option key ''
    option dynamic_vlan '2'
    option vlan_tagged_interface 'eth0'
    option vlan_bridge 'br-vlan'
    option vlan_naming '0'

Establecer dynamic_vlan '2' indica a hostapd que aplique la asignación de VLAN devuelta por el servidor RADIUS y que rechace la autenticación si no se devuelve ninguna VLAN.

Requisito del paquete: El paquete estándar wpad-mini no es compatible con WPA2-Enterprise. Debe instalar wpad o wpad-openssl:

opkg remove wpad-mini && opkg install wpad-openssl

Paso 5: Configurar PPSK para la segmentación multiinquilino

PPSK requiere que hostapd realice la autenticación de la dirección MAC contra el servidor RADIUS, el cual devuelve la contraseña por dispositivo. En /etc/config/wireless:

config wifi-iface 'ppsk_ssid'
    option device 'radio0'
    option mode 'ap'
    option ssid 'Venue_Connect'
    option encryption 'psk2'
    option key 'default_fallback_key'
    option macfilter 'radius'
    option server ''
    option port '1812'
    option key ''
    option dynamic_vlan '2'
    option vlan_tagged_interface 'eth0'
    option wpa_psk_radius '2'

El parámetro wpa_psk_radius '2' indica a hostapd que requiera el atributo Tunnel-Password de la respuesta RADIUS. Si el servidor RADIUS no devuelve una contraseña, se rechaza la autenticación.

En el lado de RADIUS de Purple, la sección authorize de su configuración de FreeRADIUS (o equivalente) asocia las direcciones MAC con contraseñas e IDs de VLAN:

# Entrada de autorización RADIUS de ejemplo para PPSK
AA:BB:CC:DD:EE:FF   Auth-Type := Accept
    Tunnel-Password = "GuestPass2024",
    Tunnel-Type = VLAN,
    Tunnel-Medium-Type = IEEE-802,
    Tunnel-Private-Group-ID = "20"

Paso 6: Configurar la asignación dinámica de VLAN

Para que funcione la asignación dinámica de VLAN, el switch de OpenWrt debe estar configurado para transportar las VLAN correspondientes como tráfico etiquetado (tagged) en el puerto troncal (trunk) que se conecta a su switch principal. En /etc/config/network:

config interface 'vlan10'
    option ifname 'eth0.10'
    option proto 'dhcp'

config interface 'vlan20'
    option ifname 'eth0.20'
    option proto 'dhcp'

config interface 'vlan30'
    option ifname 'eth0.30'
    option proto 'dhcp'

Asegúrese de que el puerto de su switch principal esté configurado como troncal, permitiendo el paso de las VLAN 10, 20 y 30 etiquetadas.

Buenas prácticas

Segregación absoluta de la red. Nunca puentee ginterfaces de invitados con redes internas. El tráfico de invitados debe aislarse en una VLAN dedicada y enrutarse directamente al firewall de internet. Este es un requisito no negociable para el cumplimiento de PCI DSS 4.0, que exige que las redes WiFi de invitados estén completamente aisladas de cualquier segmento de red que maneje datos de titulares de tarjetas.

Precisión del walled garden. Un walled garden incompleto es la causa principal de los fallos del Captive Portal. Utilice las herramientas de desarrollo de su navegador en un dispositivo de prueba conectado al SSID de invitados para identificar qué solicitudes se bloquean antes de la autenticación. Cada dominio bloqueado es un fallo potencial del portal.

Intervalos de contabilidad RADIUS. Configure el intervalo intermedio de contabilidad de CoovaChilli en 120 segundos. Esto proporciona datos de sesión casi en tiempo real en el panel de análisis de Purple sin generar un tráfico RADIUS excesivo.

Servidor RADIUS secundario. Configure siempre HS_RADIUS2 en su configuración de CoovaChilli. Si el servidor RADIUS principal de Purple no está accesible, CoovaChilli no podrá autenticar nuevas sesiones. El servidor secundario proporciona una conmutación por error automática sin necesidad de cambiar la configuración en el punto de acceso.

Selección de paquetes. El paquete wpad-mini incluido en muchas compilaciones de OpenWrt no es compatible con WPA2-Enterprise ni con la asignación dinámica de VLAN. Instale siempre wpad-openssl para cualquier implementación que requiera 802.1X o PPSK.

Para obtener más orientación sobre la arquitectura de seguridad WiFi empresarial, consulte nuestra Seguridad WiFi empresarial: una guía completa para 2026 .

Resolución de problemas y mitigación de riesgos

Síntoma Causa probable Resolución
El portal no se carga después de la redirección Walled garden incompleto Añada los dominios CDN/API que falten a HS_UAMDOMAINS
La autenticación falla silenciosamente Discrepancia en el secreto compartido de RADIUS Verifique que HS_RADSECRET coincida exactamente tanto en CoovaChilli como en el portal de Purple
No hay datos en los análisis de Purple Contabilidad RADIUS bloqueada Verifique que se permita el puerto UDP 1813 de salida; compruebe la configuración de contabilidad de HS_RADIUS2
iOS no muestra la ventana emergente del portal captive.apple.com en el walled garden Elimine los dominios de detección de Apple de HS_UAMDOMAINS
Los clientes PPSK aterrizan en la VLAN incorrecta vlan_tagged_interface mal configurado Verifique la configuración del puerto troncal tanto en OpenWrt como en el switch principal
La autenticación 802.1X falla con error de wpad wpad-mini instalado Elimine wpad-mini e instale wpad-openssl
La VLAN dinámica falla en ath10k Problema conocido del controlador en compilaciones anteriores Actualice a OpenWrt 21.02 o posterior; use firmware ath10k que no sea CT

Nota sobre el cumplimiento de GDPR: CoovaChilli en sí no captura ni almacena datos personales. Todos los mecanismos de captura de consentimiento, procesamiento de datos y cumplimiento de GDPR son gestionados por la plataforma Purple en la capa del portal. Asegúrese de que su portal de Purple esté configurado con los términos y condiciones de su establecimiento y el aviso de procesamiento de datos antes de la puesta en marcha.

Para conocer patrones de integración de hardware relacionados, consulte nuestras guías sobre Integración de puntos de acceso EnGenius Cloud con Purple WiFi e Integración de routers y puntos de acceso DrayTek Vigor con Purple WiFi .

ROI e impacto empresarial

La transición de redes PSK básicas a una arquitectura OpenWrt gestionada por Purple ofrece un impacto medible en tres dimensiones.

Captura de datos y marketing. Al imponer la autenticación mediante Captive Portal, los establecimientos capturan datos demográficos de origen (first-party) conformes con la normativa (nombres, direcciones de correo electrónico, perfiles sociales) en el punto de conexión WiFi. Estos datos se envían directamente a las plataformas de CRM y marketing por correo electrónico, lo que impulsa las suscripciones a programas de fidelización y permite realizar campañas dirigidas. Purple ha procesado 440 millones de inicios de sesión en 2024 (datos internos de Purple), lo que demuestra la escala de captura de datos de origen que es posible realizar en el extremo de la red.

Eficiencia operativa. La implementación de PPSK reduce la sobrecarga de SSID, mejorando el rendimiento de la red WiFi en entornos densos. Para una cadena minorista con 200 ubicaciones, la gestión centralizada de la identidad a través del RADIUS en la nube de Purple (en lugar de actualizar las configuraciones locales de los routers en cada sitio) ahorra cientos de horas de ingeniería al año. Un único cambio en la política de RADIUS se propaga a las 200 ubicaciones de forma instantánea.

Seguridad y cumplimiento. La asignación dinámica de VLAN aplica el acceso con privilegios mínimos en el extremo de la red. El personal está aislado de los invitados. Los dispositivos IoT están aislados del personal. Las terminales de punto de venta (POS) están aisladas de todo el demás tráfico. Esta segmentación cumple con los requisitos de aislamiento de red de PCI DSS 4.0 y proporciona una topología de red clara y auditable para las revisiones de cumplimiento de GDPR.

Para conocer patrones de implementación específicos de cada sector, consulte nuestras guías para entornos de Comercio minorista , Hostelería , Sanidad y Transporte . También puede resultarle útil nuestra guía sobre Qué es la pantalla inalámbrica: protocolos y mejores prácticas para 2026 para comprender las tecnologías inalámbricas complementarias en las implementaciones en establecimientos.

Definiciones clave

CoovaChilli

An open-source software access controller that provides a captive portal and walled-garden environment for wireless networks, using RADIUS for authentication and accounting.

IT teams deploy CoovaChilli on OpenWrt to intercept guest HTTP traffic and redirect it to the Purple splash page. It manages the iptables rules that enforce the walled garden and grant post-authentication internet access.

Walled garden

A strict allowlist of IP addresses or domains that an unauthenticated user can access before completing captive portal authentication.

Critical for allowing guest devices to load the Purple portal graphics and reach social media login APIs while blocking general internet access. An incomplete walled garden is the most common cause of captive portal failures.

PPSK (Private Pre-Shared Key)

A security mechanism where individual users or devices are assigned unique passphrases for the same WiFi SSID, with RADIUS returning the correct passphrase and VLAN assignment per device MAC address.

Used to segment multi-tenant environments without broadcasting multiple SSIDs. Supported in OpenWrt via the wpa_psk_radius parameter in hostapd.

Dynamic VLAN assignment

The process where a RADIUS server instructs the access point to place a specific authenticated user onto a specific virtual LAN, using the Tunnel-Type, Tunnel-Medium-Type, and Tunnel-Private-Group-ID RADIUS attributes.

The core mechanism for Identity-Based Networks. The user's identity, not their physical port, determines their network segment and access rights.

IEEE 802.1X

The IEEE standard for port-based network access control, defining the Authenticator (access point), Supplicant (client device), and Authentication Server (RADIUS) roles in enterprise WiFi authentication.

The underlying protocol for secure staff WiFi on OpenWrt. Requires the full wpad or wpad-openssl package - wpad-mini does not support it.

EAP-TLS (Extensible Authentication Protocol - Transport Layer Security)

An 802.1X authentication method that uses mutual certificate-based authentication, requiring both the RADIUS server and the client device to present valid digital certificates.

The gold standard for corporate device authentication. Eliminates passwords entirely, neutralising credential theft and phishing attacks. Requires a PKI infrastructure to issue client certificates.

Captive Network Assistant (CNA)

The pseudo-browser that iOS and Android devices automatically display when they detect they are behind a captive portal, based on probing specific detection URLs.

Network engineers must manage their walled gardens carefully to control whether the CNA triggers automatically. Most hospitality deployments exclude Apple and Google detection domains to force the CNA pop-up.

RADIUS accounting

The third pillar of the AAA (Authentication, Authorization, Accounting) framework, tracking network resource consumption by recording session start, interim updates, and session stop events on UDP port 1813.

Required by Purple to populate the analytics dashboard with session duration and bandwidth data. Configured in CoovaChilli via HS_RADIUS2 and the radiusacctport parameter.

hostapd

The open-source IEEE 802.11 access point daemon used by OpenWrt to manage wireless interfaces, supporting WPA2/WPA3-Enterprise, 802.1X, and PPSK authentication modes.

The core daemon for staff and PPSK WiFi on OpenWrt. The wpad-openssl package provides the full-featured hostapd build required for enterprise authentication.

Tunnel-Password attribute

A RADIUS attribute (attribute 69) used in PPSK deployments to return a per-device passphrase from the RADIUS server to the access point during MAC authentication.

The mechanism by which Purple's RADIUS server delivers unique PSKs to OpenWrt's hostapd daemon for PPSK-based multi-tenant segmentation.

Ejemplos prácticos

A 200-room hotel needs to provide tiered WiFi access: free basic internet for guests, high-speed access for loyalty members, and secure access for staff point-of-sale devices. The IT team wants to minimise SSID overhead and enforce PCI DSS network isolation between the POS terminals and guest traffic.

Deploy OpenWrt access points broadcasting two SSIDs: 'Hotel_Guest' (open, CoovaChilli-managed) and 'Hotel_Secure' (PPSK-managed via hostapd). On 'Hotel_Guest', CoovaChilli redirects all unauthenticated traffic to the Purple splash page. Guests authenticate via the portal and land on VLAN 20 (internet-only). On 'Hotel_Secure', configure hostapd with wpa_psk_radius=2. When a loyalty member's device connects, the RADIUS server returns their unique PSK and VLAN 21 (higher bandwidth tier). When a POS terminal connects, the RADIUS server returns the POS device PSK and VLAN 10 (internal network access, internet blocked). The VLAN segmentation enforces PCI DSS isolation between cardholder data (VLAN 10) and guest traffic (VLANs 20 and 21) at the access point level.

Comentario del examinador: This architecture uses two SSIDs rather than one to separate the captive portal flow (guests) from the PPSK flow (staff and loyalty). This is the correct approach because CoovaChilli and hostapd PPSK serve fundamentally different authentication models. Combining them on a single SSID requires a RADIUS proxy configuration that adds unnecessary complexity. The two-SSID model is simpler, more reliable, and easier to audit for PCI DSS compliance.

A retail chain is rolling out OpenWrt routers to 50 locations. During UAT at the first site, the Purple splash page loads correctly after redirect, but clicking the Facebook login button results in a connection timeout. The Google Sign-In button works correctly.

The issue is an incomplete CoovaChilli walled garden. Facebook's authentication flow requires access to multiple domains: facebook.com, connect.facebook.net, and fbcdn.net (Facebook's CDN for login assets). Google Sign-In works because googleapis.com and gstatic.com are already in the walled garden. Update the HS_UAMDOMAINS parameter in /etc/chilli/defaults to add '.facebook.com,.connect.facebook.net,.fbcdn.net'. Reload the chilli daemon with '/etc/init.d/chilli restart' and retest. To diagnose future walled garden issues systematically, connect a test device to the guest SSID and use browser developer tools (Network tab) to identify which requests return connection errors before authentication.

Comentario del examinador: Modern social login flows load assets from multiple CDN and API domains. The Facebook SDK alone references at least three distinct domains. A systematic approach to walled garden debugging - using browser developer tools to identify blocked pre-auth requests - is far more reliable than guessing at domain lists. Before go-live at all 50 locations, the engineer should test every configured authentication method (Facebook, Google, email, SMS) and verify each one completes successfully.

Preguntas de práctica

Q1. You have deployed OpenWrt with CoovaChilli at a Premier Inn property. Guests report that their iPhones do not automatically prompt them to log in when they connect to the guest WiFi. They must manually open Safari and navigate to an HTTP site to trigger the portal. What configuration change causes this, and how do you resolve it?

Sugerencia: Consider how iOS determines whether a network has full internet access upon association.

Ver respuesta modelo

The engineer has included Apple's captive portal detection domain (captive.apple.com) in the CoovaChilli walled garden via HS_UAMDOMAINS. When an iPhone connects, iOS sends a probe to captive.apple.com. Because this domain is in the walled garden, the probe succeeds pre-authentication, and iOS concludes it has full internet access - suppressing the Captive Network Assistant pop-up. To resolve this, remove captive.apple.com from HS_UAMDOMAINS and restart the chilli daemon. iOS devices will then receive a failed probe response, correctly identify the captive portal, and display the login prompt automatically.

Q2. A coworking space operator wants to deploy IoT smart thermostats across their estate. They already broadcast a 'Cowork_Guest' SSID (CoovaChilli) and a 'Cowork_Staff' SSID (802.1X). The thermostats do not support WPA2-Enterprise. How do you securely onboard them without adding a third SSID?

Sugerencia: IoT devices typically support only WPA2-PSK. Consider which existing SSID can be extended to support per-device passphrases.

Ver respuesta modelo

Configure PPSK on the 'Cowork_Staff' SSID by enabling wpa_psk_radius=2 in the hostapd configuration. Register each thermostat's MAC address in the Purple RADIUS server with a unique passphrase and VLAN 40 (IoT VLAN) as the Tunnel-Private-Group-ID. When a thermostat connects, hostapd queries the RADIUS server with the device MAC, receives the unique PSK and VLAN assignment, and places the thermostat on VLAN 40 - completely isolated from staff traffic on VLAN 10. This approach avoids a third SSID, maintains RF efficiency, and enforces least-privilege access for IoT devices without requiring 802.1X certificate infrastructure.

Q3. After deploying OpenWrt with CoovaChilli at a retail venue, the Purple analytics dashboard shows zero active sessions and no bandwidth data, despite guests successfully connecting and browsing the internet. What is the most likely cause, and what are the two steps to diagnose it?

Sugerencia: Authentication (port 1812) and accounting (port 1813) are separate RADIUS functions.

Ver respuesta modelo

The RADIUS accounting configuration is either missing or blocked. Step 1: Verify the CoovaChilli configuration. Check that HS_RADIUS and HS_RADIUS2 are set correctly in /etc/chilli/defaults, and confirm that the radiusacctport is set to 1813. If HS_RADIUS2 is not configured, there is no accounting server defined. Step 2: Verify firewall rules. Confirm that outbound UDP port 1813 traffic from the OpenWrt router to the Purple RADIUS server IP addresses is permitted by the venue's edge firewall. Use 'tcpdump -i eth0 udp port 1813' on the OpenWrt device to confirm whether accounting packets are being sent. If packets appear in tcpdump but the dashboard remains empty, the issue is a firewall blocking the traffic between the router and Purple's cloud RADIUS servers.

Q4. An OpenWrt deployment at a stadium uses dynamic VLAN assignment via RADIUS to segment fan WiFi (VLAN 30), media (VLAN 40), and operations (VLAN 50). After upgrading the access points to new hardware running OpenWrt 19.07 with ath10k drivers, VLAN assignment stops working. Authenticated users all land on the default VLAN regardless of RADIUS attributes. What is the known cause?

Sugerencia: Consider driver-level support for AP/VLAN mode in ath10k.

Ver respuesta modelo

This is a known regression in ath10k-ct (Candela Technologies) firmware included in OpenWrt 19.07. The ath10k-ct driver in this release has a bug that breaks AP/VLAN mode, preventing dynamic VLAN assignment from functioning. The resolution is to upgrade to OpenWrt 21.02 or later, where the ath10k-ct driver was updated to restore AP/VLAN functionality. Alternatively, replace the ath10k-ct firmware with the standard ath10k firmware (non-CT variant) on the 19.07 build. This issue does not affect ath9k-based hardware, which handles AP/VLAN mode correctly across all OpenWrt versions.

Continúe leyendo esta serie

Integración de Huawei AirEngine y CloudCampus con Purple WiFi

Esta guía proporciona instrucciones paso a paso para integrar los puntos de acceso Huawei AirEngine e iMaster NCE-Campus con Purple WiFi. Cubre la configuración de Captive Portal, la autenticación de personal mediante 802.1X y el direccionamiento dinámico de VLAN mediante PPSK para redes empresariales.

Leer la guía →

Integración de routers y puntos de acceso DrayTek Vigor con Purple WiFi

Esta guía proporciona instrucciones técnicas paso a paso para integrar los routers DrayTek Vigor y los puntos de acceso VigorAP con la plataforma en la nube de Purple. Cubre la configuración del Captive Portal de DrayTek para Guest WiFi, la autenticación 802.1X para Staff WiFi seguro, la configuración de Walled Garden y la configuración de Multiple PSK (PPSK) de DrayTek para la segmentación de redes multiinquilino con asignación dinámica de VLAN. Diseñado para instaladores de TI y administradores de redes de pymes que implementan Purple en entornos de hostelería, comercio minorista y espacios multiinquilino.

Leer la guía →

Guía de integración de MikroTik RouterOS Captive Portal y Purple WiFi

Esta guía técnica proporciona instrucciones paso a paso para integrar MikroTik RouterOS con la plataforma Purple WiFi. Cubre la configuración del Captive Portal para Guest WiFi, la autenticación 802.1X para Staff WiFi y WiFi multiinquilino mediante PSK privadas para la segmentación dinámica de VLAN.

Leer la guía →