Instalando e Configurando o Squid Proxy com Docker Compose

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 é a sameersbn/squid:latest, que é uma das versões mais populares.
  • ports: A porta 3128 é 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 chamada squid-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 valor 100 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.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *