Problema captive portal(não navega e volta para tela de login).



  • Bom dia pessoal.

    Estou com problemas no captive portal,pois o mesmo ao entrar com um usuário criado em local user manager volta a tela de login novamente.Ao habilitar o captive portal percebi que o usuário que está com o navegador configurado para navegar pela porta 3128 passa pela restrição do captive portal.

    Mesmo configurando o navegador para utilizar a porta 8000 ou redirecionando a porta 3128 para 8000 ao entrar na página do captive portal o usuário loga-se e retorna para a mesma página do portal.

    O captive portal status está funcionando corretamente e os usuários fazem login corretamente mas não navegam.



  • Vina,

    Acredito que o proxy de configuração automatica possa resolver o problema.

    Insira na configuração de wpad ou nas exceções do proxy, um site confiável que ative a tela do captive portal

    Em seguida, coloque como página inicial do navegador esta url.

    O resultado esperado é:

    Browser abre e solicita a pagina inicial
    Captive portal pega esta informação, mostra tela
    usuario autentica com sucesso
    proxy na porta 3128 liberada.

    Existem alguns posts no forum dos gringos com outros procedimentos. pesquisa por captive portal then squid ou algo parecido.



  • @marcelloc:

    Vina,

    Acredito que o proxy de configuração automatica possa resolver o problema.

    Insira na configuração de wpad ou nas exceções do proxy, um site confiável que ative a tela do captive portal

    Em seguida, coloque como página inicial do navegador esta url.

    O resultado esperado é:

    Browser abre e solicita a pagina inicial
    Captive portal pega esta informação, mostra tela
    usuario autentica com sucesso
    proxy na porta 3128 liberada.

    Existem alguns posts no forum dos gringos com outros procedimentos. pesquisa por captive portal then squid ou algo parecido.

    Marcelo não entendi muito bem seu post…

    1-Como estou testando essas configurações com o captive portal em uma vm estou sem domínio para configurar o dhcp+dns.
    2-Quais tipos de script posso usar para fazer tal configuração ?
    3-Não era para funcionar normalmente o captive portal se estou configurando manualmente o navegador para acessar o proxy pela porta 3128 ?
    4-Pesquisei no fórum gringo e apenas achei a opção de configurar por domínio.
    Grato marcello.



  • Pula a parte dos scripts e configura no browser a lista de sites que não usam proxy.



  • @marcelloc:

    Pula a parte dos scripts e configura no browser a lista de sites que não usam proxy.

    Desculpa marcello,mas eu ainda não entendi a lógica para tal procedimento..

    Qual séria o motivo de tal erro ocorrer se o proxy foi configurado no navegador manualmente ?O wpad e o pac não teriam esse intuito de configurar esses valores automaticamente ? Não seria a mesma coisa ?

    Quando eu configuro no navegador da seguinte forma:

    Sem proxy para : .uol.com.br

    No captive portal configuro o After authentication Redirection URL para acessar "uol.com.br" e o site acessar normalmente .. qualquer outro volta para a página de login.

    Grato pela sua paciência marcello  :) estou aqui para aprender.

    Se puder me dar um exemplo de seus procedimentos lhe sou grato.



  • Sem marcar o proxy, você consegue acessar o uol sem o captive portal pedir autenticação?



  • @marcelloc:

    Sem marcar o proxy, você consegue acessar o uol sem o captive portal pedir autenticação?

    Como eu estou utilizando o pfsense na vm se eu utilizar a porta 3128 ele passa pelo captive portal e navega normalmente,sem proxy ele navega também.

    Eu não vejo motivo para o captive voltar para a tela de login ao acessar um site se o squid não está em modo transparente e sendo que configurei o navegador para acessar através da porta 8000.



  • Testei diversas formas aqui e nada pessoal  :(

    O maldito captive portal retorna a mesma página apos o login.

    Grato



  • @vina18:

    Testei diversas formas aqui e nada pessoal  :(

    O maldito captive portal retorna a mesma página apos o login.

    Vina,

    Acredito que o captive portal funciona melhor em condições normais lan -> pfsense com captive -> internet.

    o setup com uma placa de rede só pode atrapalhar o funcionamento dele.



  • eu tive um problema parecido quando estava fazendo uns teste,
    dai e percebi que o https era o problema, tenta desabilitar o https do pfsense e limpar o cache do navegador! ;)



  • É estranho pessoal  :-\ ,pois com o navegador configurado para conectar direto pela porta 3128 ele passa pelo captive e navega normalmente nem pede usuário e senha.Já usando a porta 8000 ele continua pedindo usuário e senha (aparece o login realizado com sucesso no status do captive),porém o mesmo continua retornando para a página de login e não navega.

    Testei em máquinas virtuais com winxp e win 7 , o https está desabilitado no pfsense na vm.

    Me parece que é algo em relação a porta,ou com o squid, pois se eu cadastro o site .uol.com.br no navegador para não usar proxy ele ao autenticar navega para essa página que está configurada como "After authentication Redirection URL".Eu imagino que após o login ser realizado com sucesso na porta 8000 do captive ele teria que redirecionar para a porta 3128 que navega normalmente e tal fato não acontece.

    Grato  :)!

    NÃO VOU DESISTIR AEUHUAEUHEA DESSE CAPTIVE   :o



  • Vina,

    Não acredito que marcar a porta 8000 no proxy seja configuração válida para o captive portal.



  • @marcelloc:

    Vina,

    Não acredito que marcar a porta 8000 no proxy seja configuração válida para o captive portal.

    Então tem algo de errado marcello,pois a porta 3128 passa direto pelo captive.Talvez esteja faltando algum redirecionamento de porta ?



  • Vina não é coisa errada, e configuração.

    O captive portal evita o acesso externo não autenticado. Seu proxy está no mesmo servidor que o captive portal.

    Dá uma olhada naquele post que te indiquei

    Captive portal then Proxy server



  • Então marcello..

    Eu testei o captive portal no pfsense que usamos aqui na empresa(não na vm) e o mesmo problema acontece.O captive portal não funciona com proxy não transparente,pois o mesmo não direciona o tráfego para a porta 3128.

    Gostaria de entender a lógica do captive portal.. vamos lá..

    Ao habilitar o captive portal podemos verificar que o mesmo trabalha na porta 8000,pois quando acessamos qualquer site o mesmo nos direciona para ip_pfsense:8000 (isso com proxy transparente),já no modo non-transparent o navegador configurado na porta 3128 passa pelo captive e navega sem autenticação.

    Ao acessar /usr/local/captiveportal/index.php:

    $orig_host = $_ENV['HTTP_HOST'];
    $orig_request = $_REQUEST['redirurl'];
    $clientip = $_SERVER['REMOTE_ADDR'];
    
    if (!$clientip) {
    	/* not good - bail out */
    	log_error("Captive portal could not determine client's IP address.");
    	$error_message = "An error occurred.  Please check the system logs for more information.";
    	portal_reply_page($redirurl, "error", $errormsg);
    	exit;
    }
    
    if (isset($config['captiveportal']['httpslogin']))
        $ourhostname = $config['captiveportal']['httpsname'] . ":8001";
    else {
        $ifip = portal_ip_from_client_ip($clientip);
        if (!$ifip)
        	$ourhostname = $config['system']['hostname'] . ":8000";
        else
        	$ourhostname = "{$ifip}:8000";
    }
    
    if ($orig_host != $ourhostname) {
        /* the client thinks it's connected to the desired web server, but instead
           it's connected to us. Issue a redirect... */
    
        if (isset($config['captiveportal']['httpslogin']))
            header("Location: https://{$ourhostname}/index.php?redirurl=" . urlencode("http://{$orig_host}{$orig_request}"));
        else
            header("Location: http://{$ourhostname}/index.php?redirurl=" . urlencode("http://{$orig_host}{$orig_request}"));
    
        exit;
    }
    if (!empty($config['captiveportal']['redirurl']))
    	$redirurl = $config['captiveportal']['redirurl'];
    else if (preg_match("/redirurl=(.*)/", $orig_request, $matches))
    	$redirurl = urldecode($matches[1]);
    else if ($_REQUEST['redirurl'])
    	$redirurl = $_REQUEST['redirurl'];
    
    $macfilter = !isset($config['captiveportal']['nomacfilter']);
    $passthrumac = isset($config['captiveportal']['passthrumacadd']);
    

    -Como o proxy transparente consegue receber a requisição pela porta 80 >autenticar no captive portal>retornar a validação correta e passar para a porta 3128 do squid ?
    -Por que o proxy não transparente quando configurado para acessar por ip_pfsense:3128 passa direto pelo captive portal ?
    -Como posso fazer com que o usuário ao autenticar pela porta 8000 senha direcionado para a porta 3128 ?
    -Eu fiz um nat da 3128 para a 8000 mas isso não tem lógica e não funciona  :(

    Grato  ;D TESTES E + TESTES



  • Troquei a porta padrão do captive portal pessoal e estou editando o arquivo index….

    Posto aqui se conseguir resultados positivos  :)



  • Cheguei a conclusão que o captive com proxy não transparente não funciona  :-\ tentei e testei de tudo que é jeito e não deu certo.

    Em modo transparente o usuário consegue burlar o proxy colocando no navegador o ip do pfsense e porta 3128, a solução é fazer um nat da porta 3128 para 8000.

    Quem tiver uma solução posta aqui.



  • Mesma conclusão no forum dos gringos

    http://forum.pfsense.org/index.php/topic,40552.0.html

    Minha opinião é que isso pode ser facilmente resolvido incluindo nas regras do captive portal o bloqueio da porta do squid.

    65291   0      0 allow pfsync from any to any
    65292  24   1344 allow carp from any to any
    65301  78   3576 allow ip from any to any layer2 mac-type 0x0806
    65302   0      0 allow ip from any to any layer2 mac-type 0x888e
    65303   0      0 allow ip from any to any layer2 mac-type 0x88c7
    65304   0      0 allow ip from any to any layer2 mac-type 0x8863
    65305   0      0 allow ip from any to any layer2 mac-type 0x8864
    65306   0      0 allow ip from any to any layer2 mac-type 0x888e
    65307  66  19942 deny ip from any to any layer2 not mac-type 0x0800
    65310 422 204676 allow ip from any to { 255.255.255.255 or 172.16.0.6 } in
    65311 551 277268 allow ip from { 255.255.255.255 or 172.16.0.6 } to any out
    65312   0      0 allow icmp from { 255.255.255.255 or 172.16.0.6 } to any out icmptypes 0
    65313   0      0 allow icmp from any to { 255.255.255.255 or 172.16.0.6 } in icmptypes 8
    65314   0      0 allow ip from table(3) to any in
    65315   0      0 allow ip from any to table(4) out
    65316   0      0 pipe tablearg ip from table(5) to any in
    65317   0      0 pipe tablearg ip from any to table(6) out
    65318   0      0 allow ip from any to table(7) in
    65319   0      0 allow ip from table(8) to any out
    65320   0      0 pipe tablearg ip from any to table(9) in
    65321   0      0 pipe tablearg ip from table(10) to any out
    65322   0      0 allow ip from table(1) to any in
    65323   0      0 allow ip from any to table(2) out
    65531   0      0 fwd 127.0.0.1,8000 tcp from any to any in
    65532   0      0 allow tcp from any to any out
    65533  10    931 deny ip from any to any
    65534   0      0 allow ip from any to any layer2
    65535   3    140 allow ip from any to any
    
    

    Com muito cuidado, execute os seguintes passos na console:

    • Copie o arquivo /etc/inc/captiveportal.inc para a pasta root (cp /etc/inc/captiveportal.inc /root/captiveportal.backup.inc)

    • entre no home do root (cd /root)

    • baixe o arquivo modificado  (fetch https://github.com/downloads/marcelloc/pfsense-packages/captiveportal_201_amd64.inc)

    • Copie o arquivo arquivo para a pasta do pfsense (cp captiveportal_201_amd64.inc /etc/inc/captiveportal.inc)

    • acesse a pagina do captive portal e salve as configurações

    O arquivo modificado bloqueia a porta 3128 até você autenticar no captive portal (assim espero  ;))

    A definição da porta esta na linha 449 do /etc/inc/captiveportal.inc.

    Boa sorte!

    Não esquece do feedback. Posso postar isso no fonte do pfsense para a proxima versão.



  • Vou testar sim marcello e muito obrigado pela resposta  :D

    TÓPICO RESOLVIDO


Log in to reply