Reservar una nueva dirección IP interna estática

En esta página, se muestra cómo reservar y administrar direcciones IPv4 o IPv6 internas estáticas en redes de nube privada virtual (VPC).

Las direcciones IP internas estáticas proporcionan la capacidad de reservar direcciones IP internas del rango de direcciones IP configurado en la subred y, luego, asignar esas direcciones IP internas reservadas a los recursos según sea necesario. Reservar direcciones IP internas quita esa dirección del grupo de asignación dinámica y evita que se use para asignaciones automáticas. Reservar direcciones IP internas estáticas requiere permisos específicos de Identity and Access Management (IAM) para que solo los usuarios autorizados puedan reservar una dirección IP interna estática.

Gracias a la habilidad de reservar direcciones IP internas estáticas, siempre puedes usar la misma dirección IP para el mismo recurso, incluso si tienes que borrar y volver a crear el recurso.

Para reservar una dirección IP externa estática en lugar de una dirección IP interna, consulta Reserva una dirección IP externa estática.

Antes de comenzar

  • Lee sobre las direcciones IP.
  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

    gcloud init

    Terraform

    Para usar las muestras de Terraform de esta página desde un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.

    1. Instala Google Cloud CLI.
    2. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

      gcloud init
    3. Crea credenciales de autenticación locales para tu Cuenta de Google:

      gcloud auth application-default login

    Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local en la documentación de autenticación de Google Cloud.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Funciones obligatorias

Para obtener los permisos que necesitas para reservar y administrar direcciones IP estáticas, pídele a tu administrador que te otorgue el rol de IAM Administrador de Compute Network (roles/compute.networkAdmin) en tu proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.

Este rol predefinido contiene los permisos necesarios para reservar y administrar direcciones IP estáticas. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para reservar y administrar direcciones IP estáticas:

  • compute.addresses.create en la dirección IP
  • compute.addresses.createInternal en la dirección IP
  • compute.networks.list en la red
  • compute.subnetworks.use en la subred
  • compute.subnetworks.list en la subred

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos

Limitaciones

  • No puedes anular la asignación ni cambiar la dirección IPv4 interna de un recurso existente. Por ejemplo, no puedes asignar una nueva dirección IP interna estática a una instancia de VM en ejecución o detenida. Sin embargo, puedes promover la dirección IP interna efímera de un recurso a una dirección IP interna estática para que la dirección permanezca reservada incluso después de que se borre el recurso.

  • La cantidad de direcciones IP internas estáticas que puedes reservar no debe superar la cuota de tu proyecto. Para obtener más información, consulta las cuotas por proyecto en la documentación de VPC.

  • Un solo recurso a la vez puede usar una dirección IP interna estática.

  • La reserva de una dirección IP interna estática solo es compatible con las redes de VPC. No es compatible con las redes de modo heredado.

  • Borrar un recurso no libera de forma automática una dirección IP interna estática. Debes liberar las direcciones IP internas estáticas de forma manual cuando ya no las necesites.

  • No puedes cambiar el nombre de una dirección IP estática.

  • Las direcciones IP internas estáticas son regionales, lo que significa que están restringidas a la región en la que se reservan. Por ejemplo, si hay una dirección IP interna estática reservada en Region A, solo puedes usar la dirección IP en Region A.

Reserva una nueva dirección IPv4 o IPv6 interna estática

Para poder reservar una dirección IP interna estática nueva, debes crear una red de VPC con una subred.

Si deseas reservar una dirección IPv6 interna estática nueva, la red de VPC debe tener habilitado el rango de IPv6 interno de ULA. Además, debe tener una subred de pila doble con el tipo de acceso IPv6 INTERNAL.

