http://www.zago.eti.br/squid/squid-CL9.txt Tutorial, com dicas e modelos pra copiar e colar, todos os passos pra instalar e configurar o Squid no CL9 e CL10 A versão do Squid é a mesmA no CL9 e CL10, as regras, diretivas e configurações funcionam sem problema nas duas versões. http://www.zago.eti.br/squid/A-menu-squid.html Use CTRL+F para refinar a pesquisa. Linha de: **************** separa mensagens ou tópicos. ******************************************************** Zago http://www.zago.eti.br/menu.html FAQ e artigos sobre Linux Passo a passo pra instalar e configurar um servidor proxy, (Squid) em uma instalação do CL9 com internet compartilhada e funcionando conforme um destes tutoriais: http://www.zago.eti.br/adsl-compartilhar.txt http://www.zago.eti.br/modem/modem-compartilhar.txt Acesse: http://www.conectiva.com.br/cpub/pt/doc/livros.php procure por: GUIA DO SERVIDOR CONECTIVA LINUX 9 - PROFESSIONAL EDITION escolha => Consulta on-line => Download Neste livro procure por Servidor-Proxy, direto em: http://www.conectiva.com/doc/livros/online/9.0/servidor/www.html#WWW0047 tem um excelente passo a passo pra configurar o Squid. http://www.linuxman.pro.br/squid/ Excelente e completo documento em portugues sobre a instalação e configuração do Squid, tem capitulos especiais sobre: Bloqueio de Banners Protegendo usuários com antivírus Autenticando usuários Controle de Banda Usando ACLs externas MAC Address tipos de acl Neste tutorial todos os comandos devem ser executados como root, abra um terminal e torne root com su - veja dicas sobre copiar e colar em: http:www.zago.eti.br/cp.txt ****************************************************************** RESUMO ZAGO (resumo de comandos) prontos pra copiar e colar # Instalar apt-get install squid.* ##Criar diretório squid e liberar todas as permissões: mkdir /var/spool/squid chmod 777 /var/spool/squid ##Criar e liberar o arquivo de log: chmod 777 /var/log/squid touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log #copiar modelo de configuração e acl cd /etc/squid wget 200.204.198.164/zago/squid/acl/squid.conf-transparente.txt wget 200.204.198.164/zago/squid/acl/direto.txt wget 200.204.198.164/zago/squid/acl/negasites.txt wget 200.204.198.164/zago/squid/acl/negapalavra.txt wget 200.204.198.164/zago/squid/acl/liberapalavra.txt mv squid.conf squid-default.conf cp squid.conf-transparente.txt squid.conf Também pode usar o "vi" com lynx pra trazer os textos acima pro editor "vi", assim voce traz o texto pra dentro do editor vi, faz os ajustes das palavras, acl e personaliza a configuração pra salvar o arquivo já personalizado pra suas necessidades, renomeie o arquvo de configuração da instalação: mv squid.conf squid-default.conf veja dicas no FAQ cp.txt e use os comandos: :r !lynx -dump http://200.204.198.164/zago/squid/acl/squid.conf-transparente.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/direto.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/negasites.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/negapalavra.txt :r !lynx -dump http://200.204.198.164/zago/squid/acl/liberapalavra.txt ##Iniciar Squid somente pra este boot: service squid start # configurar pra iniciar Squid automaticamente em todo boot. chkconfig squid on MENSAGENS ERROS As mensagens de sites negados por padrão serão exibidas em ingles, o Squid exibe a pagina em html que está em: /usr/share/squid/errors/English/ERR_ACCESS_DENIED pra exibi-las em Portugues, e faciliar esta configuração, troque este arquivo pelo que está em portugues no diretório: /usr/share/squid/errors/Portuguese/ERR_ACCESS_DENIED mv /usr/share/squid/errors/English/ERR_ACCESS_DENIED /usr/share/squid/errors/English/ERR_ACCESS_DENIED-ingles cp /usr/share/squid/errors/Portuguese/ERR_ACCESS_DENIED /usr/share/squid/errors/English/ERR_ACCESS_DENIED squid -z squid -k reconfigure Redirecionar todo o trafego da porta 80 (navegação) pro Squid, acrescente nas regras do firewall (no servidor) esta linha: iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 Esta regra não pode ser colocada em qualquer lugar do firewall, no Iptables a ordem das regras tem influencia no resultado, pra testar o Squid, use somente regras pra compartilhar a conexão e redirecionar o trafego pro Squid, como exemplo pode utilizar estas regras: modprobe iptable_nat iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward Altere a interface ppp0 para o correto da tua rede, cuidado com a quebra de linhas, no exemplo acima são 4 linhas, a primeira carraga o modulo do Iptables, a segunda linha faz o redirecionamento de todo o trafego da porta 80 pro Squid na porta 3128, a terceira e quarta linha faz NAT para os demais serviços não controlados pelo Squid, como e-mail, conexões por ssh, ftp e etc.., depois que tudo funcinar, implante as suas regras de firewall, veja mais sobre firewall em: http://www.zago.eti.br/firewall Pra quem já tem um firewall rodando, precisa reiniciar este serviço, ou reiniciar a maquina com o novo script. Na estação windows, botão auxiliar no icone do IE -> propriedades -> conexão -> em servidor proxy informe o IP do servidor squid e na porta informe 3128 Sempre que fizer qualquer alteração nos arquivos de configurações ou nos arquivos das acl, precisa recarregar (reconfigurar) o squid com: squid -k reconfigure Parabéns voce conseguiu!!!, caso ocorra alguma mensagem de erro ou não funcione, veja dicas e mais mais detalhes nos proximos tópicos deste texto. ****************************************************************** Configurando Squid no CL9, instalado com perfil "estação de trabalho", pra ser utilizado como estação de trabalho Linux e compartilhar conexão de internet por modem discado ou ADSL para as demais maquinas da rede, tanto os clientes Linux ou windows. Faça por parte, facilita na localização e resolução de problemas: 1 - Instale o CL9 com perfil estação de trabalho 2 - Instale o modem ou ADSL e teste a navegação. 3 - compartilhe a conexão para as demais maquinas da rede e teste se o servidor continua navengando e as estações também: http://www.zago.eti.br/adsl-compartilhar.txt ou http://www.zago.eti.br/modem/modem-compartilhar.txt Passe pra instalação e configuração do Squid somente depois que superar os itens acima, tanto o servidor como as estações navegarem. INSTALAÇÃO E CONFIGURAÇÃO DO SQUID (PROXY TRANSPARENTE) No CL9 instalado com perfil "estação de trabalho" não instala pacotes do Squid, instale estes pacotes: squid, linuxconf-squid, squid-auth e squid-extra-templates Pra instalar com apt-get em uma só linha de comando, execute: apt-get install squid.* linuxconf-squid Quem instalou por outro perfil ou opções, confira com o comando: rpm -qa |grep squid Compare o teu resultado com o abaixo: # rpm -qa |grep squid squid-extra-templates-2.5.1-25760cl squid-2.5.1-25760cl squid-auth-2.5.1-25760cl Retornando o nome e versão parerecido com o resultado acima então está instalado. Não retornando nada, nem erros então não está instalado. Retornando mensagem de erro é comando errado, verifique a sintaxe. ****************************************************************** CONFIGURANDO O SERVIDOR SQUID (PROXY) TRANSPARENTE (SEM AUTENTICAÇÃO) Considerando que o micro já compartilha a conexão por ADSL ou modem discado. Considerando que já instalou os pacotes: # rpm -qa |grep squid squid-extra-templates-2.5.1-25760cl squid-2.5.1-25760cl squid-auth-2.5.1-25760cl Redirecionar todo o trafego da porta 80 (navegação) pro Squid, acrescente nas regras do firewall (no servidor) esta linha: iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 O arquivo de confgiguarção do Squid fica em /etc/squid/squid.conf ele é grande e tem muitas opções de configuração. Na instalação vem com 3194 linhas incluindo comentarios e opções de configuração, a maioria comentadas, voce pode editar o arquivo pra tirar os comentarios ou alterar as linhas desejadas, fazer isto é muito trabalhoso e sujeito a erros. A melhor solução é substituir o arquivo squid.conf por outro previamente configurado e personalizado pra suas necessidades, por exemplo o de outra instalação, backup ou até mesmo o modelo que se encontra neste site (diretório), antes renomeie o arquivo /etc/squid/squid.conf pra outro nome e depois faça a copia do squid.conf desejado pra /etc/squid/. pra renomear o original: mv /etc/squid/squid.conf /etc/squid/squid-default.conf Na falta de um squid.conf, faça copia do modelo que se encontra neste site, copie o squid.conf-tranparente.txt pra /etc/squid e depois renomeie pra squid.conf Melhor copiar todo o diretório acl, tem varios arquivos com exemplos de ACL. http://www.zago.eti.br/squid/acl/ ##Crie o diretório squid e libera todas as permissões: mkdir /var/spool/squid chmod 777 /var/spool/squid ##Crie e libere o arquivo de log: chmod 777 /var/log/squid touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log ##Inicie o Squid com: service squid start O comando acima perde efeito quando a maquina for reiniciada, pra iniciar o Squid junto com o boot da maquina, vale somente a partir do proximo boot, execute: chkconfig --level 35 squid on squid -z squid -k reconfigure A C L - CONTROLANDO ACESSO À INTERNET. O squid tem um excelente controle de acesso à internet, pode ser por IP, dominio, palavra e etc..., este controle é feito por acl, pra facilitar a manutenção o ideal é criar arquivos externos, são arquivos texto com os termos que desaja o bloqueio ou liberação, assim qualquer ateração basta editar estes arquivos pra fazer a correção e não precisa alterar nada no squid.conf. ACL PRA LIBERAR SITE DIRETO Alguns sites tem problemas ao passar pelo proxy, principalmente os sites seguros, entre eles estão os sites de bancos, da receita federal e alguns mais, até é possivel liberar as portas e configurar uma "acl" exclusiva a eles, prefiro liberar direto, sem passar pelo proxy, Inclua no arquivo /etc/squid/direto.txt os sites que voce queira liberar. Os sites listados neste arquivo estão totalmente liberados, não tem cache, não tem log de acesso, não não passam pelo proxy, estão sujeitos as regras de NAT do firewall. Desta maneira tem cache acl direto url_regex -i "/etc/squid/direto.txt" http_access allow direto all Desta maneira não tem cache acl NOCACHE url_regex "/etc/squid/direto.txt" \? no_cache deny NOCACHE ACL PRA LIBERAR SITE DIRETO (POR IP DE DESTINO) Esta liberação também pode ser feito por IP, pra acessar algum servidor por IP, por exemplo sites hospedados em ADSL e acessados por redirecionadores ou mesmo sites que se conhece o IP e queira controlar pelo IP e não pelo dominio, em ambos os casos esta ACL se aplica ao IP de destino, crie um arquivo, por exemplo ipdireto.txt em /etc/squid e dentro dele relacione os IP destino que queira liberar pra acesso direto à internet, relacione um IP por linha. acl ipdireto dst "/etc/squid/ipdireto.txt" http_access allow ipdireto ACL PRA LIBERAR ESTAÇÃO POR (POR IP REMETENTE) Voce pode liberar algumas estações, por exemplo a do chefe, patrão e alguma estação especial, esta liberação pode ser feita por IP, crie o arquivo, neste exemplo é /etc/squid/iplocal.txt e nele relacione um IP por linha, todos os IP que constarem neste arquivo estão liberados pra acesso à internet. acl iplocal src "/etc/squid/iplocal.txt" http_access allow iplocal ACL POR PALAVRA. Estas "acl" barram o acesso a todo site que tenha no endereço palavra listada no arquivo /etc/squid/negapalavra.txt e libera as excessões que são as palavras listadas no arquivo /etc/squid/liberapalavra.txt # acl pra bloquear palavras nos endereços e liberar excessões acl negapalavra url_regex "/etc/squid/negapalavra.txt" acl liberapalavra url_regex "/etc/squid/liberapalavra.txt" http_access allow liberapalavra all http_access deny negapalavra all tem poucas palavras neste modelo (negapalavra.txt) voce pode substituir este arquvo por um mais completo, procure por blacklist em: http://www.squidguard.org http://www.squidguard.org/blacklist/ Também pode monitorar os logs com "tail -f /var/log/squid/access.log" pra bloquear basta acrescentar a palavra no arquivo negapalavra.txt, pra liberar basta remover a palavra ou incluir o site no arquivo liberapalavra.txt, sempre que fizer alteração precisa recarregar o squid com: squid -k reconfigure após o comando acima as alterações passam a valer. A C L PRA BLOQUEAR DOWNLOAD DE ARQUIVOS. Crie o arquivo /etc/squid/negadownload.txt neste arquivo relacione os tipos de arquivos que queira barrar, este arquivo deve ter a seguinte estrutura: \.mp3$ \.exe$ \.mpg$ \.avi$ # criar uma acl para incluir os tipos de arquivo acl negadownload urlpath_regex -i "/etc/squid/negadownload.txt" http_access deny negadownload ****************************************************************** COMANDOS: Para carregar o Squid junto com a inicialização do Linux, execute: chkconfig --level 35 squid on Comandos úteis pra manutenção: service squid stop ## parar o serviço squid service squid start ## iniciar o serviço squid service squid restart ## reinicar o serviço squid. service squid status ## ver status, se está rodando ou não. Após alterar configurações do squid, dê um killall -9 no squid, rode um squid -z e em seguida restarte o squid. após alterações recarregue o squid com: squid -k reconfigure Apagar cache, limpar todo o cache, vai reiniciar do zero, execute: squid -z Pra testar o squid: squid -k check Parar o Squid service squid stop ****************************************************************** LADO ESTAÇÃO WINDOWS - configuração da estação WIN98 Na estação que já navegava antes de iniciar a configuração do Squid, precisa alterar as propriedades do Internet Explorer pra navegar via proxy. No Desktop click com botão auxiliar sobre o icone do Internet explorer e depois em propriedades pra abrir a janela "Propriedades de Internet" Nesta tela click em "conexões" Procure e marque a opção: Acessar a internet por um servidor proxy Preencha o campo endereço com o IP do servidor proxy e o campo Portas com:3128 OBS. Este IP é o mesmo da placa de rede do servidor ligado ao HUB pra rede interna, é o mesmo do gateway informado em TCP/IP. OK pra fechar todas as janelas e depois abra o IE pra navegar normalmente atravez de um servidor proxy. ****************************************************************** LADO ESTAÇÃO LINUX - configuração da estação. ****************************************************************** Anotações e teste pra solução de problemas com travamento no CL10 O squid.conf foi modificado para esta configuração: http://200.204.198.164/zago/squid/acl/squid.conf-transp-testcl10 Nesta instalação seguir todos os passos desde o inicio deste tutorial, trocar a copia indicada no tutorial pelo que está no endereço acima e executar estes comandos: rm -rf /var/cache/squid mkdir /var/cache/squid chown proxy.proxy /var/cache/squid chgrp proxy /var/cache/squid chmod 777 /var/log/squid/access.log chown proxy.proxy /var/log/squid/access.log chgrp proxy /var/log/squid squid -z RunCache& service squid start rm -rf /var/cache/squid mkdir /var/cache/squid chown nobody.nobody /var/cache/squid chgrp nobody /var/cache/squid chmod 777 /var/log/squid/access.log chown nobody.nobody /var/log/squid/access.log chgrp nobody /var/log/squid squid -z service squid start RunCache& mensagens reportadas quando ocorria o erro, copia de parte das mensagens de: /var/log/messages Aug 10 01:27:32 servmail squid[6891]: Squid Parent: child process 6954 exited due to signal 6 Aug 10 01:27:35 servmail squid[6891]: Squid Parent: child process 6984 started Aug 10 01:27:35 servmail (squid): storeUfsDirOpenSwapLog: Failed to open swap log. Aug 10 01:27:35 servmail squid[6891]: Squid Parent: child process 6984 exited due to signal 6 Aug 10 01:27:39 servmail squid[6891]: Squid Parent: child process 7012 started Aug 10 01:27:39 servmail (squid): storeUfsDirOpenSwapLog: Failed to open swap log. Aug 10 01:27:39 servmail squid[6891]: Squid Parent: child process 7012 exited due to signal 6 Aug 10 01:27:39 servmail squid[6891]: Exiting due to repeated, frequent failures Aug 10 01:30:10 servmail squid[8143]: Squid Parent: child process 8145 started Aug 10 01:32:11 servmail squid: Squid is already running! Process ID 8145 ****************************************************************** ****************************************************************** OBSERVAÇÕES IMPORTANTES!!!! DICAS PRA SOLUÇÃO DE PROBLEMAS. DICAS & TRUQUES D I C A S !!! >>> Dica: edite o arquivo /etc/squid.conf e leia atentamente os comentários, pois neles tem explicações pra configurações possíveis... >>> - O Squid para de analizar as regras na primeira que for atentida, quando precisar de alguma excessão de regra, por exemplo liberar um IP para não passar pelas regras, esta deverá se colocada antes da que proibe. O Squid é o contrário do iptables, deve liberar primeiro, depois proibir. >>> ERROS. Caso ocorra alguma mensagem de erro ou "FALHOU", procure no log: /var/log/messages Neste arquivo procure pelas referencias ao Squid, a maioria dos erros estão registradas neste arquivo, também tem a opção de configurar o debug do Squid pra fazer uma depuração mais detalhada. O comando tail permite acompanhar os logs no momento de criação, no FAQ log.txt (neste site) tem mais dicas sobre o uso deste comando. Consulte os logs: /var/log/squid /var/log/squid/access.log /var/log/squid/cache.log /var/log/messages /var/log/message verifique o espaço livre em disco: verifique o espaço nas partições, por exemplo em /var/log >>> Apagar cache, limpar todo o cache, vai reiniciar do zero, execute: Precisa parar o squid, pra parar execute: service squid stop pra limpar o cache: squid -z >>> Reiniciar o Squid: squid -k reconfigure >>> Pra testar o squid: squid -k check >>> Parar o Squid service squid stop ou da forma mais radical kill -9 squid >>> >>> >>> >>> No primeiro acesso a cada site não deverá apresentar diferença no desempenho porque o cache está vazio, cada pagina acessada ficará gravado no cache do squid pra agilizar os proximos acessos ao mesmo site, o papel do proxy é este, armazenar as paginas acessadas e nos proximos acessos faz comparação com o cache, quando não foram alteradas o squid não faz o download novamente, simplesmente entrega o que estava no cache, por isto a recomedação de HD SCSI pra dar mais velocidade no acesso ao cache em disco, dependendo da rede e volume de sites acessados, este chache pode se tornar grande, monitore o espaço em disco e periodicamente limpe o cache do squid executando como root: squid -z >>> Erro 'visible_hostname' # service squid start Iniciando squid FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname' Squid Cache (Version 2.5.STABLE1): Terminated abnormally. CPU Usage: 0.010 seconds = 0.010 user + 0.000 sys Maximum Resident Size: 0 KB Page faults with physical i/o: 405 /etc/init.d/squid: line 118: 1583 Abortado (core dumped) $SQUID [FALHOU] MOTIVO DO ERRO. Faltou acertar o /etc/hosts Este erro é porque o dominio e ou apelido estão incompletos, abaixo a forma errada: cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.103 zago SOLUÇÃO: precisa informar o IP da maquina mais dominio e apelido, na forma de um dominio, mesmo que não exista, mas precisa obedecer o formato como está abaixo, desta maneira funciona e não ocorre mais a mensagem de erro. cat /etc/hosts 127.0.0.1 localhost.localdomain localhost 192.168.1.103 zago.eti.br zago >>> Erro ao iniciar ou reconfigurar o squid: # squid -k reconfigure squid: ERROR: No running copy Além desta mensagem na tela consta no log /var/log/message: Nov 22 02:36:31 zago (squid): Cannot open '/var/log/squid/access.log' for writing. ^IThe parent director Pra solucionar o problema criei e dei permissão total no diretório /var/spool/squid e /var/log/squid, com esta liberação o Squid passou a funcionar mas qualquer usuário pode acessar e alterar os logs do Squid, voce pode ajustar estas permissões a seu modo. EXPLICANDO: pro comando service squid start o resoltado era OK e não exibia mensagem de erro, mas ao executar # squid -k reconfigure squid: ERROR: No running copy [root@csr spool]# service squid stop Interrompendo squid squid: ERROR: No running copy [FALHOU] Consultando os logs de /var/log/messages..... Nos log de /var/log/messages aparecia esta mensagem: Nov 20 14:24:41 csr squid: Failed to make swap directory /var/spool/squid: (13) Permission denied Nov 20 14:24:41 csr squid: 2003/11/20 14:24:41| Creating Swap Directories Nov 20 14:24:41 csr squid: FATAL: Failed to make swap directory /var/spool/squid: (13) Permission denied Nov 20 14:24:41 csr squid: Squid Cache (Version 2.5.STABLE1): Terminated abnormally. Pra solucionar executei: mkdir /var/spool/squid chmod 777 /var/spool/squid Também nos log de /var/log/messages aparecia esta mensagem: Nov 20 14:29:12 csr (squid): Cannot open '/var/log/squid/access.log' for writing. ^IThe parent directory must be writeable by the ^Iuser 'nobody', which is the cache_effective_user ^Iset in squid.conf. Nov 20 14:29:12 csr squid[2678]: Squid Parent: child process 2765 exited due to signal 6 Pra solucionar executei: touch /var/log/squid/access.log chmod 777 /var/log/squid/access.log Alterar a regra do firewall: para iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 >>> PERSONALIZAR MENSAGEM DE ERRO: As mensagens exibida pelo Squid, como Acesso negado e outras, são arquivos HTML que voce pode editar a seu modo, incluir logo, figuras e etc.., estes arquivos estão em: /usr/share/squid/errors/Portuguese Faça testes com alterações no conteúdo do arquivo: ERR_ACCESS_DENIED mantenha o nome do arquivo, altere somente o conteúdo. >>> ****************************************************************** L O G Analizadores de log do Squid. SARG, vaja mais em: http://www.zago.eti.br/squid/sarg.txt webalizer, acesse: http://www.mrunix.net/webalize >>> Acompanhar a geração do log de acesso a internet. Monitorar clientes na rede interna, acompanhar as entradas serem registradas no arquivo de log, (carregamento de GIFs, Paginas, etc). Veja no arquivo de configuração onde determinou a gravação do log, pra este exemplo está assim: cache_access_log /var/log/squid/access.log então pra este exemplo utilize: tail -f /var/log/squid/access.log Pra quem configurou pra gravar os log em outro local, basta acertar o caminho no comando acima. >>> [root@squid root]# service squid status squid (pid 1149 1147) está rodando... [root@squid root]# ps -aux | grep squid root 1147 0.0 0.6 5612 1656 ? S 09:30 0:00 /usr/sbin/squid nobody 1149 0.3 5.2 17440 13332 ? S 09:30 0:15 (squid) root 1311 1.0 0.2 1848 720 pts/0 S 10:55 0:00 grep squid [root@squid root]# chkconfig --list squid squid 0:não 1:não 2:não 3:sim 4:não 5:sim 6:não >>> ****************************************************************** ****************************************************************** Copia da configuração default da instalação O arquivo de configuração do Squid fica em: /etc/squid/squid.conf na instalação vem com 3194 linhas e sem comentarios somente estas linhas: hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? no_cache deny QUERY auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT # Only allow cachemgr access from localhost http_access allow manager localhost http_access deny manager # Deny requests to unknown ports http_access deny !Safe_ports # Deny CONNECT to other than SSL ports http_access deny CONNECT !SSL_ports http_access deny all http_reply_access allow all icp_access allow all coredump_dir /var/cache/squid ****************************************************************** Testar Esta regra é pra ser colocada no firewall antes da regra que rediciona o trafego pro Squid, em $IP_LIBERADO vai o IP da maquina que não deverá passar pelo servidor proxy, passará somente pelo NAT. iptables -A FORWARD -s $IP_LIBERADO -p tcp -d 0.0.0.0/0   -j ACCEPT iptables -A FORWARD -s 192.168.1.0/24 -p udp -d 0.0.0.0/0   -j DROP ****************************************************************** EXPLICANDO SOBRE OS TIPOS DE ACL acl Define uma lista de acesso, pode esta na mesma linha de criação da acl ou quando são muitas palavras (expressões) utilize arquivo texto com uma informação por linha, na linha de criação da acl indique este arquivo, a opção -i serve pra tratar as expressões tanto em minuscula como maiusculas, sem a opção -i serão tratadas como case-sensitive. acl nome tipo string1 ... | "arquivo" src Baseado em ip ou hostname de origem da requisição acl nome src ip/máscara. acl acl "" sendo: acl = indicação que é uma acl. = nome dado a acl, pode ser qualquer um. = tipo de acl, por exemplo src, url_regex etc.. = a condição exigida, depende do tipo de acl, pode ser uma palavra, dominio .... "" = quando a condição contiver varias palavras ou dominios fica mais fácil colocar tudo em um arquivo e indica-lo na acl. Exemplo de acl acl direto url_regex -i "/etc/squid/direto.txt" http_access allow direto all Neste exemplo o nome da acl direto, expressão url_regex é pra forçar a pesquisa na URL, a condição pode estar em uma string na própria linha da acl, ou em um arquivo, neste exemplo foi indicado o arquivo direto.txt, portanto entre parentese e indicando o caminho e o nome do arquivo: "/etc/squid/direto.txt" A expressão -i é pra tratar as palavras tanto em maiuscula como em minuscula, sem a expressão -i a comparação é case-sensitive, com -i é case-insesitive dst acl nome dst ip/máscara (com base no ip de destino da requisição) Utilize em acl pra endereços por IP do servidor de destino (servidores ou maquinas remotas com acesso via internet) Ex.: acl ipdireto dst 200.204.198.164/32 src acl nome src ip/máscara (com base no ip de origem da requisição) Utilize em acl pra endereços por IP do cliente (maquinas da rede inerna). Ex.: acl iplocal src 192.168.0.0/24 srcdomain acl aclname srcdomain nome_domínio Utilize em acl pra domínios locais, como envolve resolução de IP e nomes pode provocar atrazos nas requisições. Ex.:acl aclname srcdomain .localdomain.com dstdomain acl nome dstdomain nome_domínio Utilize em acl pra domínios destinos (servidores na internet), como envolve resolução de IP e nomes pode provocar atrazos nas requisições. Ex.: acl aclname dstdomain .zago.eti.br url_regex Utilize em acl que requer pesquisa de palavra na url por expressões regulares, com a opção -i torna case-insesitive ou seja procura por maiusculas e minusculas. Ex.: acl aclname url_regex -i sexo time Utilize em acl que requer controle por periodo, tem que definir dias da semana e hora inicial e final, por exemplo: acl manhamicroip71 time M T W H F 12:00-13:30 srcdom_regex acl nome srcdom_regex regex dstdom_regex acl nome dstdom_regex regex urpath_regex Com base na expressão que representa o caminho. acl nome urlpath_regex regex port Com base no protocolo de transferência (http, ftp, etc) acl nome port numero-porta method Com base no tipo de método da requisição acl nome method tipo-método browser acl nome browser tipo ident acl nome ident nome_usuário ident_regex acl aclname ident_regex pattern ****************************************************************** ACL POR HORA. ACL POR HORARIO, CONTROLAR POR DIA DA SEMANA OU POR FAIXA DE HORARIO. acl nomedaacl time SMTWHFA 00:00-00:00 Onde: SMTWHFA é o dia da semana que queira incluir na ACL S - Sunday = Domingo M - Monday = Segunda T - Tuesday = Terça W - Wednesday = Quarta H - Thursday = Quinta F - Friday = Sexta A - Saturday = Sábado 00:00-00:00 é o horario inicial e final = [h1:m1-h2:m2] 9:00-12:00 = inicia as 9:00 e termina as 12:00. Onde h2:m2 deve ser maior que h1:m1, no caso de iniciar em dia e terminar em outro, coloque como 24:00 a hora final da acl e crie outra acl pro horario restante, ou seja iniciando em zero hora e com final na hora desejada. Exemplo: Controlar o acesso do computador 192.168.1.71 das 9:00 às 12:00 e das 13:30 às 18:00 de segunda a sexta-feira ACL pra acesso nos horarios e dias acima indicados: acl microip71 src 192.168.0.71/255.255.255.255 acl manhamicroip71 time M T W H F 9:00-12:00 acl tardemicroip71 time M T W H F 13:30-18:00 Pra LIBERAR acesso, libera somente no horario de trabalho, basta incluir estas políticas de http_access: http_access allow microip71 manhamicroip71 http_access allow microip71 tardemicroip71 pra PROIBIR acesso, proibe somente no horario de trabalho, basta incluir estas políticas de http_access: http_access deny microip71 manhamicroip71 http_access deny microip71 tardemicroip71 Pra liberar somente no horario de almoço, todos os dias das 12 as 13:30 e após o expediente às 18:00hs, esta pra dar uma canja pra quem não pode acessar internet no horario de trabalho. acl microip71 src 192.168.0.71/255.255.255.255 acl manhamicroip71 time M T W H F 12:00-13:30 acl tardemicroip71 time M T W H F 18:00-24:00 http_access allow microip71 manhamicroip71 http_access allow microip71 tardemicroip71 ****************************************************************** De: Marciel Responder A: Marciel Para: Lista Linux Conectiva Assunto: Fwd: (linux-br)Proxy Squid (solução) Data: Thu, 24 Mar 2005 11:38:50 -0300 Olá amigos da lista, com a utilização do modelo de "squid.conf-transp-cl10" para CL10, funcionou direitinho, eu apenas precisei acrescentar as linhas abaixo: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on Muito obrigado pela colaboração. ---------- Forwarded message ---------- From: Antonio F. Zago Date: Wed, 23 Mar 2005 22:38:00 +0000 Subject: Re: (linux-br)Proxy Squid To: Marciel Em Qua, 2005-03-23 às 19:33, Marciel escreveu: > Olá pessoal, > tenho o Squid 2.5.5, baixado recentemente das atualizações do CL9, > este Squid está em uma máquina firewall (gateway). > Minhas regras iptables, tornam a conexão de Internet trasparente para > nossa rede interna. > Eu já configurei o "squid.conf" para funcionar como um proxy > transparente, más quando direciono o tráfego de internet para a porta > do 3128 do Squid, os navegadores da rede não caregam praticamente > nada. As páginas aparecem todas deformadas, ou não carregam nada. > Eu acho que pode ser a minha regra de iptables, ou o squid não está > configurado direito. > > Tenho o seguinte. > > Firewall: > eth0: conectado ao link de Internet > eth1: conectado ao servidor web (DMZ) > eth2: conectado a rede local > > Minha regra para direcinar o tráfego para a porta 3128: > > iptables -t nat -A PREROUTING -i eth2 -d ! 200.x.x.x -p tcp > --dport 80 -j REDIRECT --to-port 3128 > > obs: o ip 200.x.x.x é da caixa econômica, se trata de uma > ecessão para o acesso ao servidor deles. > > O mais incrível é que "essa regra funcionava perfeitamente", a mais ou > menos duas semanas meu Squid parou de funcionar derrepente, eu removi > tentei instalar novamente, não deu certo, agora estou tentando usar > essa versão atualiza, e ocorre o problema a cima. > > Acho que meu Squid não está funcionando deforma transparente. > Será que alguém poderia me ajudar? Marciel Voce tem dois caminhos pra resolver isto. Apague o cache e recrie novamente, tem dicas no FAQ: http://www.zago.eti.br/squid/dicas-e-truques.txt Caso persista o problema, tente fazer um teste com o tutorial que vou indicar abaixo, ele é pro CL10, é tudo a mesma coisa, a diferença neste tutorial é que alguns diretórios e arquivos tem outro dono e permissão, detectei alguns casos semelhante ao teu no CL9 e resolvi fazer igual no CL10 e resolveu o problema, siga este tutorial: http://www.zago.eti.br/squid/squid-CL10.txt especialmente sobre os diretórios, permissões e etc... O tutorial pra CL9 que tem no FAQ não segue a rigor as permissões pra arquivos e diretórios com está configurado no tutorial pro CL10, caso tenha feito a instalação pelo tutorial do CL9 recomendo alterar as permissões pra ficar como estão no tutorial pro Cl10. lembre que precisa ajustar alguma coisa no squid.conf, ou melhor pode até fazer um teste com squid.conf indicado neste tutorial. Depois mande a solução pra lista, acrescente [solução] no assunto/subject. ****************************************************************** ****************************************************************** ******************************************************************