Instalação e configuração do Squid com TProxy no Debian

Quando se tem na rede um Mikrotik e precisa-se fazer controle do que os usuários acessam, existem algumas formas, uma delas é o proxy em paralelo com o Mikrotik e a outra o proxy em uma bridge no meio do caminho. Nesse artigo demonstro como configurar o Squid em bridge, assim como a aplicação dos patches necessários.

[ Hits: 48.937 ]

Por: Leandro Moreira em 11/07/2009


Introdução



Tive a necessidade de fazer o Squid interagir com o Mikrotik, pois o proxy que vem embarcado no Mikrotik, o web proxy, é muito limitado e o Squid tem uma limitação nesse aspecto também.

Para tal temos que recompilar o kernel, o iptables e o Squid com suporte ao TProxy. Gostaria de ressaltar que esse artigo é apenas uma tradução dos arquivos que se encontram no final como referência, incluído com as minhas experiências enquanto implementava a solução.

Pacotes necessários

Como o patch não da suporte a versões mais novas do kernel (acima de 2.6.20), optei por realizar a instalação no kernel 2.6.18 com Squid 2.6, pois o patch também não suporta o Squid 3. Instalei um Debian 5.0 (Lenny) com kernel 2.6.18, em seguida fiz a instalação dos pré-requisitos conforme abaixo, para isso teremos que configurar o sources.list para buscar os pacote da versão Etch do Debian:

# vi /etc/apt/sources.list

deb http://http.us.debian.org/debian etch main contrib non-free
deb http://security.debian.org etch/updates main contrib non-free

Salve o arquivo e saia. Em seguida atualize a lista de repositórios:

# apt-get update

Instale o kernel e as dependências necessárias para a compilação:

# apt-get install linux-image-2.6.18-6-686
# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential dpkg-dev


Agora vamos baixar os fontes do kernel:

# apt-get source linux-image-`uname -r`

Vamos agora baixar o patch a ser aplicado no kernel e no Squid:

# wget http://www.balabit.com/downloads/files/tproxy/obsolete/linux-2.6/cttproxy-2.6.18-2.0.6.tar.gz

    Próxima página

Páginas do artigo
   1. Introdução
   2. Aplicando os patches e compilando
   3. Squid - Compilando, instalando e configurando
   4. Configurando o proxy e modo bridge
Outros artigos deste autor

Integrando Apache 2 com Tomcat 5

Instalando e configurando o Nagios com e sem MySQL

Monitorando Host via IPMI no Zabbix

Recuperando RouterOS na RouterBOARD 450

Integrando autenticação do Squid ao Active Directory

Leitura recomendada

Compilando kernel 2.6.11 no Slackware 10

Kernel v3.x no Debian - Compilação em 7 passos práticos

Mitigando Erro de Kernel: Neighbour Table Overflow

Aplicando o patch do grsecurity no kernel 2.4

O Kernel Linux

  
Comentários
[1] Comentário enviado por lopan em 12/07/2009 - 08:57h

Leandro, essa solução de TProxy é velha e complexa!
O Kernel do Linux já tem suporte nativo ao TProxy, sem a necessidade de Patch (versões >= 2.6.28).
O TProxy também evoluiu para a versão 4.1, a versão do Squid 3.1 já conta com isso e a configuração é extremamente simples, como pode ser visto no link: http://wiki.squid-cache.org/Features/Tproxy4

Abraços,

[2] Comentário enviado por leandromoreirati em 13/07/2009 - 15:06h

lopan,
Me desculpa pelo artigo então, ja o escrevi a um ano e meio e so publiquei pois nas listas que frequento tenho percebido que muitas pessoas pedem documentação sobre o tproxy, a proposito quem usa a versão estable do debian (kernel 2.6.26) não tem esse modulo embracado no kernel, portando e uma escolha que a pessoa tera de fazer, ou aplica o patch e recompila o kernel, ou usa o kernel nao disponível, mas sua observação é valida pois nao consegui aplicar de forma alguma o tproxy no squid3, vou olhar o seu link e testar a versção 3.1, obrigado pela dica.

Att.

Leandro Moreira.

[3] Comentário enviado por josefilhobr em 14/08/2009 - 10:17h

Precisei da solução neste momento e tentei a configuração a partir da versão mais nova disponível no site do SQUID enviada por lopan. Até agora não obtive sucesso. O IP SPOOFING está acontecendo, porém não está fazendo cache, nem o access.log é gravado.

As permissões dos arquivos estão ok e a configuração dos parâmetros do access_log no squid.conf está direcionada também ok, bem como o diretório do cache.

Vcs têm alguma luz?

Obg

[4] Comentário enviado por Rafaelmcosta em 26/08/2009 - 00:49h

LEandro,

muito bom artigo,

uma dúvida...vc nao usou tcp_outgoing_address?

Como ficou a saída dos endereços dos clientes? Estão saindo independentes, ou seja, sai cada um com seu IP e nao com o do proxy, evitando problemas com Rapidshare e afins.

Abraços

[5] Comentário enviado por leandromoreirati em 26/08/2009 - 11:31h

Ramc,
Nao usei o tcp_outgoin, na verdade eles saem com o ip do gateway da rede, pois o gateway-tproxy, fica entre a rede o gateway da rede. Com relaçao ao rapidshare e afins, os problemas que tem e os problemas corriqueiros de multiplos acessos de um mesmo IP, creio eu pois os meus clientes pedem o bloqueio de acesso a esses serviços. Com relacao a saida, fica listado o ip de origem. Pra evitar problemas, eu restinjo acesso a porta 3128 a apenas a minha(s) rede (s) interna(s).
Qualquer duvida estou a disposiçao.

Att.

Leandro Moreira.

[6] Comentário enviado por Rafaelmcosta em 30/08/2009 - 09:57h

eu preciso que os ips dos clientes saiam livremente...
de forma realmente transparente.
Alguma dica?

Abraço ;)

[7] Comentário enviado por modesto916 em 28/04/2010 - 17:15h

Cara, otima atitude de postar sobre o que voce ja teve experiencia, mas sinceramente, na minha opinião, o TPROXY no linux continua uma gambiarra, uso essa solução com FreeBSD, nas versões do FreeBSD inferiores à 8.0, é necessario aplicar um patch e recompilar o kernel, mesmo assim, é muito simples, agora ja no 8.0 ja tem o suporte nativo e 100% funcional.

[8] Comentário enviado por leandromoreirati em 29/04/2010 - 10:43h

Modesto,
No linux no kernel acima de 2.6.28 ele também é nativo, mas infelizmente ainda nao pude testar por falta de tempo, acredido que seja necessário apenas complila-lo sem a necessidade de aplicar o patch.

Att.

Leandro Moreira.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts