Saltar al contenido principal

Captive Portal Login: Troubleshooting and Explainer

Esta guía proporciona una referencia técnica completa para comprender, implementar y solucionar problemas en los sistemas de inicio de sesión de Captive Portal en entornos de WiFi para invitados empresariales. Explica los mecanismos exactos de redirección HTTP y secuestro de DNS utilizados por los Captive Portals modernos, detalla cómo HSTS y los navegadores HTTPS seguros pueden bloquear las redirecciones locales, y ofrece una lista de verificación de resolución de problemas clara y práctica que cubre tanto las soluciones del lado del cliente (desactivar VPN, desactivar la aleatorización de MAC, usar NeverSSL) como las del lado del operador (configuración de walled garden, optimización del tiempo de concesión de DHCP, verificación de interceptación de DNS). Los operadores de establecimientos, administradores de TI y arquitectos de redes encontrarán esta guía esencial para minimizar los tickets de soporte de invitados y maximizar el ROI de su infraestructura inalámbrica.

📖 3 min de lectura📝 2,842 palabras🔧 3 ejemplos prácticos3 preguntas de práctica📚 10 definiciones clave

Escuchar esta guía

Ver transcripción del podcast
TITLE: Inicio de sesión en el Captive Portal — Resolución de problemas y guía explicativa FORMAT: Podcast de información técnica de Purple VOICE: Inglés británico masculino — Tono de arquitecto de soluciones sénior DURATION: Aproximadamente 8 minutos --- [SECTION 1: Introducción y contexto — 0:00 a 1:15] Hola y bienvenidos a esta sesión informativa técnica de Purple. Soy su anfitrión y hoy abordaremos uno de los desafíos más comunes y, a la vez, frustrantes en las redes inalámbricas empresariales: el fallo de inicio de sesión en el Captive Portal. Todos hemos pasado por eso. Te conectas a una red WiFi de invitados en un hotel, una tienda o un aeropuerto, y no pasa nada. La página de inicio de sesión no aparece, tu conexión a internet no funciona y te quedas mirando una pantalla en blanco o una advertencia de seguridad críptica. Para los directores de operaciones de las instalaciones y los responsables de TI, esto no es solo un pequeño problema técnico. Es una amenaza directa para la satisfacción del cliente, un generador de tickets de soporte y una barrera para capturar los valiosos análisis de invitados que justifican el ROI de su infraestructura inalámbrica. En este podcast, analizaremos a fondo el funcionamiento de los Captive Portals modernos. Explicaremos exactamente cómo funciona el mecanismo de redirección HTTP, por qué los estándares web seguros como HSTS a veces pueden bloquearlo y le proporcionaremos una lista de verificación práctica para la resolución de problemas, tanto para sus invitados como para sus equipos de TI. Comencemos. --- [SECTION 2: Inmersión técnica profunda — 1:15 a 6:15] Para entender por qué un Captive Portal no se carga, primero debemos comprender cómo lo detecta un dispositivo en primer lugar. Cuando su smartphone o portátil se asocia con un SSID de invitados abierto y recibe una dirección IP a través de DHCP, el sistema operativo no espera a que usted abra un navegador. En segundo plano, un servicio del sistema lanza inmediatamente una solicitud HTTP GET no cifrada a una URL canaria específica controlada por el fabricante. En el caso de los dispositivos Apple, consulta captive.apple.com/hotspot-detect.html y busca la palabra "Success". Los dispositivos Google consultan una URL gstatic generate-204, esperando un código de estado 204 No Content. Los dispositivos Windows consultan un archivo de texto de prueba de conexión de Microsoft. Si la red tiene acceso abierto a internet, estas sondas tienen éxito y el sistema operativo no interviene. Pero en una red de invitados, la pasarela o el controlador inalámbrico intercepta esta sonda HTTP. En lugar de permitir que llegue a la internet pública, la pasarela devuelve una redirección HTTP 302 o 303 que apunta al FQDN seguro de la página de bienvenida del Captive Portal. El sistema operativo detecta esta redirección inesperada, se da cuenta de que está detrás de un Captive Portal e inmediatamente abre una ventana de navegador especializada y aislada (a menudo llamada Asistente de Captive Portal) para mostrar la página de inicio de sesión. Este mecanismo de redirección funcionó de maravilla durante años. Pero luego llegó la revolución HTTPS y un estándar crítico llamado HSTS, o HTTP Strict Transport Security. HSTS es una política de seguridad que obliga a los navegadores a comunicarse únicamente con sitios web que utilicen conexiones HTTPS seguras y cifradas. Si un invitado se conecta a su WiFi y su navegador o una aplicación intenta contactar con un dominio habilitado para HSTS —como Google, Facebook o su portal bancario—, el navegador aplica estrictamente la validación del certificado SSL/TLS. Si su puerta de enlace inalámbrica intenta interceptar esa solicitud HTTPS y redirigirla al Captive Portal, tiene que presentar un certificado SSL. Dado que el certificado de la puerta de enlace no coincide con el nombre de dominio solicitado, el navegador detecta un ataque de intermediario (man-in-the-middle). Muestra una advertencia de seguridad enorme y que no se puede omitir, y bloquea la redirección por completo. El usuario obtiene una página rota y el Captive Portal nunca se carga. Para solucionar esto, las redes modernas deben garantizar que las sondas HTTP iniciales no cifradas enviadas por los sistemas operativos estén exentas de la interceptación HTTPS, lo que les permite redirigirse limpiamente al dominio seguro del portal. Además, estamos viendo la adopción de la norma RFC 8910, que define una API estandarizada de Captive Portal. Esto permite que el servidor DHCP informe directamente al dispositivo cliente de la URL del Captive Portal, evitando por completo la necesidad de secuestro de DNS o redirección HTTP. --- [SECCIÓN 3: Recomendaciones de implementación y errores comunes — 6:15 a 8:15] Entonces, ¿cómo implementamos un Captive Portal robusto que evite estos errores comunes? En primer lugar, hablemos del Walled Garden, o la lista de control de acceso previa a la autenticación. Esta es la lista de dominios externos a los que los invitados no autenticados pueden acceder. Si su Walled Garden está mal configurado, la página del Captive Portal simplemente no se cargará. Debe incluir no solo el FQDN de su página de inicio —como los servidores en la nube de Purple—, sino también los dominios de cualquier proveedor de identidad social como Google, Apple o Facebook si ofrece inicios de sesión social. Debido a que estos proveedores actualizan constantemente sus dominios de autenticación y rangos de IP de CDN, el uso de un controlador inalámbrico que admita la inspección de dominios con comodines es una necesidad absoluta. En segundo lugar, optimice su DHCP y DNS. En lugares concurridos como centros comerciales o estadios, el agotamiento de las direcciones IP es un enemigo silencioso. Si el tiempo de concesión de DHCP para invitados está configurado en las 24 horas predeterminadas, se quedará sin direcciones IP rápidamente. Establezca los tiempos de concesión para invitados entre 15 y 30 minutos. Además, asegúrese de que sus servidores DNS respondan rápidamente y que los usuarios no autenticados tengan permiso para realizar consultas DNS. Si no pueden resolver las URL canarias, la secuencia de detección del portal falla antes de comenzar. Y finalmente, considere la transición a la autenticación basada en perfiles como OpenRoaming. Bajo nuestra licencia Purple Connect, Purple actúa como un proveedor de identidad gratuito para OpenRoaming. Esto permite que los invitados que regresan se conecten de forma automática y segura a su WiFi en la Capa 2, evitando por completo el Captive Portal después de su primera visita. Ofrece una experiencia fluida, similar a la de una red móvil, al tiempo que mantiene una seguridad de primer nivel. --- [SECCIÓN 4: Preguntas y respuestas rápidas — 8:15 a 9:15] Repasemos una ronda rápida de preguntas y respuestas basadas en las consultas más comunes que recibimos de los equipos de operaciones de los establecimientos. Pregunta uno: ¿Por qué no aparece automáticamente la página de inicio de sesión de mi WiFi para invitados? Casi siempre se debe a una VPN activa en el dispositivo del invitado, o a que están utilizando una configuración de DNS segura y personalizada como DNS-over-HTTPS. Ambos casos impiden que la puerta de enlace local intercepte la sonda HTTP inicial. Pregunta dos: ¿Cómo puede un invitado forzar manualmente la carga de la página del Captive Portal? Indíqueles que abran una ventana estándar del navegador y escriban http://neverssl.com. Como este sitio está diseñado para no usar nunca SSL, la puerta de enlace puede interceptar fácilmente la solicitud y activar la redirección. Pregunta tres: ¿Por qué un invitado tiene que volver a iniciar sesión cada vez que se aleja durante unos minutos? Esto se debe a la aleatorización de direcciones MAC, una función de privacidad predeterminada en los dispositivos modernos con iOS y Android. Esta función presenta una nueva dirección MAC a la red, lo que rompe la persistencia de la sesión. Indíqueles que desactiven la opción de dirección privada para su SSID de invitados. --- [SECCIÓN 5: Resumen y próximos pasos — 9:15 a 10:00] En resumen, una experiencia de WiFi para invitados fiable se basa en una comprensión profunda de la mecánica del Captive Portal. Al optimizar su walled garden, gestionar sus rangos DHCP y formar al personal de atención al público en soluciones sencillas del lado del cliente (como desactivar las VPN y usar NeverSSL), puede reducir drásticamente los tickets de soporte y mantener a sus invitados conectados. Para una fiabilidad de nivel empresarial, la plataforma de Captive Portal gestionada en la nube de Purple ofrece una compatibilidad robusta entre dispositivos de forma nativa, garantizando que su mecanismo de redirección funcione a la perfección en todo momento. Gracias por escuchar esta sesión informativa técnica de Purple. Para obtener más guías y recursos, visite nuestro sitio web en purple.ai. Hasta la próxima, mantenga sus redes seguras y a sus invitados conectados.

