[FUG-BR] squid transparente com link duplo e PF
Marcelo/Porks
marcelorossi em gmail.com
Quinta Dezembro 27 09:13:02 BRST 2007
On Dec 26, 2007 6:10 PM, Giancarlo Rubio <gianrubio at gmail.com> wrote:
Ae Gian!
você diz para eu fazer dois squid.
- um squid usa a porta 3128
- outro a porta 3130
um squid sai pela rota padrão, outro sai pelo outro link, basta eu
usar o "tcp_outgoing_address"
Até ai tudo bem, ótimo! Perfeito.
Quem se conectar no "squid A" sai pela rota padrão
Quem se conectar no "squid B" sai pela outra rota
Até ai tudo bem de novo!
O problema é: como eu vou dizer para o cliente "192.168.0.10", por
exemplo, que ele tem que conectar ora por um squid, e ora por outro?
hehehe sacou?
<brincadeira>se o proxy não for transparente eu vou ter que ficar
abrindo as configurações do navegador e trocando a porta do squid toda
hora? hehehehe</brincadeira>
e se o proxy for transparente?
rdr on $int_if inet proto tcp from {$int_if:network} to ! <ips_excecao> \
port www -> 127.0.0.1 port 3128
essa linha iria redirecionar apenas para o "squid A"
Mas eu quero que ele se conecte ora no "squid A" (porta 3128) e ora no
"squid B" (porta 3130)!
É como se eu precisasse fazer um balanceamento de redirecionamento (e
não de saída, como há no site que você indicou).
> http://cvs.openbsd.org/faq/pf/pools.html#outgoing
e a regra abaixo, retirada do link que você passou vai redirecionar
apenas as conexões de saída da rede interna ($int_if).
Mas as conexões que estão indo para a porta 80 são redirecionadas para
o squid e é o squid que acessa a porta 80, ou seja.. a regra abaixo
não tem efeito sobre o que o squid acessa, uma vez que ele está no
mesmo computador do firewall e, portanto, não passa pela $int_if.
--------------
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
from $int_if:network to any keep state
--------------
Pelo o que entendi. O lance de usar duas instâncias do squid retira o
problema de qual rota usar e passa o problema para:
"Como dizer para o cliente qual instância do squid usar"
On Dec 26, 2007 8:31 PM, Lucio Flavio da Cruz
<lucio_flavio at brturbo.com.br> wrote:
> mas como ficariam as regras da transparencia caso em implemente o squid em
> um outro servidor da rede?!
neste caso o link que o Giancarlo passou diz tudo, imagine que o squid
estivesse na máquina 192.168.0.2 na porta 3128, então bastaria você
fazer isso:
##redirecionar as conexões dos clientes para o computador
##que roda o squid(192.168.0.2:3128)
table <Users_Proxy> const { 192.168.0.1/24 ! 192.168.0.2 }
rdr on $int_if inet proto tcp from <Users_Proxy> to ! <ips_excecao> \
port www -> 192.168.0.2 port 3128
##fazer as conexões do computador que roda o squid
##sair ora por um provedor ora por outro.
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1), ($ext_if2 $ext_gw2) } round-robin \
from 192.168.0.2 to any keep state
PS: Não tenho nenhum servidor rodando com essas duas regras acima,
portanto não testei. Mas acredito que seria isso.
Abraços!
--
Marcelo Rossi
"This e-mail is provided "AS IS" with no warranties, and confers no rights."
Mais detalhes sobre a lista de discussão freebsd