Acceder a recursos externos en una red privada mediante una IP externa estática

En esta página, se explica cómo puedes configurar tus grupos privados para acceder a recursos externos a través de un una IP externa estática.


Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:

GUIARME


Antes de comenzar

  • Enable the Cloud Build, Compute Engine, and Service Networking APIs.

    Enable the APIs

  • Para obtener los permisos que necesitas para establecer una conexión privada, pídele a tu administrador para otorgarte el rol de IAM de Administrador de red de Compute Engine (roles/compute.networkAdmin) en el proyecto de Cloud en el que reside la red de VPC. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

  • Para usar los comandos de gcloud en esta página, instala Google Cloud CLI.

Crear red de VPC

Console

Para crear una red de VPC con la consola de Google Cloud, completa los siguientes pasos:

  1. Abre la página Redes de VPC en la consola de Google Cloud.

    Ir a las redes de VPC

  2. Haz clic en Crear red de VPC para crear una red nueva.

    Verás la página Crear una red de VPC.

  3. Ingresa un Nombre para la red.

  4. En Modo de creación de subredes, selecciona Automático.

  5. Si deseas personalizar otros campos, consulta Crea y administra redes de VPC. De lo contrario, deja todos los campos como están.

  6. Haz clic en Crear para crear tu red de VPC.

    Después de hacer clic en Crear, verás tu nueva red de VPC en la página Redes de VPC.

gcloud

Para crear una red de VPC con la herramienta de línea de comandos de gcloud, sigue estos pasos: ingresa el siguiente comando en la terminal, donde NETWORK_NAME es el nombre de tu red de VPC:

gcloud compute networks create NETWORK_NAME \
  --subnet-mode=auto

Después de hacer clic en Crear, verás tu nueva red de VPC en la página Redes de VPC.

Para obtener más información sobre la creación y administración de redes de VPC, consulta Crea y administra redes de VPC.

Crea una conexión privada

Console

Para crear una conexión privada entre tu red de VPC y la red del productor de servicios, completa los siguientes pasos:

  1. Abre la página Redes de VPC en la consola de Google Cloud.

    Ir a las redes de VPC

  2. Haz clic en el nombre de tu red.

    Verás la página Detalles de la red de VPC.

  3. Haz clic en la pestaña Conexión privada a servicios.

    1. Selecciona la pestaña Rangos de IP asignados a servicios.

    2. Haz clic en Asigna rangos de IP.

      Verás el cuadro emergente Asignar un rango de IP internas.

      1. Ingresa un Nombre para tu rango de IP.

      2. En Rango de IP, selecciona Automático.

      3. En el campo Longitud de prefijo, ingresa una longitud de prefijo para tu red.

      4. Haz clic en Asignar para asignar tu rango de IP.

    3. Selecciona la pestaña Conexiones privadas a los servicios.

    4. Haz clic en Create Connection.

      Verás la ventana emergente Create a private connection.

      1. En Asignación asignada, selecciona tu rango de IP.

      2. Haz clic en Conectar.

      Verás la conexión en la tabla debajo de Pestaña Conexiones privadas a los servicios.

      Haz clic en Habilitar (Exportar ruta personalizada) para asegurarte de que las rutas de la VPC se apliquen a la red en la que se ejecutan las instancias de tu grupo privado.

Ya configuraste tu red.

gcloud

Para crear una conexión privada entre tu red de VPC y la red del productor de servicios, completa los siguientes pasos:

  1. Ingresa el siguiente comando en la terminal para asignar un rango de IP. para tu servicio:

        gcloud compute addresses create RESERVED_RANGE_NAME \
          --global \
          --prefix-length=PREFIX_LENGTH \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Aquí:

    • RESERVED_RANGE_NAME es el nombre de tu rango asignado. Por ejemplo, my-allocated-range
    • PREFIX_LENGTH es la longitud del prefijo de tu red. La longitud del prefijo debe ser /24 o menor, como /22, /21, etcétera.
    • VPC_NETWORK es el nombre de tu red de VPC, como my-vpc-network
    • PROJECT_ID es el ID del proyecto que contiene la VPC. en cada red.
  2. Ingresa el siguiente comando en la terminal para crear una conexión privada:

        gcloud services vpc-peerings connect \
          --service=servicenetworking.googleapis.com \
          --ranges=RESERVED_RANGE_NAME \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Aquí:

    • RESERVED_RANGE_NAME es el nombre del rango asignado que creaste en el paso anterior.
    • VPC_NETWORK es el nombre de tu red de VPC, como my-vpc-network.
    • PROJECT_ID es el ID del proyecto que contiene la VPC. en cada red.
  3. Ingresa el siguiente comando en la terminal para asegurarte de que las rutas para VPC se apliquen a la red en la que se ejecutan tus instancias de grupo privado:

        gcloud compute networks peerings update servicenetworking-googleapis-com \
          --export-custom-routes \
          --network=VPC_NETWORK \
          --project=PROJECT_ID
    

    Aquí:

    • VPC_NETWORK es el nombre de tu red de VPC, como my-vpc-network
    • PROJECT_ID es el ID del proyecto que contiene la VPC. en cada red.