📚 Parte de nuestra serie principal: The Ultimate Guide to Captive Portals

header_image.png

Executive Summary

For modern enterprise venues, guest wireless networks are no longer a simple amenity; they represent a critical touchpoint for customer engagement, operational intelligence, and brand positioning. However, the business value of these networks depends entirely on the reliability of the initial connection experience. When a guest connects to a network and the captive portal login page fails to appear, the venue immediately suffers from increased front-of-house friction, a surge in support tickets, and lost opportunities for data capture.

At the core of these failures is a fundamental tension between secure web standards and the network-level interception techniques historically used by captive portals. Modern web browsers and operating systems are designed to detect and block unauthorized traffic redirection to protect users from man-in-the-middle (MitM) attacks. By understanding the precise HTTP and DNS redirection sequences, the impact of secure protocols like HTTP Strict Transport Security (HSTS), and the client-side settings that disrupt these mechanisms, IT organizations can implement robust configurations that ensure seamless onboarding.

This guide details how Purple's cloud-managed Guest WiFi platform addresses these challenges to deliver high-availability redirection across all consumer operating systems, minimizing venue support overhead and maximizing the return on wireless infrastructure investments. Whether you are deploying in Hospitality , Retail , Healthcare , or Transport environments, the principles and checklists in this guide apply universally.


Technical Deep-Dive

To effectively troubleshoot captive portal failures, network administrators must understand the exact sequence of events that occurs when a client device connects to an open or pre-shared key (PSK) guest wireless network. Modern operating systems — including Apple iOS/macOS, Google Android, Microsoft Windows, and Linux distributions — do not wait for a user to open a browser to test for internet connectivity. Instead, they execute an automated active probing mechanism immediately upon completing the association and DHCP phases.

The Captive Portal Detection Sequence

The connection and verification process follows a highly structured sequence:

