Cómo usar los registros de flujo de VPC

Los registros de flujo de VPC registran una muestra de los flujos de red que se envían y se reciben en las instancias de VM. Estos registros se pueden utilizar para supervisar redes, detectar intrusiones, realizar un análisis de la seguridad en tiempo real y optimizar gastos.

Puedes ver los registros de flujo en Stackdriver Logging y exportarlos a cualquier destino que la exportación de Stackdriver Logging admita: Cloud Pub/Sub, BigQuery, entre otros.

Los registros de flujo se agregan por conexión, en intervalos de 5 segundos, desde las VM de Compute Engine, y se exportan en tiempo real. Si te suscribes a Cloud Pub/Sub, puedes analizar los registros de flujo a través de las API de transmisión en tiempo real.

Propiedades principales

  • Puedes habilitar o inhabilitar los registros de flujo de VPC por subred de VPC. Cuando los registros de flujo de VPC se encuentran habilitados en una subred, recolectan información de todas las instancias de VM de esa subred.
  • Las VM realizan informes sobre todos los flujos TCP y UDP. Cada informe de flujo incluye la información que se describe en la sección Formato del registro.
  • Cada VM toma una muestra de los flujos TCP y UDP que observa, de entrada y de salida, independientemente de si el flujo va hacia una VM o proviene de otra VM, de otro proyecto host de tu centro de datos local, de un servicio de Google, o de un host de Internet. Si dos VM de GCP se comunican y ambas se encuentran en subredes con el registro de flujo de VPC habilitado, las dos VM realizan informes de los flujos.
  • Puedes utilizar filtros para seleccionar qué registros de flujo excluir de Stackdriver Logging y cuáles exportar a API externas.
  • Los registros de flujo de VPC están compilados de manera nativa en la pila de herramientas de redes de la infraestructura de red de VPC. No hay retrasos adicionales ni problemas de rendimiento si se enrutan los paquetes de IP registrados hacia su lugar de destino.

Casos prácticos

Supervisión de red

El registro de flujo de VPC te permite ver en tiempo real la capacidad de procesamiento y rendimiento. Puedes llevar a cabo las siguientes acciones:

  • Supervisar la red de VPC
  • Realizar diagnósticos de la red
  • Filtrar los registros de flujo por VM y por aplicación para comprender los cambios en el tráfico
  • Comprender el crecimiento del tráfico para realizar una previsión de la capacidad

Cómo comprender el uso de la red y optimizar los gastos de tráfico de red

Con el registro de flujos de VPC puedes analizar el uso de la red. Puedes analizar los siguientes elementos del flujo de la red:

  • El tráfico entre regiones y zonas
  • El tráfico de Internet hacia países específicos
  • Los flujos que generan la mayor cantidad de tráfico (top talkers)

Puedes utilizar el análisis como base para optimizar los gastos del tráfico de red.

Intrusiones en la red

Puedes utilizar el registro de flujo de VPC para detectar las intrusiones en la red. Por ejemplo, si ocurre un incidente, puedes examinar los siguientes elementos:

  • Qué IP se comunicó con quién y en qué momento
  • Los IP comprometidos, mediante el análisis del flujo de red de entrada y de salida

Análisis de seguridad en tiempo real

Puedes aprovechar las API de transmisión en tiempo real (a través de Cloud Pub/Sub) si las integras a sistemas SIEM (Sistema de administración de información y eventos de seguridad). Esto te brinda la supervisión en tiempo real, la correlación de eventos, el análisis y las alertas de seguridad.

Recopilación de registros

Los registros de flujo se recopilan por cada conexión de VM cada 5 segundos. Estos datos se anotan y envían a Stackdriver Logging con la información y el formato que se describen en esta sección.

Los registros se almacenan en Stackdriver Logging durante 30 días. Si quieres conservar estos registros por más tiempo, debes exportarlos hacia un destino admitido.

Algunos campos de registro se encuentran en formato de varios campos, con más de un dato en un campo específico. Por ejemplo, el campo connection tiene el formato IpConnection, que contiene la dirección IP y los puertos de origen y destino, y el protocolo, todo en un solo campo. Estos campos de varios campos se describen a continuación en la tabla de formato del registro.

Formato del registro

Campo Formato del campo Tipo del campo: base o metadatos opcionales
connection IpConnection
Esta conexión se describe a través de una tupla de 5.
Base
start_time string
Marca de tiempo (string con formato de fecha RFC 3339) del primer paquete observado durante el intervalo de tiempo agregado
Base
end_time string
Marca de tiempo (string con formato fecha RFC 3339) del último paquete observado durante el intervalo de tiempo agregado
Base
bytes_sent int64
Cantidad de bytes enviados desde el origen hacia el destino
Base
packets_sent int64
Cantidad de paquetes enviados desde el origen hacia el destino
Base
rtt_msec int64
Latencia medida (solo para flujos de TCP) durante el intervalo de tiempo (Este es el tiempo que transcurre entre el envío de un SEQ y la recepción de un ACK correspondiente; contiene el RTT de la red y el tiempo de retraso relacionado con la aplicación)
Base
reporter string
El extremo que realizó el informe del flujo. Puede ser “SRC” o “DEST”.
Base
src_instance InstanceDetails
Si el origen de la conexión es una VM ubicada en la misma VPC, en este campo se propagan los detalles de la instancia de VM. En la configuración de una VPC compartida, project_id corresponde al proyecto al que pertenece la instancia, que, por lo general, es el proyecto de servicio.
Metadatos
dest_instance InstanceDetails
Si el destino de la conexión es una VM ubicada en la misma VPC, en este campo se propagan los detalles de la instancia de VM. En la configuración de una VPC compartida, project_id corresponde al proyecto al que pertenece la instancia, que, por lo general, es el proyecto de servicio.
Metadatos
src_vpc VpcDetails
Si el origen de la conexión es una VM ubicada en la misma VPC, en este campo se propagan los detalles de la red de VPC. En la configuración de una VPC compartida, project_id corresponde al del proyecto host.
Metadatos
dest_vpc VpcDetails
Si el destino de la conexión es una VM ubicada en la misma VPC, en este campo se propagan los detalles de la red de VPC. En la configuración de una VPC compartida, project_id corresponde al del proyecto host.
Metadatos
src_location GeographicDetails
Si el origen de la conexión es externo a VPC de Google, en este campo se propagan los metadatos de ubicación disponibles.
Metadatos
dest_location GeographicDetails
Si el destino de la conexión es externo a VPC de Google, en este campo se propagan los metadatos de ubicación disponibles.
Metadatos

Formato del campo IpConnection

Campo Tipo Descripción
src_ip string Dirección IP de origen
src_port int32 Puerto de origen
dest_ip string Dirección IP de destino
dest_port int32 Puerto de destino
protocol int32 Número del protocolo IANA

Formato del campo InstanceDetails

Campo Tipo Descripción
project_id string ID del proyecto que contiene la VM
vm_name string Nombre de la instancia de la VM
region string Región de la VM
zone string Zona de la VM

Formato del campo VpcDetails

Campo Tipo Descripción
project_id string ID del proyecto que contiene la VPC
vpc_name string VPC en la que opera la VM
subnetwork_name string Subred en la que opera la VM

Formato del campo GeographicDetails

Campo Tipo Descripción
continent string Continente de los extremos externos
country string País de los extremos externos
region string Región de los extremos externos
city string Ciudad de los extremos externos
asn int32 El número del sistema autónomo (ASN) de la red externa a la que pertenece este extremo

Ejemplos de patrones de tráfico

En esta sección se explica cómo funcionan los registros de flujo de VPC en los siguientes casos prácticos:

Flujos de VM a VM en la misma VPC

Flujos de VM dentro de una VPC (haz clic para ampliar la imagen)
Flujos de VM dentro de una VPC (haz clic para ampliar la imagen)

En los flujos de VM a VM en la misma VPC, los registros de flujo se informan desde la VM de solicitud y la VM de respuesta, siempre y cuando ambas VM estén en subredes que tengan habilitado los registros de flujo de VPC. En este ejemplo, la VM 10.10.0.2 envía una solicitud con 1224 bytes a la VM 10.50.0.2, que también se encuentra en una subred con el registro habilitado. A su vez, 10.50.0.2 responde a la solicitud con una respuesta que contiene 5342 bytes. Ambas VM registran la solicitud y la respuesta: la VM de solicitud y la VM de respuesta.

Informe de la VM de solicitud (10.10.0.2)
solicitud/respuesta connection.src_ip connection.dest_ip sent_bytes Anotaciones de VPC
solicitud 10.10.0.2 10.50.0.2 1224 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
respuesta 10.50.0.2 10.10.0.2 5342 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
Informe de la VM de respuesta (10.50.0.2)
solicitud/respuesta connection.src_ip connection.dest_ip bytes Anotaciones de VPC
solicitud 10.10.0.2 10.50.0.2 1224 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*
respuesta 10.50.0.2 10.10.0.2 5342 src_instance.*
dest_instance.*
src_vpc.*
dest_vpc.*

Flujos de VM a una entidad externa

Flujos de VM a una entidad externa (haz clic para ampliar la imagen)
Flujos de VM a una entidad externa (haz clic para ampliar la imagen)

En los flujos entre una VM y una entidad externa, los registros de flujo se informan solo desde la VM:

  • En los flujos de salida, los registros se informan desde la VM que se encuentra en el origen del tráfico.
  • En los flujos de entrada, los registros se informan desde la VM que se encuentra en el destino del tráfico.

Esto aplica para las siguientes situaciones:

  • Tráfico entre una red de VPC y una red local a través de una VPN o de Cloud Interconnect
  • Tráfico entre las VM y ubicaciones de Internet

En este ejemplo, la VM 10.10.0.2 y el extremo local 10.30.0.2 se conectan a través de una puerta de enlace de VPN o de Cloud Interconnect. El tráfico de salida de 1224 bytes que se envía de 10.10.0.2 a 10.30.0.2 se informa desde la VM de origen, 10.10.0.2. El tráfico de entrada de 5342 bytes que se envía de 10.30.0.2 a 10.10.0.2 se informa desde el destino del tráfico, la VM 10.10.0.2.

solicitud/respuesta connection.src_ip connection.dest_ip sent_bytes Anotaciones de VPC
solicitud 10.10.0.2 10.30.0.2 1224 src_instance.*
src_vpc.*
dest_location.*
respuesta 10.30.0.2 10.10.0.2 5342 dest_instance.*
dest_vpc.*
src_location.*

Flujos de VM a VM para una VPC compartida

Flujos de VPC compartida (haz clic para ampliar la imagen)
Flujos de VPC compartida (haz clic para ampliar la imagen)

En los flujos de VM a VM en una VPC compartida, puedes habilitar los registros de flujo de VPC en la subred del proyecto host. Por ejemplo, la subred 10.10.0.0/20 pertenece a una red de VPC compartida que se define en un proyecto host. Puedes ver los registros de flujo de las VM que pertenecen a esta subred, incluidas las que se crean para proyectos de servicio. En este ejemplo, los proyectos de servicio se llaman "webserver (servidor web)", "recommendation (recomendación)", "database (base de datos)".

En los flujos de VM a VM, cuando ambas VM se encuentran en el mismo proyecto (o en el caso de una red compartida, en el mismo proyecto host) se le proporciona, al otro extremo de la conexión, las anotaciones para el ID del proyecto y datos similares. Si la VM se encuentra en un proyecto diferente, no se proporciona la anotación para la otra VM.

En la siguiente tabla se muestra un flujo que informa 10.10.0.10 o 10.10.0.20.

  • src_vpc.project_id y dest_vpc.project_id son para el proyecto host, porque la subred de VPC pertenece a ese proyecto host.
  • src_instance.project_id y dest_instance.project_id son para los proyectos de servicio, porque las instancias pertenecen a esos proyectos de servicio.
connection
.src_ip
src_instance
.project_id
src_vpc
.project_id
connection
.dest_ip
dest_instance
.project_id
dest_vpc
.project_id
10.10.0.10 webserver host_project 10.10.0.20 recommendation host_project

Los proyectos de servicio no son propietarios de la red de VPC compartida y no tienen acceso a los registros de flujo de la red de VPC compartida.

Flujos de VM a VM para el intercambio de tráfico de VPC

Flujos de intercambio de tráfico de VPC (haz clic para ampliar la imagen)
Flujos de intercambio de tráfico de VPC (haz clic para ampliar la imagen)

Excepto que las dos VM se encuentren en el mismo proyecto de GCP, los flujos de VM a VM para el intercambio de tráfico de VPC se informan de la misma manera que en los extremos externos: no se le proporciona a la otra VM información del proyecto o de alguna otra anotación. Si ambas VM se encuentran en el mismo proyecto, incluso en redes diferentes, sí se le proporciona a la otra VM la información del proyecto y otras anotaciones.

En este ejemplo, las subredes de la VM 10.10.0.2 del proyecto analytics-prod y de la VM 10.50.0.2 del proyecto webserver-test se conectan a través del intercambio de tráfico de VPC. Si los registros de flujo de VPC están habilitados en el proyecto analytics-prod, el tráfico (1224 bytes) que se envía de 10.10.0.2 a 10.50.0.2 se informa desde la VM 10.10.0.2, que es el origen del flujo. El tráfico (5342 bytes) que se envía de 10.50.0.2 a 10.10.0.2 también se informa desde la VM 10.10.0.2, que es el destino del flujo.

En este ejemplo, los registros de flujo de VPC no se encuentran habilitados en webserver-test, por lo que la VM 10.50.0.2 no realiza registros.

reporter connection.src_ip connection.dest_ip sent_bytes Anotaciones de VPC
origen 10.10.0.2 10.50.0.2 1224 src_instance.*
src_vpc.*
destino 10.50.0.2 10.10.0.2 5342 dest_instance.*
dest_vpc.*

Flujos de VM a VM para el balanceo de cargas interno

Flujos de balanceo de cargas interno (haz clic para ampliar la imagen)
Flujos de balanceo de cargas interno (haz clic para ampliar la imagen)

Cuando agregas una VM en el servicio de backend en un balanceador de cargas interno, el entorno de invitado de Linux o Windows agrega la dirección IP del balanceador de cargas a la tabla de enrutamiento local de la VM. Esto hace que la VM acepte paquetes de solicitudes con destinos configurados en la dirección IP del balanceador de cargas. Cuando la VM responde, envía su respuesta de forma directa; sin embargo, la dirección IP de origen de los paquetes de respuesta está configurada en la dirección IP del balanceador de cargas, y no en la VM del balanceo de cargas.

Los flujos de VM a VM que se envían a través de un balanceador de cargas interno se informan desde el origen y el destino. En la siguiente tabla se explican los campos de entrada de registro del flujo observados para un ejemplo de par solicitud-respuesta HTTP. A los fines de esta ilustración, considera la siguiente configuración de red:

  • Instancia del navegador en 192.168.1.2
  • Balanceador de cargas interno en 10.240.0.4
  • Instancia del servidor web en 10.240.0.3
Dirección del tráfico reporter connection.src_ip connection.dest_ip connection.src_instance connection.dest_instance
Solicitud SRC 192.168.1.2 10.240.0.4 Instancia del navegador
Solicitud DEST 192.168.1.2 10.240.0.3 Instancia del navegador Instancia de webserver
Respuesta SRC 10.240.0.3 192.168.1.2 Instancia de webserver Instancia del navegador
Respuesta DEST 10.240.0.3 192.168.1.2 Instancia del navegador

La VM de solicitud no conoce qué VM responderá a la solicitud. Además, como la otra VM envía la respuesta con la IP del balanceador de cargas interno como su dirección de origen, no conoce cuál fue la VM que respondió. Por estas razones, la VM de solicitud no puede agregar información dest_instance a sus informes, solo información src_instance. Como la VM de respuesta sí conoce la dirección IP de la otra VM, puede proporcionar información src_instance y dest_instance.

Cómo habilitar los registros de flujo de VPC

Cuando habilitas los registros de flujo de VPC, se habilitan en todas las VM de una subred.

Cómo habilitar los registros de flujo de VPC cuando se crea una subred

Console

  1. Ve a la página Redes de VPC en Google Cloud Platform Console.
    Ir a la página Redes de VPC
  2. Haz clic en la red en la que quieres agregar una subred.
  3. Haz clic en Agregar subred.
  4. En Registros de flujo, selecciona Activado.
  5. Propaga los demás campos como corresponda.
  6. Haz clic en Agregar.

gcloud

gcloud compute networks subnets create [NAME] \
    --enable-flow-logs
    [other flags as needed]

Cómo habilitar los registros de flujo de VPC en una subred existente

Console

  1. Ve a la página Redes de VPC en Google Cloud Platform Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred que quieres actualizar.
  3. Haz clic en Editar.
  4. En Registros de flujo, selecciona Activado.
  5. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update [NAME] \
    --enable-flow-logs

Cómo inhabilitar los registros de flujo de VPC en una subred

Console

  1. Ve a la página Redes de VPC en Google Cloud Platform Console.
    Ir a la página Redes de VPC
  2. Haz clic en la subred que quieres actualizar.
  3. Haz clic en Editar.
  4. En Registros de flujo, selecciona Desactivado.
  5. Haz clic en Guardar.

gcloud

gcloud compute networks subnets update [NAME] \
    --no-enable-flow-logs

Cómo acceder a los registros a través de Stackdriver Logging

Cómo configurar IAM

