Início > dicas, Linux > Configurando o proxy transparente.

Configurando o proxy transparente.


Introdução

O Squid permite compartilhar a conexão entre vários micros, servindo como um intermediário entre eles e a internet. Usar um proxy é diferente de simplesmente compartilhar a conexão diretamente, via NAT.

Como Funciona

Ao compartilhar via NAT, os micros da rede acessam a internet diretamente, sem restrições. O servidor apenas repassa as requisições recebidas, como um garoto de recados. O proxy é como um burocrata que não se limita a repassar as requisições: ele analisa todo o tráfego de dados, separando o que pode ou não pode passar e guardando informações para uso posterior.

Um dos principais problemas de usar um proxy é que você precisa configurar manualmente cada micro da rede para utilizá-lo, o que é um trabalho cansativo e tedioso, sobretudo em grandes redes.

O Squid responde a este desafio com a possibilidade de criar um proxy transparente, onde o proxy se integra a uma rede já existente, acelerando a conexão, mas sem precisar de qualquer configuração nos clientes.

Ao usar um proxy transparente, você tem basicamente uma conexão compartilhada via NAT, com a mesma configuração básica nos clientes. O proxy entra na história como um adicional. Uma regra de firewall envia as requisições recebidas na porta 80 do servidor para o proxy, que se encarrega de responder aos clientes. Toda a navegação passa a ser feita automaticamente através do proxy (incluindo o cache dos arquivos do Windows update, downloads diversos e os pacotes instalados através do apt-get), sem que você precise fazer nenhuma configuração adicional nos clientes :).

Mesmo que alguém tente desabilitar o proxy manualmente nas configurações do navegador, ele continuará sendo usado. Basta usar o endereço IP do servidor rodando o proxy como gateway da rede.

Lembre-se de que, para usar o proxy transparente, você já deve estar compartilhando a conexão no servidor via NAT e, naturalmente, já deve estar com um servidor Squid configurado.

Você aprende a configurar o Squid em detalhes no capítulo 5 do livro Redes e Servidores Linux 2ed. Você pode também ler meu tutorial antigo, disponível no: http://www.guiadohardware.net/tutoriais/090/.

Para ativar o proxy transparente, rode o comando abaixo. Ele direciona as requisições recebidas na porta 80 para o Squid:

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

O eth0 no comando indica a placa da rede local, onde o proxy recebe as requisições dos outros micros da rede e o 3128 indica a porta usada pelo Squid. Adicione o comando junto com os 4 comandos que compartilham a conexão no final do arquivo /etc/rc.d/rc.local ou /etc/init.d/bootmisc.sh (no Debian) para que eles sejam executados durante o boot.Finalmente, você precisa ativar o suporte ao modo transparente dentro do arquivo /etc/squid/squid.conf e reiniciar o serviço.
É aqui que entra a parte principal desta dica. A partir do Squid 2.6 a configuração de proxy transparente mudou, tornando desatualizados a maioria dos tutoriais e dicas antigos. Se você está usando uma versão recente, do Squid 2.6 em diante, a configuração de proxy transparente é feita com uma única linha. Basta substituir a linha http_port 3128 no início do arquivo por:

http_port 3128 transparent

Ou seja, na verdade você precisa apenas adicionar o transparent, para que o Squid passe a entender as requisições redirecionadas pela regra do firewall.

No caso das versões mais antigas, anteriores à 2.6 (como a usada no Debian Sarge e no Ubuntu 5.10), você usa a receita antiga, onde é necessário adicionar as quatro linhas abaixo, no final do arquivo /etc/squid/squid.conf (neste caso, sem alterar a linha http_port 3128):

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

Em qualquer um dos dois casos, você precisa reiniciar o serviço para que a alteração entre em vigor:

/etc/init.d/squid restart

Em caso de dúvida sobre qual versão do Squid está instalada, use o comando squid -v, que além de reportar a versão, informa todas as opções que foram usadas durante a compilação:

squid -v

Squid Cache: Version 2.6.STABLE2configure options: ‘–prefix=/usr’ ‘–exec_prefix=/usr’ ‘–bindir=/usr/sbin’ ‘–sbindir=/usr/sbin’ ‘–libexecdir=/usr/lib/squid’ ‘–sysconfdir=/etc/squid’ ‘–localstatedir=/var/spool/squid’ ‘–datadir=/usr/share/squid’ ‘–enable-async-io’ ‘–with-pthreads’ ‘–enable-storeio=ufs,aufs,diskd,null’ ‘–enable-linux-netfilter’ ‘–enable-linux-proxy’ ‘–enable-arp-acl’ ‘–enable-epoll’ ‘–enable-removal-policies=lru,heap’ ‘–enable-snmp’ ‘–enable-delay-pools’ ‘–enable-htcp’ ‘–enable-cache-digests’ ‘–enable-underscores’ ‘–enable-referer-log’ ‘–enable-useragent-log’ ‘–enable-auth=basic,digest,ntlm’ ‘–enable-carp’ ‘–with-large-files’ ‘i386-debian-linux’ ‘build_alias=i386-debian-linux’ ‘host_alias=i386-debian-linux’ ‘target_alias=i386-debian-linux’

Em resumo, você vai ter a conexão compartilhada via NAT no servidor e configurará os clientes para acessar através dela, colocando o servidor como gateway da rede. Ao ativar o proxy transparente, a configuração dos clientes continua igual, a única diferença é que agora (graças à nova regra do Iptables) todo o tráfego da porta 80 passará, obrigatoriamente, pelo servidor Squid. Isso permite que você se beneficie do log dos acessos e do cache feito pelo proxy, sem ter que se sujeitar às desvantagens de usar um proxy, como ter que configurar manualmente cada estação.

Uma observação importante é que esta configuração de proxy transparente não funciona em conjunto com o sistema de autenticação incluso no Squid. Ao usar o proxy transparente a autenticação deixa de funcionar, fazendo com que você precise escolher entre as duas coisas. Caso você precise combinar o uso de autenticação com o proxy transparente, você precisará utilizar outra solução, como o NatACL ou o NoCatAuth, que você encontra nos links: http://www.hostname.org/proxy_auth/ e http://nocat.net/.

Categorias:dicas, Linux
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: