Supervisión de conexiones de punto a sitio para Virtual WAN

En esta sección se documenta cómo crear un libro de Azure que muestre los datos pertinentes de los clientes VPN de usuario conectados a Azure Virtual WAN.

Antes de empezar

Para completar los pasos de este artículo, debe tener una WAN virtual, un centro de conectividad y una instancia de VPN Gateway de usuario. Para crear estos recursos, siga los pasos descritos en este artículo: Creación de una red WAN virtual, un centro de conectividad y una puerta de enlace.

Arquitectura de la solución de libros

Cuando se trabaja con Azure Virtual WAN y se observan las métricas, lo más frecuente es hacerlo desde el contexto de un libro de Azure. En esta solución, usaremos lo que ya está disponible en el libro de Azure y enriquecerlo con más detalles, especialmente sobre las conexiones activas.

  • AzureDiagnostics: estos registros se reciben al habilitar la depuración de conexión de punto a sitio mediante la configuración de depuración de Azure Monitor y la habilitación de los registros GatewayDiagnosticLog, IKEDiagnosticLog, P2SDiagnosticLog y AllMetrics. Algunos registros son ruidosos y costosos con respecto al costo de Log Analytics, especialmente IKEDiagnostics.

  • Get-AzP2sVpnGatewayDetailedConnectionHealth: se trata de un comando de PowerShell (que se ejecuta en una aplicación de funciones) para obtener los detalles de las sesiones activas. Este comando solo admite el almacenamiento de datos en una cuenta de almacenamiento basada en una clave SAS.

En la ilustración siguiente se muestran los componentes implicados en la solución sugerida:

Captura de pantalla que muestra la arquitectura del libro.

El servicio VPN se ejecuta en la puerta de enlace de VPN de la conexión de punto a sitio de vWAN de Azure. Tiene métricas y configuraciones de depuración asociadas que se pueden leer desde dentro de un libro de Azure. Para obtener la información adicional que el comando de PowerShell puede proporcionar, elegimos ejecutar este comando en una aplicación de funciones de Azure. Desde la aplicación de funciones, almacenamos la salida en una cuenta de almacenamiento de Azure.

La salida almacenada en la cuenta de almacenamiento se captura desde dentro del libro mediante una función especial denominada "externaldata".

Creación de una cuenta de Azure Storage

  1. En el portal, en la barra Buscar recursos, escriba Cuentas de almacenamiento.

  2. Seleccione Cuentas de almacenamiento en los resultados. En la página de cuentas de almacenamiento, seleccione + Crear para abrir la página Crear una cuenta de almacenamiento.

  3. En la página Crear una red WAN, en la pestaña Aspectos básicos, rellene los campos. Modifique los valores de ejemplo que se aplicarán a su entorno.

    Captura de pantalla que muestra la sección de aspectos básicos para crear una cuenta de almacenamiento.

    • Suscripción: seleccione la suscripción que quiere usar.
    • Grupo de recursos: créelo o utilice uno existente.
    • Nombre de la cuenta de almacenamiento: escriba el nombre que quiere llamar a la cuenta de almacenamiento.
    • Región: seleccione la región de la cuenta de almacenamiento.
    • Rendimiento: Estándar o Premium. Estándar es adecuado para nuestros fines de supervisión.
    • Redundancia: elija entre almacenamiento con redundancia local, almacenamiento con redundancia geográfica, almacenamiento con redundancia de zona y almacenamiento con redundancia de zona geográfica.

    Una vez rellenos los campos, en la parte inferior de la página, seleccione Siguiente: Opciones avanzadas>.

  4. En la página Opciones avanzadas, rellene los valores siguientes:

    Captura de pantalla que muestra la sección avanzada para crear una cuenta de almacenamiento.

    • Require secure transfer for REST API operations (Requerir transferencia segura en operaciones de API REST): elija Habilitado.
    • Enable blob public access (Habilitar el acceso público de blobs): elija Deshabilitado.
    • Enable storage account key access (Habilitar el acceso a la clave de la cuenta de almacenamiento): elija Deshabilitado.
    • Default to Azure Active Directory authorization in the Azure portal (Autorización predeterminada con Azure Active Directory en Azure Portal): elija Habilitado.
    • Versión de TLS mínima: elija Versión 1.2.
  5. Seleccione Revisar y crear en la parte inferior para ejecutar la validación.

  6. Una vez que se haya superado la validación, seleccione Crear para crear la cuenta de almacenamiento.

Crear contenedor

  1. Una vez completada la implementación, vaya al recurso.

  2. En el panel izquierdo, seleccione Contenedores en Almacenamiento de datos.

    Captura de pantalla que muestra la página de contenedor inicial.

  3. Seleccione + Contenedor para crear un nuevo contenedor.

  4. Escriba un nombre para el contenedor y seleccione Crear.

