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.
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:
[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
[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.
[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.
[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.
[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.
[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.