Utiliza la guía de controles de acceso de Stackdriver Logging.

Visualiza los registros desde la página de visor de registros.

Necesitarás el ID del proyecto de tu proyecto para estos comandos.

Cómo acceder a todos los registros

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. Selecciona Subred de GCE en el primer menú desplegable.
  3. Selecciona vpc_flows en el segundo menú desplegable.
  4. Haz clic en Aceptar.

Como alternativa, ve a la página Registros y pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.

resource.type="gce_subnetwork"
logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"

Cómo acceder a los registros de una subred específica

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. En el primer menú desplegable, desplaza el cursor hacia Subred de GCE y luego hacia la derecha para abrir el menú de selección de subred individual.
  3. En el segundo menú desplegable, selecciona vpc_flows.
  4. Haz clic en Aceptar.

Como alternativa, ve a la página Registros y pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.

resource.type="gce_subnetwork"
logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
resource.labels.subnetwork_name="{#subnetwork_name}"

Cómo acceder a los registros de una VM específica

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. Pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.src_instance.vm_name="{#vm_name}"
    

Cómo acceder a los registros de tráfico a un prefijo específico

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. Pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    ip_in_net(jsonPayload.connection.dest_ip, {#subnet})
    

Cómo acceder a los registros de puertos y protocolos específicos

De un puerto individual

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. Pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.src_port={#port}
    jsonPayload.connection.protocol={#protocol}
    

De más de un puerto

  1. Ve a la página Registros en Google Cloud Platform Console.
    Ir a la página Registros
  2. Pega los siguientes comandos en el campo Filtrar por búsqueda de texto o etiqueta.
    resource.type="gce_subnetwork"
    logName="projects/{#project_id}/logs/compute.googleapis.com%2Fvpc_flows"
    jsonPayload.connection.src_port=({#port1} OR {#port2})
    jsonPayload.connection.protocol={#protocol}
    

Cómo exportar registros a BigQuery, Cloud Pub/Sub y a destinos personalizados

Puedes exportar registros de flujo desde Stackdriver Logging hacia un destino de tu elección, como se describe en la documentación de Stackdriver Logging. Consulta la sección anterior para ver ejemplos de filtros.

Solución de problemas

No aparece ningún vpc_flows en Stackdriver Logging en el recurso gce_subnetwork

  • Los flujos de VPC solo se admiten en redes de VPC. Si tienes una red heredada, no verás ningún registro.
  • En redes de VPC compartida, los registros solo aparecen en el proyecto host y no en el proyecto de servicio. Asegúrate de buscar los registros en el proyecto host.
  • Los filtros de exclusión de Stackdriver Logging bloquean ciertos registros. Asegúrate de que ninguna regla de exclusión descarte los registros de flujo de VPC.
    1. Ve a Uso del recurso.
    2. Haz clic en la pestaña Exclusiones.
    3. Asegúrate de que no haya ninguna regla de exclusión que pueda descartar los registros de flujo de VPC.

Los valores de RTT o de byte no figuran en algunos registros

  • Es posible que falten mediciones de RTT si no se realizó una muestra de una cantidad suficiente de paquetes que capture el RTT. Esto es más frecuente en conexiones con poco volumen.
  • No hay valores RTT disponibles para flujos UDP.
  • Algunos paquetes se envían sin carga útil. Si solo se realizaron muestras sobre paquetes de solo encabezado, el valor en bytes será 0.

Faltan algunos flujos

  • Solo se admiten protocolos de UDP y TCP. No habrá registros para otros protocolos.
  • Hay una cierta cantidad de muestras en el procesamiento de paquetes. Es posible que falten algunos paquetes en flujos con volumen muy bajo.

Precios

Se aplican los precios estándar de Stackdriver Logging, BigQuery o Cloud Pub/Sub. Los precios de los registros de flujo de VPC se describen en los precios de la nube privada virtual.

Preguntas frecuentes

  • ¿Los registros abarcan el tráfico permitido y rechazado por una regla de firewall?

    • Los registros abarcan todo el tráfico que observa la VM. Si una regla de salida en esa VM bloquea el tráfico que sale de una VM, esta registrará ese tráfico. Si una regla de entrada bloquea el tráfico que entra, la VM no observará ese tráfico y no se registrará en esa VM.
  • ¿Los registros de flujo de VPC funcionan con instancias con varias interfaces?

  • ¿Los registros de flujo de VPC funcionan con redes heredadas?

Pasos siguientes

¿Te sirvió esta página? Envíanos tu opinión: