Você está na página 1de 6

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

lucianopinheiro.net
"A frase mais deliciosa de se ouvir na cincia, aquela que anuncia descobertas, no Eureka, mas... Que engraado" Isaac Asimov

Leituras

Origem de Tudo

Papeis de Parede

Software Livre

sindicalizar

Principal

sugestes

Como fazer cache do Windows Update utilizando apenas o Squid

A soluo apresentada abaixo utiliza apenas Squid para fazer cache do Windows Update. No entanto, no uma soluo trivial. aconselhada para quem saiba muito bem o que est fazendo. No uma simples receita de bolo. Se voc fizer errado, pode at piorar seu proxy. Estude hierarquia de proxy (pelo menos as opes do squid.conf) e este artigo, que apresenta parte da soluo.

A Teoria
O problema com o Windows Update do Squid, no da MS. Os cabealhos do Windows Update permitem o cache e o mantm por um tempo razovel. Ento, qual o problema? O Windows faz update com requisies concorrentes, em paralelo, do mesmo jeito que fazem alguns gerenciadores de download. S que o Squid no consegue pegar vrios pedaos de arquivos e mont-los no arquivo original, apesar da recomendao da RFC 2616. Se voc olhar seu access.log agora, ver que h alguns raros HITs de Windows Update. So os pequeninos. Existe uma forma de contornar o problema, que configurar o Squid para pegar todo o arquivo mesmo quando for solicitado s um pedao. A configurao faz com que o arquivo deva sempre ser pego por completo, mesmo quando queremos s um pedao. Ento, quando o WU (Windows Update) pedir em um download o pedao de 1 a 2MB de um Update de 10MB, o Squid pega os 10MB e guarda no cache. Quando o WU pedir o pedao de 2 a 3MB do mesmo arquivo, o Squid j vai t-lo cacheado.
ERP Totvs Microsiga & TI Implementao completa em Microsiga , Administrao e Suporte de TI
www.hfbr.com.br

cu em macap

S que essa configurao no Squid geral, no pode ser direcionada s pra um domnio. E isso gera um outro problema. Quando o seu cliente clicar num link de DVD de 4 GB e cancelar, o Squid vai baixar mesmo assim. Ou seja, consertando o Windows Update, vamos estragar todo o resto. Felizmente, existe uma forma de fazer com que seja baixado tudo apenas do Windows Update, ignorando os outros domnios. s usarmos uma hierarquia de proxies. Nesta hierarquia, vamos precisar de duas instncias do Squid (ou 2 Squids em mquinas diferentes - fica at melhor de visualizar). Uma instncia s pra Windows Update (chamaremos de WU:2831) e outra para o resto (vamos chamar de PRINCIPAL:3128).

Monitoramento de Redes Descubra, mapeie, monitore sua rede com WhatsUp Gold. Avale gratis!
WhatsUpGold.com/pt

visito com
1 de 6 5/5/2011 17:55

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

O pulo do gato o seguinte: a instncia WU ser a parent, enquanto a PRINCIPAL ser a filha. Os clientes se conectaro na PRINCIPAL. A PRINCIPAL ter uma conexo direta com a Internet, exceto quando o destino for o domnio do Windows Update. Neste caso, ela manda a requisio para a instncia WU. Os clientes no tero conhecimento do WU. No diagrama abaixo, podemos ver que o Agente conecta-se ao servidor PRINCIPAL:3128 e nem toma conhecimento do WU:2831. O principal est configurado para conectar-se diretamente Internet para quase tudo (exceto Windows Update). Quando recebe requisies para Windows Update, ele usa como parent o WU:2831. Este WU:2831 possui uma configurao especial que pede todo o arquivo web caso apenas uma parte seja solicitada a ele.
Cliente (navegador) |(tudo) v PRINCIPAL:3128 | | |(quase tudo)|(apenas Windows Update) | | | v | WU:2831 (config especial) | | v | Internet <-----+

Configuraes
Definies: PRINCIPAL -> porta 3128 WU -> porta 2831 Neste exemplo, funcionaro na mesma mquina (sero duas instncias do mesmo Squid).

Configurao do cliente/agente/navegador
proxy -> PRINCIPAL:3128

configurao do PRINCIPAL:3128
(somente as personalizaes) //define o parent como sendo o WU:2831 cache_peer WU parent 2831 0 no-query no-digest no-netdb-exchange proxy-only //define os domnios que vo pro parent acl wu dstdomain .windowsupdate.com acl wu dstdomain .msgruser.dlservice.microsoft.com acl wu dstdomain .update.microsoft.com //nega o wu como direto (vai pro parent). requisita diretamente todo o resto. //(esse all a ACL all) always_direct deny wu always_direct allow all

configurao do WU:2831

2 de 6

5/5/2011 17:55

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

(criar um arquivo /etc/squid-WU.conf) # regras importantes: # 1. Baixar tudo, mesmo quando solicitado s o range, sem abortar; # 2. NO USAR O MESMO DIRETRIO PARA O CACHE # 3. Usar outra porta: 2831. # 4. Usar outros arquivos de log # 5. Usar outro PID_file # 1. Baixar tudo, mesmo quando solicitado s o range, sem abortar; # de acordo com http://wiki.squid-cache.org/SquidFaq/WindowsUpdate range_offset_limit -1 maximum_object_size 1500 MB quick_abort_min -1 # 2. NO USAR O MESMO DIRETRIO PARA O CACHE # se voc estiver usando WU na mesma mquina que o PRINCIPAL, crie um outro diretrio pelo shell. # por exemplo /var/spool/squid-WU # no esquea de dar as permisses corretas para proxy.proxy cache_dir ufs /var/spool/squid-WU 2000 16 256 # 3. Usar outra porta: 2831. http_port 2831 # 4. Usar outros arquivos de log access_log /var/log/squid/access-WU.log squid cache_log /var/log/squid/cache-WU.log cache_store_log /var/log/squid/store-WU.log # 5. Usar outro PID_file pid_filename /var/run/squid-WU.pid

Botando pra funcionar


Pra se rodar mais de uma instncia do Squid, pode-se execut-lo com um arquivo de configurao diferente. Simplesmente copie um arquivo squid.conf padro (antes das personalizaes) e modifique-o de acordo com o colocado acima. Salve-o como /etc/squid/squid-WU.conf. A instncia PRINCIPAL vai rodar com o comando habitual (e o arquivo /etc/squid/squid.conf). A instncia WU vai rodar com o seguinte comando: # squid -f /etc/squid/squid-WU.conf Da primeira vez, porm, voc tem que criar a estrutura de diretrios do cache: # squid -f /etc/squid/squid-WU.conf -z Pra testar isso: $ ls -l /var/run/|grep squid $ nmap localhost -p 2831,3128 Se t tudo certo, ponha pra rodar, tente navegar e acompanhe o log. O access.log do PRINCIPAL tem que estar pegando tudo, inclusive windows update. O access.log do WU tem que estar pegando s os domnios da ACL wu. O seu log PRINCIPAL vai deixar passar requisies HEAD do Windows Update diretamente. No se preocupe. Elas tm menos de 2K.

3 de 6

5/5/2011 17:55

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

Consideraes Finais
Lembre de que um proxy um "procurador". Para ele, no importa se o cliente um navegador, um agente de linha de comando ou um outro proxy. Portanto, no se assuste com a hierarquia de proxy. Sua principal preocupao NUNCA usar no PRINCIPAL range_offset_limit e quick_abort_min como -1. A voc estraga com seu proxy. Use estas configuraes somente no WU. Proteja seu WU. No aceite requisies dos clientes da sua rede. Aceite-as apenas do PRINCIPAL. Evidentemente, voc ter que colocar essa segunda instncia para rodar quando o computador iniciar. A forma de fazer isso est fora do escopo deste artigo. Perceba que o WU no precisa estar na mesma mquina e nem mesmo ser um Squid. Uma alternativa usar como WU o Polipo, que consegue remontar pedaos de requisies. Como ltima considerao, deixo de novo o aviso de que voc s deve testar a soluo quando entender a teoria. Enviado por luciano.pinheiro em Qui, 2011-04-28 00:55. Tags: Software Livre Tutoriais e Cursos

Comentrios
gustavo:

Complicado??? Pra quem j botou um Squid em produo, colocar outro de forma hierrquica no tem mistrio. Faz todo sentido ter um segundo com as configuraes bem especficas para o WU. Parabns pelo artigo! 2011-05-02 15:39

luciano.pinheiro:

Bem lembrado, Joaquim. Realmente, se usada a ACL, no precisa dessa complicao toda. O artigo tava h algum (bom) tempo guardado para publicao. Porm, precisamos entender que a diretiva ACL no range_offset_limit s chegou no Squid 3.2 (outubro/2010, data do artigo que voc passou). Para verses anteriores (eu uso ainda 2.x por causa do storeurl_rewrite, usado no inComum), quase um suicdio botar da forma "simples", ainda mais porque o Squid tem o pssimo hbito de no avisar incompatibilidades de configurao. Esse modelo de hierarquia serve principalmente por causa do range_offset_limit, mas tambm por causa do maximum_object_size. Eu tinha inicialmente colocado alguns MB, mas em um teste em uma lista, o pessoal configurou pra mais de 1GB por causa do Service Packs. Tambm bom usar o modelo de hierarquia quando quiser usar recursos de Squid diferentes. Alguns recursos ainda no foram

4 de 6

5/5/2011 17:55

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

portados pro 3.X e isso muito chato. 2011-05-01 22:01

joaquim.soares:
Muito bom este artifgo estava procurando uma soluo para este problema MAS pelo que entendir.... Vc usa um esquema de hierarquia para pode ajustar range_offset_limit -1 somente para os sites no windows update MAs em http://www.linuxadm.com.br/2010/08/17/fazendo-cachedo-windows-update-versao-082010/ usado o somente: maximum_object_size 50 MB quick_abort_min -1 ##### ACL Dominios do Windows Update ##### acl windowsupdate dstdomain au.download.windowsupdate.com acl windowsupdate dstdomain download.microsoft.com acl windowsupdate dstdomain msgruser.dlservice.microsoft.com acl windowsupdate dstdomain windowsupdate.com acl windowsupdate dstdomain microsoft.com ################################ range_offset_limit -1 windowsupdate range_offset_limit 0

2011-05-01 20:12

Anonimo:

Uu, essa foi a melhor amostra de como criar uma soluo mais complicada que o problema! Vou at usar de exemplo para a galera. RESPOSTA: Fique vontade. Com o passar dos anos, voc vai aprender que muitas solues so complicadas mesmo. Faz parte da vida. Vai descobrir tambm que muitos problemas simplesmente no tm soluo. E talvez, s talvez, voc descubra que a soluo aqui no complicada. S que no pra leigos. :) 2011-05-01 19:27

Gabriel:
Ual! Muito bom artigo. Parabns!

5
2011-04-30 22:50

Enviar novo comentrio


Seu nome: *

Email: *

5 de 6

5/5/2011 17:55

Como fazer cache do Windows Update utilizando apenas o Squid | luci...

http://lucianopinheiro.net/portal/?q=node/139

O contedo deste campo privado no ser exibido publicamente.

Homepage:

Assunto:

Comentrio: *

Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> Linhas e pargrafos so quebrados automaticamente.

Mais informaes sobre opes de formatao

"A nica diferena entre um louco e eu que eu no sou louco." Salvador Dal Powered by Drupal and the Barlow theme by Egon Bianchet.

6 de 6

5/5/2011 17:55

Você também pode gostar