Home / Dicas e Tutoriais / Instalando um Servidor Proxy com SQUID no Ubuntu 14.04

Instalando um Servidor Proxy com SQUID no Ubuntu 14.04

O Squid (traduzido quer dizer lula), é provavelmente o software de Proxy mais popular no mundo open source. Ele suporta HTTP, HTTPS, FTP e outros. Ele reduz a utilização da conexão e melhora os tempos de resposta fazendo cache de requisições frequentes de páginas web numa rede de computadores. Ele pode também ser usado como um proxy reverso.

O Squid foi escrito originalmente para rodar em sistema operacional tipo Unix, mas ele também funciona em sistemas Windows desde sua versão 2.6.STABLE4.2

O Squid é um Software Livre licenciado pela GPL, sua utilização pode nos trazer várias vantagens, como:

•    Autenticação;
•    Controle de acesso;
•    Cache;
•    Controle centralizado;
•    Registros de acesso, etc.

squid_00Ilustração acima de um Proxy com Squid.

     Caso você precise instalar na sua empresa um servidor que irá fazer este papel de Gateway, ou seja os clientes internos de sua rede terão que passar por ele para ter acesso externo, é altamente recomendável a instalação e configuração de Firewall e Proxy neste seu servidor Gnu/Linux de Gateway. Sobre a configuração de um Firewall simples, você poderá ver aqui neste ARTIGO com o UFW ou neste ARTIGO com o GUFW (com interface gráfica).

A instalação destes é altamente recomendável em qualquer empresa, mas é mais comum que empresas de grande porte prefiram optar por soluções do tipo “appliance”, que é um equipamento como este da ilustração abaixo, e que possui uma suíte de aplicações de controle de rede, tais como o Proxy (que iremos configurar neste artigo), mas também firewall, anti-vírus e anti-spyware, DLP (data loss prevention), IDS (intrusion deteccion service), e etc.

Secure-Web-GatewayIlustração acima – exemplo do appliance da Sophos

 

Agora vamos a instalação e configuração do Squid.

Instalação

Vamos considerar que esta é nossa rede local e este é o IP de nosso Proxy Server.

LAN:192.168.10.0/24
Proxy Server:192.168.10.10(hostname:srv.example.com)

Instalar o squid3 pelo apt-get

$sudo apt-get install squid3

install-squid3-ubuntu-14-04-lts-008

Configuração

Backup do arquivo “squid.conf”

Antes de editar a configuração do Squid, faça um backup de seu arquivo /etc/squid3/squid.conf para futuras referências.
O arquivo “squid.conf” tem muitas opções padrão listadas, e isso é útil para que através deste arquivo consultemos mais opções de configurações de regras do Squid.

$sudo cp /etc/squid3/squid.conf /etc/squid3/squid.conf.origin

Editando o arquivo “squid.conf”

Neste artigo, irei apenas realizar uma configuração inicial, pois o arquivo de configuração é também o manual do software, pois explica de forma comentada o que cada uma das configurações faz, por isso o arquivo é gigante.

Usarei o Gedit para editar o arquivo de configuração.

$sudo gedit /etc/squid3/squid.conf

Aqui iremos definir sua rede local, tamanho de cache e nome de seu Squid.
Procure no arquivo por estas seções usando Ctrl+F ou navegando pelo número aproximado da linha que está no rodapé das imagens abaixo.
Quando encontrar a linha correta, a descomente, removendo o símbolo “#” que geralmente vem antes dela.

1 – “#acl localnet src”

install-squid3-ubuntu-14-04-lts-009b
2 –  “#http_access allow localnet”

install-squid3-ubuntu-14-04-lts-009c

3 – “#htcp_access allow localnet”

install-squid3-ubuntu-14-04-lts-009d
4 – “#cache_dir ufs /var/cache/squid”
O valor padrão é 100, que corresponde a 100 MB, que é muito pouco, então mudamos para 50 GB (50000). Mas você pode definir conforme o tamanho que quiser.

