Microsoft Lync Server
Header

MSFT ha publicado una actualización del documento eDiscovery Flow Across SharePoint, Exchange, Lync, and File Shares:

 

eDiscoveryArchitecture_22_07_2013.jpg

Aquí os dejo los enlaces de descarga:

 

Espero que os sea de utilidad!!!

MSFT ha publicado una actualización de los esquemas del documento Feature Integration Across Microsoft Office Products

SPEL_FeatureIntegration_1.jpg
Aquí os dejo los enlaces para su descarga:
 

Espero que os sea de utilidad!!

Una de las novedades de Lync Server 2013, es la posibilidad  de centralizar los distintos registros de todos los servidores de la implementación y de forma simultánea. Esto nos permite desde un único servidor, analizar los ficheros de registro que el resto de servidor nos envían a través del Agente del Servicio de Registro Centralizado (ClsAgent.exe).

Arquitectura  del Servicio de Registro Centralizado

Lync_Servicio_Registro_Centralizado_1.jpg

Como comentaba, todos los equipos de vuestra implementación de Lync tienen un servicio con el nombre Lync Server Centralized Logging Service Agent

Lync_Servicio_Registro_Centralizado_2.jpg

Como vemos su estado es En ejecución, el tipo de inicio por defecto es Automático (inicio retrasado) y si vamos a las propiedades del servicio vemos que nos ofrecer información detalla del mismo

Lync_Servicio_Registro_Centralizado_3.jpg

Explicación de MSFT sobre los agentes y servicios del registro centralizado:
Agente del servicio de registro centralizado   ClsAgent.exe es el archivo ejecutable del servicio que se comunica con el controlador y recibe los comandos que el administrador ejecuta para el controlador. El agente se ejecuta como un servicio en cada equipo de Lync Server. Cuando el agente recibe un comando, lo ejecuta, envía mensajes a los componentes definidos para seguimiento y escribe los registros de seguimiento en el disco. También lee los registros de seguimiento de su equipo y envía los datos de seguimiento de nuevo al controlador cuando se solicitan. ClsAgent escucha los comandos en los siguientes puertos: TCP 50001, TCP 50002 y TCP 50003.
Controlador del servicio de registro centralizado   ClsControllerLib.dll es el motor de ejecución de comandos del Shell de administración de Lync Server y de ClsController.exe. CLSControllerLib.dll envía los comandos Start, Stop, Flush y Search a ClsAgent. Cuando se envían comandos de búsqueda, los registros resultantes se devuelven a ClsControllerLib.dll y se agregan. El controlador es responsable de enviar comandos al agente, de recibir el estado de dichos comandos y de administrar los datos del archivo de registro que devuelven todos los agentes sobre cualquier equipo del ámbito de búsqueda, y de agregar los datos de registro en un conjunto de resultados significativo y ordenado. La información de los temas siguientes se centra en el uso del Shell de administración de Lync Server. ClsController.exe se limita a un subconjunto de las características y funciones que están disponibles en el Shell de administración de Lync Server. Puede obtener ayuda para ClsController.exe en la línea de comandos; para ello, escriba ClsController en el directorio predeterminado C:\Archivos de programa\Archivos comunes\Microsoft Lync Server 2013\ClsAgent

Como vemos los puertos que se utilizan para este serivicio son en TCP el rango 50001-50003. Esto es algo que debemos tener muy en cuenta si tenemos VLAN filtradas por ACL o servidores EDGE en la DMZ, puesto que en la interface interna del EDGE debemos permitir la comunicación con el controlador a dichos puertos (esquema de un EDGE).

Lync_Servicio_Registro_Centralizado_4.png

Si queremos comprobar que estos puertos están a la «escucha» podemos comprobarlo primero con netstat -an | find «.5000» y vemos que el estado es LISTENING
Lync_Servicio_Registro_Centralizado_5.png
Sí ahora queremos verificar que controlador puede conectarse a alguno de estos puertos, podemos lanzar un telnet hacia el servidor con el puerto 50001 por ejemplo: telnet fqdn-controlador 50001. Una vez que lancemos el telnet podemos comprobar directamente en la pantalla de telnet si se ha conectado, puesto que nos aparece el cursor en la parte superior izquierda parpadeando

 

