Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Configurar squid numa interface autenticado e na outra transparent

    Scheduled Pinned Locked Moved Portuguese
    34 Posts 6 Posters 6.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • G Offline
      gerardocoelho
      last edited by

      No meu caso preciso usar uma instancia como transparente para rede wifi com captive portal ( autenticacao e vouchers)
      E a outra instancia proxy ativo para rede dos funcionários.
      Preciso pegar os logs de acesso das duas redes.
      Você testou se esta pegando os logs de acesso das duas redes?

      1 Reply Last reply Reply Quote 0
      • R Offline
        rlrobs
        last edited by

        Pra integrar o captive ao squid vc tem q trocar o script check_ip.sh pq o original tem bug. Depois posto o script q funciona aqui ,mas se quiser adiantar da uma pesquisada aqui no fórum em português… tem um colega q postou um  script q funciona.

        1 Reply Last reply Reply Quote 0
        • G Offline
          gerardocoelho
          last edited by

          Vou ver…
          testou se esta pegando os logs de acesso das duas redes?
          Eu uso aqui o LogSquid, muito bom por sinal.

          1 Reply Last reply Reply Quote 0
          • I Offline
            isaiasbertin
            last edited by

            Nós meus teste aparece na interface web os logs do squid das duas redes.

            Vou fazer os teste que nosso colega passou
            Ai passo para vcs

            1 Reply Last reply Reply Quote 0
            • R Offline
              rlrobs
              last edited by

              Sim.. os logs do webgui são das duas instâncias pq elas compartilham o cache.log e o access.log.

              1 Reply Last reply Reply Quote 0
              • I Offline
                isaiasbertin
                last edited by

                Este post está merecendo um belo de toturial né rlrobs

                1 Reply Last reply Reply Quote 0
                • G Offline
                  gerardocoelho
                  last edited by

                  Poderia enviar o script do captive portal funcionando? Eu até testei o captive portal no 2.3.1 e parece que está ok nos meus testes, mas não coloquei em um ambiente de produção.
                  Você ativou o wpad na rede do proxy autenticado?
                  Já testei vários tutoriais sem sucesso, se puder enviar, agradeço.
                  Att.
                  Gerardo Coelho

                  1 Reply Last reply Reply Quote 0
                  • R Offline
                    rlrobs
                    last edited by

                    O captive portal funciona ta normal sim. O problema é quando você muda a autenticação do squid para "captive portal". Além de nao  navegar, não loga os acessos dos usuários. Pra corrigir isso troque o conteúdo do script /usr/local/bin/check_ip.php por esse abaixo:

                    Obs: após a troca do conteúdo edite as configurações do squid e do captive portal e mande salvar (não precisa modificar)

                    
                    #!/usr/local/bin/php-cgi -q
                    /*
                    	check_ip.php
                    	part of pfSense (https://www.pfSense.org/)
                    	Copyright (C) 2013-2016 Marcello Coutinho
                    	Copyright (C) 2016 ESF, LLC
                    	All rights reserved.
                    
                    	Redistribution and use in source and binary forms, with or without
                    	modification, are permitted provided that the following conditions are met:
                    
                    	1\. Redistributions of source code must retain the above copyright notice,
                    	   this list of conditions and the following disclaimer.
                    
                    	2\. Redistributions in binary form must reproduce the above copyright
                    	   notice, this list of conditions and the following disclaimer in the
                    	   documentation and/or other materials provided with the distribution.
                    
                    	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
                    	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
                    	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
                    	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
                    	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                    	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                    	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                    	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                    	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                    	POSSIBILITY OF SUCH DAMAGE.
                    */
                    require_once("config.inc");
                    require_once("globals.inc");
                    if (!extension_loaded('sqlite3')) {
                    dl("sqlite3.so");
                    }
                    error_reporting(0);
                    global $g;
                    // stdin loop
                    if (!defined(STDIN)) {
                    	define("STDIN", fopen("php://stdin", "r"));
                    }
                    if (!defined(STDOUT)) {
                    	define("STDOUT", fopen('php://stdout', 'w'));
                    }
                    while (!feof(STDIN)) {
                    	$line = trim(fgets(STDIN));
                    	$files = glob("{$g['vardb_path']}/captive*.db");
                    	$answer="ERR";
                    	foreach ($files as $file) {
                    		$result = squid_cp_read_db($file);
                    	foreach ($result as $row) {
                    //Database contains 5 fields: 1461302438 - 2006 - 192.168.4.100 - fc:aa:14:7d:e6:de - admin - 80b7d55a1bacb9c6
                    			if ($row[2] != "" && $row[2] == $line) {
                    				$answer = "OK user={$row[4]}";
                    				break 2;
                    			}
                    		}
                    	}
                    	fwrite(STDOUT, "{$answer}\n");
                    }
                    /* read captive portal DB into array */
                    function squid_cp_read_db($file) {
                    	$cpdb = array();
                    	$DB = new SQLite3($file);
                    	if ($DB) {
                    		$response = $DB->query("SELECT * FROM captiveportal");
                    		if ($response != FALSE) {
                    			while ($row = $response->fetchArray()) {
                    				$cpdb[] = $row;
                    			}
                    		}
                    		$DB->close();
                    	}
                    	return $cpdb;
                    }
                    
                    ?>
                    
                    
                    1 Reply Last reply Reply Quote 0
                    • marcellocM Offline
                      marcelloc
                      last edited by

                      Já tentaram no lugar de dois squid rodando, apenas um com custom acls?

                      Treinamentos de Elite: http://sys-squad.com

                      Help a community developer! ;D

                      1 Reply Last reply Reply Quote 0
                      • R Offline
                        rlrobs
                        last edited by

                        @marcelloc:

                        Já tentaram no lugar de dois squid rodando, apenas um com custom acls?

                        Não tentei. Confesso que nao manjo muito dessas ACLs do squid, mas cheguei a pensar nisso. Na verdade seria uma opção mais elegante. :D

                        1 Reply Last reply Reply Quote 0
                        • marcellocM Offline
                          marcelloc
                          last edited by

                          @rlrobs:

                          Na verdade seria uma opção mais elegante.

                          Além de elegante, fica tudo no backup e não precisaria de patches ou arquivos criados na mão.

                          Treinamentos de Elite: http://sys-squad.com

                          Help a community developer! ;D

                          1 Reply Last reply Reply Quote 0
                          • I Offline
                            isaiasbertin
                            last edited by

                            Marcello já tentei fazer isso, mas do jeito que fiz não consegui criar as entradas no firewall pf que seria responsável por redirecionar a porta 80 para 3128 pois quando seleciona as interfaces e digo que são transparentes ele cria automaticamente duas entradas no firewall pf uma pass e uma rdr essas eu não consegui reproduzir na interface web que dica vc nos dá

                            1 Reply Last reply Reply Quote 0
                            • marcellocM Offline
                              marcelloc
                              last edited by

                              O rdr é um nat.

                              Treinamentos de Elite: http://sys-squad.com

                              Help a community developer! ;D

                              1 Reply Last reply Reply Quote 0
                              • I Offline
                                isaiasbertin
                                last edited by

                                Podes dar um exemplo na interface web como fazer isso pois confesso tentei fazer mas não consegui

                                1 Reply Last reply Reply Quote 0
                                • G Offline
                                  gerardocoelho
                                  last edited by

                                  Não consegui rodar o squid em duas instancias…
                                  Configurei para cada interface o que eu queria, copiei o squid.conf das duas...
                                  mas acho que tem algo errado no script que peguei aqui...
                                  Meu cenário sao duas WANS, uma LAN (rede com proxy ativo) e LANWIFI(rede com proxy transparente).

                                  Esse script abaixo é pra rodar a outra configuração de proxy do squid

                                  
                                  Script de inicialização da segunda instância. (iniciará no boot) 
                                  Pf 2.3: /usr/local/etc/rc.d/check_squid-auth.sh
                                  
                                  #!/bin/sh
                                  
                                  /bin/ps ax | /usr/bin/grep /usr/local/etc/squid/squid-auth.conf | /usr/bin/grep -v grep
                                  if [ $? -eq 0 ];then
                                      /bin/echo ok
                                  else
                                      /usr/local/sbin/squid -f /usr/local/etc/squid/squid-auth.conf
                                  fi
                                  
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post
                                  Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.