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/
Tags: cache, cache do Windows Update, Linux, proxy, quick_abort_min, range_offset_limit, refresh_pattern, reload-into-ims, squid, windowsupdate
Ótimo artigo.
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?
Só faltou dizer que só funciona para Squid a partir de 3.0.2.1 (de agosto/2010).