Pular para o conteúdo principal

OpenWrt Custom Firmware Integration with Purple WiFi

Este guia fornece o manual de integração completo para implantar o firmware personalizado OpenWrt com Purple WiFi. Ele abrange a configuração do Captive Portal CoovaChilli, gerenciamento de walled garden do iptables, WiFi seguro para funcionários 802.1X com hostapd e segmentação PPSK multilocatário com atribuição de VLAN dinâmica - fornecendo às equipes de TI as etapas exatas de configuração necessárias para criar uma rede baseada em identidade em qualquer hardware compatível com OpenWrt.

📖 9 min de leitura📝 2,146 palavras🔧 2 exemplos práticos4 questões práticas📚 10 definições principais

Ouça este guia

Ver transcrição do podcast
[0:00 - 1:00] Introdução e Contexto Bem-vindo ao Purple Technical Briefing. Eu sou o seu anfitrião e, nos próximos dez minutos, vamos detalhar a integração do firmware personalizado OpenWrt com o Purple WiFi. Se você é um gerente de TI, arquiteto de rede ou CTO implantando firmware personalizado em ambientes de hospitalidade, varejo ou setor público, este briefing é para você. Vamos deixar de lado a teoria acadêmica e fornecer o manual exato para configurar o CoovaChilli, proteger redes corporativas com 802.1X e segmentar ambientes multi-tenant usando Private Pre-Shared Keys. Por que isso importa? Porque implantar um firmware personalizado como o OpenWrt oferece uma flexibilidade incrível e independência de hardware. Mas sem uma camada de controle de acesso estruturada e orientada por identidade, essa flexibilidade se torna um risco de segurança. Você precisa capturar dados proprietários de forma segura, garantir a conformidade com a GDPR e segmentar seu tráfego com confiabilidade. Vamos entrar no detalhamento técnico. [1:00 - 6:00] Detalhamento Técnico O núcleo da integração com o OpenWrt depende do CoovaChilli. O CoovaChilli é o controlador de acesso de código aberto que intercepta o tráfego de clientes não autenticados e o redireciona para o Captive Portal da Purple. Quando um visitante se conecta ao seu SSID aberto, o CoovaChilli atua como o guardião. Ele atribui um endereço IP por meio de seu próprio servidor DHCP interno, em execução na interface tun0, e bloqueia todo o tráfego, exceto o que você permitir explicitamente no walled garden. Quando o visitante tenta navegar, o CoovaChilli intercepta a solicitação HTTP e emite um redirecionamento para a splash page da Purple. É aqui que a configuração do walled garden é crítica. No seu arquivo chilli.conf, você deve definir o parâmetro HS_UAMDOMAINS. Esta é uma lista separada por vírgulas de domínios que os visitantes podem acessar antes de se autenticarem. Você deve incluir splash.purple.ai, api.purple.ai e os diversos domínios de CDN que usamos para servir os recursos do portal. Se você esquecer de um domínio, o portal falhará ao carregar ou os botões de login social não funcionarão. É simples assim. Assim que o visitante se autentica no portal da Purple, o servidor RADIUS na nuvem da Purple envia uma mensagem Access-Accept de volta para o CoovaChilli na porta UDP 1812. O CoovaChilli então autoriza o endereço MAC, abre as regras de firewall para essa sessão e começa a enviar dados de contabilidade na porta UDP 1813. A contabilidade não é opcional. É assim que a Purple rastreia a duração da sessão e o uso de dados para o seu painel de analytics. Agora, vamos falar sobre o WiFi de funcionários. Você não usa o CoovaChilli para funcionários. Para redes de funcionários, você usa o hostapd com WPA2-Enterprise ou WPA3-Enterprise. Esta é a autenticação padrão 802.1X. O ponto de acesso atua como o autenticador, encaminhando mensagens EAP para o seu servidor RADIUS. Para dispositivos corporativos, você deve implantar EAP-TLS, que usa certificados digitais em vez de senhas. Isso elimina completamente o roubo de credenciais. Você configura o hostapd.conf para apontar para o seu servidor RADIUS, e o servidor RADIUS dita a atribuição de VLAN para aquele usuário específico. Isso nos leva a um dos recursos mais poderosos em implantações modernas do OpenWrt: Private Pre-Shared Keys, ou PPSK. Em um ambiente de múltiplos inquilinos — digamos, um imóvel para locação residencial ou um espaço de coworking — você não quer cinquenta SSIDs diferentes transmitindo. Isso arruína a eficiência do seu tempo de transmissão. Em vez disso, você transmite um único SSID. Quando um dispositivo se conecta, o hostapd envia o endereço MAC para o servidor RADIUS. O servidor RADIUS responde com uma senha específica e um ID de VLAN específico para aquele dispositivo, usando o atributo Tunnel-Password. Isso significa que o funcionário do varejo na loja A é direcionado para a VLAN 10, enquanto o participante do evento no salão principal é direcionado para a VLAN 30, todos se conectando exatamente ao mesmo SSID. É elegante, escala e impõe o acesso de menor privilégio na borda. [6:00 - 8:00] Recomendações de Implementação e Armadilhas Vamos discutir a implementação. Ao implantar o OpenWrt com a Purple, seu primeiro passo é sempre recuperar suas credenciais RADIUS no portal da Purple. Você precisa dos endereços IP primário e secundário do RADIUS, do segredo compartilhado (shared secret) e da URL do portal. Na sua configuração do OpenWrt, você definirá a interface da sua rede de convidados — normalmente eth1 ou wlan0 — e vinculará o CoovaChilli a ela. Certifique-se de que o HS_RADSECRET no seu chilli.conf corresponda exatamente ao que está no portal da Purple. Uma divergência de um único caractere causará falhas silenciosas de autenticação. A maior armadilha que vemos é a resolução de DNS pré-autenticação. O CoovaChilli intercepta as requisições de DNS. Se o seu firewall upstream bloquear o roteador OpenWrt de resolver DNS externo, o redirecionamento do Captive Portal falhará. Certifique-se de que o seu roteador OpenWrt tenha acesso irrestrito de DNS a resolvedores públicos como Google ou OpenDNS. Outro problema comum são os mecanismos de detecção de Captive Portal integrados no iOS e Android. Os dispositivos Apple tentam acessar captive.apple.com para verificar a conectividade com a internet. Se você colocar captive.apple.com na lista de permissões (walled garden), o dispositivo pensará que tem acesso à internet e não exibirá o assistente de rede cativa automaticamente. Se você deseja o pop-up automático, mantenha os domínios da Apple fora do seu walled garden. [8:00 - 9:00] Perguntas e Respostas Rápidas Vamos para uma sessão rápida de perguntas e respostas. Pergunta um: Posso executar o CoovaChilli e o hostapd 802.1X no mesmo ponto de acesso OpenWrt? Sim. Você vincula o CoovaChilli à interface do seu SSID de convidados e configura o hostapd com 802.1X na interface do seu SSID de funcionários. Eles operam de forma independente. Pergunta dois: O Purple suporta atribuição dinâmica de VLAN com OpenWrt? Sim. Os servidores RADIUS do Purple podem retornar atributos RADIUS padrão, incluindo Tunnel-Type, Tunnel-Medium-Type e Tunnel-Private-Group-ID, instruindo o OpenWrt a direcionar o usuário autenticado para uma VLAN específica. Pergunta três: O que acontece se o roteador OpenWrt perder a conexão com o servidor RADIUS do Purple? O CoovaChilli falhará ao autenticar novas sessões. As sessões autorizadas existentes permanecerão ativas até que o tempo limite da sessão expire. Sempre configure o servidor RADIUS secundário do Purple para garantir alta disponibilidade. [9:00 - 10:00] Resumo e Próximos Passos Para resumir: O OpenWrt oferece uma plataforma robusta e agnóstica de hardware para WiFi corporativo. Ao integrar o CoovaChilli para acesso de visitantes e o hostapd para equipe segura e PPSK multi-tenant, você constrói uma Rede Baseada em Identidade. O Purple abstrai a complexidade da infraestrutura RADIUS, oferecendo um portal gerenciado na nuvem que captura dados primários e garante a conformidade. Seu próximo passo é auditar suas implantações atuais de firmware personalizado. Certifique-se de que seus walled gardens estejam totalmente preenchidos, verifique seus intervalos de contabilização RADIUS e comece a planejar sua migração de PSKs compartilhados para a segmentação dinâmica de PPSK. Obrigado por ouvir o Informativo Técnico do Purple. Para saber mais sobre como o Purple pode proteger e monetizar seu WiFi de visitantes, visite purple.ai. Até a próxima.

