Crea y administra interfaces de Private Service Connect

En esta página, se describe cómo los administradores de red del productor pueden crear y administrar las interfaces de Private Service Connect. Las interfaces de Private Service Connect permiten que las redes de nube privada virtual (VPC) del productor de servicios inicien conexiones a redes de VPC del consumidor.

Antes de comenzar

Roles

Para obtener los permisos que necesitas a fin de crear interfaces de Private Service Connect, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

El rol de administrador de instancias de Compute (v1) contiene el permiso compute.instances.pscInterfaceCreate, que se requiere para crear interfaces de Private Service Connect.

Crea y configura una interfaz de Private Service Connect

Para crear y configurar una instancia de máquina virtual (VM) que tenga una interfaz de Private Service Connect, completa los siguientes pasos.

Crea una VM con una interfaz de Private Service Connect

Cuando creas una interfaz de Private Service Connect, creas una VM que tiene al menos dos interfaces de red. La primera interfaz se conecta a una subred de productor. La segunda interfaz es una interfaz de Private Service Connect que solicita una conexión a un adjunto de red en una red del consumidor.

Si se acepta la conexión, Google Cloud asigna a la interfaz de Private Service Connect una dirección IP interna de la subred que especifica el adjunto de red.

Si creas una interfaz de Private Service Connect que hace referencia a un adjunto de red que está configurado para aceptar conexiones de forma manual y el proyecto de la interfaz no está en la lista de aceptación del adjunto de red, la creación de la VM de la interfaz de Private Service Connect falla. En este caso, trabaja con la organización del consumidor para agregar tu proyecto a la lista de aceptación y, luego, crea una interfaz de Private Service Connect.

Cuando creas una interfaz de Private Service Connect, puedes asignarle de manera opcional uno o más rangos de IP de alias internos. Si planeas asignar rangos de IP de alias, comunícate con la organización del consumidor para determinar los rangos de direcciones IP adecuados.

Para asignar un rango de IP de alias, especifica la longitud del prefijo del rango en notación CIDR. Cuando asignas uno o más rangos de IP de alias a una interfaz de Private Service Connect, Google Cloud asigna los rangos de IP de alias del rango de direcciones IP principal de la subred asociada con el adjunto de red. La dirección IP principal de la interfaz de Private Service Connect se asigna desde fuera de cualquier rango de IP de alias. Si no hay suficientes direcciones IP en la subred del adjunto de red para asignar la dirección IP principal y los rangos de IP de alias, la creación de la VM de la interfaz de Private Service Connect falla. Puedes encontrar las direcciones IP específicas que se asignan si describes la VM de la interfaz.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en Crear instancia.

  3. Escribe un Nombre.

  4. Selecciona una región que coincida con la región del adjunto de red al que deseas conectarte.

  5. Selecciona una zona.

  6. Haz clic en Opciones avanzadas.

  7. Haz clic en Herramientas de redes.

  8. En la sección Interfaces de red, haz clic en la primera interfaz de red, que es la interfaz de red principal, y, luego, haz lo siguiente:

    1. Selecciona una red para la interfaz de red principal.
    2. Selecciona una subred para la interfaz de red principal. Esta subred debe estar en la misma región que el adjunto de red de la interfaz de Private Service Connect.
  9. Haz clic en Agregar una interfaz de red.

  10. En Tipo de interfaz, selecciona Private Service Connect.

  11. Ingresa una URL de adjunto de red.

  12. Selecciona un Tipo de pila de IP. Para crear una interfaz de Private Service Connect de pila doble, la subred del adjunto de red debe ser de pila doble.

  13. Opcional: Para agregar un rango de IP de alias, en el cuadro Longitud del prefijo, ingresa la longitud del prefijo; por ejemplo, /30. Para agregar varios rangos de IP de alias, haz clic en Agregar rango de IP y, luego, ingresa la longitud del prefijo de cada rango de IP de alias adicional que desees agregar.

  14. Haz clic en Listo.

  15. Haz clic en Crear.

gcloud

Para crear una VM con una interfaz de Private Service Connect solo IPv4, usa el comando instances create.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME'

Reemplaza lo siguiente:

  • INSTANCE_NAME: es el nombre de la instancia nueva.
  • ZONE: es la zona de la instancia nueva.
  • MACHINE_TYPE: el tipo de máquina de la instancia, que puede ser predefinido o personalizado.
  • IMAGE_PROJECT: Es el proyecto de la imagen. Por ejemplo, si especificas debian-10-buster-v20230809 como la imagen, especifica debian-cloud como proyecto de imagen. Puedes ver una lista de imágenes, proyectos de imágenes y familias de imágenes disponibles mediante el comando gcloud compute images list.
  • IMAGE: una versión específica de una imagen pública. Por ejemplo, debian-10-buster-v20230809.
  • PRODUCER_NETWORK: la red de la instancia.
  • PRODUCER_SUBNET: la subred de la interfaz de red principal de la VM. Esta subred debe estar en la misma región que el adjunto de red de la interfaz de Private Service Connect.
  • CONSUMER_PROJECT_ID: El ID del consumidor al que deseas conectarte.
  • ATTACHMENT_NAME: El nombre del adjunto de red al que se debe solicitar una conexión.

Para asignar a la interfaz de Private Service Connect una dirección IPv4 y una dirección IPv6, especifica stack-type='IPV4_IPv6'. El adjunto de red al que hace referencia la interfaz debe estar asociado con una subred de pila doble.

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,stack-type='IPV4_IPV6''

Para asignar a la interfaz de Private Service Connect uno o más rangos de IP de alias, especifica la longitud de prefijo de cada rango de IP de alias que desees asignar:

gcloud compute instances create INSTANCE_NAME \
    --zone=ZONE \
    --machine-type=MACHINE_TYPE \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface='network=PRODUCER_NETWORK,subnet=PRODUCER_SUBNET,no-address' \
    --network-interface='network-attachment=projects/CONSUMER_PROJECT_ID/regions/REGION/networkAttachments/ATTACHMENT_NAME,aliases=ALIAS_IP_RANGE'

Reemplaza ALIAS_IP_RANGE por una o más longitudes de prefijos en la notación CIDR. Puedes incluir varias longitudes de prefijos en una lista separada por punto y coma; por ejemplo, /24;/28.

API

Para crear una VM con una interfaz de Private Service Connect solo IPv4, envía una solicitud POST al método instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Reemplaza lo siguiente:

  • PRODUCER_PROJECT_ID: Es el ID del proyecto del productor.
  • INSTANCE_ZONE: Es la zona de la instancia nueva.
  • MACHINE_TYPE_ZONE: Es la zona del tipo de máquina.
  • MACHINE_TYPE: Es el tipo de máquina de la nueva VM, que puede ser predefinido o personalizado.
  • VM_NAME: es el nombre de la VM nueva.
  • IMAGE_PROJECT: es el proyecto que contiene la imagen. Por ejemplo, si especificas debian-10-buster-v20200309 como la imagen, especifica debian-cloud como proyecto de imagen.
  • IMAGE: una versión específica de una imagen pública. Por ejemplo, debian-10-buster-v20200309.
  • PRODUCER_PROJECT_ID: el ID del proyecto de la interfaz.
  • PRODUCER_NETWORK: Es el nombre de la red de VPC del productor.
  • SUBNET_REGION: Es la región de la subred de la interfaz de red principal. Esta subred debe estar en la misma región que el adjunto de red de la interfaz de Private Service Connect.
  • SUBNET: Es el nombre de la subred de la interfaz de red principal.
  • CONSUMER_PROJECT_ID: El ID del proyecto del consumidor.
  • ATTACHMENT_REGION: la región del adjunto de red.
  • ATTACHMENT_NAME: nombre del adjunto de red.

Para asignar a la interfaz de Private Service Connect una dirección IPv4 y una dirección IPv6, especifica "stack-type": "IPV4_IPv6". El adjunto de red al que hace referencia la interfaz debe estar asociado con una subred de pila doble.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME",
      "stackType": "IPV4_IPV6"
    }
  ]
}

Para asignar a la interfaz de Private Service Connect uno o más rangos de IP de alias, especifica la longitud del prefijo de cada rango de IP de alias que desees asignar.

POST https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/zones/INSTANCE_ZONE/instances
{
  "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
  "name": "VM_NAME",
  "disks": [
    {
      "initializeParams": {
        "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
      },
      "boot": true
    }
  ],
  "networkInterfaces": [
    {
      "network": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/global/networks/PRODUCER_NETWORK",
      "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PRODUCER_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
    },
    {
      "aliasIpRanges": [
        {
          "ipCidrRange": "ALIAS_IP_RANGE"
        }
      ],
      "networkAttachment": "projects/CONSUMER_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME"
    }
  ]
}

Reemplaza ALIAS_IP_RANGE por una longitud de prefijo en notación CIDR; por ejemplo, /28. Puedes especificar varios rangos de IP de alias en la lista aliasIpRanges de la siguiente manera:

"aliasIpRanges": [
  {
    "ipCidrRange": "/28"
  },
  {
    "ipCidrRange": "/30"
  }
]

Para obtener más información sobre cómo crear instancias de VM, consulta Crea y, luego, inicia una instancia de VM.

Permite la conectividad SSH

Asegúrate de que las reglas de firewall estén configuradas para permitir conexiones SSH de entrada a la VM de tu interfaz de Private Service Connect.

Busca el nombre de Google Cloud de tu interfaz de Private Service Connect

Para configurar el enrutamiento, debes conocer el nombre de Google Cloud de la interfaz de Private Service Connect.

Console

  1. En la consola de Google Cloud, ve a Instancias de VM:

    Ir a Instancias de VM

  2. Haz clic en el nombre de la VM que tiene la interfaz de Private Service Connect.

  3. En la sección Interfaces de red, busca y anota el nombre de tu interfaz de Private Service Connect; por ejemplo, nic1.

gcloud

  1. Usa el comando compute instances describe.

    gcloud compute instances describe VM_NAME
      --zone=ZONE
    

    Reemplaza lo siguiente:

    • VM_NAME: Es el nombre de la VM que tiene la interfaz de Private Service Connect.
    • ZONE: La zona de la VM
  2. En el resultado del comando, busca y anota el nombre de Google Cloud de la interfaz de Private Service Connect, por ejemplo, nic1.

Busca el nombre del SO invitado de tu interfaz de Private Service Connect

Para configurar el enrutamiento, debes conocer el nombre del SO invitado de tu interfaz de Private Service Connect, que es diferente del nombre de la interfaz en Google Cloud.

Para encontrar el nombre de la interfaz en una VM de Debian, haz lo siguiente: Para VMs con otros sistemas operativos, consulta la documentación pública del sistema operativo.

  1. Conéctate a la VM de tu interfaz de Private Service Connect.
  2. Ejecuta el siguiente comando:

    ip address
    

    En la lista de interfaces de red, busca y anota el nombre de la interfaz asociada con la dirección IP de tu interfaz de Private Service Connect, por ejemplo, ens5.

Busca la IP de la puerta de enlace de tu interfaz de Private Service Connect

Para configurar el enrutamiento, debes conocer la dirección IP de la puerta de enlace predeterminada de la interfaz de Private Service Connect.

  1. Conéctate a la VM de tu interfaz de Private Service Connect.

  2. Envía la siguiente solicitud GET desde la VM de tu interfaz al servidor de metadatos asociado:

    curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/INTERFACE_NUMBER/gateway -H "Metadata-Flavor: Google" && echo
    

    Reemplaza INTERFACE_NUMBER por la parte numérica del nombre de Google Cloud para tu interfaz de Private Service Connect. Por ejemplo, si el nombre de tu interfaz es nic1, usa un valor de 1.

Agrega rutas para las subredes del consumidor

Debes agregar una ruta a la puerta de enlace predeterminada de la interfaz de Private Service Connect para cada subred del consumidor que se conecte a la interfaz de Private Service Connect. Esto garantiza que el tráfico que está vinculado a la red del consumidor salga de la interfaz de Private Service Connect.

En los pasos siguientes, se describe cómo actualizar de forma temporal la tabla de enrutamiento de una VM que usa el sistema operativo Debian. Para actualizar la tabla de forma permanente o actualizar la ruta en un sistema operativo diferente, consulta la documentación pública del sistema operativo.

  1. Conéctate a la VM de tu interfaz de Private Service Connect.

  2. Ejecuta el siguiente comando para cada subred del consumidor que se conecte a tu interfaz de Private Service Connect:

    sudo ip route add CONSUMER_SUBNET_RANGE via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Reemplaza lo siguiente:

Crea una plantilla de instancias con una interfaz de Private Service Connect

Puedes crear plantillas de instancias que incluyan interfaces de Private Service Connect.

Console

  1. Ve a la página Plantillas de instancias.

    Ir a Plantillas de instancia

  2. Haz clic en Crear plantilla de instancias.

  3. Ingresa un Nombre para la plantilla de instancias.

  4. Haz clic en Opciones avanzadas.

  5. Haz clic en Herramientas de redes.

  6. En la sección Interfaces de red, haz clic en la flecha de expansión .

  7. Elige una Red y una Subred para la interfaz de red principal de la plantilla de instancias.

  8. Haz clic en Listo.

  9. Haz clic en Agregar una interfaz de red.

  10. Haz clic en Private Service Connect.

  11. Selecciona una Red y una Subred para la interfaz de Private Service Connect.

  12. Haz clic en Listo.

  13. Haz clic en Crear.

gcloud

Usa el comando instance-templates create.

gcloud compute instance-templates create NAME \
    --machine-type=MACHINE_TYPE \
    --network-interface=subnet=SUBNET \
    --region=REGION \
    --image-project=IMAGE_PROJECT \
    --image=IMAGE \
    --network-interface=network-attachment=projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/ATTACHMENT_NAME

Reemplaza lo siguiente:

  • NAME: el nombre de la plantilla de instancias.
  • MACHINE_TYPE: el tipo de máquina predefinido o personalizado de las VMs que se crean mediante esta plantilla de instancias; por ejemplo, f1-micro.
  • SUBNET: Es la subred de la plantilla de instancias. Cuando creas una VM mediante esta plantilla de instancias, a la interfaz de red principal de la VM se le asigna una dirección IP interna de esta subred.
  • REGION: Es la región de la subred de la plantilla de instancias.
  • IMAGE_PROJECT: Es el proyecto de la imagen. Por ejemplo, si especificas debian-10-buster-v20230809 como la imagen, especifica debian-cloud como proyecto de imagen. Puedes ver una lista de imágenes, proyectos de imágenes y familias de imágenes disponibles mediante el comando gcloud compute images list.
  • IMAGE: una versión específica de una imagen pública. Por ejemplo, debian-10-buster-v20230809.
  • ATTACHMENT_PROJECT_ID: Es el ID del proyecto del adjunto de red.
  • ATTACHMENT_REGION: Es la región del adjunto de red.
  • ATTACHMENT_NAME: Es el nombre del adjunto de red. Cuando creas una VM con esta plantilla de instancias, la interfaz de Private Service Connect solicita una conexión a este adjunto de red.

    Puedes especificar configuraciones adicionales, como el nombre de la imagen y el tamaño del disco de arranque. Para obtener más información, consulta Crea una plantilla de instancias nueva.

API

Realiza una solicitud POST al método instanceTemplates.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
  "name": "NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "subnetwork": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET"
      },
      {
        "networkAttachment": "projects/ATTACHMENT_PROJECT_ID/regions/ATTACHMENT_REGION/networkAttachments/NETWORK_ATTACHMENT"
      }
    ]
  }
}

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto en el que se creará la plantilla de instancias.
  • NAME: el nombre de la plantilla de instancias.
  • IMAGE_PROJECT: Es el proyecto de la imagen. Por ejemplo, si especificas debian-10-buster-v20230809 como la imagen, especifica debian-cloud como proyecto de imagen. Puedes ver una lista de imágenes y proyectos de imágenes disponibles mediante el comando gcloud compute images list.
  • IMAGE: una versión específica de una imagen pública. Por ejemplo, debian-10-buster-v20230809.
  • MACHINE_TYPE: el tipo de máquina predefinido o personalizado de las VMs que se crean mediante esta plantilla de instancias; por ejemplo, f1-micro.
  • SUBNET_REGION: Es la región de la subred de la plantilla de instancias.
  • SUBNET: Es la subred de la plantilla de instancias. Cuando creas una VM mediante esta plantilla de instancias, a la interfaz de red principal de la VM se le asigna una dirección IP interna de esta subred.
  • ATTACHMENT_PROJECT_ID: Es el ID del proyecto del adjunto de red.
  • ATTACHMENT_REGION: Es la región del adjunto de red.
  • NETWORK_ATTACHMENT: Es el nombre del adjunto de red. Cuando creas una VM con esta plantilla de instancias, la interfaz de Private Service Connect solicita una conexión a este adjunto de red.

Para obtener más información sobre cómo crear plantillas de instancias, consulta Crea plantillas de instancias.

Usa una interfaz de Private Service Connect con Controles del servicio de VPC

Puedes usar interfaces de Private Service Connect con los Controles del servicio de VPC. Esto permite que una red de VPC de productor acceda a los servicios y las APIs de Google a través de una red de VPC del consumidor, mientras que la organización del consumidor puede aplicar los beneficios de seguridad de los Controles del servicio de VPC.

Para usar una interfaz de Private Service Connect con los Controles del servicio de VPC, debes actualizar la tabla de enrutamiento de la VM de la interfaz de Private Service Connect. Reemplaza la ruta predeterminada por una ruta que envía tráfico a través de la interfaz de Private Service Connect a la puerta de enlace predeterminada de la interfaz de Private Service Connect.

Mediante los siguientes pasos, se actualiza de forma temporal la tabla de enrutamiento para las VMs que usan Debian. Para agregar la ruta de forma permanente o actualizarla por un sistema operativo diferente, consulta la documentación pública del sistema operativo.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en el nombre de la VM que tiene la interfaz de Private Service Connect.

  3. Ejecuta el siguiente comando:

    sudo ip route replace default via GATEWAY_IP dev OS_INTERFACE_NAME
    

    Reemplaza lo siguiente:

Describe una interfaz de Private Service Connect

Puedes describir una VM para ver los detalles de su interfaz de Private Service Connect La dirección IP de la interfaz, los rangos de IP de alias, el adjunto de red y la subred del consumidor se enumeran en la sección de interfaces de red de la descripción de la VM.

Console

  1. En la consola de Google Cloud, ve a la página Instancias de VM.

    Ir a Instancias de VM

  2. Haz clic en la VM que tiene la interfaz de Private Service Connect.

  3. En la sección Interfaces de red, consulta los detalles de tu interfaz de Private Service Connect.

gcloud

gcloud compute instances describe VM_NAME
    --zone=ZONE

Reemplaza lo siguiente:

  • VM_NAME: El nombre de la VM de tu interfaz.
  • ZONE: Es la zona de la VM.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de la VM.
  • ZONE: la zona de la VM.
  • VM_NAME: el nombre de la VM.

Borra una VM con una interfaz de Private Service Connect

Si quieres borrar una interfaz de Private Service Connect, debes borrar la instancia de VM a la que está conectada. Para obtener más información, consulta Borra una instancia.

Próximos pasos