Step Action Technical Description Expected Success Indicator
1 Association Client associates with the Guest SSID at Layer 2. Successful 802.11 association frame exchange.
2 IP Provisioning DHCP server assigns an IP address, subnet mask, gateway, and local DNS server. DHCP ACK packet received by the client.
3 Active Probing OS background service sends an unencrypted HTTP GET request to a vendor-specific canary URL. HTTP 200 OK (Apple/Windows) or HTTP 204 No Content (Google).
4 Interception & Redirect Wireless gateway/controller intercepts the HTTP probe and returns an HTTP 302/303 redirect pointing to the portal. HTTP 302 Redirect to the captive portal FQDN.
5 Portal Rendering Captive Portal Assistant (CPA) browser engine opens and renders the splash page. Successful rendering of the login interface.
+--------+             +------------+             +------------+             +-------------------+
| Client |             | AP/Gateway |             | DNS Server |             | Captive Portal IP |
+--------+             +------------+             +------------+             +-------------------+
    |                        |                          |                              |
    |--- 1. DHCP Request --->|                          |                              |
    |<-- 2. DHCP Ack --------|                          |                              |
    |    (IP & DNS Assigned) |                          |                              |
    |--- 3. DNS Query ------>|------------------------->|                              |
    |    (canary URL)        |                          |                              |
    |<-- 4. DNS Response ----|<-------------------------|                              |
    |    (Resolved IP)       |                          |                              |
    |--- 5. HTTP GET ------->|                          |                              |
    |    (canary URL)        |                          |                              |
    |<-- 6. HTTP 302 --------|                          |                              |
    |    (Redirect to Portal)|                          |                              |
    |--- 7. DNS Query ------>|------------------------->|                              |
    |    (Portal FQDN)       |                          |                              |
    |<-- 8. DNS Response ----|<-------------------------|                              |
    |    (Portal IP)         |                          |                              |
    |--- 9. HTTP/S GET ------>-------------------------------------------------------->|
    |    (Render Splash Page)|                          |                              |
    |<-- 10. Render Page <-------------------------------------------------------------||

captive_portal_redirect_flow.png

Each operating system utilizes a distinct set of canary URLs and expected responses to determine network status. Apple (iOS/macOS) probes http://captive.apple.com/hotspot-detect.html expecting an HTML document containing only the word Success in both the title and body. Google (Android/ChromeOS) probes http://connectivitycheck.gstatic.com/generate_204 expecting an HTTP status code 204 No Content with an empty body. Microsoft (Windows 10/11) probes http://www.msftconnecttest.com/connecttest.txt expecting a plain text response of Microsoft Connect Test.

If the device receives the expected response, it concludes that the network has direct, unhindered internet access. If the response is modified — such as receiving an HTTP 302 redirect — the operating system's Captive Portal Assistant (CPA) immediately launches a dedicated, sandboxed browser window to display the redirect target: the captive portal login page.

The HSTS and HTTPS Redirection Conflict

The historical method of captive portal redirection relies on DNS hijacking or HTTP interception. When an unauthenticated user attempts to browse to any website, the gateway intercepts the TCP port 80 (HTTP) or port 443 (HTTPS) traffic and responds on behalf of the destination server, injecting an HTTP 302 redirect. While this worked seamlessly in an era of unencrypted HTTP web browsing, it introduces severe security and operational challenges in modern HTTPS-dominated environments.

The primary obstacle is HTTP Strict Transport Security (HSTS), a web security policy mechanism specified in RFC 6797. HSTS forces web browsers to interact with websites using only secure HTTPS connections. When a browser attempts to connect to an HSTS-enabled domain — such as Google, Facebook, or banking portals — it strictly forbids any unencrypted communication and enforces strict SSL/TLS certificate validation.

If a captive portal gateway attempts to intercept an HTTPS request to an HSTS domain, it must present its own SSL certificate or a spoofed certificate to the client. Because the gateway's certificate does not match the requested domain name, the client's browser detects a man-in-the-middle attack and displays a non-bypassable security warning (e.g., NET::ERR_CERT_COMMON_NAME_INVALID or Your connection is not private). The browser blocks the redirect entirely, preventing the captive portal page from loading and leaving the user with a broken connection.

To mitigate this, modern enterprise wireless networks utilize two advanced mechanisms. First, exempting OS probes ensures that the unencrypted HTTP probes sent by operating systems are never subjected to HTTPS interception; the gateway must allow the unencrypted HTTP probe to be redirected using a standard HTTP 302 response to the secure, fully-qualified domain name (FQDN) of the captive portal. Second, RFC 8910 (Captive Portal API) defines a mechanism where DHCP options (Option 114) or IPv6 Router Advertisements inform the client device of the exact URL of the captive portal API endpoint. Instead of relying on brute-force DNS hijacking or HTTP redirection, compatible client devices query this API directly to obtain the portal URL and network status, bypassing the HSTS conflict entirely.


Implementation Guide

Deploying a reliable captive portal requires careful coordination between the physical wireless infrastructure (Access Points, Controllers, Gateways) and the cloud-based portal platform. This section provides a vendor-neutral, step-by-step implementation guide to ensure robust redirection compatibility across enterprise networks, referencing standard configurations found in controllers from Cisco, Aruba, and Ruckus. For related access control architecture, see the guide on How to Implement 802.1X Authentication with Cloud RADIUS .

Step 1: Walled Garden (ACL) Configuration

A Walled Garden or Access Control List (ACL) defines the specific external domains, IP addresses, or subnets that an unauthenticated guest device is permitted to access before logging in. If the walled garden is configured incorrectly, the client device will be unable to resolve or load the captive portal assets, resulting in a blank screen or a timeout error.

To ensure seamless operation with Purple's platform, the walled garden must include the following components. Portal FQDNs are the fully-qualified domain names of the splash page hosting servers (e.g., *.purple.ai or regional variants). Identity Providers (IdPs) must be included if the portal supports social login — the walled garden must include the extensive list of domains used by these providers for OAuth authentication. Content Delivery Networks (CDNs) hosting CSS, JavaScript, fonts, or images used on the splash page must also be included.

Many modern controllers support wildcard domain names (e.g., *.purple.ai) in their walled garden configurations. The controller dynamically snoops DNS queries from unauthenticated clients; when a client queries a domain matching the wildcard, the controller temporarily adds the returned IP address to the client's pre-authentication allowlist. For legacy controllers that only support static IP addresses, administrators must configure a local DNS proxy or regularly update the static IP blocks associated with the cloud portal.

Step 2: DHCP and DNS Optimization

Because captive portal detection relies heavily on the initial network handshake, DHCP and DNS configurations must be optimized for high-density, transient environments. In high-footfall venues such as retail malls, transit hubs, or stadiums, IP address exhaustion is a common cause of captive portal failure. If the DHCP lease time is set too long (e.g., 24 hours), the IP pool will quickly deplete, preventing new guests from obtaining an IP address. For guest networks, the DHCP lease time should be configured between 15 to 30 minutes (900 to 1800 seconds).

Guest clients must be assigned a reliable, fast DNS server capable of resolving both public domains and the local captive portal FQDN. It is highly recommended to use enterprise-grade public DNS resolvers such as Cloudflare 1.1.1.1 or Google 8.8.8.8, or a local high-performance DNS forwarder. Critically, the wireless gateway must allow unauthenticated clients to perform DNS resolution. If a firewall rule blocks port 53 (UDP/TCP) traffic for pre-authenticated users, the client's OS will be unable to resolve the canary URLs, and the captive portal assistant will never launch.

Step 3: SSL/TLS Certificate Management

When a guest device is redirected to the captive portal, the browser establishes a secure HTTPS connection to the portal's FQDN. To prevent certificate warning screens, the captive portal must be secured with a valid, publicly-trusted SSL/TLS certificate. Self-signed certificates will be immediately blocked by modern mobile operating systems, preventing the captive portal assistant from rendering the page. If the redirection mechanism requires the client to communicate with the local gateway IP (e.g., for local MAC-to-IP binding), the gateway must have a valid certificate matching its local FQDN, and this FQDN must be resolvable by the guest DNS.


Best Practices

To maintain a high-performing guest wireless network that minimizes support tickets and maximizes user satisfaction, network operators should adhere to the following industry standards and best practices.

1. Optimize Walled Garden Rules for Social Logins

When utilizing social login options to capture user profiles, the walled garden must be meticulously maintained. Social media platforms frequently update their authentication subdomains and CDN IP ranges. If a single required domain is missing from the walled garden, the social login popup will fail to load or hang indefinitely.

Provider Essential Walled Garden Domains
Google accounts.google.com, ssl.gstatic.com, fonts.gstatic.com, lh3.googleusercontent.com
Facebook facebook.com, *.facebook.com, *.fbcdn.net, m.facebook.com
Apple appleid.apple.com, appleid.cdn-apple.com, gsa.apple.com

2. Transition to Profile-Based Authentication and OpenRoaming

While captive portals are excellent for initial data capture and terms of service acceptance, repeating the login process on every visit introduces user friction. Modern enterprise networks are increasingly transitioning to profile-based authentication and Passpoint (Hotspot 2.0) technologies, such as OpenRoaming.

Under the Purple Connect license, Purple acts as a free identity provider for OpenRoaming services. Passpoint allows a guest to install a secure profile on their device during their first visit. Upon subsequent visits to any participating venue worldwide, the device automatically and securely associates with the network at Layer 2 using WPA3-Enterprise and 802.1X authentication, completely bypassing the captive portal. This delivers a seamless, cellular-like roaming experience while maintaining secure, encrypted data transmission. For a detailed implementation guide, see How to Implement 802.1X Authentication with Cloud RADIUS .

3. Ensure Compliance with Regulatory Frameworks

Guest WiFi deployments must be designed with strict adherence to global data privacy and security standards. For GDPR / CCPA Compliance, the captive portal must present clear, unambiguous terms of service and privacy policies. Consent for marketing communications must be actively opted-in (not pre-checked), and users must have a straightforward mechanism to request data deletion. For PCI DSS Compliance, if the guest network co-exists on the same physical infrastructure as the venue's Point of Sale (POS) systems, strict logical segmentation must be enforced. The guest VLAN must be completely isolated from the production and payment card VLANs using firewall rules and ACLs. For wireless security, implement WPA3-Transition Mode to allow older devices to connect using WPA2-Personal while newer devices benefit from the enhanced security of WPA3, including Protected Management Frames (PMF).


Troubleshooting & Risk Mitigation

When guest wireless issues are reported, venue operations and front-of-house staff require a clear, structured diagnostic sequence to identify and resolve the root cause. Captive portal failures typically fall into two categories: client-side misconfigurations and operator-side infrastructure issues.

troubleshooting_checklist.png

Client-Side Diagnostic and Resolution Checklist

For front-of-house staff assisting guests, work through these steps in order.

1. Disable Active VPNs. Virtual Private Networks establish an encrypted tunnel from the client device directly to a remote server. Because the VPN client attempts to encrypt and route all traffic immediately upon network connection, it bypasses the local gateway's DNS hijack and HTTP redirection rules. The guest must temporarily disable their VPN to complete the captive portal login, after which the VPN can be safely re-enabled.

2. Turn Off Private/Randomized MAC Addresses. Modern operating systems (iOS 14+ and Android 10+) enable Private Wi-Fi Address or MAC Randomization by default to prevent tracking. While beneficial for privacy, this feature causes the device to present a different MAC address to the network on subsequent connections or after a short period of inactivity. This breaks MAC-based session persistence, forcing the guest to re-authenticate repeatedly. Instruct the guest to disable Private Address for the venue's SSID in their device's wireless settings.

3. Bypass Secure DNS (DoH/DoT). If the guest has configured a custom DNS server or uses DNS-over-HTTPS (DoH) or DNS-over-TLS (DoT) in their browser settings, the browser will refuse to accept the local gateway's hijacked DNS responses. The user must temporarily disable secure DNS in their browser settings or clear their device's DNS cache to allow the local redirect to function.

4. Force an Unencrypted HTTP Connection (NeverSSL). If the captive portal assistant fails to launch automatically, the guest's browser may be stuck trying to load an HTTPS page. Instruct the guest to open a standard browser window and navigate to http://neverssl.com. Because this website is explicitly designed to never use SSL/TLS, the gateway can intercept the HTTP request and successfully inject the HTTP 302 redirect to the guest internet login screen.

5. Forget and Rejoin the Network. If a previous authentication session was terminated abnormally, the client device may hold stale DHCP or ARP cache data. Forgetting the network in the wireless settings and reconnecting forces a clean DHCP handshake and restarts the captive portal detection sequence.

Operator-Side Infrastructure Troubleshooting

For network administrators investigating systemic issues where multiple guests report portal failures, the following checks should be performed. Monitor DHCP Pool Utilization by inspecting the DHCP scope on the local gateway or router; if the pool is 100% utilized, reduce the lease time to 5-10 minutes to rapidly reclaim IP addresses from departed guests. Verify DNS Redirection Rules by performing a packet capture (PCAP) on the gateway interface to confirm that unauthenticated clients are successfully sending DNS queries to port 53 and receiving responses. Audit Walled Garden Latency to ensure that the walled garden is optimized and that DNS resolution for walled garden domains is caching correctly on the controller. Finally, check Certificate Expiration to ensure that the SSL/TLS certificate installed on the wireless controller or gateway is valid, unexpired, and signed by a trusted Certificate Authority (CA).


ROI & Business Impact

Investing in a robust, cloud-managed captive portal platform like Purple yields measurable financial and operational returns for enterprise venues. By systematically resolving captive portal login issues, organizations directly impact both the top and bottom lines.

