The FreeBSD FAQ - The Power to Help
The FreeBSD FAQ - The Power to Help
This site is Powered by PAR Teleon

S E Ç Õ E S
B U S C A
+
D E S T A Q U E
CONTATO
PÁGINA ANTIGA
TELEON INTERNET
E N Q U E T E
Se apos a conclusao, a traducao da documentacao oficial do FreeBSD, fosse impressa em livro, voce:

Usaria apenas a documentacao na internet como referencia.Faria o download de toda a documentacao na internet e imprimiria eu mesmo.
Compraria o livro, para te-lo em maos, mas usaria a referencia na internet com maior frequencia do que o livro.Compraria o livro, e seria minha unica referencia.
Compraria varias copias do livro e daria de presente a varias pessoas que deveriam ser devidamente catequisadas.







Jean M. Melo © - 2001
Todos os direitos reservados






H O W   T O 


Índice


26/05/02 19:18 - IPFW e Proxy Transparente com Squid em um servidor separado


Christopher Giese e Erwin Liesemberg


O problema apareceu quando precisavamos configurar nosso Firewall/Nat para fazer proxy transparente, sendo que o servidor proxy estava instalado numa maquina separada. 

Fizemos nossas primeiras tentativas com o ipfw, tentando redirecionar tudo que tentasse passar pela porta 80 atraves do Firewall. Varias tentativas frustradas. 

Ate que decidimos colocar um redirecionador de porta rodando na maquina. 
Primeiramente tentamos o rinetd, mas na primeira hora, o Firewall, onde rodava o rinetd, ja nao aguentou o processamento, e a carga da CPU chegava a 100%. 

Entao, enquanto um de nos testava algumas alternativas para redirecionador, como o tcpxd e o tproxy, outro ficou inssistindo na idéia original de fazer esta configuracao usando somente o ipfw, pois acreditavamos que qualquer daemon seria mais pesado do que se usassemos somente o ipfw.
 
E depois de muitas tentativas, conseguimos colocar no ar o famoso proxy transparente somente usando ipfw.

Chega de historia, e vamos colocar a mzo na massa. Vamos especificar as mzquinas da rede como exemplo:

- Interfaces do Firewall:
	- xl0: ip 200.195.195.3 (conectado ao roteador);
	- xl1: ip 200.195.196.65 (DMZ);
	- xl2: ip 10.10.10.1 (rede interna de IPs inválidos);

        - Interface do servidor Proxy:
	- xl0: ip 200.195.196.66 (DMZ);


	Regras do Firewall:

	00010 skipto 0100 tcp from any to any 80		# Não fazer nat do fluxo HTTP
	.
	.
	00030 divert 8668 ip from 10.0.0.0/8 to any via xl0		# Fazer nat para rede interna
	.
	.
	00100 outras regras
	.
	.
	05000 allow tcp from 200.195.196.66 to any 80 	# Permitir a saída do proxy a internet
	05010 fwd 200.195.196.66 tcp from any to any 80 	# Desviar todo o fluxo HTTP para o proxy
	.
	.


	Agora, as regras do Servidor Proxy:

	00010 allow tcp from me to any 80			# Permitir a saida do proxy z internet
	00020 fwd 127.0.0.1,3128 tcp from any to any 80		# Redirecionar todo o fluxo da porta 80 para a maquina local, na porta 3128
	.
	.


A última regra que colocamos no firewall, que foi fundamental, foi a regra 00010. Explico: As requisições de HTTP sofriam um nat antes de serem direcionadas ao proxy, pois o comando fwd do ipfw so avalia o pacote no momento que este estiver para sair da mzquina. 

Com isso, os pacotes chegavam no proxy com o endereco de origem do nat do Firewall, e quando retornavam, o pacote nao sabia para onde voltar. Isso foi descoberto depois de muito tcpdump nas mzquinas. Entao, incluimos esta regra para que o Firewall nao faca nat para requisicoes HTTP, ignorando as regras de numero menor que 100 para o fluxo HTTP.

Outro erro nosso foi tentar executar num so forward a mudança de maquina e de porta, colocando no Firewall o "ipfw add 5010 fwd 200.195.196.66,3128", mas depois descobrimos (man ipfw, vejam soh) que isso nao funciona quando redirecionamos para outras maquina. Entao decidimos somente mudar o fluxo HTTP para o proxy, e depois no proxy eh que efetuamos a mudanca de porta.

Acredito que as outras regras nao sao nenhum segredo.

Nao se esqueca de verificar se o proxy realmente esta funcionando, chegando o access.log do squid.

Ate mais, e boa sorte a todos!!!

P.S.: O seu squid deve estar configurado para rodar como proxy transparente, incluindo as seguintes clausulas no squid.conf:

		httpd_accel_host virtual
		httpd_accel_port 80
		httpd_accel_with_proxy on
		httpd_accel_uses_host_header on


Christopher Giese (SkyWarrior)
caifaz_cypher@hotmail.com - chris@irapida.com.br
	
Erwin Liesemberg
erwin@infomark.com.br



Christopher Giese e Erwin Liesemberg




Entrar em contato Enviar este artigo a um amigo Preparar para impressão Índice Topo da página


 

PrincipalBusca AvançadaEnqueteContatoTeleon Internet  
Enquetes antigas | FAQ | FreeBSD Desktop | Informacoes | Links | How To