Problema no iptables com Squid transparent [RESOLVIDO]

1. Problema no iptables com Squid transparent [RESOLVIDO]

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 27/10/2008 - 15:02h

Pessoal,
Ví inúmeros tópicos pela net sobre problemas com o uso do squid como proxy transparente com milhares de respostas que nunca funcionavam.
Depois de algum tempo de análise, cheguei a seguinte conclusão:
1- Todos os "tutoriais" indicam o uso desta regra para redirecionar o tráfego da rede local para a internet na porta 3128:

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

Essa regra tenta fazer com que as requisições que vinherem da rede interna para acesso web (no caso eth1 na porta 80) sejam redirecionadas para a porta 3128 usada pelo squid. Porém mesmo o squid estando configurando como proxy transparente, essa regra não o ativava.
Mas se você usar esta regra aqui ao invés da regra de cima tudo irá funcionar "normalmente", pelo menos o proxy transparente irá!

iptables -t nat -A PREROUTING -s SUA_REDE_LOCAL/MASCARA -p tcp --dpot 80 -j REDIRECT --to-port 3128

A única diferença é que ao invés de especificar (-i eth1) você declara (-s SUA_REDE_LOCAL/MASCARA) o proxy transparente fuincionará e forma correta.

The question is...
A pergunta é: Porque não funciona com a especificação da interface? Porque só funciona com a especificação da rede local?

Obs; Todos que relataram ter problemas com o uso do iptables e squid transparente, solucionariam seus problemas facilmente com essa observação. Todos usavam a regra que não funciona (a que vc usa a interface e não a rede).

Abraço Galera.



  


2. Re: Problema no iptables com Squid transparent [RESOLVIDO]

Julian Castaman
maninhx

(usa Slackware)

Enviado em 28/10/2008 - 17:53h

minha regra é um pouco diferente
#iptables -t nat -A PREROUTING -s 0/0 -p tcp --dport 80 -j REDIRECT --TO-PORT 3128

onde 0/0 significa qualquer inferface.


3. Re: Problema no iptables com Squid transparent [RESOLVIDO]

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 28/10/2008 - 18:24h

Prezado,
Em primeiro lugar, Obrigado pela sua atenção!

Esta foi a sua regra:

#iptables -t nat -A PREROUTING -s 0/0 -p tcp --dport 80 -j REDIRECT --TO-PORT 3128

E você acrescentou o seguinte cometário:
"onde 0/0 significa qualquer inferface."

Gostaria de fazer uma observação:

O parâmetro -s deverá ser usado para especificar o SOURCE
(No caso a identificação do IP de algum host ou da rede).
E o parâmetro -i especifica a interface de rede que será utilizada. (eth0, eth1, etc.)

No exemplo da sua regra o que ela faz é redirecionar para a porta 3128 qualquer solicitação
em direção a porta 80 vinda de qualquer rede (0/0).

O grande problema ainda continua...
Porque a regra especificando a interface ( -i ethx) não funciona para o proxy transparente?



4. Re: Problema no iptables com Squid transparent [RESOLVIDO]

Rodrigo Rodrigues de mattos
demattos

(usa Fedora)

Enviado em 28/10/2008 - 18:33h

Boa tarde, bom acho q entendi sua duvida, mas a resposta esta em como o squid reconhece os dados redirecionados pela porta 80, para funcionar teria q vir de uma rede configurada e nao de uma interface no caso 192.168.X.X porta 80 direciona para a porta 3128 por isto a regra -i ethX nao funciona e sim -s 0/0 ou 192.168.X.X como preferir.

t+


5. Re: Problema no iptables com Squid transparent [RESOLVIDO]

Matuzalém Guimarães
matux

(usa Ubuntu)

Enviado em 28/10/2008 - 19:28h

Prezado demattos,
Obrigado pela atenção dispensada!

Seu raciocínio faz todo sentido.
O mais intrigante é que a regra que usa -i ethx, está em quase todos os tutorias sobre proxy transparente e iptables!
Então o que fazemos é redirecionar o acesso para 3128 de qualquer Source (-s) e tratamos de liberar os ip's ou redes nas ACL do squid.
Ajudou muito em meu entendimento sobre essa dupla (squid + IPTABLES).
Acho que isso vai esclarecer a dúvida de muita gente!
Muito obrigado a vocês dois pela atenção e paciência.
Um forte abraço!
Tópico Solucionado com Sucesso!!!