Reduction in Support Overhead and Guest Friction

For hospitality and retail venues, front-of-house staff frequently spend valuable time troubleshooting guest WiFi connectivity. A high captive portal failure rate leads to increased guest frustration and negative online reviews, a high volume of low-complexity support tickets escalated to the IT team, and operational inefficiencies as front-of-house staff are distracted from their primary duties. By implementing Purple's robust, cross-platform compatible redirection mechanism, venues typically experience a 50% to 70% reduction in WiFi-related support complaints.

Maximizing Data Capture and Marketing ROI

A captive portal is the primary gateway for capturing valuable first-party customer data, including email addresses, phone numbers, and social profiles. When a captive portal fails to load, the venue loses the opportunity to register that guest. With a functional portal, venues can achieve opt-in rates of over 60% for marketing communications, rapidly growing their customer CRM database. By integrating guest authentication with WiFi Analytics , venue operators gain deep insights into visitor behavior, including dwell times, return rates, and footfall patterns across different zones.

Unlocking Retail Media and Monetization Opportunities

For large-scale venues like shopping malls, stadiums, and exhibition centers, the captive portal represents premium digital real estate. By utilizing the splash page and post-login redirect screens, operators can tap into the rapidly growing Retail Media market. Display highly targeted, location-aware advertisements to guests at the exact moment they connect, or sell sponsorship packages to brands, turning a traditional IT cost center into a direct revenue-generating asset.


References

[1] Wikipedia Contributors. "Captive Portal." Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/wiki/Captive_portal

[2] IETF RFC 6797. "HTTP Strict Transport Security (HSTS)." Internet Engineering Task Force. https://datatracker.ietf.org/doc/html/rfc6797

[3] IETF RFC 8910. "Captive-Portal Identification in DHCP and Router Advertisements." Internet Engineering Task Force. https://datatracker.ietf.org/doc/html/rfc8910

[4] Wireless Broadband Alliance. "OpenRoaming." WBA. https://wballiance.com/openroaming/

[5] NeverSSL. "NeverSSL: Helping you get online." NeverSSL. http://neverssl.com/

Definiciones clave

Captive Portal

Una página web que se presenta a los usuarios recién conectados a una red de invitados antes de que se les conceda un acceso más amplio a internet. El portal suele requerir autenticación (correo electrónico, inicio de sesión social o código de cupón), la aceptación de las condiciones de servicio, o ambos. Es el mecanismo principal para la captura de datos de invitados en despliegues de WiFi empresariales.

Los equipos de TI se enfrentan a los captive portals como el primer punto de fallo en las quejas sobre el WiFi de invitados. Comprender la arquitectura técnica del portal es esencial para diagnosticar por qué no aparece la página de inicio de sesión.

DNS Hijacking

Una técnica utilizada por las pasarelas de captive portals en la que el servidor DNS local devuelve la dirección IP del servidor del captive portal en respuesta a todas las consultas DNS de los clientes no autenticados, independientemente del dominio real que se esté consultando. Esto obliga al navegador del cliente a conectarse al portal en lugar de al destino previsto.

El DNS hijacking es el mecanismo principal detrás de la mayoría de las implementaciones de redirección de captive portals. Es eficaz para el tráfico HTTP, pero se ve bloqueado por las configuraciones de DNS-over-HTTPS (DoH) y DNS-over-TLS (DoT) en los dispositivos cliente.

HTTP Strict Transport Security (HSTS)

Un mecanismo de política de seguridad web (RFC 6797) que indica a los navegadores que solo se comuniquen con un sitio web utilizando HTTPS, y que rechacen cualquier conexión HTTP o conexiones con certificados SSL no válidos. Una vez que un navegador ha recibido una cabecera HSTS de un dominio, aplica esta política durante un tiempo específico (max-age), incluso si el usuario escribe manualmente una URL HTTP.

HSTS es la razón principal por la que las redirecciones de los captive portals fallan en los dispositivos modernos. Cuando una pasarela intenta interceptar una solicitud HTTPS a un dominio con HSTS habilitado, el navegador detecta la discrepancia de certificados y bloquea la redirección, impidiendo que se cargue el portal.

Captive Portal Assistant (CPA)

Un proceso de navegador ligero y aislado (sandbox) integrado en los sistemas operativos modernos (CNA de Apple, CPA de Android, NCSI de Windows) que se inicia automáticamente cuando el sistema operativo detecta que está detrás de un captive portal. El CPA renderiza la página de bienvenida en un entorno restringido que impide que el portal acceda a las credenciales del dispositivo o al almacenamiento persistente.

El CPA es lo que hace que la página de inicio de sesión aparezca automáticamente en la mayoría de los dispositivos. Si el CPA no se inicia (por ejemplo, debido a una VPN o DoH), el invitado debe navegar manualmente a la URL del portal.

Walled Garden

Una lista de control de acceso (ACL) de preautenticación que define los dominios externos, direcciones IP o subredes específicos a los que los dispositivos de invitados no autenticados pueden acceder antes de completar el inicio de sesión en el captive portal. Los recursos fuera del walled garden se bloquean hasta que se completa la autenticación.

Un walled garden mal configurado es una de las causas más comunes de fallos en los captive portals, especialmente para los flujos de inicio de sesión social que requieren acceso a múltiples dominios OAuth de terceros.

MAC Address Randomization

Una función de privacidad en los sistemas operativos móviles modernos (iOS 14+, Android 10+) que hace que el dispositivo presente una dirección MAC generada aleatoriamente a cada red WiFi a la que se conecta, en lugar de su dirección MAC asignada por hardware. La dirección aleatoria también puede cambiar periódicamente mientras está conectado.

La aleatorización de direcciones MAC rompe la persistencia de la sesión del captive portal porque la pasarela utiliza la dirección MAC para realizar el seguimiento de los clientes autenticados. Cuando la MAC cambia, la pasarela trata al dispositivo como un cliente nuevo no autenticado, lo que obliga a realizar una nueva autenticación.

RFC 8910 (Captive Portal API)

Un estándar de la IETF que define un mecanismo para que las redes informen a los dispositivos cliente de la presencia y la URL de un captive portal utilizando la opción DHCP 114 (para IPv4) o las opciones de anuncio de router IPv6. Los dispositivos compatibles consultan directamente el endpoint de la API anunciado para determinar su estado de red y obtener la URL del portal, eliminando la necesidad de realizar DNS hijacking.

La RFC 8910 es la alternativa moderna y compatible con los estándares al DNS hijacking para la detección de captive portals. Resuelve el conflicto de HSTS al comunicar la URL del portal en la capa de red en lugar de intentar interceptar el tráfico HTTP/HTTPS.

DNS-over-HTTPS (DoH)

Un protocolo que cifra las consultas DNS enviándolas a través de una conexión HTTPS a un sistema de resolución de confianza (como Cloudflare 1.1.1.1 o Google 8.8.8.8), en lugar de enviarlas como paquetes UDP de texto plano al servidor DNS asignado por la red. Esto evita que la pasarela local intercepte o secuestre las respuestas DNS.

DoH está cada vez más habilitado por defecto en los navegadores modernos (Chrome, Firefox, Edge) y sistemas operativos. Cuando DoH está activo, se omite el mecanismo de DNS hijacking del captive portal y la pantalla de inicio de sesión a internet para invitados no aparecerá automáticamente.

NeverSSL

Un sitio web de utilidad pública (http://neverssl.com) diseñado explícitamente para no utilizar nunca el cifrado SSL/TLS. Sirve como un activador manual fiable para las redirecciones del captive portal porque la pasarela siempre puede interceptar su solicitud HTTP no cifrada e inyectar una redirección 302 a la página de inicio de sesión del portal.

NeverSSL es la solución alternativa manual recomendada cuando el dispositivo de un invitado no muestra automáticamente la página de inicio de sesión del captive portal. El personal de atención al público debe estar capacitado para dirigir a los invitados a esta URL como primer paso de resolución.

OpenRoaming (Passpoint/Hotspot 2.0)

Un estándar global de itinerancia WiFi desarrollado por la Wireless Broadband Alliance (WBA) que permite a los dispositivos autenticarse de forma automática y segura en las redes WiFi participantes utilizando un perfil de credenciales preinstalado, sin requerir interacción manual con un captive portal. La autenticación utiliza los protocolos WPA3-Enterprise y 802.1X.

OpenRoaming es la evolución a largo plazo más allá de los captive portals para el WiFi de invitados empresarial. Bajo la licencia Connect de Purple, Purple actúa como un proveedor de identidad gratuito para OpenRoaming, lo que permite a los invitados que regresan omitir por completo el captive portal en sus visitas posteriores.

Ejemplos prácticos

A 350-room city-centre hotel has deployed a Purple-powered guest WiFi network across all floors and public areas. The front desk is receiving 15-20 complaints per day from guests whose captive portal login page is not loading. The hotel uses Cisco Catalyst 9800 wireless controllers and a Cisco ISR 4331 router. Initial investigation shows the issue is most common on iPhones running iOS 17 and Android 13 devices. How should the network architect diagnose and resolve this?

Begin with a structured four-layer diagnostic. Layer 1 (DHCP): Log into the Cisco ISR 4331 and run show ip dhcp pool and show ip dhcp binding. Check the total number of active bindings against the pool size. If utilization exceeds 85%, the pool is near exhaustion. Reduce the lease time from the default 1 day to 1800 seconds (30 minutes) using ip dhcp pool GUEST_WIFI and lease 0 0 30. Layer 2 (DNS): On the Catalyst 9800, verify that the pre-authentication ACL (used for the captive portal SSID) permits UDP and TCP port 53 traffic to the assigned DNS servers. Run a packet capture on the guest VLAN interface to confirm DNS queries are being answered. Layer 3 (Walled Garden): Navigate to the Catalyst 9800 GUI under Configuration > Tags & Profiles > Policy. Inspect the URL Filter list associated with the guest SSID. Confirm that *.purple.ai, accounts.google.com, *.facebook.com, appleid.apple.com, and all associated CDN domains are included. Enable DNS snooping on the URL filter to allow wildcard domain resolution. Layer 4 (iOS-Specific): iOS 17 devices use captive.apple.com/hotspot-detect.html as their probe URL. Confirm the Catalyst 9800 is intercepting this HTTP request and returning an HTTP 302 redirect to the Purple portal FQDN (e.g., https://portal.purple.ai). Verify the Purple portal certificate is valid and not self-signed. If the redirect is going to the controller's local IP instead of the cloud portal FQDN, update the external redirect URL in the SSID configuration.

Comentario del examinador: This scenario is representative of the most common enterprise captive portal failure pattern: a combination of DHCP exhaustion in a high-density environment and an incomplete walled garden. The four-layer diagnostic approach is critical because symptoms are often identical across failure modes — the login page simply does not appear. Jumping straight to walled garden fixes without checking DHCP first is a common mistake that wastes significant time. The iOS-specific check is important because Apple's Captive Portal Assistant is stricter than Android's; it will refuse to render a portal page if the redirect target uses a self-signed certificate or if the portal FQDN is not resolvable via the assigned DNS server. An alternative approach for this deployment would be to enable RFC 8910 DHCP Option 114 on the ISR 4331, which would allow iOS 16+ and Android 12+ devices to detect the portal via the DHCP-advertised API URL, bypassing the DNS hijacking mechanism entirely and resolving the HSTS conflict at the root.

Un hotel de 350 habitaciones en el centro de la ciudad ha desplegado una red WiFi para invitados con tecnología Purple en todas las plantas y zonas comunes. La recepción recibe entre 15 y 20 quejas al día de huéspedes a los que no se les carga la página de inicio de sesión del Captive Portal. El hotel utiliza controladores inalámbricos Cisco Catalyst 9800 y un router Cisco ISR 4331. La investigación inicial muestra que el problema es más común en iPhones con iOS 17 y dispositivos Android 13. ¿Cómo debería el arquitecto de red diagnosticar y resolver esto?

Comience con un diagnóstico estructurado de cuatro capas. Capa 1 (DHCP): Inicie sesión en el Cisco ISR 4331 y ejecute show ip dhcp pool y show ip dhcp binding. Compruebe el número total de asignaciones activas frente al tamaño del pool. Si la utilización supera el 85%, el pool está casi agotado. Reduzca el tiempo de concesión (lease) del valor predeterminado de 1 día a 1800 segundos (30 minutos) utilizando ip dhcp pool GUEST_WIFI y lease 0 0 30. Capa 2 (DNS): En el Catalyst 9800, verifique que la ACL de preautenticación (utilizada para el SSID del Captive Portal) permite el tráfico de los puertos UDP y TCP 53 hacia los servidores DNS asignados. Realice una captura de paquetes en la interfaz VLAN de invitados para confirmar que se están respondiendo las consultas DNS. Capa 3 (Walled Garden): Navegue en la interfaz gráfica del Catalyst 9800 a Configuration > Tags & Profiles > Policy. Inspeccione la lista de URL Filter asociada al SSID de invitados. Confirme que se incluyen *.purple.ai, accounts.google.com, *.facebook.com, appleid.apple.com y todos los dominios CDN asociados. Habilite el DNS snooping en el filtro de URL para permitir la resolución de dominios con comodines. Capa 4 (Específico de iOS): Los dispositivos iOS 17 utilizan captive.apple.com/hotspot-detect.html como su URL de prueba. Confirme que el Catalyst 9800 está interceptando esta solicitud HTTP y devolviendo una redirección HTTP 302 al FQDN del portal de Purple (por ejemplo, https://portal.purple.ai). Verifique que el certificado del portal de Purple sea válido y no esté autofirmado. Si la redirección se dirige a la IP local del controlador en lugar de al FQDN del portal en la nube, actualice la URL de redirección externa en la configuración del SSID.

Comentario del examinador: Este escenario es representativo del patrón de fallo de Captive Portal empresarial más común: una combinación de agotamiento de DHCP en un entorno de alta densidad y un walled garden incompleto. El enfoque de diagnóstico de cuatro capas es fundamental porque los síntomas suelen ser idénticos en todos los modos de fallo (la página de inicio de sesión simplemente no aparece). Pasar directamente a las soluciones del walled garden sin comprobar primero el DHCP es un error común que hace perder mucho tiempo. La comprobación específica de iOS es importante porque el Asistente de Captive Portal de Apple es más estricto que el de Android; se negará a mostrar una página de portal si el destino de la redirección utiliza un certificado autofirmado o si el FQDN del portal no se puede resolver a través del servidor DNS asignado. Un enfoque alternativo para este despliegue sería habilitar la opción DHCP 114 de la RFC 8910 en el ISR 4331, lo que permitiría a los dispositivos iOS 16+ y Android 12+ detectar el portal a través de la URL de la API anunciada por DHCP, evitando por completo el mecanismo de secuestro de DNS y resolviendo el conflicto de HSTS en la raíz.

Una cadena de tiendas de distribución nacional con 120 establecimientos ha desplegado WiFi para invitados utilizando AP de Aruba Instant gestionados a través de Aruba Central. El equipo de marketing informa de que la opción de inicio de sesión social 'Iniciar sesión con Google' en el Captive Portal está fallando para aproximadamente el 30% de los invitados. La opción de inicio de sesión con correo electrónico normal funciona correctamente. El problema aparece de forma intermitente y es más común en las tiendas que han actualizado recientemente el firmware de sus AP de Aruba. ¿Cómo deberían investigarlo el equipo de red y de TI?

El fallo intermitente del inicio de sesión social mientras que el inicio de sesión por correo electrónico funciona es un problema clásico de cobertura de dominios en el walled garden, probablemente agravado por una actualización de firmware que restableció o alteró la ACL de preautenticación. Proceda de la siguiente manera. Paso 1 — Reproducir y capturar: En una tienda afectada, conecte un dispositivo de prueba al SSID de invitados e intente iniciar sesión con Google. Abra las herramientas de desarrollo del navegador (F12 > pestaña Red) antes de hacer clic en 'Iniciar sesión con Google'. Anote cualquier solicitud fallida; estas se mostrarán como entradas en rojo con códigos de estado como ERR_CONNECTION_REFUSED o ERR_NAME_NOT_RESOLVED. Estos dominios fallidos son las entradas que faltan en el walled garden. Paso 2 — Auditar el Walled Garden en Aruba Central: Inicie sesión en Aruba Central y navegue hasta la configuración del SSID para la red de invitados. Revise las entradas de Walled Garden / Whitelist. El flujo de OAuth de Google requiere como mínimo: accounts.google.com, ssl.gstatic.com, fonts.gstatic.com, www.gstatic.com, lh3.googleusercontent.com y oauth2.googleapis.com. Tras una actualización de firmware, es posible que Aruba Central haya vuelto a una configuración basada en plantillas que omitía algunas de estas entradas. Paso 3 — Habilitar DNS Snooping: En Aruba Central, habilite la lista blanca basada en DNS para el SSID de invitados. Esto permite al AP resolver dinámicamente y añadir a la lista blanca las direcciones IP devueltas para los dominios que coincidan con los patrones de comodines configurados (por ejemplo, *.google.com, *.gstatic.com). Esto es más resistente que la lista blanca de IP estáticas, ya que las IP de la CDN de Google cambian con frecuencia. Paso 4 — Validar y desplegar: Pruebe la solución en la tienda piloto, confirme que la tasa de éxito del inicio de sesión de Google alcanza el 95%+ y, a continuación, aplique la configuración actualizada a las 120 tiendas a través del despliegue de políticas de grupo de Aruba Central.

Comentario del examinador: Este escenario destaca un riesgo operativo crítico en despliegues empresariales a gran escala: las actualizaciones de firmware que restablecen silenciosamente las configuraciones de seguridad o de control de acceso. La clave del diagnóstico es que el inicio de sesión por correo electrónico funciona pero el inicio de sesión social falla; esto reduce inmediatamente la causa raíz al walled garden en lugar de a problemas de DHCP, DNS o certificados. El uso de las herramientas de desarrollo del navegador para identificar los dominios que faltan es una técnica práctica y de bajo coste que el personal de TI de primera línea puede utilizar sin necesidad de equipos de captura de paquetes. La recomendación de utilizar DNS snooping con patrones de comodines en lugar de listas blancas de IP estáticas es la solución correcta a largo plazo para los proveedores de identidad social basados en la nube, ya que sus rangos de IP no son estáticos y solo se documentan como bloques CIDR amplios. Para un análisis más detallado sobre el control de acceso a la red en entornos de retail, consulte la guía [10 Best Network Access Control (NAC) Solutions for 2026](/blog/best-network-access-control).

Preguntas de práctica

Q1. Un centro de conferencias que alberga un evento de 2.000 delegados informa que el 40% de los asistentes no logra que aparezca la página de inicio de sesión del WiFi de invitados en sus dispositivos. El evento comenzó hace 30 minutos. La infraestructura inalámbrica utiliza controladores Ruckus SmartZone. ¿Cuál es la causa raíz más probable y cuál es la resolución más rápida?

Sugerencia: Considera la escala del evento (2.000 conexiones simultáneas) y el tiempo transcurrido desde que comenzó. Piensa en qué recurso de red es más probable que se agote en los primeros 30 minutos de un evento de alta densidad.

Ver respuesta modelo

La causa raíz más probable es el agotamiento del pool de DHCP. Con 2.000 delegados intentando conectarse simultáneamente en un plazo de 30 minutos, el pool de direcciones DHCP para la VLAN de invitados casi con seguridad se ha agotado, especialmente si el tiempo de concesión (lease time) estaba configurado en el valor predeterminado de 8 o 24 horas. Los delegados que no pueden obtener una dirección IP no verán ninguna página de inicio de sesión porque la secuencia de detección del Captive Portal no puede comenzar sin una asignación de IP válida. La resolución más rápida es iniciar sesión en el controlador Ruckus SmartZone, navegar a la configuración del servidor DHCP para la VLAN de invitados y reducir el tiempo de concesión a 5-10 minutos para forzar la recuperación rápida de direcciones de los delegados que ya se han ido o desconectado. Además, verifica si el tamaño del pool de DHCP es suficiente para el número de usuarios concurrentes previsto: un pool de 254 direcciones (subred /24) es insuficiente para 2.000 delegados. Amplía el pool a una subred /22 o /21 (1.022 o 2.046 direcciones) si es posible. Como comprobación secundaria, verifica que la ACL de preautenticación en el SmartZone permita consultas DNS (puerto 53) desde clientes no autenticados, ya que el tráfico DNS de gran volumen a veces puede activar reglas de limitación de velocidad (rate-limiting).

Q2. El responsable de TI de un hotel recibe una queja de un huésped alojado en la habitación 412. El huésped afirma que la página de inicio de sesión de WiFi apareció brevemente, introdujo su dirección de correo electrónico y aceptó las condiciones, pero ahora se le pide que vuelva a iniciar sesión cada 10-15 minutos. Otros huéspedes de la misma planta no informan de este problema. El huésped utiliza un iPhone 15 con iOS 17. ¿Cuál es la causa y la resolución más probable?

Sugerencia: El problema es específico de un solo dispositivo e implica una reautenticación repetida a intervalos cortos. Considera qué hace iOS 17 por defecto con las direcciones MAC en las redes WiFi y cómo la puerta de enlace inalámbrica del hotel realiza el seguimiento de las sesiones autenticadas.

Ver respuesta modelo

La causa más probable es la aleatorización de direcciones MAC. iOS 14 y versiones posteriores activan la opción Dirección Wi-Fi privada de forma predeterminada, lo que hace que el iPhone presente una dirección MAC generada aleatoriamente a cada red. En iOS 17, la MAC aleatoria puede rotar periódicamente (aproximadamente cada 24 horas) o con cada nueva asociación de red. La puerta de enlace inalámbrica del hotel realiza el seguimiento de las sesiones de los huéspedes autenticados por dirección MAC; cuando la dirección MAC cambia, la puerta de enlace trata al dispositivo como un cliente nuevo no autenticado y bloquea el acceso a Internet, activando de nuevo el Captive Portal. La resolución para el huésped es desactivar la Dirección privada para el SSID del hotel: ir a Ajustes > Wi-Fi, tocar el icono (i) junto al SSID del hotel y desactivar Dirección Wi-Fi privada. El dispositivo se volverá a conectar con su dirección MAC de hardware y la sesión persistirá sin necesidad de reautenticarse repetidamente. Como mitigación a más largo plazo por parte del operador, el hotel debería considerar implementar la persistencia de sesión basada en la dirección IP (además de la MAC) o la transición a OpenRoaming/Passpoint para los huéspedes que regresan, lo que elimina por completo el problema de la reautenticación en el Captive Portal.

Q3. El equipo de TI de una cadena de tiendas ha configurado un nuevo Captive Portal utilizando Purple. El walled garden se ha configurado con el dominio del portal y los dominios de los principales proveedores de inicio de sesión social. Durante las pruebas, la página del portal se carga correctamente y la opción de inicio de sesión por correo electrónico funciona, pero cuando un evaluador hace clic en 'Iniciar sesión con Google', aparece brevemente una ventana emergente de inicio de sesión de Google y luego se cierra sin completar la autenticación. El evaluador utiliza un Samsung Galaxy S23 con Android 13 y el navegador Chrome. ¿Qué debería investigar el equipo de TI?

Sugerencia: La ventana emergente de Google aparece pero se cierra sin completarse; esto significa que la redirección inicial de OAuth a Google funciona, pero algo falla durante la devolución de llamada de autenticación o el intercambio de tokens. Considera qué dominios intervienen en el flujo completo de Google OAuth 2.0 más allá de accounts.google.com.

Ver respuesta modelo

El síntoma (que la ventana emergente de Google aparezca pero se cierre sin completarse) indica que la redirección inicial de OAuth a Google se está realizando correctamente (accounts.google.com está en el walled garden), pero se está bloqueando uno o más de los dominios posteriores de devolución de llamada de OAuth o de intercambio de tokens. El flujo de Google OAuth 2.0 para aplicaciones web implica múltiples dominios más allá de accounts.google.com. El equipo de TI debe abrir Chrome DevTools en el dispositivo de prueba (o utilizar un navegador de escritorio para simular el flujo), hacer clic en Iniciar sesión con Google y observar la pestaña Network para detectar cualquier solicitud fallida. Los dominios que suelen faltar son: oauth2.googleapis.com (endpoint de token), www.googleapis.com (llamadas API), ssl.gstatic.com y fonts.gstatic.com (CDN de Google para los recursos de la página de inicio de sesión) y lh3.googleusercontent.com (carga de la imagen de perfil, que puede hacer que la ventana emergente se cuelgue). Añade todos los dominios que falten identificados al walled garden en la configuración del controlador Aruba/Cisco/Ruckus, utilizando patrones de comodín (*.googleapis.com, *.gstatic.com) si el controlador admite DNS snooping. Vuelve a realizar la prueba después de cada adición para aislar el dominio de bloqueo específico. Una vez que el flujo completo de Google OAuth se complete con éxito, valida la solución tanto en dispositivos Android como iOS antes de implementarla en producción.