miércoles, 16 de febrero de 2005

¿Problemas con Squid y Windows Update?

Desde hace unas semanas, el servicio de actualizaciones de windows (windows update), no permitía descargar actualizaciones por medio del proxy squid que tenemos instalado en la oficina, asi que me puse a investigar y aquí está la solución que me ha funcionado.


A manera de introducción, cabe comentar cómo se encuentra funcionando este servicio.

Todos los usuarios de la red, salen a internet por medio de un proxy squid que tengo funcionando en un servidor con Fedora Core 2, el proxy no es transparente, ya que se requiere que cada usuario se identifique con su login y password, dependiendo del usuario es el nivel de acceso que tiene, los niveles de acceso son básicamente reglas de filtrado de contenidos, eso lo tengo funcionando con squidguard.
De este modo, cualquier usuario que tenga permitido el acceso a internet, abre el navegador y se le solicitará su login y password para poder navegar.

Ahora bien, anteriormente, los usuarios con equipos con windows que desearan descargar actualizaciones para su computadora, necesitaban abrir el navegador, introducir su clave y entrar al sitio de windows update. Esto era una limitante, ya que si el equipo tenía configurada la opción de descargar automáticamente las actualizaciones, intentaba entrar al sitio, y como no se le introducía la clave para poder accesar, el servicio simplemente no funcionaba.
Otro detalle, después de que se aplicaban algunas actualizaciones a windows, se iniciaba el proceso de actualización, pero no se descargaba nada, se podía quedar el equipo toda la noche intentando descargar, y a la mañana siguiente nos topamos con un mensaje de que no se pudieron descargar las actualizaciones; había que revisar cuales faltaban, descargarlas e instalarlas manualmente... una pérdida de tiempo.

Hoy me decidí a resolver el problema, me puse a leer la documentación de squid, busqué en la red, y pude encontrar los tips necesarios para resolver el problema que explica este artículo.
Para evitar entrar en asuntos de configuración básica y conceptos similares, asumimos que ya se cuenta con un proxy squid funcional y que el esquema de trabajo es similar a la que estoy utilizando y que ya he mencionado en las líneas de arriba; de este modo sólo nos enfocaremos a resolver el problema que ya se ha planteado, asumiendo que ya conocemos la ubicación del archivo de configuración sobre el que vamos a trabajar.

Hemos llegado al punto interesante, la receta de cómo resolver este dilema.

Primero hay que editar el archivo de configuración de squid (squid.conf), y buscar las configuraciones referentes a refresh_pattern, ahi agregamos lo siguiente:

# Opciones para windows update
refresh_pattern http://*.windowsupdate.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://office.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://windowsupdate.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://download.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://v4.windowsupdate.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://v5.windowsupdate.microsoft.com/ 0 80% 20160 reload-into-ims
refresh_pattern http://download.windowsupdate.com/ 0 80% 20160 reload-into-ims
Lo que hacen estas líneas, es indicarle a squid que los objetos descargados de las direcciones indicadas:
  • Se consideren como recientes
  • Para considerarse reciente, debe haber transcurrido como máximo el 80% de tiempo desde la fecha de última modificación
  • Que el tiempo máximo para considerar un objeto como reciente, será de 20160 minutos (14 dias)
  • Que el programa cliente (navegador) cambie las solicitudes de tipo no-cache o reload por solicitudes If-Modified-Since (si se ha modificado desde...)
De este modo, las actualizaciones se mantienen en el caché del proxy, a menos que haya una versión más reciente, o hasta que expiren.

Posteriormente, ubicamos la sección donde se definen las listas de acceso (acl), y agregamos la siguiente linea:

acl WINDOWSUPDATE dstdomain .windowsupdate.microsoft.com .windowsupdate.com
Con esto, le indicamos a squid que los sufijos .windowsupdate.microsoft.com y .windowsupdate.com, se consideren como parte de la lista de acceso llamada WINDOWSUPDATE.

Ahora, suponemos que ya se cuenta con una línea para indicarle a squid la dirección de red de origen que se está utilizando, en mi caso, tenemos:

acl redlocal_src src 192.168.0.0/255.255.255.0
Es decir, que la dirección de red 192.168.0.X, se identificará como red de orígen, por medio de la lista de acceso denominada redlocal_src.

Después, buscamos la sección donde inicien las declaraciones de acceso http_access, al principio de esa sección colocamos la siguiente línea:

# Permitir acceso directo (sin password) a windows update
http_access allow redlocal_src WINDOWSUPDATE

Con esto, le indicamos a squid que a todas las máquinas de la red local les permita el acceso a los sitios de windows update.

Las reglas que ya teníamos definidas anteriormente en el archivo de configuración permanecerán como estaban.

Finalmente, grabamos el archivo y recargamos las configuraciones con:

service squid reload


Tal vez sea necesario revisar las listas de acceso de squidguard, en caso de que lo estémos utilizando, hay que permitir el acceso en la lista de dominios "buenos" (good), y luego ya recargar las configuraciones.

¡Listo!, ahora el navegador no solicitará contraseñas al usuario para abrir la página de windows update, pero si hacia otros sitios; el servicio de actualizaciones automáticas podrá descargar por si mismo los archivos necesarios sin intervención del usuario.

Espero que les sea de utilidad.

No hay comentarios:

Publicar un comentario