Para reservar una dirección IP interna independiente, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Haz clic en Reservar dirección IP estática interna.
  3. En el campo Nombre, ingresa un nombre de dirección IP.
  4. En la lista Versión de IP, elige la versión de IP requerida:
    • Para reservar una dirección IPv4 interna estática, elige IPv4.
    • Para reservar una dirección IPv6 interna estática, elige IPv6.
  5. En las listas Red y Subred, elige una red de VPC y una subred respectivamente.
  6. Especifica cómo deseas reservar la dirección IP:
    • En direcciones IPv4, para especificar una dirección IPv4 interna estática que se reservará, en Dirección IP estática, elige Permitirme elegir y, luego, ingresa una dirección IP personalizada. De lo contrario, el sistema asignará de forma automática una dirección IPv4 interna estática en la subred.
    • Para las direcciones IPv6, el sistema asigna de forma automática una dirección IPv6 interna estática del rango de direcciones IPv6 interno de la subred.
  7. Opcional: Si deseas compartir la dirección IPv4 interna estática en diferentes frontends, en la lista Propósito, elige Compartida. La selección predeterminada es No compartida.

  8. Haz clic en Reservar.

gcloud

  • Para reservar una dirección IPv4 interna, usa el comando compute addresses create:

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --addresses IP_ADDRESS
    

    Reemplaza lo siguiente:

    • ADDRESS_NAMES: son los nombres de una o más direcciones [--purpose=SHARED_LOADBALANCER_VIP] que deseas crear. En el caso de varias direcciones, especifica todas las direcciones como una lista, separadas por espacios, por ejemplo, example-address-1 example-address-2 example-address-3.
    • REGION: Es la región para esta solicitud.
    • SUBNETWORK: Es la subred para esta dirección IP interna.
    • IP_ADDRESS: Es la dirección IP que se reservará, que debe estar dentro del rango de IP principal de la subred. Si no se especifica, se asigna una dirección IP de forma automática desde la subred.
  • Para reservar una dirección IPv6 interna, usa el comando compute addresses create. Especifica IPV6 como el valor de --ip-version:

    gcloud compute addresses create ADDRESS_NAMES \
        --region REGION --subnet SUBNETWORK \
        --ip-version IPV6
    

    Reemplaza lo siguiente:

    • ADDRESS_NAMES: Son los nombres de una o más direcciones que deseas reservar. En el caso de varias direcciones, especifica todas las direcciones como una lista, separadas por espacios, por ejemplo, example-address-1 example-address-2 example-address-3.
    • REGION: Es la región para esta solicitud.
    • SUBNETWORK: Es la subred para esta dirección IPv6 interna.

    A diferencia de la reserva IPv4 interna, la reserva IPv6 interna no admite la reserva de una dirección IP específica de la subred. En su lugar, una dirección IPv6 interna /96 se asigna de forma automática a partir del rango de direcciones IPv6 internas de la subred /64.

Ejemplos

  • Reserva una dirección IPv4 interna asignada de forma automática desde una subred:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1
    
  • Reserva una dirección IPv4 interna específica desde una subred:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12
    
  • Reserva una dirección IPv6 interna estática desde una subred:

    gcloud compute addresses create example-address-1 \
        --region us-central1 \
        --subnet subnet-1 \
        --ip-version IPV6
    
  • Para crear varias direcciones IPv4, pasa más de un nombre de dirección IPv4; todas las direcciones están reservadas en la misma subred:

    gcloud compute addresses create example-address-1 example-address-2 \
        --region us-central1 \
        --subnet subnet-1 \
        --addresses 10.128.0.12,10.128.0.13
    

Terraform

Puedes usar un módulo de Terraform para crear una dirección IP interna.

En el siguiente ejemplo, los argumentos de Terraform tienen valores de ejemplo que puedes cambiar. En el ejemplo, se crean dos direcciones IP internas específicas:

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 3.1"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
  addresses  = ["10.0.0.3", "10.0.0.4"]
}

En el siguiente ejemplo, se crean dos direcciones IP internas asignadas de forma dinámica:

module "address" {
  source     = "terraform-google-modules/address/google"
  version    = "~> 3.1"
  project_id = var.project_id # Replace this with your project ID in quotes
  region     = "asia-east1"
  subnetwork = "my-subnet"
  names      = ["internal-address1", "internal-address2"]
}

API

Usa el método addresses.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Para las direcciones IPv4 e IPv6, el cuerpo de la solicitud debe incluir el campo addressType, que debe ser INTERNAL, el name de la dirección y la subnetwork a la que pertenece la dirección IP. El cuerpo de la solicitud puede incluir de manera opcional el purpose de la dirección IP interna.

Además, para las direcciones IPv4 internas, puedes permitir que el sistema asigne de forma automática una dirección IP o usar address a fin de especificar una dirección IPv4 interna. La dirección IPv4 debe pertenecer al rango de direcciones IP principal de la subred.

{
  "addressType": "INTERNAL",
  "name": "IPV4_ADDRESS_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "address": "IPV4_ADDRESS"
  "purpose": "GCE_ENDPOINT"
}

Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv4-address-1",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
  "purpose": "GCE_ENDPOINT"
}

Para las direcciones IPv6 internas, también debes especificar ipVersion como IPV6. El sistema asigna de forma automática una dirección IPv6 interna estática del rango de direcciones IPv6 interno de la subred.

{
  "addressType": "INTERNAL",
  "name": "IPV6_ADDRESS_NAME",
  "ipVersion": "IPV6",
  "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
  "purpose": "GCE_ENDPOINT"
}

Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
{
  "addressType": "INTERNAL",
  "name": "example-ipv6-address-1",
  "ipVersion": "IPV6"
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "purpose": "GCE_ENDPOINT"
}

Reserva un rango de direcciones IP internas estáticas para la VPN con alta disponibilidad en Cloud Interconnect

Puedes reservar un rango de direcciones IP internas estáticas para usar con una VPN con alta disponibilidad a través de Cloud Interconnect.

Cuando creas la dirección IP interna estática, debes especificar la marca --purpose=IPSEC_INTERCONNECT y una longitud de prefijo (--prefix-length) entre 26 y 29.

Las direcciones IPv4 internas regionales que reservas se aplican a las puertas de enlace de VPN con alta disponibilidad que usa Cloud Interconnect.

Para obtener más información, consulta Asigna rangos de direcciones IP internas a las puertas de enlace de VPN con alta disponibilidad.

Determina si una dirección IPv4 o IPv6 interna es efímera o estática

Las direcciones IP internas estáticas y efímeras se comportan y se ven iguales en la mayoría de los contextos. Sin embargo, con las direcciones IP internas estáticas, puedes usar la misma dirección IP para el mismo recurso, incluso si borras y vuelves a crear el recurso. En general, una dirección IP efímera se libera si detienes o borras el recurso.

Para determinar si una dirección es estática o efímera, haz lo siguiente:

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Busca la dirección en la lista y verifica la columna Tipo para el tipo de dirección IP.

Promueve una dirección IPv4 o IPv6 interna efímera en uso a una dirección estática

Si tienes direcciones IP internas efímeras que estén en uso, puedes ascenderlas a direcciones IP internas estáticas para que permanezcan en el proyecto hasta que las quites de forma activa.

Para ascender una dirección IP interna efímera a una dirección IP interna estática, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Haz clic en Direcciones IP internas.
  3. Opcional: En el campo Filtro, busca la dirección IP efímera que deseas ascender.
  4. En el menú Más acciones () de la dirección IP que deseas ascender, elige Ascender a dirección IP estática.
  5. Proporciona un nombre para la dirección IP estática nueva y haz clic en Reservar.

gcloud

  1. Antes de ascender una dirección IPv6 interna efímera existente, debes conocer el valor de esa dirección IP. Usa Google Cloud CLI para realizar una solicitud describe al recurso a fin de obtener el valor de la dirección IP.

    • Para una VM con una dirección IPv4, usa el siguiente comando:

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"
      
    • Para una VM con direcciones IPv6, usa el siguiente comando:

      gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "ipv6Address"
      
    • Para una regla de reenvío regional, usa el siguiente comando:

      gcloud compute forwarding-rules describe FORWARDING_RULE_NAME --region REGION | grep "IPAddress"
      

      Para una regla de reenvío global, usa la marca --global en su lugar.

  2. Promueve la dirección:

    • Para ascender runa o más direcciones IPv4 internas existentes, usa el comando compute addresses create y proporciona la marca --addresses con las direcciones IP internas explícitas para ascender:

      gcloud compute addresses create IPV4_ADDRESS_NAMES \
        --addresses IPV4_ADDRESSES \
        --region REGION \
        --prefix-length PREFIX_LENGTH \
        --subnet SUBNETWORK
      

      Reemplaza lo siguiente:

      • IPV4_ADDRESS_NAMES: los nombres de las direcciones IPv4. En el caso de varias direcciones, especifica todos los nombres de direcciones como una lista, separados por espacios, por ejemplo, example-address-name-1 example-address-name-2 example-address-name-3. Declara los nombres en el mismo orden en el que declararás las direcciones IP. Por ejemplo, supongamos que especificas los nombres de las direcciones como example-address-name-1 example-address-name-2 example-address-name-3 y las direcciones IPv4 como 192.0.2.0 192.0.2.1 192.0.2.2. En esta situación, Compute Engine asigna los nombres y las direcciones de la siguiente manera:

        • example-address-name-1: 192.0.2.0
        • example-address-name-2: 192.0.2.1
        • example-address-name-3: 192.0.2.2
      • IPV4_ADDRESSES: Son las direcciones IPv4 que se deben ascender. En el caso de varias direcciones, especifica todas las direcciones como una lista, separadas por espacios, por ejemplo, 192.0.2.0 192.0.2.1 192.0.2.2.

      • REGION: Es la región en la que se reservará esta dirección.

      • PREFIX_LENGTH: Opcional La longitud del prefijo del rango de direcciones IPv4. El valor debe ser un número entero entre 7 y 31. Incluye este campo solo si especificas un rango de direcciones. Excluye el campo si la dirección IPv4 especificada es una sola dirección IP.

      • SUBNETWORK: Es la subred de esta solicitud.

    • Para ascender una o más direcciones IPv6 internas existentes, usa el comando compute addresses create y proporciona la marca --addresses con las direcciones IPv6 internas explícitas:

      gcloud compute addresses create IPV6_ADDRESS_NAMES \
       --addresses IPV6_ADDRESSES \
       --region REGION \
       --prefix-length PREFIX_LENGTH \
       --subnet SUBNETWORK
      

      Reemplaza lo siguiente:

      • IPV6_ADDRESS_NAMES: los nombres de la dirección. Declara los nombres en el mismo orden en el que declararás las direcciones IPv6. En este caso, IPV6_ADDRESS_NAME_1 corresponde a IPV6_ADDRESS_1, y IPV6_ADDRESS_NAME_2 a IPV6_ADDRESS_2.
      • IPV6_ADDRESS_1,[IPV6_ADDRESS_2,...]: Son las direcciones IPv6 que se deben ascender en formato CIDR.
      • PREFIX_LENGTH_1,[PREFIX_LENGTH_2,...]: Es la longitud de prefijo de direcciones IPv6.
      • REGION: Es la región en la que se reservará esta dirección.
      • SUBNETWORK: Es la subred de esta solicitud.

      La dirección IPv6 interna permanece adjunta a la instancia existente incluso después de que se asigne a una dirección IPv6 interna estática. Si necesitas asignar la dirección IPv6 interna estática que se acaba de ascender a otro recurso, primero debes anular la asignación de la dirección IPv6 interna estática de la instancia existente.