Ya configuraste tu red.

Para obtener más información sobre cómo configurar una red, consulta Configura una conexión privada entre tu red de VPC y la red del productor de servicios.

Crear un grupo privado

Console

Para crear un grupo privado con la consola de Google Cloud, completa los siguientes pasos:

  1. Abre la página Grupo de trabajadores en la consola de Google Cloud:

    Abrir la página del grupo de trabajadores de Cloud Build

  2. Selecciona el proyecto en el que deseas crear el grupo privado.

  3. En la página Grupo de trabajadores, haz clic en Crear.

    Verás el panel Crear grupo privado.

  4. En el panel lateral Crear un grupo privado, ingresa la siguiente información:

    1. Ingresa un Nombre para tu grupo privado.

    2. Selecciona una Región en el menú desplegable.

    3. En Red, ingresa la siguiente información:

    • Proyecto: Ingresa el ID o número del proyecto.
    • Red: Ingresa el nombre de tu red de VPC.
    1. (Opcional) Desmarca la casilla Asignar IPs externas para la configuración de red más restringida.

Acabas de crear un grupo privado.

gcloud

Para crear un grupo privado con la herramienta de línea de comandos de gcloud, ingresa el siguiente comando: en tu terminal:

      gcloud builds worker-pools create PRIVATEPOOL_ID \
        --project=PRIVATEPOOL_PROJECT_ID \
        --region=REGION \
        --peered-network=PEERED_NETWORK \
        --no-public-egress

Aquí:

  • PRIVATEPOOL_ID es el identificador único de tu grupo privado.
  • PRIVATEPOOL_PROJECT_ID es el ID del proyecto de Google Cloud. en la que quieres crear tu grupo privado.
  • REGION es una de las regiones compatibles.
  • PEERED_NETWORK es la URL del recurso de red.
  • --no-public-egress: Si se establece esta marca, el grupo privado se crea sin una dirección IP externa.

Acabas de crear un grupo privado.

Si quieres obtener más información para crear y administrar grupos privados, consulta Crea y administra grupos privados.

Accede a recursos externos en una red privada

De forma predeterminada, las direcciones IP externas asociadas con Cloud Build los grupos privados no son estáticos ni configurables. Las asigna en Google Cloud. Si quieres configurar tus grupos privados para acceder recursos de tu red privada con una IP externa estática, debes configurar una máquina virtual (VM) en tu proyecto para que actúe como una puerta de enlace NAT autoadministrada de proxy a la Internet pública. Luego, debes configurar rutas personalizadas para reenviar estas solicitudes a tu VM y asegurarte de que las rutas se intercambien con el proyecto de red de servicios.

En esta sección, se describe cómo puedes configurar tus grupos privados para acceder a contenido a través de una IP externa estática. Para ello, completa los siguientes pasos:

  1. Crea una secuencia de comandos de inicio para configurar la VM de modo que use un proxy en el tráfico al que se enruta y enmascara ese tráfico para que se origine desde su dirección IP:

    #! /bin/bash
    set -e
    
    sysctl -w net.ipv4.ip_forward=1
    IFACE=$(ip -brief link | tail -1 | awk  {'print $1'})
    iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
    
  2. Configura una VM en la misma VPC que tu grupo privado con una regla para permitir que las solicitudes se envíen mediante proxy a través de la VPC:

    gcloud compute instances create VM_NAME \
      --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \
      --network=NETWORK_NAME \
      --private-network-ip=INTERNAL_IP --can-ip-forward \
      --zone=ZONE \
      --subnet=SUBNETWORK \
      --tags=NAT_TAG  \
      --metadata-from-file=startup-script=STARTUP_SCRIPT
    

    Aquí:

    • VM_NAME es el nombre que deseas proporcionar a tu VM.
    • NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
    • INTERNAL_IP es cualquier dirección IP interna válida en el rango de la subred de la región de tu VM. Por ejemplo, 10.128.0.2
    • ZONE es la zona asociada con tu red, como us-central1-a.
    • SUBNETWORK es el nombre de tu subred (opcional). El nombre de tu subred se puede encontrar en el equivalente REST de tu subred con el siguiente formato: projects/project-id/regions/region/subnetworks/subnetwork-name. Si seleccionaste Automático en Modo de conexión de subred cuando creaste una red de VPC, puedes no necesitan especificar este campo.
    • NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT. que te permite enrutar solicitudes de manera condicional, según si no, tienen una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.
    • STARTUP_SCRIPT es el nombre de la startup. de comandos que creaste en el paso anterior. Por ejemplo, startup-script-example.sh En este ejemplo, se usa la marca --metadata-from-file para pasar el el contenido de la secuencia de comandos de inicio que especificaste para una clave llamada startup-script.

    Después de ejecutar este comando, verás un resultado que contiene lo siguiente: valor de IP externa. Anota el valor de la IP externa. Todo el tráfico de tu grupo privado a tu recurso externo llega a través de esta dirección. Puedes optar por usar esta dirección para realizar configuraciones adicionales, como configurar reglas de firewall en tu red externa.

  3. Configura una ruta para dirigir todas las solicitudes al recurso externo para que se dirijan a la instancia. creada en el paso anterior, lo que permite que tus solicitudes se reenvíen tus instancias de grupo privado:

    gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \  
      --destination-range=DESTINATION_RANGE \
      --next-hop-address=INTERNAL_IP \
      --network=NETWORK_NAME \
      --priority=POOL_ROUTE_PRIORITY
    

    Aquí:

    • PRIVATE_POOL_ROUTE_NAME es el nombre que deseas darle a tu ruta.
    • DESTINATION_RANGE es un rango de direcciones CIDR válido que contenga el destino al que deseas enrutar. Por ejemplo, una instancia de GitHub Enterprise Edition. Por ejemplo, 8.8.8.0/24
    • INTERNAL_IP es el valor de IP interna que se obtuvo en el paso anterior. Por ejemplo, 10.128.0.2
    • NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
    • POOL_ROUTE_PRIORITY es el número de prioridad que deseas especificar para tu ruta.

    Este comando garantiza que cualquier tráfico de una compilación en una instancia de grupo privado se enrute al VM proxy que creaste, no se enruta directamente a la Internet pública.

  4. Configura una ruta para reenviar solicitudes desde tu proxy desde las instancias etiquetadas a el rango de IP de destino externo. El siguiente comando crea una ruta para reenviar solicitudes a la Internet pública asociadas con las instancias de tu grupo privado.

    gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ 
      --destination-range=DESTINATION_RANGE \    
      --next-hop-gateway=default-internet-gateway \
      --network=NETWORK_NAME \
      --priority=NAT_ROUTE_PRIORITY \
      --tags=NAT_TAG
    

    Aquí:

    • NAT_EGRESS_ROUTE_NAME es el nombre que quieres darle a tu Ruta de puerta de enlace NAT.
    • DESTINATION_RANGE es la dirección del destino al que deseas enrutar. Por ejemplo, una instancia de GitHub Enterprise Edition. Por ejemplo, 8.8.8.0/24
    • NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
    • NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT. que te permite enrutar solicitudes de manera condicional, según si no, tienen una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.
    • NAT_ROUTE_PRIORITY es el número de prioridad que deseas especificar para tu ruta.

    Este comando garantiza que cualquier tráfico de la VM de proxy se pueda dirigir a la Internet pública.

  5. Agrega una regla de firewall para permitir el tráfico de tu grupo privado en la VM de la puerta de enlace NAT:

    gcloud compute firewall-rules create RULE_NAME \
      --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \
      --network=NETWORK_NAME \
      --source-ranges=RESERVED_RANGE \
      --target-tags=NAT_TAG
    

    Aquí:

    • RULE_NAME es el nombre que deseas darle a tu regla de firewall.
    • FIREWALL_PRIORITY es el número de prioridad que deseas especificar para tu regla de firewall.
    • NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
    • RESERVED_RANGE es el rango CIDR que que se asignan cuando configuras la red de VPC.
    • NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT. que te permite enrutar solicitudes de manera condicional, según si no, tienen una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.

Ahora puedes acceder a recursos externos desde la dirección IP estática del puerta de enlace NAT autoadministrada en tu VPC.

¿Qué sigue?