En concreto, vamos a implementar una solución de BranchCache distribuida, y sobre ella una instalación de WSUS.
Vamos a imaginar un típico escenario de una organización con servidores de ficheros, carpetas compartidas y documentos públicos. Tenemos alguna delegación con enlaces WAN de alta calidad, pero tenemos una delegación pequeña, una oficina regional, sin grandes estructuras de sistemas, es decir, una ADSL y unos cuantos PC sin servidor. Muy típico para pequeñas y medianas empresas.
BranchCache nos proporciona un método de caché de contenidos descentralizado entre pc´s clientes. Es decir. Un cliente en esa oficina remota accede al servidor de la empresa para trabajar con un recurso, un fichero Word, una aplicación web, etc. Dentro de esa pequeña sede, al rato otro usuario quiere acceder a ese mismo documento. Puede pasar que en ese momento la conexión hacia la sede principal, donde se encuentra el servidor de ficheros esté caído, o lento. Por qué no usar el documento descargado previamente por el primer usuario en la sede pequeña, para evitar el tráfico hacia la sede principal vía Internet? Eso es BranchCache. Sobre esto podemos montar WSUS para realizar lo mismo. Un cliente descarga una actualización de Windows, y está se "propaga" al resto de clientes de esa pequeña sede sin necesidad de ir cada pc cliente a la sede principal a buscar dicha actualización.
Como podéis imaginar, es una de las funcionas más interesantes en cuanto a experiencia de usuario que nos proporciona Windows Server 2012.
Hay dos maneras de implementar esta solución, de manera distribuida y/o hospedada ( Se puede implementar de las dos maneras al unísono). Cuando hablamos de distribuida nos referimos al escenario que comento más arriba. BranchCache hospedada requiere de un servidor de contenido en ese delegación pequeña para hacer de cache, y este distribuye hacia los clientes de esa red. Sería algo así como cuando configuramos BRIDGEHEADER o servidores de cabeza de puente "Inter Site" para optimizar la replicación de controladores de dominio( 1 a 1 entre Sites y no DC a DC).
Para poder utilizar dicha función, debemos contar con un parque de PC´s cliente Windows 7 o superior.
Para implementar un servidor de contenido, el que digamos estaría cacheando el contenido en la ubicación pequeña debe ser Windows 2008r2 ( no es posible con las versiones core enterprise y datacenter)o Windows 2012.
Branchcache emplea un método que divide la información, los datos en pequeños bloques. A estos bloques les aplica un algoritmo de HASH (SHA256) con el que se consigue reducir la información en un ratio aproximado de 1:2000. Esta es la información que se publica/consulta en la oficina remota para agilizar el proceso de búsqueda de un cliente, es decir, saber si está disponible ese contenido en la sede local o debe ir al servidor central. Importante saber que solo se "cachea" contenido mayor a 64kb. Importante a la hora de las pruebas con el típico txt etc.xD. Al HASH de la información se le añade un secreto compartido, una pre-shared key y le aplica al conjunto un algoritmo de cifrado AES128. De esta manera se evita que mediante la captura de paquetes, un atacante pueda interceptar las peticiones/envios de información y pueda averiguar los cambios atacando al cliente de BranchCache.
Desde el panel central de administración de Windows Server 2012 agregamos la función de BranchCache dentro del ROL de servidor de ficheros. Listo !!.
Fin del post xD.
Vamos a ver una serie de comandos PowerShell relativos a BranchCache. O mejor no, si luego se nos olvida. Mejor saber como buscar.
Get-Command -Module BranchCache
Los hash de los ficheros se generan automaticamente en el servidor, no mediante una tarea programada. Si eres de los que sufre el sindrome de F5 puedes forzar el "hasheado" mediante hashgen -f C:\ruta compartida
Ahora toca la configuración, pero al estilo siguiente siguiente siguiente.
Lo primero que vamos a hacer es configurar una política de seguridad para el servidor que ejecuta los servicios de BranchCache respecto al firewall. Damos, por echo que está configurado el Firewall en el servidor, y damos por echo que vamos a hacer las cosas bien xD. Podríamos deshabilitar el firewall, podríamos configurar el firewall a pelo, pero NO. Aprovechando las capacidades de gestión centralizada de Active Directory y Windows Server 2012, vamos a preparar una Unidad organizativa para albergar nuestro servidor de contenido, y configurar las reglas del firewall desde ahí. Esto nos proporciona un mayor control de los elementos de configuración, y sobre todo, nos facilita el escalado horizontal en el caso de crecimiento de nuestra empresa. En este caso muestro como crear la UNO aunque la GPO de Firewall podría aplicarla a nivel de servidor local, pero la parte de BranchCache si la haría a nivel de UO.
La configuración sería crear una Unidad Organizativa, mover el servidor, crear una GPO mediante el editor de directivas, y vincularla a dicha UO.
Ahora configuramos la GPO de BranchCache que permite publicación de contenidos.
Network Emulator Client. Lo podemos descargar en 32 y 62 bits desde este skydrive de un amable usuario.
Instalamos y configuramos un filtro de tarjetas, o incluso por direcciones ip, y configuramos opciones de red tan bonitas como las que veis en la pantalla.
Lo probamos con un ping desde un cliente.
Podemos modificar este parámetro para ajustarlo a nuestra realidad dentro de la organización mediante netsh branchcache smb set latency 0
Ahora vamos a habilitar el BranchCache para una carpeta compartida en concreto. Desde el servicio de ficheros, nos ubicamos en la carpeta compartida ( o en el momento de compartirla por este procedimiento) y habilitamos BranchCache.
Podemos aprovechar esta función para despliegue de aplicaciones en oficinas remotas con enlaces lentos. Sin más configuración por parte de BranchCache.
El servidor WSUS usa los puertos 8530 y 8531 para comunicarse con los servicios de Windows Update, por lo que tenemos que tenerlo en cuenta en nuestro Firewall de servidor/perimetral.
No vamos a profundizar en las características avanzadas de WSUS, ya que requeriría no solo un post... ya que existen diferentes escenarios para su implantación (distribuido, desconectado,en NLB,etc) sino que vamos a instalar un servidor WSUS principal para toda la organización, que aproveche las características de BranchCache para nustra sede remota. Tampoco vamos a realizar una instalación de Sql Server para manejar los datos de WSUS, sino que nos vamos a contentar con los 10 gigas disponibles de la base de datos Internal de Windows Server 2012. En el caso de implementaciones de NLB necesitaríamos Sql Server ( en casi todas las implementaciones de servicios balanceados necesitaremos un sql server, sino dos...).
La instalación de WSUS comienza agregando un nuevo rol dentro del DASHBOARD de Windows Server 2012. agregamos el role, autorizamos las dependencias, elegimos el servidor de destino, autorizamos el reinicio en caso necesario y a correr.
Puestos a pedir, porque no mejor un solo PowerShell para la instlación? Install-WindowsFeature -Name UpdateServices, UpdateServices-Ui
Una vez instalado el Role, vamos a realizar los pasos post-intalación como indican las siguientes pantallas.
***Al realizar la instalación de WSUS se nos instala el Role de Internet Informatión Services pero no la consola de administración, para ellos, debemos agregar la característica dentro del rol de IIS por el GUI o bien mediante Powershell, para poder trabajar con IIS.
Install-WindowsFeature Web-Server -IncludeManagementTools
***
Habría que registrar los clientes, y aprobar las actualizaciones.
Con esta configuración, se usará la característica de BranchCache tanto para Wsus, como para todo lo que corra sobre IIS sobre ese servidor.
Como siempre, espero que os guste el artículo y que lo probéis en algún laboratorio o penséis en implementar soluciones de este tipo de cache de contenidos para vuestras organizaciones.