header_image.png

Resumo executivo

O OpenWrt é o firmware de escolha para equipes de TI que precisam de independência de hardware sem sacrificar o controle de classe empresarial. Implantado em ambientes de hospitalidade, varejo e setor público, ele fornece uma pilha de rede baseada em Linux totalmente configurável. Mas, pronto para uso, o OpenWrt é uma tela em branco. Sem uma camada de identidade estruturada, as redes de convidados tornam-se incontroláveis, as redes de funcionários permanecem inseguras e os ambientes multi-tenant entram em colapso em uma única rede plana.

Este guia fornece o roteiro definitivo de integração para conectar o OpenWrt ao RADIUS em nuvem e à plataforma de Captive Portal da Purple. Cobrimos quatro cenários distintos de implantação: redirecionamento de Captive Portal de convidados usando CoovaChilli, configuração de walled garden por iptables, WiFi seguro para funcionários usando hostapd com IEEE 802.1X e segmentação multi-tenant usando Private Pre-Shared Keys (PPSK) com atribuição dinâmica de VLAN. Ao final, você terá os parâmetros exatos de configuração, os modos de falha comuns e as estruturas de decisão necessárias para implantar uma rede orientada por identidade, pronta para produção e em conformidade com a GDPR em qualquer hardware compatível com OpenWrt.

