Squid como proxy transparente: Instalando e configurando

Este artigo demostra como instalar e configurar um proxy transparente com o Squid. Testado na distribuição Fedora 10 em modo texto.

[ Hits: 62.084 ]

Por: Adriano em 02/01/2009 | Blog: http://www.mendes-it.com.br


Download e instalação



Criar diretório:

# mkdir /download
# cd /download


Download do Squid 3.0:

# wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE11.tar.gz

Verifique se o usuário do Squid já existe:

# grep squid /etc/passwd

Se aparecer algo assim:

squid:x:23:23::/var/spool/squid:/dev/null

o usuário já está cadastrado no sistema. Caso não exista você deve criá-lo:

# groupadd squid
# useradd -g squid -s /dev/null squid >/dev/null 2>&1


Descompactar o arquivo:

# tar -xzvf squid-3.0.STABLE11.tar.gz
# cd squid-3.0.STABLE11
# ./configure --prefix=/usr/local/squid
# make all
# make install


Criar diretório de log do Squid:

# mkdir -p /var/log/squid
# mkdir -p /usr/local/squid/var/cache


Permissão para o usuário squid no diretório de logs:

# chown -R squid.squid /var/log/squid
# chown -R squid.squid /usr/local/squid/var


Crie um link simbólico:

# cd /bin
# /usr/local/squid/sbin/squid squid


Seu squid já está instalado, agora vamos configurar o squid.conf.

Obs.: Não inicie o Squid ainda.

    Próxima página

Páginas do artigo
   1. Download e instalação
   2. Preparando o ambiente de configuração
   3. Configurando o squid.conf
   4. Arquivo "downloads"
   5. Arquivos "block", "unblock" e "radiosonline"
   6. Arquivos "dominio_bloqueado" e "semcache"
Outros artigos deste autor

Squid autenticado - Instalar e configurar

DNS Cache no Bind9

OpenVPN - Instalação e configuração

Leitura recomendada

Servidor Squid - Autenticação e níveis de privilégio

Squid autenticando em Windows 2003 com msnt_auth

Limitando acesso ao Team Viewer com Squid e IPTables

Direcionando log Squid para banco MySQL

Filtragem de páginas SSL (443) no Squid transparente

  
Comentários
[1] Comentário enviado por nemphilis em 02/01/2009 - 19:16h

Falta somente um --enable-linux-netfilter durante um ./configure, para habilitar suporte a proxy transparente ou o squid nao funcionará 100% como proxy transparente (travando ou serviço caindo volta e meia), além de encher seus logs (cache.log ou store.log nao me lembro ao certo) com Warnings.

[2] Comentário enviado por cherokee em 03/01/2009 - 22:27h

Parabéns pelo seu artigo. Agora preciso implementar o iptables.
Sou usuário do Fedora8 e nele eu carregava vários módulos que agora não são encontrados no Fedora10. Acabaram? foram substituidos por qual? Quais módulos devo carregar para que o iptables funcione a contento?

Em tempo: Como configurar minha placa de video de forma que eu consiga carregar o startx?

Wilsom


[3] Comentário enviado por Pinguim Gigante em 07/01/2009 - 17:43h

Bom trabalho. Até que enfim um artigo do Squid atualizado e feito no Fedora.
Abraços.

[4] Comentário enviado por chacau19 em 25/01/2009 - 22:34h

ola consegui fazer tudo so nao consegui fazer o s comando
make all e o
make install

da a menssagem assim

-bash: make: command not found


estou usando o debian 4

pode me ajudar


[5] Comentário enviado por a.mendesaguiar em 26/01/2009 - 08:33h

No debin você usa o aptitude install squid

Depois você executa o dpkg -l squid para verificar a instalação

/var/spool/squid - Arquivos de cache

/var/log/squid - Log do squid

/etc/squid - Arquivos de configuração

[6] Comentário enviado por waldenylson em 29/01/2009 - 09:44h

grande pra o squid trabalhar como transparente,
vc tem que fazer alguma configuração adicional?
Antes só fazia com redirecionamento de portar no iptables.
Tipo, tudo que vier na porta 80 mande pra 3128, saca....
valeu abraço...

[7] Comentário enviado por a.mendesaguiar em 29/01/2009 - 10:05h

Waldenylson

Segue a regra de iptables

############################################################
##### REGRA PARA REDIRECIONAR PORTA 80 PARA O SQUID #####
############################################################
#echo ""
#echo "$COLOR[44;37m Redirecionando porta 80 para o Squid $COLOR[0m"
#echo ""

## PORTA 3128 SQUID
iptables -A FORWARD -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --sport 3128 -j ACCEPT


### GERAL pela porta 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

[8] Comentário enviado por fernandofranco em 04/03/2009 - 17:13h

depois que eu fiz tuda essa configuração , e fiu subi o service me aparece assim
service squid start
squid: serviço desconhecido

[9] Comentário enviado por a.mendesaguiar em 04/03/2009 - 17:23h

Fernando faz isso aqui

/usr/local/squid/sbin/squid -D
/usr/local/squid/sbin/squid -z
/usr/local/squid/sbin/squid -k reconfigure