API

Usa el método addresses.insert:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Para las direcciones IPv4 e IPv6, el cuerpo de la solicitud debe incluir el addressType, que debe ser INTERNAL, el name de la dirección, el address que se debe ascender y el subnetwork al que pertenece la dirección IP. Para las direcciones IPv6, además, el cuerpo de la solicitud debe incluir prefixLength con 96 como valor.

  • Cuerpo de la solicitud para ascender direcciones IPv4 internas:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    }
    

    Por ejemplo:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv4-address-1",
    "addressType": "INTERNAL",
    "address": "10.128.0.2",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    }
    
  • Cuerpo de la solicitud para ascender direcciones IPv6 internas:

    {
    "name": "ADDRESS_NAME",
    "addressType": "INTERNAL",
    "address": "IP_ADDRESS",
    "subnetwork": "regions/REGION/subnetworks/SUBNETWORK"
    "prefixLength": 96
    }
    

    Por ejemplo:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses
    {
    "name": "example-IPv6-address-1",
    "addressType": "INTERNAL",
    "address": "fd20:0:0::",
    "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
    "prefixLength": 96
    }
    

Usa una dirección IPv4 o IPv6 interna estática con una VPC compartida

Puedes crear una dirección IP interna estática reservada en una subred compartida de una red de VPC compartida. El objeto de la dirección IP se crea en el mismo proyecto de servicio que el recurso que lo usará, aunque su valor provenga del rango de direcciones IP disponibles en la subred compartida seleccionada de la red de VPC compartida. Para obtener más información sobre este caso de uso, consulta los siguientes recursos:

Enumera direcciones IPv4 o IPv6 internas estáticas

Para ver todas tus direcciones IP internas estáticas existentes, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Haz clic en Direcciones IP internas.

gcloud

Usa el comando gcloud compute addresses list:

gcloud compute addresses list

API

Usa el método addresses.list:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • REGION: El nombre de la región para esta solicitud.

Para enumerar todas las direcciones de todas las regiones, usa el método addresses.aggregatedList:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses

Libera una dirección IPv4 o IPv6 interna estática

Si ya no necesitas una dirección IP interna estática, puedes borrar el recurso de dirección IP para liberarla.

Si usas la consola de Google Cloud, puedes liberar una dirección IP estática solo si no la usa otro recurso.

Si usas gcloud CLI o la API, puedes liberar una dirección IP, ya sea que la use otro recurso o no.

  • Si un recurso no usa la dirección IP, esta se muestra al grupo de direcciones IP internas disponibles.

  • Si un recurso usa la dirección IP, permanece adjunta al recurso hasta que este se borra.

Para liberar una dirección IPv4 o IPv6 interna estática, completa los siguientes pasos.

Console

  1. En la consola de Google Cloud, ve a la página Direcciones IP.

    Ir a Direcciones IP

  2. Haz clic en Direcciones IP internas.
  3. Elige la dirección IP interna estática que deseas liberar.
  4. Haz clic en Liberar dirección estática y, luego, haz clic en Liberar en el cuadro de diálogo para confirmar esta operación.

    Si no ves esta opción, haz clic en el menú Más acciones () en la barra de menú superior y, luego, selecciona Liberar dirección estática en la lista.

gcloud

Usa el comando compute addresses delete:

gcloud compute addresses delete ADDRESS_NAME \
    --region REGION

Reemplaza lo siguiente:

  • ADDRESS_NAME: Es el nombre de la dirección que se borrará.
  • REGION: Es la región a la que pertenece la dirección.

Por ejemplo:

gcloud compute addresses delete example-address-to-delete \
    --region us-west1

API

Usa el método addresses.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME

En este ejemplo, se borra una dirección en la región us-west1:

DELETE https://compute.googleapis.com/compute/v1/projects/myproject/regions/us-west1/addresses/example-address-to-delete

¿Qué sigue?