Prezados, visto que boa parte das visitas ao linuxadm.com.br foram devidos ao post “Squid fazendo Cache do Windows Update” disponível em http://www.linuxadm.com.br/2008/02/08/squid-fazendo-cache-do-windows-update resolvi atualizar esse post com a configuração funcionando atualmente (08/2010).

—————————-

Para fazer cache do windows update para seu squid cache, adicione as seguintes linhas ao seu squid.conf.

##### Cache do Windows Update #####
refresh_pattern au.download.windowsupdate.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern download.microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern msgruser.dlservice.microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern windowsupdate.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern www.microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
################################

A Microsoft na busca de reduzir o tráfego web utiliza-se geralmente de HTTP Range-Offsets’ (Vulgo Range parcial de arquivos). Para isso precisamos alterar no squid as seguintes configurações.

* maximum_object_size
Essa variável define o tamanho dos objetos em cache. Como alguns updates são grandes (ou mesmos outros arquivos a serem armazenados em cache) precisamos setar essa variável num valor razoável. Recomendo valores acima de 100 MB.

Exemplo
maximum_object_size 100 MB

* quick_abort_min
Esta variável define o quanto de uma requisição o squid continuará a baixar mesmo que essa requisição tenha sido abortada. Seu valor padrão é de 16 KB.
Para que os updates do Windows sejam baixados na primeira vez que um cliente faz um update deve-se alterar o valor da variável para -1.

Exemplo
quick_abort_min -1

* range_offset_limit
Por último deve-se alterar a variável range_offset_limit. Essa variável define o quanto do arquivo deve ser buscado antecipadamente em requisições parciais de arquivo. Alterando-se essa variável para -1 (Nenhuma) o arquivo será sempre requisitado do ínicio independente da solicitação do cliente.

Exemplo
range_offset_limit -1

- Dica crucial -
É importante saber que a alteração do range_offset_limit para o valor -1 aumenta consideravelmente o consumo de banda. E por isso é necessário fazer uma alteração que não está descrita no FAQ do site do SQUID. (http://wiki.squid-cache.org/SquidFaq/WindowsUpdate)

A alteração consiste em definir os domínios os quais o range_offset_limit é alterado. Por sorte essa variável permite a utilização em conjunto com acl’s. Então basta definir via acl os endereços onde ficam os updates da microsoft tal como no refresh_pattern.

Exemplo.
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

E em seguida alterado o range_offset_limit.

Exemplo
range_offset_limit -1 windowsupdate

Para os mais afoitos, segue a configuração a ser feita completa.

———— Copie e cole ———————

##### Cache do Windows Update #####
refresh_pattern au.download.windowsupdate.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern download.microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern msgruser.dlservice.microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern windowsupdate.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
refresh_pattern microsoft.com/.*.(cab|exe|msi) 10080 100% 43200 reload-into-ims
################################

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

————————————————

A linha de “range_offset_limit 0″ é opcional isto porque o squid procura de cima para baixo em sua configuração pelas regras e caso o domínio acessado não esteja na ACL o valor padrão é adotado para a variável.

Como sempre gosto de mostrar segue abaixo 3 linhas do access.log do squid fazendo cache do Windows Update sem nenhuma dessas ferramentas de redirecionamento.

1282048807.733     26 192.168.3.28 TCP_HIT/206 19838 GET http://au.download.windowsupdate.com/msdownload/update/software/defu/2010/08/mpas-d_bd1_6dea7c0ba060e4a15430e4e421463125d691045f.exe – NONE/- application/octet-stream
1282048808.975    223 192.168.3.28 TCP_HIT/206 93543 GET http://au.download.windowsupdate.com/msdownload/update/software/defu/2010/08/mpas-d_bd1_6dea7c0ba060e4a15430e4e421463125d691045f.exe – NONE/- application/octet-stream
1282048809.907    109 192.168.3.28 TCP_HIT/206 67717 GET http://au.download.windowsupdate.com/msdownload/update/software/defu/2010/08/mpas-d_bd1_6dea7c0ba060e4a15430e4e421463125d691045f.exe – NONE/- application/octet-stream

Fontes pesquisadas:
http://wiki.squid-cache.org/SquidFaq/WindowsUpdate
http://www.squid-cache.org/Doc/config/quick_abort_min/
http://www.squid-cache.org/Doc/config/range_offset_limit/

jJI@3gn6Jz0l

Tags: , , , , , , , , ,

3 Comentários on Fazendo cache do Windows Update (Versão 08/2010)

  1. Tomas disse:

    Ótimo artigo.

  2. Paulo disse:

    Muito boa a dica; mas gostaria de resaltar que o cache para o windows seven ele não faz, apenas funciona para o windows XP. Será que teria como resolver esse problema?

  3. Luciano Pinheiro disse:

    Só faltou dizer que só funciona para Squid a partir de 3.0.2.1 (de agosto/2010).

Deixe um Comentário

*

Stop SOPA