A Purple opera em mais de 80.000 locais ativos e processou 440 milhões de logins em 2024 (dados internos da Purple, 2024). A arquitetura descrita aqui é a mesma implantada em grande escala em redes de hospitalidade, redes de varejo e hubs de transporte.

Aprofundamento técnico

A arquitetura do Captive Portal CoovaChilli

Ao implantar o Guest WiFi no OpenWrt, o CoovaChilli é o controlador de acesso padrão do setor. Ele opera como um daemon de Captive Portal que intercepta o tráfego de clientes não autenticados, fornece endereços IP por meio de seu servidor DHCP interno na interface virtual tun0 e impõe políticas de walled garden usando regras de iptables que ele gerencia diretamente.

O fluxo de autenticação funciona da seguinte forma. Um dispositivo de convidado se associa ao SSID aberto. O CoovaChilli atribui ao dispositivo um endereço IP de seu pool interno (normalmente 10.1.0.0/24). Quando o dispositivo envia sua primeira solicitação HTTP, o CoovaChilli a intercepta e emite um redirecionamento HTTP 302 para a URL da splash page da Purple. Durante esta fase de pré-autenticação, o dispositivo fica isolado - ele só pode alcançar os domínios listados explicitamente no walled garden.

Assim que o visitante se autentica no portal Purple, o servidor RADIUS na nuvem da Purple envia uma mensagem Access-Accept para o CoovaChilli na porta UDP 1812. O CoovaChilli então atualiza suas regras de iptables para permitir o acesso à internet para aquele endereço MAC específico e começa a transmitir dados de bilhetagem (duração da sessão, bytes transferidos) para o servidor de bilhetagem RADIUS da Purple na porta UDP 1813. A bilhetagem não é opcional - é o mecanismo pelo qual a Purple alimenta o seu painel de WiFi Analytics com dados de sessão.

architecture_overview.png

Walled garden: iptables e listas de permissões de domínio

O walled garden é o elemento de configuração mais crítico operacionalmente em qualquer implantação de Captive Portal. O CoovaChilli gerencia o walled garden por meio de dois mecanismos: o parâmetro uamallowed para endereços IP individuais e o parâmetro uamdomains para listas de permissões baseadas em domínio com inspeção de DNS.

Para uma integração com a Purple, as entradas mínimas obrigatórias de walled garden são:

Domínio Finalidade
*.purple.ai Recursos do portal, API e endpoints de autenticação
*.googleapis.com Google Fonts e Google Sign-In
*.gstatic.com Verificação de conectividade do Google e recursos estáticos
*.facebook.com API de login do Facebook
*.fbcdn.net CDN do Facebook para recursos de login
captive.apple.com Detecção de CNA da Apple (consulte a observação abaixo)
connectivitycheck.gstatic.com Detecção de Captive Portal do Android

Observação sobre o gerenciamento de CNA da Apple: Se você incluir captive.apple.com no walled garden, os dispositivos iOS detectarão a conectividade com a internet antes da autenticação e suprimirão a janela pop-up do Captive Network Assistant. A maioria das implantações de hospitalidade exclui intencionalmente esse domínio para acionar o prompt automático do portal. A escolha correta depende do design da experiência do seu visitante.

WiFi seguro para funcionários: hostapd e IEEE 802.1X

Redes de visitantes exigem uma integração sem atrito. Redes de funcionários exigem segurança absoluta. Para usuários internos, o OpenWrt usa o hostapd para facilitar a autenticação IEEE 802.1X. Nesta arquitetura, o ponto de acesso OpenWrt atua como o Autenticador, encaminhando mensagens do Protocolo de Autenticação Extensível (EAP) entre o dispositivo cliente (Suplicante) e o servidor RADIUS da Purple.