Se der algum erro como copy no running você deve fazer o seguinte.

Acesse o diretorio de cache cd /usr/local/squid/var/cache
e apague o conteudo dele caso exista
rm -rf *

depois crie este script abaixo

#!/bin/bash

data=`date`

/usr/local/squid/sbin/squid -k kill
cd /usr/local/squid/var/cache
rm -rf *
/usr/local/squid/sbin/squid -D
/usr/local/squid/sbin/squid -z
sleep 5
/usr/local/squid/sbin/squid -k reconfigure
sleep 5
/usr/local/squid/sbin/squid -k reconfigure

echo "Cache Squid Limpo com Sucesso" >> /tmp/cache_squid.txt
echo "Data da ultima execucao: $data" >> /tmp/cache_squid.txt
echo "------------------------------" >> /tmp/cache_squid.txt


Com isso o squid irá rodar sem problemas.

[10] Comentário enviado por chacau19 em 04/03/2009 - 21:31h

muito obrigada consegui vlws

[11] Comentário enviado por knpx em 01/10/2009 - 16:22h

galera tenho um servidor slackware 13.0 e estou tentando instalar o squid por esse artigo mas pelo q vejo tem uns comandos diferentes.

quando chego nessa parte
# make all
# make install
o make dá erro alguem podia me dar uma mão?

[12] Comentário enviado por a.mendesaguiar em 09/10/2009 - 00:48h

Knpx para instalar no slackware você pode utilizar este artigo

http://www.vivaolinux.com.br/artigo/Instalando-e-configurando-o-Squid-no-Slackware

[13] Comentário enviado por reipadua em 05/11/2009 - 15:38h

Boa tarde!!!

Sou meio leigo em Squid...

Fiz a instalaçao deu tudo certinho so não sei como configurar para acessar nas máquinas??? Alguém pode me ajuda!


[14] Comentário enviado por chacau19 em 05/11/2009 - 16:10h

você abre as configuraçoes do seu navegador no cado vo mostrar do ie e firefox

ie = Rerramentas > opçoes da internet > vai na aba conexão > e depois na aba configuraçao de lan ai em baixo tem assim Servidor Proxy > em baixo tem uma caixinha usar servidor proxy para rede local marque ela coloque o ip do seu proxy ex: 192.168.1.10 e a porta tem q ser a 3128


firefox = Ferramentas > Opçoes > vai na aba avançado > rede > configurar > configuraçao manual de proxy coloque o ip e a porta 3128

qualquer duvida adicione ai wenderson_chacau@hotmail.com

[15] Comentário enviado por a.mendesaguiar em 05/11/2009 - 18:44h

A conf deste artigo mostra como implementar um proxy transparente.

Ou seja apos a configuração você não precisa configurar no browser do usuário.

Basta adcionar esta regra no seu firewall.

############################################################
##### REGRA PARA REDIRECIONAR PORTA 80 PARA O SQUID #####
############################################################
#echo ""
#echo "$COLOR[44;37m Redirecionando porta 80 para o Squid $COLOR[0m"
#echo ""

## PORTA 3128 SQUID
iptables -A FORWARD -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --sport 3128 -j ACCEPT


### GERAL pela porta 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Feito isso você da um tail -F /var/log/squid/access.log

E verifica se esta gravando algo

[16] Comentário enviado por tiagoczn em 28/06/2010 - 22:20h

So uma pergunta....

Pra o proxy se tornar tranparente eu devo ter duas interfaces de rede, ou é possivel com apenas uma???...No meu servidor eu tenho apenas uma, detalhe é uma maquina virtual, mais o proxy funfa beleza, faz todos os bloqueios de site que defini...so que tem alguns usuarios espertinhos na empresa que burlam o proxy mudando as configurações do navegador....gostaria de saber se tem como tornar meu proxy transparente tendo apenas uma interface de rede, e se essa regra de firewall serve...

Desde já obrigado....

[17] Comentário enviado por gustavinhoO em 07/03/2011 - 01:47h

Oi...eu estou usando o centOS como servidor proxy, tabem estou tentando colocar algumas regras de firewall basicas,porem nenhuma esta dando certo inclusive a do proxy transparent,tabem quando vou iniciar o squid fala command not fund.
tentei de tudo,ele esta instalado setei as configurações corretas.vou postar meu squid.conf e /etc/rc.d/rc.local , onde eu setei as regras do iptables.

# Atualizado em 23/12/2008 por Adriano Mendes Aguiar
#
# Restringe o seu PROXY apenas para este IP
# Aqui utilizei um proxy transparente desta forma não houve a
#necessidade
# de configurar no browser o proxy
#
#
http_port 192.168.0.100:3128 transparent
icp_port 0

#
# Configurações de cache
#

cache_mem 256 MB
maximum_object_size 4096 KB
store_avg_object_size 4 KB
visible_hostname gustavo
cache_dir ufs /usr/local/squid/var/cache 1000 8 128
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log none
emulate_httpd_log off
connect_timeout 15000 seconds
read_timeout 300 minutes
cache_mgr Administrador
cache_effective_user squid
cache_effective_group squid
dns_nameservers ip_do_seu_dns

