{"id":16372,"date":"2024-11-27T10:48:16","date_gmt":"2024-11-27T13:48:16","guid":{"rendered":"https:\/\/categoriaoutros.com.br\/?p=16372"},"modified":"2024-11-27T13:57:23","modified_gmt":"2024-11-27T16:57:23","slug":"opennds-um-captive-portal-opensource-como-funciona","status":"publish","type":"post","link":"https:\/\/categoriaoutros.com.br\/?p=16372","title":{"rendered":"OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?"},"content":{"rendered":"\n<p>O openNDS (Open Network Demarcation Service) \u00e9 um Captive Portal de alto desempenho e tamanho reduzido.<\/p>\n\n\n\n<p>Esse post \u00e9 baseado no post original do OpenWrt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 um Captive Portal?<\/h2>\n\n\n\n<p>Um <strong>Captive Portal<\/strong> \u00e9 uma t\u00e9cnica de seguran\u00e7a usada em redes Wi-Fi p\u00fablicas ou privadas, onde o acesso \u00e0 internet \u00e9 bloqueado at\u00e9 que o usu\u00e1rio se autentique ou aceite os termos de uso. Normalmente, ao conectar-se \u00e0 rede, o dispositivo do usu\u00e1rio \u00e9 redirecionado automaticamente para uma p\u00e1gina de login, que pode exigir informa\u00e7\u00f5es como um nome de usu\u00e1rio e senha ou a aceita\u00e7\u00e3o de pol\u00edticas de uso. Esse processo \u00e9 comum em caf\u00e9s, hot\u00e9is, aeroportos e outros locais que oferecem Wi-Fi gratuito, garantindo o controle de acesso e a conformidade com as regras da rede.<\/p>\n\n\n\n<p>Temos dois termos\/palavras comumente usados que merecem uma defini\u00e7\u00e3o, uma explica\u00e7\u00e3o seus significados:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>cativo<\/strong> ou captive: referente ao <strong>Captive Portal<\/strong>, <strong>&#8220;cativo&#8221;<\/strong> \u00e9 o usu\u00e1rio que est\u00e1 &#8220;preso&#8221; ou &#8220;cativo&#8221; \u00e0 rede at\u00e9 que realize a autentica\u00e7\u00e3o ou aceite os termos de uso. <\/li>\n\n\n\n<li><strong>tela splash<\/strong>: \u00e9 a p\u00e1gina de captura que o usu\u00e1rio v\u00ea ao tentar acessar a internet, onde ele deve interagir, geralmente com um login ou aceita\u00e7\u00e3o, para ser liberado e acessar a rede.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Documenta\u00e7\u00e3o do OpenNDS<\/h2>\n\n\n\n<p>Segue link de documenta\u00e7\u00e3o do OpenNDS: <a href=\"https:\/\/opennds.readthedocs.io\/\">https:\/\/opennds.readthedocs.io<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como o OpenNDS (NDS) funciona?<\/h2>\n\n\n\n<p>Qualquer Portal Cativo (captive portal), incluindo NDS, ter\u00e1 dois componentes principais:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Algo que fa\u00e7a a captura<\/li>\n\n\n\n<li>Algo para fornecer um Portal para que os usu\u00e1rios do cliente fa\u00e7am login.<\/li>\n<\/ul>\n\n\n\n<p>Um roteador sem fio normalmente executa o OpenWrt ou alguma outra distribui\u00e7\u00e3o Linux. Ainda, um roteador, por defini\u00e7\u00e3o, ter\u00e1 duas ou mais interfaces de rede, pelo menos uma para se conectar \u00e0 rede de longa dist\u00e2ncia (WAN) ou ao feed da Internet, e pelo menos uma para se conectar \u00e0 rede local (LAN).<\/p>\n\n\n\n<p>Cada interface LAN tamb\u00e9m deve atuar como o Gateway IP Padr\u00e3o para sua LAN, idealmente com a interface servindo endere\u00e7os IP para dispositivos clientes usando DHCP.<\/p>\n\n\n\n<p>V\u00e1rias interfaces LAN podem ser combinadas em uma \u00fanica interface de ponte(bridge). Por exemplo, redes ethernet, 2.4Ghz e 5Ghz s\u00e3o tipicamente combinadas em uma \u00fanica interface de ponte. Nomes de interface l\u00f3gica ser\u00e3o atribu\u00eddos como eth0, wlan0, wlan1 etc. com a interface de ponte combinada nomeada como br-lan.<\/p>\n\n\n\n<p>O NDS gerenciar\u00e1 um ou mais deles. Isso normalmente ser\u00e1 br-lan, a ponte para a LAN sem fio e com fio, mas pode ser, por exemplo, wlan0 se voc\u00ea quiser que o NDS funcione apenas na interface sem fio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Resumo da Opera\u00e7\u00e3o do OpenNDS<\/h2>\n\n\n\n<p>Por padr\u00e3o, o NDS bloqueia tudo.<\/p>\n\n\n\n<p>Um cliente descobrir\u00e1 que est\u00e1 em um estado capturado por um dos dois m\u00e9todos b\u00e1sicos. Vamos falar sobre esses dois modos logo a seguir:<\/p>\n\n\n\n<p><strong>M\u00e9todo 01:<\/strong> Captive Portal Detection (CPD)<\/p>\n\n\n\n<p>CPD \u00e9 um processo orientado ao cliente dispon\u00edvel em todos os dispositivos m\u00f3veis modernos, na maioria dos sistemas operacionais de desktop e na maioria dos navegadores. O processo CPD emite automaticamente uma solicita\u00e7\u00e3o de porta 80 na conex\u00e3o a uma rede como um meio de sondar um estado cativo.<\/p>\n\n\n\n<p>\u00c0s vezes conhecido como \u201cteste can\u00e1rio\u201d, esse processo, conduzido pelo cliente, evoluiu ao longo de v\u00e1rios anos para se tornar um padr\u00e3o confi\u00e1vel de fato. O openNDS detecta essa sondagem e serve uma sequ\u00eancia especial de p\u00e1gina da web \u201csplash\u201d para o dispositivo cliente conectado.<\/p>\n\n\n\n<p><strong>M\u00e9todo 02:<\/strong> Identifica\u00e7\u00e3o de Portal Cativo (CPI) ou, em ingl\u00eas, Captive Portal Identification (CPI)<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\"><strong>Observa\u00e7\u00e3o<\/strong>: muito poucos dispositivos cliente oferecem suporte a CPI no momento da reda\u00e7\u00e3o deste artigo (novembro de 2021)<\/mark> <\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\"><strong>Atualiza\u00e7\u00e3o<\/strong>: A maioria dos novos dispositivos agora suporta CPI pelo menos at\u00e9 certo ponto, indicando uma prov\u00e1vel ado\u00e7\u00e3o da curva \u201cS\u201d. (Janeiro de 2023).<\/mark><\/p>\n\n\n\n<p>CPI \u00e9 um processo controlado por Gateway conforme definido nos padr\u00f5es RFC8910 (Captive-Portal Identification in DHCP and Router Advertisements) e RFC8908 (Captive Portal API). <strong>Um roteador de gateway informa a um cliente conectado que ele est\u00e1 em um estado cativo<\/strong>, fornecendo uma URL na qual um cliente pode acessar para autentica\u00e7\u00e3o. Um cliente pode acessar essa URL para receber a mesma sequ\u00eancia de p\u00e1ginas &#8220;splash&#8221; do portal que receberia no m\u00e9todo CPD tradicional.<\/p>\n\n\n\n<p>Como alternativa, um cliente pode usar essa URL para acessar a API do Captive Portal RFC8908, recebendo uma sequ\u00eancia de p\u00e1gina inicial para autentica\u00e7\u00e3o.<\/p>\n\n\n\n<p>A partir do openNDS v9.5.0, o m\u00e9todo CPI \u00e9 suportado em ambas as formas e habilitado por padr\u00e3o. Ele pode ser desabilitado em uma op\u00e7\u00e3o de configura\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sobre o Portal<\/h3>\n\n\n\n<p>O navegador do cliente \u00e9 redirecionado para o componente Portal. Este \u00e9 um servi\u00e7o web que \u00e9 configurado para saber como se comunicar com o mecanismo central do NDS. Isso \u00e9 comumente conhecido como \u201cSplash Page\u201d.<\/p>\n\n\n\n<p>O NDS tem seu pr\u00f3prio servidor web integrado e \u00e9 usado nos modos b\u00e1sicos de opera\u00e7\u00e3o para servir as p\u00e1ginas \u201cSplash\u201d do Portal para o navegador do cliente. Como alternativa, um servidor web separado pode ser usado.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O NDS vem com v\u00e1rias op\u00e7\u00f5es de <strong>Splash Page<\/strong> padr\u00e3o<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Uma sequ\u00eancia trivial de p\u00e1gina inicial &#8220;Clique para Continuar&#8221; (configura\u00e7\u00e3o padr\u00e3o)<\/li>\n\n\n\n<li>Um formul\u00e1rio de Usu\u00e1rio Cliente que requer que Nome e Endere\u00e7o de E-mail sejam inseridos.<\/li>\n\n\n\n<li>Sequ\u00eancias de p\u00e1ginas tem\u00e1ticas defin\u00edveis pelo administrador, suportando conte\u00fado remoto opcional<\/li>\n<\/ul>\n\n\n\n<p>Uma \u00fanica op\u00e7\u00e3o de configura\u00e7\u00e3o uci \u00e9 usada para escolher a sequ\u00eancia de p\u00e1gina inicial padr\u00e3o para login do cliente.<\/p>\n\n\n\n<p>Para as p\u00e1ginas simples \u201cClique para continuar\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> option login_option_enabled '1'<\/code><\/pre>\n\n\n\n<p>Para as p\u00e1ginas \u201cnome de usu\u00e1rio\/e-mail\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>option login_option_enabled '2'<\/code><\/pre>\n\n\n\n<p>Para p\u00e1ginas Themespec definidas pelo administrador:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>option login_option_enabled '3'<\/code><\/pre>\n\n\n\n<p>As op\u00e7\u00f5es padr\u00e3o da p\u00e1gina inicial podem ser personalizadas ou um Portal especializado completo pode ser escrito pelo instalador (consulte ThemeSpec, FAS, PreAuth na documenta\u00e7\u00e3o no site <a href=\"https:\/\/openwrt.org\/docs\/guide-user\/services\/captive-portal\/opennds\">OpenWrt<\/a>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">FAS(Forward Authentication Service) ou Servi\u00e7o de Autentica\u00e7\u00e3o de Encaminhamento<\/h2>\n\n\n\n<p>O AS, ou Forward Authentication Service, pode usar o servidor web incorporado no NDS, um servidor web separado instalado no roteador NDS, um servidor web residente na rede local ou um servidor web hospedado na Internet.<\/p>\n\n\n\n<p>O usu\u00e1rio do dispositivo cliente sempre dever\u00e1 concluir algumas a\u00e7\u00f5es na p\u00e1gina inicial ou no portal cativo. Depois que o usu\u00e1rio no dispositivo cliente tiver conclu\u00eddo com sucesso as a\u00e7\u00f5es da p\u00e1gina inicial, essa p\u00e1gina ser\u00e1 vinculada diretamente de volta ao NDS.<\/p>\n\n\n\n<p>Por seguran\u00e7a, o NDS espera receber um token, com hash, usando uma chave pr\u00e9-compartilhada. Se esse token com hash for v\u00e1lido, o NDS ent\u00e3o \u201cautentica\u201d o dispositivo cliente, permitindo o acesso \u00e0 Internet.<\/p>\n\n\n\n<p>Extens\u00f5es de processamento de p\u00f3s-autentica\u00e7\u00e3o podem ser adicionadas ao NDS (veja BinAuth na documenta\u00e7\u00e3o). Uma vez que o NDS tenha recebido o token v\u00e1lido, ele ir\u00e1, se habilitado, chamar um script BinAuth. O processamento de p\u00f3s-autentica\u00e7\u00e3o do BinAuth \u00e9 usado com mais frequ\u00eancia para fornecer um mecanismo para gerar logs de acesso de clientes locais.<\/p>\n\n\n\n<p>O Binauth pode substituir o FAS e negar acesso ou substituir cotas e restri\u00e7\u00f5es de taxa de dados que podem ser definidas pelo FAS ou globalmente na configura\u00e7\u00e3o.<\/p>\n\n\n\n<p>Se o FAS Secure estiver habilitado (N\u00edveis 1 (padr\u00e3o), 2 e 3), o token de autentica\u00e7\u00e3o do cliente ser\u00e1 mantido em segredo o tempo todo. Em vez disso, o faskey \u00e9 usado para gerar um valor de id com hash (hid) e este \u00e9 enviado pelo openNDS para o FAS. O FAS deve ent\u00e3o, por sua vez, gerar um novo id de hash de retorno (rhid) para retornar ao openNDS em sua solicita\u00e7\u00e3o de autentica\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>Se definido como \u201c0\u201d, o FAS \u00e9 imposto pelo NDS para usar o protocolo http. <\/strong><\/p>\n\n\n\n<p>O token do cliente \u00e9 enviado ao FAS em texto simples na sequ\u00eancia de consulta do redirecionamento, juntamente com authaction e redir. Este m\u00e9todo \u00e9 f\u00e1cil de ignorar e \u00fatil apenas para os sistemas mais simples, onde a seguran\u00e7a n\u00e3o importa.<\/p>\n\n\n\n<p><strong>Se definido como \u201c1\u201d, o FAS \u00e9 imposto pelo NDS para usar o protocolo http.<\/strong> <\/p>\n\n\n\n<p>Uma string de consulta codificada em base64 contendo o hid \u00e9 enviada ao FAS, junto com os par\u00e2metros e vari\u00e1veis \u200b\u200bclientip, clientmac, gatewayname, client_hid, gatewayaddress, authdir, originurl, clientif e custom.<\/p>\n\n\n\n<p>Caso o utilit\u00e1rio sha256sum n\u00e3o esteja dispon\u00edvel, o openNDS ser\u00e1 encerrado com uma mensagem de erro na inicializa\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>Se definido como \u201c2\u201d, o FAS \u00e9 for\u00e7ado pelo NDS a usar o protocolo http.<\/strong> <\/p>\n\n\n\n<p>clientip, clientmac, gatewayname, client_hid, gatewayaddress, authdir, originurl e clientif s\u00e3o criptografados usando faskey e passados \u200b\u200bpara o FAS na string de consulta.<\/p>\n\n\n\n<p>A sequ\u00eancia de consulta tamb\u00e9m conter\u00e1 um vetor de inicializa\u00e7\u00e3o gerado aleatoriamente para ser usado pelo FAS para descriptografia.<\/p>\n\n\n\n<p>A cifra utilizada \u00e9 \u201cAES-256-CBC\u201d.<\/p>\n\n\n\n<p>O pacote \u201cphp-cli\u201d e o m\u00f3dulo \u201cphp-openssl\u201d devem ser instalados para o n\u00edvel 2 do fas_secure.<\/p>\n\n\n\n<p>O openNDS n\u00e3o depende deste pacote e m\u00f3dulo, mas sair\u00e1 normalmente se este pacote e m\u00f3dulo n\u00e3o estiverem instalados quando este n\u00edvel for definido.<\/p>\n\n\n\n<p>O FAS deve usar o vetor de inicializa\u00e7\u00e3o passado pela string de consulta e a fas_key pr\u00e9-compartilhada para descriptografar a string de consulta. Um script php FAS n\u00edvel 2 de exemplo (fas-aes.php) \u00e9 armazenado no diret\u00f3rio \/etc\/opennds e tamb\u00e9m fornecido no c\u00f3digo-fonte. Ele deve ser copiado para a raiz da web de um servidor web adequado para uso.<\/p>\n\n\n\n<p><strong>Se definido como \u201c3\u201d, o FAS \u00e9 imposto pelo openNDS para usar o protocolo https.<\/strong> <\/p>\n\n\n\n<p>O n\u00edvel 3 \u00e9 o mesmo que o n\u00edvel 2, exceto que o uso do protocolo https \u00e9 imposto para o FAS. Al\u00e9m disso, o daemon \u201cauthmon\u201d \u00e9 carregado. Isso permite que o FAS externo, ap\u00f3s a verifica\u00e7\u00e3o do cliente, atravesse efetivamente os firewalls de entrada e a tradu\u00e7\u00e3o de endere\u00e7os para obter a autentica\u00e7\u00e3o NDS sem gerar avisos ou erros de seguran\u00e7a do navegador. Um script php FAS n\u00edvel 3 de exemplo (fas-aes-https.php) \u00e9 pr\u00e9-instalado no diret\u00f3rio \/etc\/opennds e tamb\u00e9m fornecido no c\u00f3digo-fonte. Ele deve ser copiado para a raiz da web de um servidor web adequado para uso.<\/p>\n\n\n\n<p>A op\u00e7\u00e3o faskey tem um valor padr\u00e3o. \u00c9 recomendado que isso seja definido como algum valor secreto no arquivo de configura\u00e7\u00e3o e o script FAS definido para usar um valor correspondente, ou seja, faskey deve ser pr\u00e9-compartilhado com FAS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Observa\u00e7\u00f5es sobre detec\u00e7\u00e3o de portal cativo (CPD)<\/h2>\n\n\n\n<p>Todos os dispositivos m\u00f3veis modernos, a maioria dos sistemas operacionais de desktop e a maioria dos navegadores agora t\u00eam um processo CPD que emite automaticamente uma solicita\u00e7\u00e3o de porta 80 na conex\u00e3o a uma rede. O NDS detecta isso e serve uma p\u00e1gina web especial \u201csplash\u201d para o dispositivo cliente de conex\u00e3o.<\/p>\n\n\n\n<p>A solicita\u00e7\u00e3o HTML da porta 80 feita pelo cliente CPD pode ser uma das muitas URLs espec\u00edficas do fornecedor.<\/p>\n\n\n\n<p>Os URLs de CPD t\u00edpicos usados \u200b\u200bs\u00e3o, por exemplo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/captive.apple.com\/hotspot-detect.html\">http:\/\/captive.apple.com\/hotspot-detect.html<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/connectivitycheck.gstatic.com\/generate_204\">http:\/\/connectivitycheck.gstatic.com\/generate_204<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/connectivitycheck.platform.hicloud.com\/generate_204\">http:\/\/connectivitycheck.platform.hicloud.com\/generate_204<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.samsung.com\/\">http:\/\/www.samsung.com\/<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/detectportal.firefox.com\/success.txt\">http:\/\/detectportal.firefox.com\/success.txt<\/a><\/li>\n\n\n\n<li>dentre outros<\/li>\n<\/ul>\n\n\n\n<p>\u00c9 importante lembrar que o CPD foi projetado principalmente para dispositivos m\u00f3veis para detectar automaticamente a presen\u00e7a de um portal e acionar a p\u00e1gina de login, sem precisar recorrer \u00e0 quebra de seguran\u00e7a SSL\/TLS, exigindo que o portal redirecione a porta 443, por exemplo.<\/p>\n\n\n\n<p>Quase todas as implementa\u00e7\u00f5es atuais de CPD funcionam muito bem, mas alguns compromissos s\u00e3o necess\u00e1rios dependendo da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p>A grande maioria dos dispositivos anexados a um Captive Portal t\u00edpico s\u00e3o dispositivos m\u00f3veis. O CPD funciona bem, fornecendo a p\u00e1gina de login inicial.<\/p>\n\n\n\n<p>Em um Wi-Fi t\u00edpico para visitantes, por exemplo, uma cafeteria, bar, clube, hotel etc., um dispositivo se conecta, a Internet \u00e9 acessada por um tempo e, ent\u00e3o, o usu\u00e1rio tira o dispositivo do alcance. Quando colocado fora de alcance, um dispositivo m\u00f3vel t\u00edpico come\u00e7a a pesquisar periodicamente o espectro sem fio em busca de SSIDs que ele conhece para tentar obter uma conex\u00e3o novamente, sujeito a tempos limite para preservar a vida \u00fatil da bateria.<\/p>\n\n\n\n<p>A maioria dos portais cativos tem um limite de dura\u00e7\u00e3o de sess\u00e3o (incluindo o openNDS).<\/p>\n\n\n\n<p>Se um dispositivo previamente logado retornar para dentro da cobertura do portal, o SSID usado anteriormente ser\u00e1 reconhecido e o CPD ser\u00e1 acionado e testar\u00e1 uma conex\u00e3o de Internet da maneira normal. Dentro do limite de dura\u00e7\u00e3o da sess\u00e3o do portal, a conex\u00e3o de Internet ser\u00e1 estabelecida, se a sess\u00e3o tiver expirado, a p\u00e1gina inicial ser\u00e1 exibida novamente.<\/p>\n\n\n\n<p>As primeiras implementa\u00e7\u00f5es de CPD em dispositivos m\u00f3veis costumavam pesquisar sua URL de detec\u00e7\u00e3o em intervalos regulares, normalmente em torno de 30 a 300 segundos. Isso acionaria a p\u00e1gina inicial do Portal bem r\u00e1pido se o dispositivo permanecesse no alcance e o limite da sess\u00e3o tivesse sido atingido.<\/p>\n\n\n\n<p>No entanto, percebeu-se muito rapidamente que essa pesquisa mantinha o WiFi no dispositivo ativado continuamente, tendo um efeito muito negativo na vida \u00fatil da bateria, ent\u00e3o essa pesquisa enquanto conectado era aumentada para um intervalo muito longo ou removida completamente (dependendo do fornecedor) para preservar a carga da bateria. Como a maioria dos dispositivos m\u00f3veis entra e sai do alcance, isso n\u00e3o \u00e9 um problema.<\/p>\n\n\n\n<p><strong>Um problema comum levantado \u00e9:<\/strong><\/p>\n\n\n\n<p>\u201cMeus dispositivos mostram a p\u00e1gina inicial quando se conectam pela primeira vez, mas quando a autoriza\u00e7\u00e3o expira, eles apenas anunciam que n\u00e3o h\u00e1 conex\u00e3o com a internet. Tenho que faz\u00ea-los \u201cesquecer\u201d a rede sem fio para ver a p\u00e1gina inicial novamente. \u00c9 assim que deveria funcionar?\u201d<\/p>\n\n\n\n<p>Isso \u00e9 normal, mas voc\u00ea descobrir\u00e1 que apenas desconectar ou ligar e desligar manualmente o WiFi simular\u00e1 uma &#8220;sa\u00edda de alcance&#8221;, inicializando um gatilho imediato do CPD. Uma ou qualquer combina\u00e7\u00e3o dessas solu\u00e7\u00f5es deve funcionar, novamente dependendo da implementa\u00e7\u00e3o do CPD do fornecedor em particular.<\/p>\n\n\n\n<p>Em contraste, a maioria dos sistemas operacionais de laptop\/desktop e vers\u00f5es de navegador para eles ainda implementam a pesquisa CPD enquanto estiver online, pois as considera\u00e7\u00f5es sobre bateria n\u00e3o s\u00e3o t\u00e3o importantes.<\/p>\n\n\n\n<p>Por exemplo, o Gnome desktop tem seu pr\u00f3prio navegador CPD integrado com um intervalo padr\u00e3o de 300 segundos. O Firefox tamb\u00e9m tem como padr\u00e3o algo como 300 segundos. O Windows 10 \u00e9 similar.<\/p>\n\n\n\n<p>\u00c9 assim que deveria funcionar, mas envolve alguns compromissos.<\/p>\n\n\n\n<p>A melhor solu\u00e7\u00e3o \u00e9 definir o tempo limite da sess\u00e3o para um valor maior do que o tempo esperado que um dispositivo cliente provavelmente estar\u00e1 presente. A experi\u00eancia mostra que um limite de 24 horas cobre a maioria das situa\u00e7\u00f5es, por exemplo, bares, clubes, cafeterias, mot\u00e9is etc. Se, por exemplo, um hotel tem h\u00f3spedes que ficam regularmente por alguns dias, aumente o tempo limite da sess\u00e3o conforme necess\u00e1rio.<\/p>\n\n\n\n<p>A equipe do local pode ter seus dispositivos adicionados \u00e0 Lista de Confi\u00e1veis (Trusted List), se for apropriado, mas a experi\u00eancia mostra que \u00e9 melhor n\u00e3o fazer isso, pois eles aprendem muito r\u00e1pido o que fazer e podem ajudar os h\u00f3spedes que encontrarem o problema. (Qualquer coisa que reduza as chamadas de suporte \u00e9 boa!)<\/p>\n\n\n\n<p>A maioria desses problemas com CPD s\u00e3o potencialmente resolvidos pelo uso de CPI, mas exigiria sua ado\u00e7\u00e3o por todos os fornecedores de dispositivos clientes. CPI \u00e9 um novo padr\u00e3o que est\u00e1 evoluindo \u00e0 medida que \u00e9 universalmente adotado. No momento em que este artigo foi escrito, a maioria dos novos dispositivos o suportava at\u00e9 certo ponto.<\/p>\n\n\n\n<p>Fonte: <a href=\"https:\/\/openwrt.org\/docs\/guide-user\/services\/captive-portal\/opennds\">openwrt<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O openNDS (Open Network Demarcation Service) \u00e9 um Captive Portal de alto desempenho e tamanho reduzido. Esse post \u00e9 baseado no post original do OpenWrt. O que \u00e9 um Captive Portal? Um Captive Portal \u00e9 uma t\u00e9cnica de seguran\u00e7a usada em redes Wi-Fi p\u00fablicas ou privadas, onde o acesso \u00e0 internet \u00e9 bloqueado at\u00e9 que&#8230;<\/p>\n<p class=\"more-link-wrap\"><a href=\"https:\/\/categoriaoutros.com.br\/?p=16372\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &ldquo;OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?&rdquo;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,2918],"tags":[4858,4859,4860,4857],"class_list":["post-16372","post","type-post","status-publish","format-standard","hentry","category-informatica-dicas","category-linux","tag-captive-portal","tag-cpd","tag-cpi","tag-opennds"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/categoriaoutros.com.br\/?p=16372\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros\" \/>\n<meta property=\"og:description\" content=\"O openNDS (Open Network Demarcation Service) \u00e9 um Captive Portal de alto desempenho e tamanho reduzido. Esse post \u00e9 baseado no post original do OpenWrt. O que \u00e9 um Captive Portal? Um Captive Portal \u00e9 uma t\u00e9cnica de seguran\u00e7a usada em redes Wi-Fi p\u00fablicas ou privadas, onde o acesso \u00e0 internet \u00e9 bloqueado at\u00e9 que...Read More &ldquo;OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?&rdquo; &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/categoriaoutros.com.br\/?p=16372\" \/>\n<meta property=\"og:site_name\" content=\"Categoria Outros\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/categoriaoutros\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-27T13:48:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-27T16:57:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/pinguim-paginas-padrao.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1022\" \/>\n\t<meta property=\"og:image:height\" content=\"722\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Categoria: Outros\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:site\" content=\"@CategoriaOutros\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Categoria: Outros\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372#article\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372\"},\"author\":{\"name\":\"Categoria: Outros\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\"},\"headline\":\"OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?\",\"datePublished\":\"2024-11-27T13:48:16+00:00\",\"dateModified\":\"2024-11-27T16:57:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372\"},\"wordCount\":2649,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"keywords\":[\"captive portal\",\"CPD\",\"CPI\",\"OpenNDS\"],\"articleSection\":[\"Inform\u00e1tica\",\"Linux\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=16372#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372\",\"url\":\"https:\/\/categoriaoutros.com.br\/?p=16372\",\"name\":\"OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros\",\"isPartOf\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\"},\"datePublished\":\"2024-11-27T13:48:16+00:00\",\"dateModified\":\"2024-11-27T16:57:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/categoriaoutros.com.br\/?p=16372\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/categoriaoutros.com.br\/?p=16372#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/categoriaoutros.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#website\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"name\":\"Categoria Outros\",\"description\":\"Assuntos Diversos\",\"publisher\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/categoriaoutros.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#organization\",\"name\":\"Categoria Outros\",\"alternateName\":\"Categoria Outros\",\"url\":\"https:\/\/categoriaoutros.com.br\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"contentUrl\":\"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg\",\"width\":400,\"height\":400,\"caption\":\"Categoria Outros\"},\"image\":{\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/categoriaoutros\",\"https:\/\/twitter.com\/CategoriaOutros\",\"https:\/\/br.pinterest.com\/CategoriaOutros\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40\",\"name\":\"Categoria: Outros\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g\",\"caption\":\"Categoria: Outros\"},\"sameAs\":[\"http:\/\/categoriaoutros.com.br\"],\"url\":\"https:\/\/categoriaoutros.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/categoriaoutros.com.br\/?p=16372","og_locale":"pt_BR","og_type":"article","og_title":"OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros","og_description":"O openNDS (Open Network Demarcation Service) \u00e9 um Captive Portal de alto desempenho e tamanho reduzido. Esse post \u00e9 baseado no post original do OpenWrt. O que \u00e9 um Captive Portal? Um Captive Portal \u00e9 uma t\u00e9cnica de seguran\u00e7a usada em redes Wi-Fi p\u00fablicas ou privadas, onde o acesso \u00e0 internet \u00e9 bloqueado at\u00e9 que...Read More &ldquo;OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?&rdquo; &raquo;","og_url":"https:\/\/categoriaoutros.com.br\/?p=16372","og_site_name":"Categoria Outros","article_publisher":"https:\/\/www.facebook.com\/categoriaoutros","article_published_time":"2024-11-27T13:48:16+00:00","article_modified_time":"2024-11-27T16:57:23+00:00","og_image":[{"width":1022,"height":722,"url":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/pinguim-paginas-padrao.webp","type":"image\/webp"}],"author":"Categoria: Outros","twitter_card":"summary_large_image","twitter_creator":"@CategoriaOutros","twitter_site":"@CategoriaOutros","twitter_misc":{"Escrito por":"Categoria: Outros","Est. tempo de leitura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/categoriaoutros.com.br\/?p=16372#article","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/?p=16372"},"author":{"name":"Categoria: Outros","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40"},"headline":"OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?","datePublished":"2024-11-27T13:48:16+00:00","dateModified":"2024-11-27T16:57:23+00:00","mainEntityOfPage":{"@id":"https:\/\/categoriaoutros.com.br\/?p=16372"},"wordCount":2649,"commentCount":0,"publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"keywords":["captive portal","CPD","CPI","OpenNDS"],"articleSection":["Inform\u00e1tica","Linux"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/categoriaoutros.com.br\/?p=16372#respond"]}]},{"@type":"WebPage","@id":"https:\/\/categoriaoutros.com.br\/?p=16372","url":"https:\/\/categoriaoutros.com.br\/?p=16372","name":"OpenNDS: um Captive Portal OpenSource - Como Funciona? - Categoria Outros","isPartOf":{"@id":"https:\/\/categoriaoutros.com.br\/#website"},"datePublished":"2024-11-27T13:48:16+00:00","dateModified":"2024-11-27T16:57:23+00:00","breadcrumb":{"@id":"https:\/\/categoriaoutros.com.br\/?p=16372#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/categoriaoutros.com.br\/?p=16372"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/categoriaoutros.com.br\/?p=16372#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/categoriaoutros.com.br\/"},{"@type":"ListItem","position":2,"name":"OpenNDS: um Captive Portal OpenSource &#8211; Como Funciona?"}]},{"@type":"WebSite","@id":"https:\/\/categoriaoutros.com.br\/#website","url":"https:\/\/categoriaoutros.com.br\/","name":"Categoria Outros","description":"Assuntos Diversos","publisher":{"@id":"https:\/\/categoriaoutros.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/categoriaoutros.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/categoriaoutros.com.br\/#organization","name":"Categoria Outros","alternateName":"Categoria Outros","url":"https:\/\/categoriaoutros.com.br\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","contentUrl":"https:\/\/categoriaoutros.com.br\/wp-content\/uploads\/2023\/08\/categoriaoutros-logo.jpg","width":400,"height":400,"caption":"Categoria Outros"},"image":{"@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/categoriaoutros","https:\/\/twitter.com\/CategoriaOutros","https:\/\/br.pinterest.com\/CategoriaOutros\/"]},{"@type":"Person","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/ba0f432708449436912bd6736864bb40","name":"Categoria: Outros","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/categoriaoutros.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ed97775f0ab50750ed638ed3417ea85e19ced2c648da167a108e393ae5fd9e33?s=96&d=mm&r=g","caption":"Categoria: Outros"},"sameAs":["http:\/\/categoriaoutros.com.br"],"url":"https:\/\/categoriaoutros.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/16372","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16372"}],"version-history":[{"count":18,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/16372\/revisions"}],"predecessor-version":[{"id":16390,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=\/wp\/v2\/posts\/16372\/revisions\/16390"}],"wp:attachment":[{"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/categoriaoutros.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}