[FUG-BR] [OT?] Firewall em uma máquina, Squid em outra (transparente)

Matheus Weber da Conceição matheuswcon em gmail.com
Sexta Junho 11 17:36:46 BRT 2010


2010/6/11 Welkson Renny de Medeiros <welkson em focusautomacao.com.br>:
> Boa tarde/noite senhores!
>
> Já dei uma olhada no histórico da lista, testei algumas soluções, mas
> sem muito sucesso.
>
> Estou migrando um FreeBSD 7/i386 para o 8/amd64 (máquina nova, ambiente
> ESXi, etc)... percebi que a versão do Squid que uso no 7 (2.6) não
> existe no ports do 8 (>= 2.7)... de qualquer forma fiz a instalação da
> 2.7, rodei antes o make config, marquei a opção para "proxy transparente
> PF", etc.
>
> Já integrei o Squid ao Dansguardian... tudo funcionando certinho se for
> configurado proxy no navegador...
>
> No momento que ativo o proxy transparent no firewall (que fica em OUTRA
> máquina), o squid não funciona...  (estou certo que é alguma frescura
> com o 2.7, pois já passei por isso a alguns meses, e acabei deixando o
> 2.6 que funcionou perfeito)... o problema é que no 8 não tem essa versão
> antiga (2.6)...
>
> Alguém conseguiu fazer proxy transparente no freebsd 8 com squid 2.7 e pf?
>
> Pode postar as primeiras linhas do squid.conf, e a regra no firewall que
> faz o rdr?
>
> E por último... proxy transparente funciona quando existe uma máquina
> para firewall e OUTRA para proxy?
>
> [root em services:/usr/local/squid/logs] # pkg_info | grep squid
> squid-2.7.9         HTTP Caching Proxy
>
> [root em services:/usr/local/squid/logs] # pkg_info | grep dans
> dansguardian-2.10.1.1
>
> [root em services:/usr/local/squid/logs] # cat /usr/local/etc/squid/squid.conf
> # escutar na porta 3128 e localhost
> http_port 127.0.0.1:3128 transparent
>
> [root em services:/usr/local/etc/dansguardian] # cat dansguardian.conf
> # the port that DansGuardian listens to.
> filterport = 8080
>
> # the ip of the proxy (default is the loopback - i.e. this server)
> proxyip = 127.0.0.1
>
> # the port DansGuardian connects to proxy on
> proxyport = 3128
>
> [root em services:/usr/local/etc/dansguardian] # sockstat -4
> USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
> nobody   dansguardi 74751 6  tcp4   *:8080                *:*
> squid    squid      74533 13 tcp4   127.0.0.1:3128        *:*
>
> [root em services:/usr/local/etc/dansguardian] # uname -a
> FreeBSD services.xxx.com.br 8.0-RELEASE FreeBSD 8.0-RELEASE #2: Thu Jun
> 10 11:54:50 BRT 2010
> root em services.xxx.com.br:/usr/obj/usr/src/sys/ZEPEQUENO  amd64
>
> # rdr feito no firewall (OUTRO servidor = 192.168.0.254 jogando o
> tráfego da porta 80 para o proxy que está no 192.168.0.250):
> # proxy transparent (correcao, pois somente com from any nao funcionava
> para as lojas diferentes de 0)
> rdr inet proto tcp from any   to any port www  -> 192.168.0.250 port 8080
>
> Não existe qualquer regra bloqueando tráfego...
>
> Dicas?
>

Cara, tem um erro no teu rdr, pois no from, tem que ser todos menos o
IP do proxy, se não os pacotes entram em loop.

Testei essa situação aqui esses tempos (só que com o squid 3.1), e
além do rdr, tive que fazer um nat:

# Faz o nat para a máquina do proxy (depois do nat geral)
nat on $int_if proto tcp from $int_if:network to 192.168.1.109 port
3128 -> $int_if

# Proxy Transparente (Squid)
rdr pass on $int_if proto tcp from !192.168.1.109 to any port 80 ->
192.168.1.109 port 3128


-- 
============================
Matheus Weber da Conceição


Mais detalhes sobre a lista de discussão freebsd