Para dispositivos corporativos, o EAP-TLS é o padrão obrigatório. Ele depende de autenticação mútua de certificados - tanto o servidor quanto o dispositivo cliente apresentam certificados digitais - eliminando totalmente as senhas e os riscos associados de roubo de credenciais ou phishing. Para ambientes que ainda não estão prontos para uma Infraestrutura de Chaves Públicas (ICP) completa, o PEAP-MSCHAPv2 oferece uma opção provisória razoável, usando um túnel criptografado para proteger as credenciais de usuário e senha.

When a staff member authenticates successfully, the RADIUS server returns authorization attributes. The key attribute for network segmentation is Tunnel-Private-Group-ID, which instructs OpenWrt to dynamically assign the user to the correct VLAN. This is the mechanism behind Identity-Based Networks: the user's identity, not their physical location, determines their network access.

Multi-tenant segmentation: OpenWrt PPSK configuration

In multi-tenant environments - coworking spaces, build-to-rent (BTR) properties, retail centres with multiple vendors, or stadiums with separate sponsor zones - broadcasting multiple SSIDs is operationally expensive and RF-inefficient. Each additional SSID adds management frame overhead, reducing available airtime for data traffic.

Private Pre-Shared Keys (PPSK), sometimes called dynamic PSK, solve this. You broadcast a single SSID. When a device attempts to connect, hostapd sends the device's MAC address to the RADIUS server via a standard Access-Request. The RADIUS server validates the MAC address against its database and returns an Access-Accept containing two critical attributes: the Tunnel-Password attribute (the unique passphrase for that device) and the Tunnel-Private-Group-ID attribute (the VLAN assignment). The device connects using its unique passphrase and is placed directly onto its assigned VLAN.

This means a retail manager and an event attendee can connect to the identical SSID but be routed to entirely separate, isolated networks based on their unique identity.

ppsk_multitenant_diagram.png

Implementation guide

Step 1: Retrieve Purple RADIUS credentials

Before touching the OpenWrt configuration, retrieve the following from the Purple portal admin console:

  • Primary RADIUS Server IP address
  • Secondary RADIUS Server IP address (for failover)
  • RADIUS Shared Secret
  • Captive Portal Splash Page URL
  • Post-authentication redirect URL

Step 2: Install and configure CoovaChilli for guest WiFi

Install the coova-chilli package via opkg:

opkg update && opkg install coova-chilli

The primary configuration file is /etc/chilli/defaults. Define the core network parameters:

# Network interfaces
HS_WANIF=eth0           # Upstream internet interface
HS_LANIF=wlan0          # The guest WiFi interface (or a VLAN sub-interface)

# Guest subnet
HS_NETWORK=10.10.20.0
HS_NETMASK=255.255.255.0
HS_UAMLISTEN=10.10.20.1 # CoovaChilli's IP on the guest network
HS_UAMPORT=3990

# Purple RADIUS integration
HS_RADIUS=
HS_RADIUS2=
HS_RADSECRET=
HS_NASID=venue-openwrt-01

# Purple splash page
HS_UAMSERVER=

# Walled garden - domain-based allowlisting
HS_UAMDOMAINS=".purple.ai,.googleapis.com,.gstatic.com,.facebook.com,.fbcdn.net"

Habilite e inicie o serviço:

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

Passo 3: Configurar a interface wireless do OpenWrt para o SSID de visitantes

Em /etc/config/wireless, defina o SSID de visitantes como uma rede aberta vinculada à interface que o CoovaChilli irá gerenciar:

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

O isolamento de clientes (isolate '1') impede que os dispositivos dos visitantes se comuniquem entre si - um controle de segurança obrigatório para qualquer rede compartilhada.

Passo 4: Configurar o hostapd para WiFi corporativo (staff) 802.1X

Para o SSID corporativo, configure o WPA2-Enterprise em /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'

A configuração dynamic_vlan '2' instrui o hostapd a impor a atribuição de VLAN retornada pelo servidor RADIUS e a rejeitar a autenticação se nenhuma VLAN for retornada.

Requisito de pacote: O pacote padrão wpad-mini não suporta WPA2-Enterprise. Você deve instalar o wpad ou wpad-openssl:

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

Passo 5: Configurar PPSK para segmentação multi-tenant

O PPSK exige que o hostapd realize a autenticação de endereço MAC no servidor RADIUS, que então retorna a senha por dispositivo. Em /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'

O parâmetro wpa_psk_radius '2' instrui o hostapd a exigir o atributo Tunnel-Password da resposta do RADIUS. Se o servidor RADIUS não retornar uma senha, a autenticação é rejeitada.

No lado do RADIUS da Purple, a seção authorize da sua configuração do FreeRADIUS (or equivalente) mapeia endereços MAC para senhas e IDs de VLAN:

# Exemplo de entrada de autorização RADIUS 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"

Passo 6: Configurar atribuição dinâmica de VLAN

Para que a atribuição dinâmica de VLAN funcione, seu switch OpenWrt deve ser configurado para transportar as VLANs relevantes como tráfego marcado (tagged) na porta de tronco que se conecta ao seu switch principal. Em /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'

Certifique-se de que a porta do seu switch principal esteja configurada como tronco, passando as VLANs 10, 20 e 30 como marcadas (tagged).

Melhores práticas

Segregação absoluta de rede. Nunca faça bridge de interfaces de convidados com redes internas. O tráfego de convidados deve ser isolado em uma VLAN dedicada e roteado diretamente para o firewall da internet. Este é um requisito não negociável para a conformidade com o PCI DSS 4.0, que exige que as redes WiFi de convidados sejam completamente isoladas de qualquer segmento de rede que manipule dados de portadores de cartão.

Precisão do walled garden. Um walled garden incompleto é a principal causa de falhas no Captive Portal. Use as ferramentas de desenvolvedor do seu navegador em um dispositivo de teste conectado ao SSID de convidados para identificar quais requisições estão bloqueadas antes da autenticação. Cada domínio bloqueado é uma falha potencial do portal.

Intervalos de bilhetagem RADIUS. Configure o intervalo intermediário de bilhetagem do CoovaChilli para 120 segundos. Isso fornece dados de sessão quase em tempo real no painel de analytics da Purple sem gerar tráfego RADIUS excessivo.

Servidor RADIUS secundário. Sempre configure o HS_RADIUS2 em sua configuração do CoovaChilli. Se o servidor RADIUS principal da Purple estiver inacessível, o CoovaChilli falhará ao autenticar novas sessões. O servidor secundário fornece failover automático sem a necessidade de alteração de configuração no ponto de acesso.

Seleção de pacotes. O pacote wpad-mini incluído em muitas compilações do OpenWrt não suporta WPA2-Enterprise ou atribuição dinâmica de VLAN. Sempre instale o wpad-openssl para qualquer implantação que exija 802.1X ou PPSK.

Para mais orientações sobre arquitetura de segurança WiFi corporativa, consulte nosso Enterprise WiFi Security: A Complete Guide for 2026 .

Solução de problemas e mitigação de riscos

Sintoma Causa Provável Resolução
O portal não carrega após o redirecionamento Walled garden incompleto Adicione os domínios de CDN/API ausentes ao HS_UAMDOMAINS
Falha silenciosa na autenticação Incompatibilidade do segredo compartilhado do RADIUS Verifique se o HS_RADSECRET corresponde exatamente no CoovaChilli e no portal Purple
Sem dados no Purple analytics Bilhetagem RADIUS bloqueada Verifique se a saída UDP 1813 é permitida; verifique a configuração de bilhetagem do HS_RADIUS2
iOS não exibe o pop-up do portal captive.apple.com no walled garden Remova os domínios de detecção da Apple do HS_UAMDOMAINS
Clientes PPSK entram na VLAN errada vlan_tagged_interface desconfigurada Verifique a configuração da porta de tronco no OpenWrt e no switch principal
Falha na autenticação 802.1X com erro de wpad wpad-mini instalado Remova o wpad-mini e instale o wpad-openssl
Dynamic VLAN fails on ath10k Known driver issue in older builds Update to OpenWrt 21.02 or later; use non-CT ath10k firmware

GDPR compliance note: CoovaChilli itself does not capture or store personal data. All consent capture, data processing, and GDPR compliance mechanisms are handled by the Purple platform at the portal layer. Ensure your Purple portal is configured with your venue's terms and conditions and data processing notice before go-live.

For related hardware integration patterns, see our guides on EnGenius Cloud Access Points Integration with Purple WiFi and DrayTek Vigor Routers and Access Points Integration with Purple WiFi .

ROI & business impact

Transitioning from basic PSK networks to a Purple-managed OpenWrt architecture delivers measurable impact across three dimensions.

Data capture and marketing. By enforcing Captive Portal authentication, venues capture compliant, first-party demographic data - names, email addresses, social profiles - at the point of WiFi connection. This data feeds directly into CRM and email marketing platforms, driving loyalty programme sign-ups and enabling targeted campaigns. Purple has processed 440 million logins in 2024 (Purple internal data), demonstrating the scale of first-party data capture possible at the network edge.

Operational efficiency. Implementing PPSK reduces SSID overhead, improving WiFi performance in dense environments. For a 200-location retail chain, centrally managing identity via Purple's cloud RADIUS - rather than updating local router configurations at each site - saves hundreds of engineering hours annually. A single RADIUS policy change propagates to all 200 locations instantly.

