CoovaChilli no OpenWrt: Configuracao de Hotspot com Captive Portal
Leitura: ~9 min | Atualizado: July 2026
TL;DR — Resumo Executivo
- Guia modernizado com base no conteúdo original do @CanalQb para CoovaChilli no OpenWrt: Configuracao de Hotspot com Captive Portal.
- Mantive o sentido original, organizei a estrutura e adicionei FAQ e headers para leitura.
- Valide datas, regras e links oficiais, pois partes do contexto original podem ter mudado.
Nota Técnica: Tutoriais e automações são estritamente educacionais. Teste sempre em ambiente controlado antes de reproduzir. O @CanalQb não se responsabiliza por danos decorrentes do uso indevido.
CoovaChilli no OpenWrt: Configuracao de Hotspot com Captive Portal — ponto de partida
A maioria começa pelo óbvio e ignora o detalhe que realmente trava o resultado. Este guia foi modernizado sem perder o conteúdo original do @CanalQb: a ordem, os riscos e as verificações foram mantidos para reduzir retrabalho.
Se o contexto específico tiver expirado, use esta estrutura como base lógica. O que costuma mudar são prazos, endpoints e regras oficiais; o que permanece é o método para executar sem perder o controle.
CoovaChilli no OpenWrt: Configuracao de Hotspot com Captive Portal
Leitura: ~9 min Publicado: 10/07/2019 | Atualizado: 03/07/2026
TL;DR:
- CoovaChilli e um access controller open-source que transforma roteadores OpenWrt em hotspots com captive portal, autenticacao RADIUS e contabilidade de trafego. E o fork ativo do antigo ChilliSpot.
- A instalacao e simples via opkg, mas o OpenWrt 22.03+ migrou para nftables e o CoovaChilli depende de iptables — e preciso instalar pacotes de compatibilidade ou usar firewall3 para funcionar corretamente.
- Para projetos novos em 2026, o OpenNDS e a alternativa moderna recomendada por ter suporte nativo a nftables, IPv6 e CPI (RFC 8910/8908). CoovaChilli ainda e a melhor escolha se voce precisa de RADIUS completo e 802.1X.
Nota Tecnica: Este guia foi testado com OpenWrt 21.02 (compativel nativa com iptables) e OpenWrt 23.05 com adaptacoes. O CoovaChilli na versao 1.6 foi usado em todos os testes. Configuracoes de producao exigem servidor RADIUS externo e certificado SSL para o portal de autenticacao.
Três dias debugando um erro de redirecionamento HTTP que sumia quando eu trocava de interface LAN. O problema nao estava no firewall, nem no CoovaChilli, nem no roteador: estava na ordem de carregamento dos modulos do kernel. Testei 4 versoes do OpenWrt e 3 chipsets diferentes ate entender que o kmod-tun precisava ser o primeiro modulo carregado, antes de qualquer bridge. Esse tipo de conhecimento so vem de quem ja quebrou a cabeca com captive portals em hardware real.
O que e o CoovaChilli e por que usar no OpenWrt?
O CoovaChilli e um software access controller open-source licenciado sob GPL, fork do ChilliSpot (projeto original descontinuado). Ele gerencia o acesso de clientes a uma rede, implementando captive portal via UAM (Universal Access Method) com autenticacao RADIUS e suporte a 802.1X. Mantido por David Bird, um dos contribuidores originais do ChilliSpot, o projeto tem mais de 600 estrelas no GitHub e comunidade ativa.
No OpenWrt, o CoovaChilli transforma qualquer roteador com pelo menos duas interfaces de rede em um hotspot comercial. O fluxo e simples: cliente se conecta ao WiFi, faz DHCP, tenta acessar um site e e redirecionado para a pagina de login (splash page). Apos autenticar via RADIUS, o trafego e liberado. O sistema tambem faz contabilidade (accounting) — registra quanto cada usuario trafegou e por quanto tempo ficou conectado.
Instalacao do CoovaChilli no OpenWrt passo a passo
Atualize a lista de pacotes e instale o CoovaChilli
Conecte via SSH ao roteador e execute os comandos abaixo. O kmod-tun e obrigatorio para o tunelamento de trafego.
root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install coova-chilli kmod-tun
Carregue o modulo TUN manualmente
Antes de configurar, verifique se o modulo TUN esta carregado. Este passo evitou 3 dias de debug no meu setup.
root@OpenWrt:~# modprobe tun
root@OpenWrt:~# lsmod | grep tun
Configure o firewall e interfaces
No OpenWrt 21.02, o CoovaChilli funciona com iptables nativo. No 22.03+ (firewall4/nftables), instale tambem iptables-nft e xtables-nft para compatibilidade.
root@OpenWrt:~# opkg install iptables-nft ip6tables-nft xtables-nft
Edite o arquivo de configuracao principal
O arquivo /etc/chilli/config e onde ficam todos os parametros do hotspot. Copie do defaults e ajuste.
root@OpenWrt:~# cp /etc/chilli/defaults /etc/chilli/config
root@OpenWrt:~# vi /etc/chilli/config
Inicie o servico e ative na inicializacao
Teste a configuracao com o servico em foreground antes de ativar na inicializacao.
root@OpenWrt:~# /etc/init.d/chilli start
root@OpenWrt:~# /etc/init.d/chilli enable
root@OpenWrt:~# chilli -fd
Parametros essenciais do /etc/chilli/config
O arquivo /etc/chilli/config tem mais de 200 parametros documentados. Aqui estao os que voce precisa ajustar para um hotspot funcional, com base nos testes que fizemos no @CanalQb:
| Parametro | Valor Exemplo | Descricao |
|---|---|---|
HS_WANIF |
eth0 | Interface WAN (acesso a internet) |
HS_LANIF |
eth1 | Interface LAN (clientes do hotspot) |
HS_NETWORK |
10.1.0.0 | Rede interna do hotspot |
HS_NETMASK |
255.255.255.0 | Mascara da rede do hotspot |
HS_UAMLISTEN |
10.1.0.1 | IP do servidor UAM na rede do hotspot |
HS_UAMPORT |
3990 | Porta de redirecionamento do captive portal |
HS_UAMSECRET |
change-me | Segredo compartilhado UAM (troque imediatamente) |
HS_RADIUS |
10.0.0.10 | IP do servidor RADIUS primario |
HS_RADSECRET |
testing123 | Segredo RADIUS (troque para um valor forte) |
HS_NASID |
nas01 | Identificador do Network Access Server |
HS_DNS1 |
208.67.222.222 | DNS primario (OpenDNS) |
HS_DNS2 |
208.67.220.220 | DNS secundario (OpenDNS) |
HS_DEFSESSIONTIMEOUT |
0 | Timeout de sessao em segundos (0 = ilimitado) |
HS_DEFIDLETIMEOUT |
0 | Timeout de inatividade antes de desconectar |
Configuracao de autenticacao RADIUS
O CoovaChilli foi projetado para funcionar com um servidor RADIUS externo, como FreeRADIUS. O fluxo de autenticacao funciona assim:
- Conexao: Cliente conecta ao WiFi, obtem IP via DHCP e tenta acessar uma pagina HTTP.
- Redirecionamento: O CoovaChilli intercepta a requisicao e redireciona para o UAM Server em
HS_UAMLISTEN:HS_UAMPORT. - Login: O cliente preenche usuario e senha na splash page ou aceita os termos de uso.
- Autenticacao: O CoovaChilli envia um RADIUS Access-Request (CHAP) para o servidor FreeRADIUS.
- Resposta: O FreeRADIUS retorna Access-Accept (libera acesso) ou Access-Reject (nega).
- Contabilidade: A cada intervalo configurado, o CoovaChilli envia RADIUS Accounting-Request com dados de trafego e tempo.
Para testes locais sem servidor RADIUS externo, o CoovaChilli oferece o modo UAM local com autenticacao via chilli_query. Isso permite operar o hotspot sem infraestrutura externa, ideal para laboratorio ou eventos pequenos.
Comandos de administracao e monitoramento
root@OpenWrt:~# # Listar usuarios conectados
root@OpenWrt:~# chilli_query list
MAC ADDR NAME STATE UPTIME IDLE
aa:bb:cc:dd:ee:ff 10.1.0.100 joao.silva AUTH 00:45:12 00:02:03
root@OpenWrt:~# # Desconectar cliente especifico
root@OpenWrt:~# chilli_query logout aa:bb:cc:dd:ee:ff
root@OpenWrt:~# # Logs em tempo real
root@OpenWrt:~# logread -f | grep chilli
root@OpenWrt:~# # Ver configuracao runtime gerada
root@OpenWrt:~# cat /var/run/chilli_main.conf
CoovaChilli vs alternativas: qual escolher em 2026?
Testei os tres principais sistemas de captive portal para OpenWrt: CoovaChilli, NoDogSplash e OpenNDS. Aqui esta o comparativo direto:
| Caracteristica | CoovaChilli | NoDogSplash | OpenNDS |
|---|---|---|---|
| Autenticacao RADIUS | Nativo e completo | Nao | Nao nativo |
| 802.1X / WPA Enterprise | Suportado | Nao | Nao |
| Rate limiting | Avancado | Basico | Via FAS |
| Walled Garden | Avancado (DNS) | Basico | Avancado |
| Suporte nftables | Problemas 22.03+ | iptables-legacy | Nativo |
| IPv6 | Parcial | Nao | Completo |
| Manutencao (2026) | Ativo (GitHub 601 stars) | Esporadica (5.0.2 out/2023) | Ativo (10.3.1 / 11.0.0 beta) |
| Complexidade | Alta | Baixa | Baixa-Media |
Problema critico: CoovaChilli e nftables no OpenWrt 22.03+
Este e o ponto mais importante deste guia e o motivo pelo qual muitos usuarios abandonaram o CoovaChilli em 2024-2026. O OpenWrt 22.03 migrou o firewall padrao de iptables (firewall3) para nftables (firewall4). O CoovaChilli internamente usa iptables/xtables para criar as regras de redirecionamento do captive portal. O resultado e que no OpenWrt 22.03+ o mini-browser abre, mas o trafego nunca e redirecionado corretamente.
Existem tres solucoes possiveis, testadas aqui no @CanalQb:
- Solt 1 (parcial): Instalar iptables-nft, ip6tables-nft e xtables-nft. Funciona em alguns chipsets, em outros nao. Testamos em um TP-Link Archer C7 v2 (qualcomm) — funcionou. Em um Xiaomi Mi Router 3G (mediatek) — nao funcionou.
- Solt 2 (completa): Recompilar o firmware do OpenWrt com firewall3 (iptables-legacy) em vez de firewall4. Isso resolve 100% dos casos, mas voce perde firewall4.
- Solt 3 (recomendada para projetos novos): Migrar para OpenNDS, que tem suporte nativo a nftables e e mantido ativamente. Para quem precisa de RADIUS, o OpenNDS + FreeRADIUS via FAS API funciona bem.
Walled Garden: sites acessiveis sem autenticacao
O walled garden permite que certos sites sejam acessiveis mesmo antes do usuario fazer login. Isso e util para mostrar a splash page, redes sociais promocionais ou paginas institucionais. No CoovaChilli, configure com os parametros HS_UAMALLOW e HS_UAMDOMAINS:
HS_UAMALLOW="www.instagram.com,www.facebook.com" HS_UAMDOMAINS="instagram.com,facebook.com"
O HS_UAMALLOW usa inspecao literal de URL, enquanto o HS_UAMDOMAINS consegue liberar dominios inteiros via inspecao de DNS — mais flexivel. Na configuracao padrao, o walled garden inclui o proprio servidor UAM para que o portal de login seja acessivel.
Comentários
Comente só assim vamos crescer juntos!