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

Por: Leandro Moreira em 11/07/2009


Configurando o proxy e modo bridge



Essa configuração é algo muito peculiar, temos que colocar o servidor onde encontra-se o proxy em modo bridge, conforme a figura abaixo:
Linux: Instalação e Configuração do Squid com Tproxy no Debian
Podemos observar que nosso servidor é a ponte entre a rede local e a internet, dessa forma ele estará "snifando" todo o tráfego de rede, tudo que for destinado a internet (porta 80) será redirecionado para a porta 3128 (Squid) para ser tratado e em seguida encaminhado ou não para a internet. Para isso precisamos instalar o pacote:

# apt-get install bridge-utils

Antes de começarmos, vamos definir o que é uma bridge:

"Uma bridge é uma interface de rede lógica composta por uma ou mais interfaces de rede física operando em nível 2."

Com o pacote de bridge instalado, temos agora que configurar as interfaces de rede para funcionarem como tal. O mais importante é manter a interface que será conectada ao firewall (cross) sem IP.

Vamos substituir na primeira linha da configuração das interfaces de rede o eth0 por br0 e embaixo da linha iface, adicionar as seguintes configurações:

bridge_ports eth0 eth1

Exemplo:

# vi /etc/network/interfaces

auto br0
iface br0 inet static
    bridge_ports eth0 eth1
    address 192.168.0.101
    netmask 255.255.255.0
    gateway 192.168.0.1

Salve o arquivo e saia.

Reinicie o serviço de rede, nesse ponto temos que tomar um cuidado importantíssimo, a máquina não pode estar na rede (quando digo estar na rede me refiro a estar em um ponto de rede como um host qualquer da rede), uma vez que a bridge coloca as interfaces em modo promíscuo, sendo assim o tráfego gerado por ela causará problemas na rede interna.

Podemos criar mais de uma bridge na máquina apenas replicando as configurações acima e tendo cuidado em substituir br0 por br1 e assim por diante.

Agora vamos linkar a rede interna na eth1 (192.168.0.101) e linkar a bridge (eth0) via cabo crossover direto no firewall (192.168.0.100), dessa forma todo o tráfego de rede passará pela bridge, que filtrará apenas o tráfego com destino a porta 80, o redirecionando para o Squid (porta 3128).

Agora precisamos alterar o arquivo /etc/sysctl adicionando as seguintes entradas:

## Ativa proteção contra ip/mac spoofing
net.ipv4.conf.default.rp_filter=1

## Ativa o roteamento de pacotes
net.ipv4.conf.default.forwarding=1

## Ativa o redirecionamento de porta
net.ipv4.conf.all.forwarding=1

Referências


Página anterior    

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

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

Integrando Apache 2 com Tomcat 5

Integrando autenticação do Squid ao Active Directory

Leitura recomendada

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

Como compilar o kernel Linux 2.6.31.1

Placas NVIDIA com kernel 2.6.8

Linux Virtual Memory Management e lentidão ao copiar arquivos grandes para mídia lenta

Kernel 2.6 hacks

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts