O Squid Proxy é um proxy HTTP poderoso que permite cache de conteúdo, controle de acesso e muito mais. Ele é amplamente utilizado em ambientes corporativos para melhorar o desempenho da rede e controlar o tráfego de usuários. Neste artigo, você aprenderá como configurar o Squid Proxy usando Docker Compose, além de personalizar as configurações por meio do arquivo squid.conf
.
Pré-requisitos
Antes de começarmos, certifique-se de ter o seguinte:
- Docker e Docker Compose instalados em seu ambiente
- Um editor de texto para modificar arquivos de configuração
- Conhecimento básico sobre Docker e Docker Compose
Passo 1: Criar o Arquivo docker-compose.yml
Primeiro, vamos configurar o Docker Compose para rodar o Squid Proxy em um container. O docker-compose.yml
definirá os serviços e volumes que serão usados para rodar o Squid.
Crie um arquivo chamado docker-compose.yml
no diretório onde deseja configurar o Squid com o seguinte conteúdo:
version: '3'
services:
squid:
image: ubuntu/squid:4.13-21.10_beta
ports:
- "3128:3128"
volumes:
- ./squid/logs:/var/log/squid
- ./squid/config/squid.conf:/etc/squid/squid.conf
- ./squid/data:/var/spool/squid
Explicação do arquivo docker-compose.yml
image
: A imagem Docker do Squid Proxy é asameersbn/squid:latest
, que é uma das versões mais populares.ports
: A porta3128
é a porta padrão que o Squid usa para escutar as conexões HTTP.volumes
:- O arquivo de configuração
squid.conf
será montado no container no diretório/etc/squid/
. - O cache será armazenado em um volume local
./cache
e montado no diretório/var/spool/squid
dentro do container. networks
: Configuramos uma rede Docker chamadasquid-net
, que permitirá a comunicação entre serviços conectados ao proxy.
Passo 2: Configurar o Arquivo squid.conf
Agora, vamos criar o arquivo de configuração personalizado do Squid Proxy, chamado squid.conf
. Este arquivo será responsável por definir as políticas de cache, controle de acesso e outras configurações importantes do proxy.
Crie o arquivo squid.conf
no mesmo diretório do docker-compose.yml
:
#
# Recommended minimum configuration:
#
# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
# Auth
#auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/squid_passwd
#acl ncsa_users proxy_auth REQUIRED
#http_access allow ncsa_users
http_access allow all
http_port 3128
acl all src all
#acl manager proto cache_object
#acl localhost src 127.0.0.1/32
#acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
#acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#acl localnet src fc00::/7 # RFC 4193 local private network range
#acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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
Explicação do arquivo squid.conf
http_port 3128
: Define a porta em que o Squid irá escutar, que no nosso caso é 3128.cache_dir ufs
: Define o diretório de cache do Squid, onde o conteúdo será armazenado. O valor100
especifica o tamanho máximo do cache em MB.cache_mem 256 MB
: Configura a quantidade de memória que o Squid usará para armazenar conteúdo em cache.acl localnet
: Esta linha define uma Access Control List (ACL), permitindo que apenas os IPs da sua rede local (substitua o range de IPs conforme necessário) tenham acesso ao proxy.http_access allow localnet
: Permite o acesso à rede interna.http_access deny all
: Bloqueia todo o tráfego que não seja da rede local.forwarded_for delete
: Remove os cabeçalhos de IP para manter o proxy anônimo.refresh_pattern
: Define como o Squid deve tratar o cache para diferentes tipos de conteúdo.
Passo 3: Iniciar o Squid Proxy com Docker Compose
Agora que o arquivo docker-compose.yml
e squid.conf
estão configurados, você pode iniciar o Squid Proxy usando o Docker Compose.
No diretório onde estão os arquivos, execute o comando:
docker-compose up -d
Este comando iniciará o container do Squid em segundo plano (modo detached). O Squid Proxy agora estará rodando e disponível na porta 3128
.
Passo 4: Comandos Básicos do Docker Compose
Aqui estão alguns comandos básicos para gerenciar o Squid Proxy usando Docker Compose:
1. Subir o Ambiente:
Para iniciar ou reiniciar o Squid Proxy:
docker-compose up -d
2. Parar o Ambiente:
Para parar o Squid Proxy sem destruir os containers:
docker-compose down
3. Destruir o Ambiente:
Para parar e destruir o container e os volumes associados (incluindo cache):
docker-compose down -v
4. Verificar Logs:
Para acompanhar os logs do Squid Proxy e verificar o tráfego e eventos:
docker-compose logs -f squid
Passo 5: Testando o Squid Proxy
Agora que o Squid está em execução, você pode configurar qualquer dispositivo da sua rede para usar o proxy. Para isso, defina o endereço IP da máquina onde o Squid está rodando como o proxy HTTP, usando a porta 3128
.
Você pode testar com um navegador, como o Firefox ou Google Chrome, nas configurações de rede. Também pode usar ferramentas de linha de comando como o curl
:
curl -x http://<seu_ip>:3128 http://example.com
Substitua <seu_ip>
pelo endereço IP da máquina onde o Squid está rodando.