Creación y carga del blob en el contenedor

  1. En el equipo, abra una aplicación de editor de texto como Bloc de notas.

    Captura de pantalla que muestra cómo abrir un bloc de notas.

  2. Deje el archivo de texto vacío y seleccione Archivo > Guardar como.

  3. Guarde el archivo de texto vacío con el nombre que prefiera seguido de la extensión .json.

    Captura de pantalla que muestra como guardar un archivo json.

  4. Vuelva a la sección Contenedores del portal.

    Captura de pantalla que muestra la sección de contenedor después de crear un nuevo contenedor.

  5. Seleccione en la segunda fila, que corresponde al contenedor que creó (no $logs).

  6. Si ve este mensaje de advertencia rojo que indica ""No tiene permiso..."", seleccione Cambiar a la clave de acceso como método de autenticación. Se encuentra justo debajo del cuadro de advertencia rojo.

  7. Haga clic en Cargar.

    Captura de pantalla que muestra un contenedor específico creado por un usuario.

  8. Seleccione el archivo correspondiente al archivo JSON vacío en el equipo y seleccione Cargar.

  9. Una vez cargado el archivo, seleccione en el archivo JSON y vaya a la pestaña Generar SAS.

    Captura de pantalla que muestra el campo Generar SAS para blob.

  10. En Método de firma, elija Clave de cuenta.

  11. En Permisos, dé a la clave los siguientes permisos: Leer, Agregar, Crear y Escribir.

  12. Elija una fecha y hora de expiración para la clave.

  13. Seleccione Generar URL y token de SAS.

  14. Copie los valores Token de SAS de blob y URL de SAS de Blob en una ubicación segura.

Creación de una aplicación de funciones de Azure

  1. En el portal, en la barra Buscar recursos, escriba Aplicación de funciones.

  2. Seleccione Aplicación de funciones en los resultados. En la página Aplicación de funciones, seleccione Crear para abrir la página Crear aplicación de funciones.

  3. En la página Crear una red WAN, en la pestaña Aspectos básicos, rellene los campos. Modifique los valores de ejemplo que se aplicarán a su entorno.

    Captura de pantalla que muestra la pestaña de aspectos básicos de la aplicación de funciones.

    • Suscripción: seleccione la suscripción que quiere usar.
    • Grupo de recursos: créelo o utilice uno existente.
    • Nombre de la aplicación de funciones: elija un nombre para la aplicación de funciones.
    • Publicar: seleccione Código.
    • Pila del entorno en tiempo de ejecución: seleccione PowerShell Core.
    • Versión: elija 7.0 (o la versión que prefiera)
    • Región: elija la región que prefiera.
  4. Las pestañas restantes son opcionales para cambiar, por lo que puede seleccionar Revisar y crear y, después, seleccione Crear cuando se supera la validación.

  5. Vaya al recurso Aplicación de funciones.

  6. Seleccione Identidad en Configuración en el panel izquierdo. Cambie el botón Estado a Activar para Asignado por el sistema y seleccione Guardar.

    Captura de pantalla que muestra la pestaña de identidad de la aplicación de funciones.

  7. Seleccione Configuración en Configuración en el panel izquierdo.

  8. Seleccione + Nueva configuración de la aplicación. Captura de pantalla que muestra la pestaña de agregar una configuración de la aplicación.

  9. Cree las siete entradas siguientes; para ello, escriba el nombre y el valor y, a continuación, seleccione Aceptar después de cada valor.

    Nombre Valor
    "resourcegroup" su grupo de recursos
    "sasuri" @Microsoft.KeyVault(SecretUri=https://\<keyvaultname>.vault.azure.net/secrets/sasuri/\<version>)
    --> actualícelo en consecuencia después de crear el almacén de claves en la sección siguiente.
    "subscription" el identificador de suscripción
    "tenantname" el identificador de inquilino
    "vpngw" Este nombre es algo parecido a <guid>-eastus-ps2-gw. Puede obtenerlo en la configuración de VPN de usuario de vWAN HUB.
  10. Seleccione Guardar.

  11. Seleccione Funciones en el panel izquierdo y seleccione + Crear.

  12. Rellene los campos.

    Captura de pantalla que muestra la página al crear una función.

    • Entorno de desarrollo: desarrollar en el portal.
    • Plantilla: desencadenador de temporizador
    • Nueva función: elija un nombre para la función.
    • Programación: escriba una expresión cron con el formato "{segundo} {minuto} {hora} {día} {mes} {día de la semana}" para especificar la programación.
  13. Seleccione Código y prueba en el panel izquierdo y escriba el código siguiente en el archivo run.ps1. Seleccione Guardar.

    # Input bindings are passed in via param block.
    param($Timer)
    
    # Get the current universal time in the default string format.
    $currentUTCtime = (Get-Date).ToUniversalTime()
    
    # The 'IsPastDue' property is "true" when the current function invocation is later than scheduled.
    if($Timer.IsPastDue){
    Write-Host "PowerShell timer is running late!"
    }
    
    ## Write an information log with current time.
    Write-Host "PowerShell timer trigger function ran! TIME:$currentUTCtime"
    
    $tenantname = $env:appsetting_tenantname
    $subscription = $env:appsetting_subscription
    $resourceGroup = $env:appsetting_resourcegroup
    $vpngw = $env:appsetting_vpngw
    $sasuri = $env:appsetting_sasuri
    
    Write-Host "Connecting to Managed Identity..."
    connect-azaccount -tenant $tenantname -identity -subscription $subscription
    
    Write-Host "Executing File Update..."
    Get-AzP2sVpnGatewayDetailedConnectionHealth -name $vpngw -ResourceGroupName $resourceGroup -OutputBlobSasUrl $sasuri
    
    Write-Host "Function Execution Completed!"
    
  14. Vuelva a la página Aplicación de funciones y seleccione Editor de App Service en el panel izquierdo en Herramientas de desarrollo. A continuación, seleccione Ir -->.

  15. Vaya a requirements.psd1 y descomprima la línea que empieza por "Az"... como se muestra.

    Captura de pantalla que muestra el archivo de requisitos de la aplicación de funciones.

  16. Para que el comando get-AzP2sVpnGatewayDetailedConnectionHealth se ejecute correctamente, debe tener los permisos adecuados para la información. Vaya al grupo de recursos y elija "Control de acceso (IAM)" en el panel izquierdo. Esto corresponde a la administración de identidades y acceso. Asigne el acceso de lectura de FunctionApp a través del grupo de recursos.

Crear una instancia de Azure Key Vault

  1. En el portal, en la barra Buscar recursos, escriba Almacenes de claves.

  2. Seleccione + Crear en los resultados para abrir la página Crear un almacén de claves.

  3. Rellene los campos de la pestaña Elementos básicos. Modifique los valores de ejemplo que se aplicarán a su entorno.

    Captura de pantalla que muestra la sección de aspectos básicos para crear un almacén de claves.

    • Suscripción: seleccione la suscripción que quiere usar.
    • Grupo de recursos: créelo o utilice uno existente.
    • Nombre de cuenta de almacenamiento: escriba el nombre con el que quiera llamar al almacén de claves.
    • Región: seleccione la región de la cuenta de almacenamiento.
    • Plan de tarifa: Estándar o Premium. Estándar es adecuado para nuestros fines de supervisión.
  4. Seleccione Siguiente: Directiva de acceso>.

  5. En Modelo de permisos, elija Vault access policy (Directiva de acceso del almacén).

  6. Deje las opciones en Acceso a los recursos como deshabilitado.

  7. En Directivas de acceso, seleccione + Crear.

    Captura de pantalla que muestra la primera pantalla para crear una directiva de acceso.

  8. Seleccione Siguiente para ir a la pestaña Principal. Escriba el nombre de la aplicación de funciones y selecciónelo.

  9. Seleccione Siguiente dos veces para ir a la cuarta pestaña: Revisar y crear y seleccione Crear en la parte inferior.

  10. Ahora debería ver la directiva de acceso recién creada en la sección Directivas de acceso. La modificación de los valores predeterminados en la pestaña Redes es opcional, por lo que seleccione Revisar y crear en la esquina inferior izquierda.

  11. Vaya a Secretos en Objetos en el panel izquierdo del recurso del almacén de claves. Seleccione + Generar/Importar y agregue el secreto como se muestra a continuación:

    • Nombre: sasuri
    • valor: <SASURI>
    • Habilitado: Sí
  12. Vuelva a la pestaña Configuración de la aplicación de funciones y modifique la entrada siguiente. El valor procede del campo Identificador secreto que aparece después de hacer clic en el secreto:

    • Nombre: "sasuri"
    • Valor: @Microsoft.KeyVault(SecretUri=https://\<keyvaultname>.vault.azure.net/secrets/sasuri/\<version>)

Creación de un libro de Azure

El libro de Azure ya está listo para crearse. Usaremos una combinación de funcionalidad integrada y los detalles de sesión agregados de nuestra solución de aplicación de funciones.

  1. Vaya al recurso Virtual WAN y seleccione en Insightsen Monitor en el panel izquierdo. Seleccione Libros y, a continuación, seleccione + Nuevo. Captura de pantalla que muestra el primer paso para crear un libro de Azure.

  2. Agregue la siguiente consulta al libro. Reemplace "SASURI" por el URI de SAS.

     let P2Svpnconnections = (externaldata (resource:string, UserNameVpnConnectionHealths: dynamic) [
         @"SASURI"
     ] with(format="multijson"));
    
     P2Svpnconnections
     | mv-expand UserNameVpnConnectionHealths
     | extend Username = parse_json(UserNameVpnConnectionHealths).UserName
     | extend VpnConnectionHealths = parse_json(parse_json(UserNameVpnConnectionHealths).VpnConnectionHealths)
     | mv-expand VpnConnectionHealths
     | extend VpnConnectionId = parse_json(VpnConnectionHealths).VpnConnectionId, VpnConnectionDuration = parse_json(VpnConnectionHealths).VpnConnectionDuration, VpnConnectionTime = parse_json(VpnConnectionHealths).VpnConnectionTime, PublicIpAddress = parse_json(VpnConnectionHealths).PublicIpAddress, PrivateIpAddress = parse_json(VpnConnectionHealths).PrivateIpAddress, MaxBandwidth = parse_json(VpnConnectionHealths).MaxBandwidth, EgressPacketsTransferred = parse_json(VpnConnectionHealths).EgressPacketsTransferred, EgressBytesTransferred = parse_json(VpnConnectionHealths).EgressBytesTransferred, IngressPacketsTransferred = parse_json(VpnConnectionHealths).IngressPacketsTransferred, IngressBytesTransferred = parse_json(VpnConnectionHealths).IngressBytesTransferred, MaxPacketsPerSecond = parse_json(VpnConnectionHealths).MaxPacketsPerSecond
     | extend PubIp = tostring(split(PublicIpAddress, ":").[0])
     | project Username, VpnConnectionId, VpnConnectionDuration, VpnConnectionTime, PubIp, PublicIpAddress, PrivateIpAddress, MaxBandwidth, EgressPacketsTransferred, EgressBytesTransferred, IngressPacketsTransferred, IngressBytesTransferred, MaxPacketsPerSecond;
    
    
  3. Para ver los resultados, seleccione el botón azul Ejecutar consulta para ver los resultados.

  4. Si ve el siguiente error, vuelva al archivo (vpnstatfile.json) en el blob del contenedor de almacenamiento y vuelva a generar la dirección URL de SAS. A continuación, pegue la dirección URL de SAS actualizada en la consulta.

    Captura de pantalla que muestra el error al ejecutar una consulta en un libro.

  5. Guarde el libro para volver a él más adelante.

  6. Para las métricas siguientes, debe habilitar el registro de diagnóstico agregando la configuración de diagnóstico en Azure Portal. Rellene los campos necesarios para la suscripción y el grupo de recursos. En el tipo de recurso, escriba "microsoft.network/p2svpngateways". Agregue una configuración de diagnóstico (o edite la configuración de diagnóstico actual) para la puerta de enlace de punto a sitio que desea supervisar.

    Captura de pantalla que muestra la primera página de configuración de diagnósticos en Azure Monitor.

  7. Habilite allLogs y allMetrics y elija enviar al "área de trabajo de Log Analytics" como destino. Algunos registros son ruidosos y pueden ser costosos (en concreto, IKEDiagnosticLog). Como resultado, no dude en habilitar solo los registros específicos que desea ver en lugar de habilitar allLogs.

    Captura de pantalla que muestra la segunda página de configuración de diagnósticos en Azure Monitor.

Consultas de ejemplo

En la sección siguiente se muestran consultas de ejemplo.

Conexiones correctas del usuario de punto a sitio con IP

 Captura de pantalla que muestra la consulta de conexiones de punto a sitio correctas con IP.

Autenticación EAP (protocolo de autenticación extensible) correcta

Captura de pantalla que muestra la consulta de métricas de autenticación de EAP.

Información de usuario de VPN de punto a sitio

Captura de pantalla que muestra la consulta de información de usuario VPN de punto a sitio.

Conexiones correctas de VPN de punto a sitio por usuario

Captura de pantalla que muestra la consulta de conexiones correctas VPN de punto a sitio.

Conexiones VPN de punto a sitio

Captura de pantalla que muestra la consulta de conexiones VPN de punto a sitio.

Conexiones correctas VPN de punto a sitio

Captura de pantalla que muestra la consulta de conexiones VPN de punto a sitio.

Conexiones VPN de punto a sitio con error

Captura de pantalla que muestra la consulta de conexiones VPN de punto a sitio incorrectas.

Número de conexiones VPN por P2SDiagnosticLog

Captura de pantalla que muestra la consulta del recuento de conexiones VPN.

IKEDiagnosticLog

Captura de pantalla que muestra la consulta de IKEDiagnosticLog.

Detalles adicionales de diagnóstico de IKE

Captura de pantalla que muestra la consulta de detalles de diagnóstico de intercambio de claves por red.

Estadísticas de VPN de punto a sitio

Captura de pantalla que muestra las estadísticas de VPN de punto a sitio.

Pasos siguientes

Para más información sobre las preguntas más frecuentes, consulte la página de preguntas frecuentes de Virtual WAN.