Security and compliance. Dynamic VLAN assignment enforces least-privilege access at the edge. Staff are isolated from guests. IoT devices are isolated from staff. POS terminals are isolated from all other traffic. This segmentation satisfies PCI DSS 4.0 network isolation requirements and provides a clear, auditable network topology for GDPR compliance reviews.

For vertical-specific deployment patterns, see our guides for Retail , Hospitality , Healthcare , and Transport environments. You may also find our guide on What Is Wireless Display: Protocols & Best Practices 2026 useful for understanding complementary wireless technologies in venue deployments.

Definições principais

CoovaChilli

Um controlador de acesso de software de código aberto que fornece um Captive Portal e ambiente de walled garden para redes sem fio, usando RADIUS para autenticação e bilhetagem (accounting).

As equipes de TI implantam o CoovaChilli no OpenWrt para interceptar o tráfego HTTP de visitantes e redirecioná-lo para a splash page da Purple. Ele gerencia as regras de iptables que aplicam o walled garden e concedem acesso à internet pós-autenticação.

Walled garden

Uma lista de permissões (allowlist) rigorosa de endereços IP ou domínios que um usuário não autenticado pode acessar antes de concluir a autenticação no Captive Portal.

Crítico para permitir que os dispositivos dos visitantes carregem os elementos gráficos do portal da Purple e acessem as APIs de login de redes sociais, bloqueando o acesso geral à internet. Um walled garden incompleto é a causa mais comum de falhas no Captive Portal.

PPSK (Private Pre-Shared Key)

Um mecanismo de segurança onde senhas exclusivas são atribuídas a usuários ou dispositivos individuais para o mesmo SSID de WiFi, com o RADIUS retornando a senha correta e a atribuição de VLAN por endereço MAC do dispositivo.

Usado para segmentar ambientes multi-inquilino (multi-tenant) sem transmitir múltiplos SSIDs. Suportado no OpenWrt através do parâmetro wpa_psk_radius no hostapd.

Dynamic VLAN assignment

O processo em que um servidor RADIUS instrui o ponto de acesso a colocar um usuário autenticado específico em uma VLAN virtual específica, usando os atributos RADIUS Tunnel-Type, Tunnel-Medium-Type e Tunnel-Private-Group-ID.

O mecanismo central para Redes Baseadas em Identidade. A identidade do usuário, e não sua porta física, determina seu segmento de rede e direitos de acesso.

IEEE 802.1X

O padrão IEEE para controle de acesso à rede baseado em porta, definindo as funções de Autenticador (ponto de acesso), Suplicante (dispositivo cliente) e Servidor de Autenticação (RADIUS) na autenticação WiFi corporativa.

O protocolo subjacente para WiFi seguro de funcionários no OpenWrt. Requer o pacote completo wpad ou wpad-openssl - o wpad-mini não possui suporte para isso.

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

Um método de autenticação 802.1X que usa autenticação mútua baseada em certificados, exigindo que tanto o servidor RADIUS quanto o dispositivo cliente apresentem certificados digitais válidos.

O padrão ouro para autenticação de dispositivos corporativos. Elimina totalmente as senhas, neutralizando o roubo de credenciais e ataques de phishing. Requer uma infraestrutura PKI para emitir certificados de clientes.

Captive Network Assistant (CNA)

O pseudo-navegador que dispositivos iOS e Android exibem automaticamente quando detectam que estão atrás de um Captive Portal, com base na sondagem de URLs de detecção específicas.

Os engenheiros de rede devem gerenciar seus walled gardens com cuidado para controlar se o CNA é ativado automaticamente. A maioria das implantações de hotelaria exclui domínios de detecção da Apple e do Google para forçar a exibição do pop-up do CNA.

RADIUS accounting

O terceiro pilar da estrutura AAA (Autenticação, Autorização e Auditoria/Accounting), rastreando o consumo de recursos de rede ao registrar eventos de início, atualizações provisórias e término de sessão na porta UDP 1813.

Necessário para que a Purple preencha o painel de análise com dados de duração da sessão e largura de banda. Configurado no CoovaChilli através do HS_RADIUS2 e do parâmetro radiusacctport.

hostapd

O daemon de ponto de acesso IEEE 802.11 de código aberto usado pelo OpenWrt para gerenciar interfaces sem fio, com suporte aos modos de autenticação WPA2/WPA3-Enterprise, 802.1X e PPSK.

O daemon central para WiFi de funcionários e PPSK no OpenWrt. O pacote wpad-openssl fornece a compilação hostapd completa necessária para autenticação corporativa.

Tunnel-Password attribute

Um atributo RADIUS (atributo 69) usado em implantações PPSK para retornar uma senha por dispositivo do servidor RADIUS para o ponto de acesso durante a autenticação MAC.