Lync_Servicio_Registro_Centralizado_7.png

Y además si ejecutamos en el servidor al cual le hemos lanzado la conexión de telnet hacia el puerto 50001 un netstat -an | find «.50001» podemos la dirección IP desde la cual nos hemos conectado y el estado a ESTABLISHEDLync_Servicio_Registro_Centralizado_6.png

 

En caso contrario, debéis revisar las reglas de vuestros Firewalls puesto que en el Firewall de Windows ya vienen habilitadas las excepciones por defecto. Para verificarlo debéis acceder a la administración avanzada del Firewall, filtramos por Grupos en este caso el CS y vemos que tenemos los puertos 50001-50003 disponibles para conectarse desde cualquier origen
Lync_Servicio_Registro_Centralizado_8.png

Una vez que hemos verificado que tenemos nuestra configuración del agente disponible, vamos a ver como podemos configurar la centralización de los registros en un servidor que hará las funciones de controlador. Lo primero que vamos a hacer, es revisar la configuración inicial del servicio. Para ello utilizaremos el siguiente cmdlet: Get-CsClsConfiguration  (Información ampliada: http://technet.microsoft.com/es-es/library/jj619179.aspx). Vemos que se aplica a nivel global y distintas configuraciones en cuanto al tamaño de los ficheros (.ETL y .CACHE), su ubicación predeterminada (%temp%\Tracing), el % máximo de utilización de espacio en disco de los ficheros .CACHE (80), además del periodo de retención (14 días) entre otras opciones.

Lync_Servicio_Registro_Centralizado_9.png

Estos son todos los cmdlets para configurar y gestionar el servicio de centralización de registros:

Abarcar todo en un solo artículo cómo podéis apreciar es inviable, pero  vamos a ver como podemos configurar un escenario simple. Primero comentaros que todo se hace vía línea de comandos y para poder manejar los agentes podemos hacerlo mediante ClsController.exe ubicado en C:\Program Files\Common Files\Microsoft Lync Server 2013\ClsAgent. Si ejecutamos el ClsController.exe sin parámetros nos creará automáticamente la carpeta Tracing en «%TEMP%\Tracing» y «C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\Tracing». Las distintas ubicaciones vienen dadas por que en función del usuario que ejecute el comando le creará su carpeta Tracing, y la segunda carpeta Tracing es porque el servicio Lync Server Centralized Logging Service Agent se inicia como Servicio de Red

Lync_Servicio_Registro_Centralizado_10.png

Una vez ejecutamos el comando sin modificadores nos mostrará en pantalla las distintas opciones disponibles:

USO:
——————–
ClsController (COMANDO) [(OPCIONES)] [(ÁMBITO)]
COMANDO:
——————–
-start :        Inicia la sesión de seguimiento de un escenario determinado. Opción obligatoria: scenario. Otra opción válida: duration
-stop : Detiene la sesión de seguimiento de un escenario determinado. Opción obligatoria y única válida: scenario
-query :        Lista de consulta de escenarios que se están siguiendo. Opciones válidas: ninguna
-flush :        Vacíe los registros y haga que estén disponibles para buscar de inmediato. Opciones válidas: ninguna
-update :       Actualice la duración activa (no predeterminada) en la que debe seguirse el escenario. Opción obligatoria y única válida: duration
-search :       Registros de búsqueda. Los resultados se devuelven en un archivo de texto. Opciones válidas: matchall, matchany, skipnetworklogs, keepcache, sta
rttime, endtime, loglevel, components, correlationids, uri, callid, confid, phone, ip, sipcontents
Opciones:
——————–
-scenario: nombre del escenario. Nombres de escenarios válidos según lo especificado al final
-duration: duración (minutos) en la que realizar el seguimiento del escenario determinado. Duración predeterminada: 4 horas
-matchall: especifique esto para requerir que la búsqueda cumpla todos los criterios especificados.
-matchany: especifique esto para requerir que la búsqueda cumpla alguno de los criterios especificados. Esta opción es la predeterminada.
-skipnetworklogs: si se omiten los registros especificados en el uso compartido de red (si está configurado). Esto mejora el rendimiento de la búsqueda si no ne
cesita datos de registros de red
-keepcache : si se especifica, el archivo .cache intermedio, junto con los resultados de búsqueda, se crea en el directorio actual
-starttime: (marca de tiempo) marca de tiempo desde la que buscar las entradas del registro
-endtime: (marca de tiempo) marca de tiempo para buscar las entradas del registro
-loglevel: (fatal|error|warn|info|verbose|noise): nivel de registro menos grave en el que buscar. Por ejemplo, si se especifica ‘advertencia’, la búsqueda se limitará a ‘warn’, ‘error’ y ‘fatal’
-components: lista de nombres de componentes separados por comas para restringir el ámbito de la búsqueda
-correlationids : lista de ids. separada por comas para restringir el ámbito de búsqueda
-uri: ámbito de uri para el comando de búsqueda. Debe ser una coincidencia exacta
-callid: ámbito de Id. de llamada para el comando de búsqueda. Debe ser una coincidencia exacta
-confid: ámbito de Id. de conferencia para el comando de búsqueda. Debe ser una coincidencia exacta
-phone: ámbito de número de teléfono para el comando de búsqueda. Debe ser una coincidencia exacta
-ip: ámbito de dirección ip para el comando de búsqueda. Debe ser una coincidencia exacta
ÁMBITO:
——————–
-Pools: lista separada por comas de fqdn de grupos
-Computers : lista separada por comas de fqdn de PC
Nombres de escenarios válidos:
  AlwaysOn
  MediaConnectivity
  ApplicationSharing
  AudioVideoConferencingIssue
  HybridVoice
  IncomingAndOutgoingCall
  VoiceMail
  IMAndPresence
  AddressBook
  DeviceUpdate
  LYSSAndUCS
  CLS
  SP
  WAC
  UserReplicator
  HostedMigration
  MonitoringAndArchiving
  LILRLegacy
  LILRLYSS
  MeetingJoin
  RGS
  CPS
  XMPP
  CAA
  ACPMCU
  Authentication
  HADR
  Powershell
  FilterApps

Los comandos más comunes son los siguientes:

  • ClsController.exe -start –scenario <scenario> –pools <pool fqdn>
  • ClsController.exe -stop –scenario <scenario> –pools <pool fqdn>
  • ClsController.exe  -flush –pools <pool fqdn>
  • ClsController.exe  -search –pools <pool fqdn> –components <component> –loglevel <loglevel>

Ejemplo: ClsController.exe -start -scenario MediaConnectivity -computers srv-lync02.asirsl.com

Lync_Servicio_Registro_Centralizado_11.png
Si accemos al servidor SRV-LYNC02.ASIRSL.COM vemos que en la ubicación de la carpeta Tracing del servicio de red que ya tenemos nuestro fichero .ETL
Lync_Servicio_Registro_Centralizado_12.png
Como he habilitado -scenario MediaConnectivity lanzo una llamada desde mi cliente Lync y compruebo que el tamaño del fichero de Log ha aumentado de 64KB a 2.112KB
Lync_Servicio_Registro_Centralizado_13.png
Ahora pararé el registro también desde el servidor remoto con el comando:  ClsController.exe –stop-scenario MediaConnectivity -computers srv-lync02.asirsl.com

 

Lync_Servicio_Registro_Centralizado_14.png

 

Sí ahora tratamos de acceder nuevamente a la carpeta en donde teníamos los ficheros .ETL veremos que ahora tenemos dos ficheros: .CACHE y .HDR
Lync_Servicio_Registro_Centralizado_15.png
Mientras que la captura está iniciada el fichero es el .ETL pero una vez finalizada se convierten en .CACHE y HDR. Si abrimos el fichero .HDR podremos ver la información sobre la captura realizada:
Lync_Servicio_Registro_Centralizado_16.png
El fichero de la captura es el .CACHE, pero al ser un binario no podemos abrirlo directamente con el Snooper (Microsoft Lync Server 2013 Debugging Tools), para ello primero debemos ejecutar Search-CsClsLogging para exportar el registro a txt. Para ello debemos ejecutar el siguiente cmdlet: Search-CsClsLogging -Computers fqdn_servidor -OutputFilePath <ruta_fichero_exportado>

 

Lync_Servicio_Registro_Centralizado_17.png

 

Si ahora vamos a la carpeta C:\Temp tendremos el fichero de registro exportado a .txt el cual podremos abrir ahora desde Snooper que será más sencillo de analizar
Lync_Servicio_Registro_Centralizado_18.png
Vamos a File – Open File (Ctrl + O) y luego desde el mini explorar buscar el fichero exportado a txt anteriormente con Search-CsClsLogging
Lync_Servicio_Registro_Centralizado_19.png

 

Ahora podremos analizarlo con más facilidad
Lync_Servicio_Registro_Centralizado_20.png
Como podemos apreciar es una herramienta muy pontente, y nos da infinidad de posiblidades. En el listado de cmdlets expuestos tenéis las URL que os llevarán a la página oficial de MSFT para explicar cada uno de ellos con más nivel de detalle. Todas las opciones las tenemos disponibles con ClsController.exe pero también comos os había comentado anteriormente mediante cmdlets PowerShell. Claramente con PowerShell tenemos más flexibilidad y potencia, ahora ya es cuestión de cada uno de sus necesidades y con lo que se sienta más cómodo. Lo que yo había hecho con ClsController.exe -start se puede hacer y más amplicado con Start-CsClsLogging.

 

Como resumen yo lo que había hecho es primero iniciar y parar la captura, para posteriormente con Search-CsClsLogging exportar el fichero a .txt para abrirlo con Snooper de forma gráfica. Podemos iniciar el registro de un servidor o de toda la implementación, filtrarlo por fechas, sesiones, etc.. súper útil.

Espero que os sea de utilidad!!

A estas alturas no creo que nadie que utilice Lync Server no tenga claro que para poder configurar la federación, debemos permitir hacia la IP de Acceso del EDGE el puerto 5061 en TCP. En su momento había publicado distintos artículos de cómo configurar un EDGE:

Lync_Edge_Federación_Firewall_Cisco_14.png
Ahora que tenemos claro que el puerto utilizado para la federación es el 5061 en TCP, vamos a ver cómo podemos configurar nuestro Firewall Cisco ASA 5510 para permitir las comunicaciones hacia nuestro EDGE si hemos implementado el EDGE detrás de NAT. Su configuración es muy sencilla, pero voy a tratar de describir los pasos que debemos dar para configurarlo. Vamos a configurarlo mediante ASDM para facilitar su configuración a los técnicos que no estén acostumbrados a manejarlo a diario.  Yo he utilizado un Cisco ASA 5510 con las siguientes características:
 
Lync_Edge_Federación_Firewall_Cisco_13.png
Pues comentado esto, abrimos nuestro ASDM, vamos a Access Rules y en la interface WAN (Level 0) pulsamos con el botón secundario del ratón y pulsamos en Add Access Rule. Lo que haremos aquí básicamente es configurar una ACL para permitir o no la conexión al puerto 5061 en nuestra interface WAN de entrada, pero aquí no "abrimos" el puerto aún.
 
Lync_Edge_Federación_Firewall_Cisco_1.png
Debemos especificiar la IP de Origen, Destino y Servicio.
Lync_Edge_Federación_Firewall_Cisco_2.png
Por defecto, el Cisco ASA no tiene como protocolo predefinido el puerto 5061 (solo tiene SIP en TCP y UDP)
Lync_Edge_Federación_Firewall_Cisco_3.png
Para poder crear nuestro propio servicio pulsamos en Add y TCP Service Group…
Lync_Edge_Federación_Firewall_Cisco_4.png
Escribiemos el nombre del Grupo, Descripción (opcional), seleccionamos Create new member, escribimos el número de puerto (5061) y pulsamos en ADD
Lync_Edge_Federación_Firewall_Cisco_5.png
Una vez que hemos pulsado en Add podemos pulsar en OK para completar la creación del servicio
Lync_Edge_Federación_Firewall_Cisco_6.png
Ahora que lo tenemos creado, lo podemos buscar y agregarlo para aplicarlo a la ACL
Lync_Edge_Federación_Firewall_Cisco_7.png
Pulsamos en OK  para finalizar la configuración de la ACL. Si queremos filtrar la conexión al servicio, podemos establecer la opción de source con la IP de origen. Sino la tenemos creada como un objeto, pulsamos en los tres puntos de la derecha y creamos el nuevo objeto (equipo) con la IP correspondiente (similar a la creación del servicio)
Lync_Edge_Federación_Firewall_Cisco_8.png
La primera parte la hemos completado, ya tenemos nuestra ACL configurada
Lync_Edge_Federación_Firewall_Cisco_9.png
Por último vamos a configurar el Port Forwarding (redirección de puertos), para ello pulsamos en NAT Rules y luego en Add Static NAT Rules… sobre la interface privada (Level 100) que se corresponde con el gateway de los equipos que se conectan a Internet mediante este dispositivo
Lync_Edge_Federación_Firewall_Cisco_10.png
Aquí debemos prestar algo de atención para que nos funcione a la primera, no tiene nada en especial para los que estamos acostumbrados a trabajar con estos dispositivos pero para el resto es posible que sí. En la primera parte (Original) debemos elegir la interface Interna (LAN en mi caso) y en source escribimos la dirección IP del servidor al cual queremos enviar las peticiones recibidas desde Internet al puerto 5061. En nuestro caso debemos especificar la IP de acceso del EDGE. En la opción Translated debemos seleccionar la interface WAN (Level 0) en mi caso se llamad Internet, pero como nuestro Firewall puede tener más de una IP Pública nos permite elegir si queremos especificar la IP Pública por lo que esperamos que nos llegue las conexiones al puerto 5061 o bien sino tenemos más que una IP Pública en el Firewall podemos elegir User Interface IP Addres. Lo último que debemos especificar es el número de puerto del servicio y habilitando la casilla de PAT, en ambas casillas (Original Port y Traslated Port) escribimos el número de puerto. En caso de que quisiéramos que la petición nos llegase por el puerto 5061 y la enviásemos a otro puerto diferente si tendríamos que colocar diferentes puertos. OJO, para este servicio lo vamos a dejar tal cual lo veis en la imagen:
Lync_Edge_Federación_Firewall_Cisco_11.png
Para finalizar pulsamos en Apply y ya tenemos publicado nuestro servicio de federaciones a nivel de configuración de dispositivos de seguridad
Lync_Edge_Federación_Firewall_Cisco_12.png
 
El procedimiento para otros dispositivos de seguridad será similar, parecido o no, pero lo que si debemos tener claro es que el puerto que debemos tener accesible desde internet es el 5061 en TCP.

Espero que os sea de utilidad!!

Algo que debemos tener en cuenta cuando implementamos Lync, es conocer la topología de red de nuestro cliente. En muchas ocasiones nos encontramos con Firewalls, IDS, IPS, VLAN, IPSec, etc…, por lo que debemos realizar algunos cambios para ajustarlo para obtener el mejor rendimiento de Lync. Lo más común es modificar las reglas de publicación de puertos de los Firewalls, ACLs en los Switchs L3 para permitir la comunicación entres VLANs, etc… pero que ocurre si tenemos implementado IPSec? Es probable que en el momento de asociar los puertos de medios, tengamos problemas con el tiempo de negociación de IPSec y por tanto las llamadas no se establezcan o problemas similares. Para evitar este más que probable comportamiento, debemos habilitar las siguientes excepciones del tráfico de IPSec:

Excepciones_IPSec_Para_Lync_1.png
Por supuesto esto también dependerá del hardware que utilicemos para implementar IPSec (Firewalls, Routers, etc…), si por el contrario utilizamos las Directivas de seguridad IP en Equipo Local debemos modificar la regla correspondiente puesto que además esto de por sí tiene un impacto importante en las comunicaciones del servidor/equipo.
Excepciones_IPSec_Para_Lync_2.png

Espero que os sea de utilidad!!!