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: 49.045 ]

Por: Leandro Moreira em 11/07/2009


Aplicando os patches e compilando



Aplicando os patches e compilando o kernel

Vamos entrar no diretório dos fontes do kernel para iniciar a aplicação dos patches.

# patch -p1 < /usr/src/cttproxy-2.6.18-2.0.6/patch_tree/01-nat_reservations.patch
# patch -p1 < /usr/src/cttproxy-2.6.18-2.0.6/patch_tree/02-tproxy.patch
# patch -p1 < /usr/src/cttproxy-2.6.18-2.0.6/patch_tree/03-nat_delete.patch


Agora vamos entrar no menu de opções do kernel e habilitar como built-in os módulos do TProxy:

# menuconfig

-> Networking
---> Networking support
-----> Networking options
-------> Network packet filtering
----------> IP: Netfilter Configuration
--------------->Transparent proxying (IP_NF_TPROXY)
---------------> tproxy match support (IP_NF_MATCH_TPROXY)
---------------> TPROXY target support (IP_NF_TARGET_TPROXY)
--------------->NAT reservations support (IP_NF_NAT_NRES)

Vamos agora compilar o kernel com o comando abaixo:

# make-kpkg --rootcmd fakeroot --initrd --append-to-version=-tproxy.1.0 binary-arch

Após terminar a execução do comando acima, teremos dois pacotes .deb prontos para uso, o linux-image e o linux-headers.

Aplicando os patches e compilando o iptables

O primeiro comando baixa todas as dependências necessárias para compilação do iptables, enquanto o segundo comando baixa os fontes:

# apt-get build-dep iptables
# apt-get source iptables


Agora vamos fazer alguns ajustes no diretório do iptables, primeiramente vamos fazer uma cópia de segurança do diretório "linux", que se encontra dentro da pasta iptables, mas antes, como fizemos com o kernel, vamos criar um link simbólico do diretório do iptables:

# ln -s /usr/src/iptables-1.3.6.0debian1 /usr/src/iptables
# cd /usr/src/iptables
# mv linux linux-default
# mkdir linux
# for x in COPYING Makefile include net;do cp -va ../linux-2.6-2.6.18.dfsg.1/$x linux/$x;done


Agora vamos entrar no diretório iptables, aplicar o patch e compilar o pacote. Note que existe dentro do diretório iptables um subdiretório iptables.

# cd iptables
# patch -p1 < ../../cttproxy-2.6.18-2.0.6/iptables/iptables-1.3-cttproxy.diff
# chmod +x extensions/.tproxy-test
# dpkg-buildpackage -rfakeroot -us -uc -b
# cd /usr/src/
# cd ..


Instalando nosso pacote recém compilado:

# dpkg -i /usr/src/iptables_1.3.6.0debian1-5_i386.deb

Página anterior     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

Monitorando Host via IPMI no Zabbix

Recuperando RouterOS na RouterBOARD 450

Integrando autenticação do Squid ao Active Directory

Integrando Apache 2 com Tomcat 5

Compilando kernel com suporte a POM (path-omatic) e Layer7 no Debian e Slackware

Leitura recomendada

Kernel Hacking (RootKits)

Novidades do Kernel 2.6.35

Guerra Infinita, uma análise da Ciência da Computação

Máquinas velhas a todo vapor

Como mudar o logo no kernel 2.6

  
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