install-squid3-ubuntu-14-04-lts-009e

 

Crie o Diretório swap

Este comando irá criar o diretório de swap cache do Squid

# squid3 -z

install-squid3-ubuntu-14-04-lts-011

Obs. Caso tenha algum problema ou deseje criar o diretório antes de rodar o comando acima, utilize os comandos abaixo, substituindo adequadamente o segundo comando pelo nome do seu usuário.

$sudo mkdir -p /var/cache/squid
$sudo chown seu_usuário:seu_usário /var/cache/squid_cache

Obs. Repare que o comando # squid3 -z irá criar as subpastas de cache do Squid, olhe só:

squid_cache

 

Configure o IP Foward (Opcional)

$sudo gedit /etc/sysctl.conf

Adicione as seguintes linhas:

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

Para aplicar a configuração:

$sudo sysctl -p

Abrindo a porta do Firewall

Caso utilize Firewall adicione a regra de permissão da porta do Squid.
Obs. Se você não sabe se o firewall está ativo digite o comando “sudo ufw status” antes. Se estiver ativo, digite o comando abaixo:

$sudo ufw allow 3128

Para tornar o squid3 um serviço automático

Instale o pacote sysvc-rc-conf com o comando:

#sudo apt-get install sysv-rc-conf

install-sysv-rc-ubuntu-14-04-lts-001

Agora digite o seguinte comando:

# sysv-rc-conf squid on

install-sysv-rc-ubuntu-14-04-lts-002

Para verificar o status do serviço está em execução automática, digite o seguinte comando:

# sysv-rc-conf --list squid

install-sysv-rc-ubuntu-14-04-lts-003

 

Iniciando o squid3

# service squid3 restart
squid3 stop/waiting
squid3 start/running, process ...

install-squid3-ubuntu-14-04-lts-011b

O servidor de Proxy agora está no ar e fazendo cache das páginas visitadas.

Se quiserem gerenciar o Proxy criando regras de acesso através de uma console Web, podemos contar com o Webmin que faz isso e muito mais. Dêem uma olhada neste ARTIGO onde explico como instalá-lo e neste outro ARTIGO que eu explico como Gerenciar o Squid por ele.

Abraços,

Cleuber

About Cleuber

Cleuber Silva Hashimoto. Administrador

20 comments

  1. Ótimo post! Parabéns pelo trabalho! Funcionou tudo perfeitamente!
    Um pequeno detalhe na sintaxe do nome do componente: de sysvc para sysv!
    Abraços

  2. Muito bom, parabens !!

  3. Cleuber, bem didático o seu artigo… muito bom.

    apenas uma correção de escrita de um comando ali no final: você digitou sysvc mas deveria ser sysv

    abraço…

  4. Cara estou tendo um problema aqui e não sei o que pode ser, quando vou executar o comando squid3 -z. O terminal me apresenta a mensagem de perminssion denied mesmo eu estando logado como root user. Saberia me dizer o que fazer neste caso ?

  5. Yuri do Monte

    Boa tarde eu tenho uma configuração de squid sendo que para debian tentei executar os mesmos procedimentos no ubuntu e não consegui.
    Caso eu lhe passe a configuração vc poderia estar me ajudando a montar um script com a mesma configuração que uso no debian no ubuntu.

  6. Yuri do Monte

    A configuração que utilizei foi está só para vc ficar ciente em breve darei o retorno caso eu obtenha sucesso.

    nano squid.conf

    http_port 3128
    visible_hostname Debian
    cache_mem 64 MB
    maximum_object_size_in_memory 2 MB
    maximum_object_size 100 MB
    minimum_object_size 3 Kb

    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /cache/ 5000 16 256
    cache_access_log /cache/access.log

    acl all src 0.0.0.0/0.0.0.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl locanetl src 192.168.10.0/24

    http_access allow localhost
    http_access allow redelocal
    http_access deny all

    criei a pasta e dei permissão total
    executei o squid -z

  7. Ate consegui fazer por algum milagre. So que tava bloquando tudo, entao vou tentar editar o .conf mas abre em branco, ja removi e instalei de novo e nada.
    O que pode ter ocorrido?

  8. Yuri boa noite,
    Estou tentando criar um proxy como demonstrou em seu post mas estou com o seguinte problema;
    Quando dou o comando sysctl -p
    Me retorna o seguinte erro:
    não foi possível obter status de /proc/sys/net/ipv4/ip_forwarding: Arquivo ou diretório não encontrado
    sysctl: não foi possível obter status de /proc/sys/net/ipv4/conf/default/rp: Arquivo ou diretório não encontrado
    net.ipv4.conf.default.accept_source_route = 0
    Consegue me ajudar? , estou aprendendo squid no linux e não faço a menor ideia doque esse erro significa.

  9. isaias freitas

    E quando abre o squid.conf em branco, sem nada escrito?

  10. isaias freitas

    – Aqui nao tem squid3 e sim squid.

    – esse comando ta certo? $sudo chown seu_usuário:seu_usário (REPEDITO) /var/cache/squid_cache

    – Uncomment and adjust the following to add a disk cache directory.
    cache_dir ufs /var/spool/squid 1000 16 256.
    (nao tem cache, tem SPOOL.

    – Ubuntu 16TLS.

    To tentando aprender mas essas diferenças complica muito.

    – Nao consegui criar o diretorio…
    $ sudo squid3 -z
    2016/08/25 12:39:11| ACL not found: localnet
    FATAL: Bungled /etc/squid/squid.conf line 1186: http_access allow localnet
    Squid Cache (Version 3.5.12): Terminated abnormally.
    CPU Usage: 0.008 seconds = 0.008 user + 0.000 sys
    Maximum Resident Size: 40864 KB
    Page faults with physical i/o: 0
    .
    ——————————————————————————————————–

  11. Rodrigo Almeida

    Boa tarde! pode me tirar uma duvida

    Tenho o seguinte cenário:

    1º Link NET e outro Link VIVO
    2º Roteador CISCO RV320 (Gateway, DHC e Load Balance)
    3º Swtich
    4º Servidor Windows Server 2012 (Servidor de Arquivo)
    5º Computadores

    Onde faço a instalação do Proxy? entre o Roteador e o Switch?

    No caso o Proxy seria o meu Gateway?

    • Olá Rodrigo.
      Conseguiu configurar?
      É preciso entender o conceito de Gateway. Ele é o meio pelo qual as máquinas acessarão a internet. É comum em redes domésticas, o roteador ser o Gateway também. (como o da NET com um IP sempre parecido com 192.168.0.1). Mas em redes corporativas usa-se um servidor de Gateway depois do roteador, com serviços de proteção configurados. Muitas vezes esse servidor é uma appliance corporativa parruda que tem Firewall, Proxy, antivírus, web-reputation, e etc.
      O seu roteador Cisco, apesar de não ser uma appliance corporativa, pode ter muitos desses serviços embutidos, incluindo o de proxy. Você precisa dar uma olhada. Mas caso você queira instalar um servidor de proxy, ele será o seu Gateway para as máquinas internas enquanto o modem/roteador do seu provedor de internet o gateway de seu servidor proxy.

  12. Excelente tutorial. Estou querendo montar um servidor squid e colocar 1 adsl da oi e 3g da tim, únicas opcoes na cidade, a funcao seria para evitar pequenos Dc, pois jogo poker on line, sofro muito com isso, a qualidade da adsl da oi e péssima, qual configuração mínima para rodar esse ubuntu, tenho um amd2 atlhon x2 3,0 ghz, mas com 1 gb de memoria. Estou iniciando a caminhada, nao tenho como investir muito por enquanto. Agradeço qualquer dica que puder me oferecer.

Leave a Reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...