#
# ACLS PARA USUÁRIOS
#
# AQUI VOCÊ PODE DECLARAR TODOS OS IPS DA REDE
#
acl desktop1 src 192.168.0.100/255.255.255.0
acl desktop2 src 192.168.0.101/255.255.255.0
acl desktop3 src 192.168.0.1/255.255.0.0

#
# DEMAIS ACLS
#
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255

#
# DECLARANDO OS SITES QUE PODEM SER LIBERADOS OU BLOQUEADOS
#
acl uol.com.br url_regex uol.com.br
acl terra.com.br url_regex terra.com.br
acl ig.com.br url_regex ig.com.br
acl video.globo.com url_regex video.globo.com

acl SSL_ports port 443 444 447 563 7443.
acl Safe_ports port 80 21 443 444 447 563 777 591 488 280 70 210 6330
7443 1024-65535 50000-50002
acl CONNECT method CONNECT

acl downloads urlpath_regex "/etc/squid/etc/arquivos/downloads"
acl blacklist url_regex "/etc/squid/etc/arquivos/block".
acl whitelist url_regex "/etc/squid/etc/arquivos/unblock".
acl streaming rep_mime_type ^video/x-ms-asf
"/etc/squid/etc/arquivos/radioonline"
acl SSL_ports port 443 444 447 563 7443.
acl Safe_ports port 80 21 443 444 447 563 777 591 488 280 70 210 6330
7443 1024-65535 50000-50002
acl CONNECT method CONNECT

acl downloads urlpath_regex "/etc/squid/etc/arquivos/downloads"
acl blacklist url_regex "/etc/squid/etc/arquivos/block".
acl whitelist url_regex "/etc/squid/etc/arquivos/unblock".
acl streaming rep_mime_type ^video/x-ms-asf
"/etc/squid/etc/arquivos/radioonline"
acl dominio_bloqueado dstdomain
"/etc/squid/etc/arquivos/dominio_bloqueado".
acl cache urlpath_regex "/etc/squid/etc/arquivos/semcache"\?

acl rede_interna src 192.168.0.1/24

#
# SE VOCÊ TIVER MAIS DE UM GATEWAY NA SUA REDE AQUI VOCÊ PODE DEFINIR
# QUAL GATEWAY O SQUID IRA UTILIZAR
# SE VOCÊ UTILIZA APENAS UM GATEWAY NÃO IRÁ PRECISAR DESTAS LINHAS
#
#acl gateway_1 src "/etc/squid/etc/arquivos/gtw1"
#tcp_outgoing_address IP_DO_GATEWAY_1 gateway_1

#acl gateway_2 src "/etc/squid/etc/bloqueados/gtw2"
#tcp_outgoing_address IP_DO_GATEWAY_2 gateway_2
#
# PERMISSÕES DE ACESSO
#

http_access allow uol.com.br
http_access allow terra.com.br
http_access allow ig.com.br

#
# NEGA ACESSO
#

http_access deny all video.globo.com
http_reply_access deny all video.globo.com


http_access deny dominio_bloqueado
http_reply_access deny dominio_bloqueado
http_access deny streaming
http_reply_access deny all streaming

http_access deny downloads
http_reply_access deny all downloads

http_access deny all !Safe_ports
http_access allow localhost manager
http_access allow all manager

http_access deny streaming
http_reply_access deny all streaming

http_access deny downloads
http_reply_access deny all downloads

http_access deny all !Safe_ports
http_access allow localhost manager
http_access allow all manager
http_access allow all CONNECT !SSL_ports
http_access allow all !blacklist
http_access allow all whitelist
http_access allow all rede_interna
icp_access allow all
miss_access allow all
no_cache deny cache



mudei os diretorios apenas nada mais.

/etc/rc.d/rc.local nfiguração fireall /etc/rc.d/rc.local


############################################################
##### REGRA PARA REDIRECIONAR PORTA 80 PARA O SQUID #####
############################################################
#echo ""
#echo "$COLOR[44;37m Redirecionando porta 80 para o Squid $COLOR[0m"
#echo ""

## PORTA 3128 SQUID
iptables -A FORWARD -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A FORWARD -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A FORWARD -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A INPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A INPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A INPUT -p udp -s $ANY --sport 3128 -j ACCEPT

iptables -A OUTPUT -p tcp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -s $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --dport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -d $ANY --sport 3128 -j ACCEPT
iptables -A OUTPUT -p udp -s $ANY --sport 3128 -j ACCEPT


### GERAL pela porta 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
--to-port 3128

depois da erro em tudo como se nada disso existisse e nem o iptables sendo que tento dar um yum install iptables e diz que a verssão mais atual já esta instalada.

me ajudem ae





[18] Comentário enviado por wenderson_chacau em 07/03/2011 - 09:15h

Promeiro na acl http_port 192.168.0.100:3128 transparent
icp_port 0


coloca so acl http_port 3128 transparent

e o seu firewall coloca ele dentro de
/etc/init.d

o camonho seria /etc/init.d/firewall

e de permisao para ele.. e de o restart pra ver o que vai acontecer...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts