[MASOCH-L] Squid (transparente) + IPFW no FreeBSD 6
Renato Frederick
frederick at dahype.org
Fri Jan 5 09:03:27 -03 2007
>
> Obrigado pela ajuda Renato. Vou tornar mais claro meu problema.
> Já possuo o squid configurado como proxy, podendo ser acessado quando
> configurado manualmente qualquer browser em alguma das subredes do
> firewall. Um dos howto's que utilizei foi o do www.free.bsd.com.br. No
> entanto existe algo estranho nas regras mencionadas.
>
> ipfw add 49 allow tcp from any to any
> ipfw add 50 fwd 127.0.0.1,3128 tcp from any to any 80
>
> Nenhum pacote entra na regra 50, pois ficam na 49. Isto foi verificado
> com o ipfw show. Tentando utilizar apenas a 50, o fwd acontece com
> alguns pacotes, mas não navega. Estranho que as vezes, algumas páginas
> abrem, como o google (não é cache, pois é possível fazer algumas
> buscas).
Certo.. no tutorial tem isto porque o padrão lá é firewall fechado.
Daí o primeiro match do pacote é contado(49) e a 2a regrada descartada.
Se você retira a 1a, ele cai na 2a(50), mas a política do firewall(65535) é
fechada, daí o pacote não sai!
Mais embaixo eu explico melhor...
>
> O squid.conf está ajustado para ser transparente, com as diretivas
> mencionadas (por enquanto sem diskd):
>
> http_port 3128
> httpd_accel_host virtual
> httpd_accel_port 80
> httpd_accel_with_proxy on
> httpd_accel_uses_host_header on
Tudo certo, o diskd só melhora performance, é pra funcionar com o sem ele.
Estou considerando que você colocou uma acl dentro do squid liberando acesso
pras subredes, certo? :)
>
> Possuo 4 interfaces, das quais 3 devem receber pacotes http(s)(etc) e
> encaminhá-los ao Squid. Estas 3 são os gateways de cada subnet.
>
> em0 - interface ligada ao roteador (200.145.aaa.yyy/30)
> em1 - interface ligada à DMZ (200.145.aaa.bbb/26) gw
> bge0 - interface da subnet 1 (200.145.aaa.ccc/26) gw
> bge2 - interface ligada à subnet 2 (200.145.aaa.ddd/25) gw
OK
Então, tudo que vier da bge0 e bge2 com destino à internet saindo pela em0
deve ser "cacheada".
>
> Pensei regras como:
>
> ipfw add 50 fwd 127.0.0.1,3128 tcp from 200.145.aaa.bbb/26 to any 80
> ipfw add 51 fwd 127.0.0.1,3128 tcp from 200.145.aaa.ccc/26 to any 80
> ipfw add 52 fwd 127.0.0.1,3128 tcp from 200.145.aaa.ddd/26 to any 80
> ...
Estão certas sim, mas você está "cacheando" quando o destino for a dmz
também.
>
> Sem sucesso.
>
> No rc.conf possuo:
>
> gateway_enable="YES"
> firewall_enable="YES"
> arpproxy_all="YES"
> forward_sourceroute="YES"
> accept_sourceroute="YES"
> squid_enable="YES"
> ...
>
Tudo certo, mas você pode tirar
> arpproxy_all="YES"
> forward_sourceroute="YES"
> accept_sourceroute="YES"
Não irão influenciar no seu cenário.
> No kernel:
>
> options IPFIREWALL
> options IPFIREWALL_FORWARD
> ...
>
> O fwd não funciona :/ Os pacotes parecem não chegar no squid.
> Alguma coisa errada ou faltando?
>
Você poderia adicionar:
options IPFIREWALL_DEFAULT_TO_ACCEPT
O que vai deixar o firewall aberto por padrão.
Daí é so colocar as regras assim
#ipfw add fwd 127.0.0.1,3128 tcp from subnet_1 to not dmz 80
#ipfw add fwd 127.0.0.1,3128 tcp from subnet_2 to not dmz 80
Aonde subnet_1 e subnet_2 são os ederenços das subredes ligadas à bge0 e
bge2
E dmz é a subrede aonde a DMz está, ligada na em1.
Isso porque estou sugerindo que você não quer proxy transparente pra qunado
o destino for sua DMZ. Pois se alguém atualizar uma página lá, pode ficar no
cachê do squid.
Daí, com o firewall aberto por default, você não precisa da regra de allow,
apenas do forward. Quando o pacote chega na regra de forward, é jogado pro
squid e depois o pacote cai na regra 65535 que permite tudo.
Você ainda pode aglutinar as regras todas:
#ipfw add fwd 127.0.0.1,3128 tcp from { subnet_1 or subnet_2 or subnet_3 }
to not dmz 80
Certo?
abraços
More information about the masoch-l
mailing list