O mecanismo pelo qual o servidor RADIUS da Purple entrega PSKs exclusivas ao daemon hostapd do OpenWrt para segmentação multi-inquilino baseada em PPSK.

Exemplos práticos

Um hotel de 200 quartos precisa fornecer acesso WiFi em camadas: internet básica gratuita para hóspedes, acesso de alta velocidade para membros do programa de fidelidade e acesso seguro para dispositivos de ponto de venda (POS) dos funcionários. A equipe de TI deseja minimizar a sobrecarga de SSID e impor o isolamento de rede PCI DSS entre os terminais POS e o tráfego de hóspedes.

Implante pontos de acesso OpenWrt transmitindo dois SSIDs: 'Hotel_Guest' (aberto, gerenciado pelo CoovaChilli) e 'Hotel_Secure' (gerenciado por PPSK via hostapd). Em 'Hotel_Guest', o CoovaChilli redireciona todo o tráfego não autenticado para a splash page da Purple. Os hóspedes se autenticam por meio do portal e entram na VLAN 20 (apenas internet). Em 'Hotel_Secure', configure o hostapd com wpa_psk_radius=2. Quando o dispositivo de um membro do programa de fidelidade se conecta, o servidor RADIUS retorna sua PSK exclusiva e a VLAN 21 (camada de maior largura de banda). Quando um terminal POS se conecta, o servidor RADIUS retorna a PSK do dispositivo POS e a VLAN 10 (acesso à rede interna, internet bloqueada). A segmentação de VLAN impõe o isolamento PCI DSS entre os dados do portador do cartão (VLAN 10) e o tráfego de hóspedes (VLANs 20 e 21) no nível do ponto de acesso.

Comentário do examinador: Esta arquitetura usa dois SSIDs em vez de um para separar o fluxo do Captive Portal (hóspedes) do fluxo PPSK (funcionários e fidelidade). Essa é a abordagem correta porque o CoovaChilli e o PPSK do hostapd atendem a modelos de autenticação fundamentalmente diferentes. Combiná-los em um único SSID exige uma configuração de proxy RADIUS que adiciona complexidade desnecessária. O modelo de dois SSIDs é mais simples, mais confiável e mais fácil de auditar para conformidade com o PCI DSS.

Uma rede de varejo está implantando roteadores OpenWrt em 50 locais. Durante o UAT no primeiro local, a splash page da Purple carrega corretamente após o redirecionamento, mas clicar no botão de login do Facebook resulta em um tempo limite de conexão (timeout). O botão do Google Sign-In funciona corretamente.

O problema é um walled garden incompleto do CoovaChilli. O fluxo de autenticação do Facebook requer acesso a múltiplos domínios: facebook.com, connect.facebook.net e fbcdn.net (CDN do Facebook para recursos de login). O Google Sign-In funciona porque googleapis.com e gstatic.com já estão no walled garden. Atualize o parâmetro HS_UAMDOMAINS em /etc/chilli/defaults para adicionar '.facebook.com,.connect.facebook.net,.fbcdn.net'. Recarregue o daemon do chilli com '/etc/init.d/chilli restart' e teste novamente. Para diagnosticar futuros problemas de walled garden sistematicamente, conecte um dispositivo de teste ao SSID de hóspedes e use as ferramentas de desenvolvedor do navegador (guia Rede) para identificar quais solicitações retornam erros de conexão antes da autenticação.

Comentário do examinador: Os fluxos modernos de login social carregam recursos de múltiplos domínios de CDN e API. O SDK do Facebook por si só faz referência a pelo menos três domínios distintos. Uma abordagem sistemática para depuração de walled garden - usando ferramentas de desenvolvedor do navegador para identificar solicitações pré-autenticação bloqueadas - é muito mais confiável do que tentar adivinhar listas de domínios. Antes de entrar em operação em todos os 50 locais, o engenheiro deve testar todos os métodos de autenticação configurados (Facebook, Google, e-mail, SMS) e verificar se cada um é concluído com sucesso.

Questões práticas

Q1. Você implantou o OpenWrt com CoovaChilli em uma propriedade Premier Inn. Os hóspedes relatam que seus iPhones não exibem automaticamente a tela de login ao se conectarem ao WiFi de convidados. Eles precisam abrir manualmente o Safari e navegar até um site HTTP para acionar o portal. Qual alteração de configuração causa isso e como você resolve o problema?

Dica: Considere como o iOS determina se uma rede possui acesso total à internet após a associação.

Ver resposta modelo

O engenheiro incluiu o domínio de detecção de Captive Portal da Apple (captive.apple.com) no walled garden do CoovaChilli via HS_UAMDOMAINS. Quando um iPhone se conecta, o iOS envia uma sonda para captive.apple.com. Como este domínio está no walled garden, a sonda é bem-sucedida antes da autenticação, e o iOS conclui que tem acesso total à internet - suprimindo o pop-up do Captive Network Assistant. Para resolver isso, remova captive.apple.com de HS_UAMDOMAINS e reinicie o daemon do chilli. Os dispositivos iOS receberão uma resposta de sonda com falha, identificarão corretamente o Captive Portal e exibirão a tela de login automaticamente.

Q2. Um operador de espaço de coworking deseja implantar termostatos inteligentes de IoT em suas propriedades. Eles já transmitem um SSID 'Cowork_Guest' (CoovaChilli) e um SSID 'Cowork_Staff' (802.1X). Os termostatos não suportam WPA2-Enterprise. Como você os integra de forma segura sem adicionar um terceiro SSID?

Dica: Dispositivos IoT normalmente suportam apenas WPA2-PSK. Considere qual SSID existente pode ser estendido para suportar senhas por dispositivo.

Ver resposta modelo

Configure PPSK no SSID 'Cowork_Staff' habilitando wpa_psk_radius=2 na configuração do hostapd. Registre o endereço MAC de cada termostato no servidor RADIUS da Purple com uma senha exclusiva e VLAN 40 (VLAN IoT) como o Tunnel-Private-Group-ID. Quando um termostato se conecta, o hostapd consulta o servidor RADIUS com o MAC do dispositivo, recebe o PSK exclusivo e a atribuição de VLAN, e coloca o termostato na VLAN 40 - totalmente isolado do tráfego de funcionários na VLAN 10. Essa abordagem evita um terceiro SSID, mantém a eficiência de RF e impõe o acesso de menor privilégio para dispositivos IoT sem exigir infraestrutura de certificados 802.1X.

Q3. Após a implantação do OpenWrt com CoovaChilli em um estabelecimento comercial, o painel de análise da Purple exibe zero sessões ativas e nenhum dado de largura de banda, apesar de os hóspedes conseguirem se conectar e navegar na internet com sucesso. Qual é a causa mais provável e quais são as duas etapas para diagnosticá-la?

Dica: Autenticação (porta 1812) e tarifação (accounting) (porta 1813) são funções RADIUS separadas.

Ver resposta modelo

A configuração de accounting do RADIUS está ausente ou bloqueada. Etapa 1: Verifique a configuração do CoovaChilli. Certifique-se de que HS_RADIUS e HS_RADIUS2 estão definidos corretamente em /etc/chilli/defaults, e confirme se a porta radiusacctport está definida como 1813. Se HS_RADIUS2 não estiver configurado, não há servidor de accounting definido. Etapa 2: Verifique as regras de firewall. Confirme se o tráfego de saída da porta UDP 1813 do roteador OpenWrt para os IPs do servidor RADIUS da Purple é permitido pelo firewall de borda do estabelecimento. Use 'tcpdump -i eth0 udp port 1813' no dispositivo OpenWrt para confirmar se os pacotes de accounting estão sendo enviados. Se os pacotes aparecerem no tcpdump mas o painel continuar vazio, o problema é um firewall bloqueando o tráfego entre o roteador e os servidores RADIUS na nuvem da Purple.

Q4. Uma implantação do OpenWrt em um estádio usa atribuição dinâmica de VLAN via RADIUS para segmentar o WiFi de torcedores (VLAN 30), imprensa (VLAN 40) e operações (VLAN 50). Após atualizar os pontos de acesso para um novo hardware executando OpenWrt 19.07 com drivers ath10k, a atribuição de VLAN deixa de funcionar. Todos os usuários autenticados caem na VLAN padrão, independentemente dos atributos RADIUS. Qual é a causa conhecida?

Dica: Considere o suporte em nível de driver para o modo AP/VLAN no ath10k.

Ver resposta modelo

Esta é uma regressão conhecida no firmware ath10k-ct (Candela Technologies) incluído no OpenWrt 19.07. O driver ath10k-ct nesta versão possui um bug que quebra o modo AP/VLAN, impedindo que a atribuição dinâmica de VLAN funcione. A solução é atualizar para o OpenWrt 21.02 ou posterior, onde o driver ath10k-ct foi atualizado para restaurar a funcionalidade AP/VLAN. Como alternativa, substitua o firmware ath10k-ct pelo firmware ath10k padrão (variante não-CT) na compilação 19.07. Este problema não afeta o hardware baseado em ath9k, que lida com o modo AP/VLAN corretamente em todas as versões do OpenWrt.