Reserva una dirección IP externa estática


Puedes reservar direcciones IP externas estáticas para tu instancia de máquina virtual (VM). También puedes cambiar, enumerar y liberar direcciones IP estáticas para tu VM.

Las direcciones IP externas pueden ser estáticas o efímeras. Si una VM requiere una dirección IP externa fija que no cambie, puedes obtener una dirección IP externa estática. Puedes reservar direcciones IP externas nuevas o ascender direcciones IP externas efímeras existentes.

Si necesitas una dirección IP estática en tu red interna de Compute Engine, consulta Reserva una dirección interna estática, en su lugar.

Antes de comenzar

  • Lee sobre las direcciones IP.
  • Lee sobre cuotas y límites para direcciones IP externas estáticas.
  • Lee sobre los precios de las direcciones IP externas.
  • Si aún no lo hiciste, configura la autenticación. 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 en Compute Engine de la siguiente manera.

    Selecciona la pestaña sobre 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

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

      gcloud init
    2. Configura una región y una zona predeterminadas.

    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

    Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

    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

Permisos

Para reservar direcciones IPv6 externas regionales estáticas mediante la consola de Google Cloud, debes elegir una red y una subred. Sin embargo, para ver una lista de las redes y subredes disponibles, debes tener los siguientes permisos de IAM:

  • compute.networks.list
  • compute.subnetworks.list

Acerca de las direcciones IP externas estáticas

Una dirección IP externa estática es una dirección IP que se reserva para tu recurso hasta que decidas liberarla. Si tienes una dirección IP en la que tus clientes o usuarios confíen a fin de acceder a tu servicio, puedes reservarla para que solo tu recurso pueda usarla. También puedes subir la categoría de una dirección IP externa efímera a una dirección IP externa estática.

Para obtener más información, consulta Direcciones IP.

En la siguiente tabla, se enumeran las direcciones IP externas estáticas compatibles con Google Cloud.

Tipo de dirección IP Recurso Rango de IP Origen Asociada con
Direcciones IPv4 externas regionales VMs y balanceadores de cargas regionales /32 Grupo de direcciones IP externas de Google Proyecto
Direcciones IPv6 externas regionales VMs y balanceadores de cargas regionales admitidos /96 Rango de direcciones IPv6 externas de la subred Subred
Direcciones IPv4 externas globales Balanceadores de cargas globales /32 Grupo de direcciones IP externas de Google Proyecto
Direcciones IPv6 externas globales Balanceadores de cargas globales /64 Grupo de direcciones IP externas de Google Proyecto

Para obtener una lista de los balanceadores de cargas regionales y globales, consulta Resumen de los tipos de balanceadores de cargas.

Especificaciones para el uso de direcciones IP externas estáticas

  • Solo un recurso a la vez puede usar una dirección IP externa estática.

  • No hay forma de verificar si una dirección IP es estática o efímera después de que se asigna a un recurso. Puedes comparar la dirección IP con la lista de direcciones IP externas estáticas reservadas para ese proyecto. Usa el subcomando compute addresses list a fin de ver una lista de direcciones IP externas estáticas disponibles para el proyecto.

  • Cada VM puede tener varias interfaces de red, pero cada interfaz de red puede tener solo una dirección IP externa que sea efímera o estática.

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

  • Las direcciones IP externas asignadas existen en el mismo host físico que la instancia de VM y existen en la misma región que la VM para todos los fines, incluidos el enrutamiento, la latencia y los precios. Esto sucede sin importar la información de búsqueda de la ubicación geográfica de Internet.

Nota: Las interfaces de red pueden recibir tráfico de varias reglas de reenvío, que pueden entregar a otras direcciones IP externas. Cualquier cantidad de direcciones IP externas puede hacer referencia a una interfaz de red a través de estas reglas de reenvío, sin embargo, cada interfaz de red puede tener solo una dirección IP externa.

Para obtener más información sobre el balanceo de cargas y las reglas de reenvío, consulta la documentación de balanceo de cargas.

Reserva una dirección IP externa estática nueva

Después de reservar la dirección, asígnala a una VM nueva mientras la creas o a una VM existente.

Consola

  1. En la consola de Google Cloud, ve a la página Reserva una dirección estática.

    Ir a Reserva una dirección estática

  2. Elige un nombre para la dirección nueva.

  3. Especifica si el nivel de servicio de red es Premium o Estándar. La reserva de dirección estática IPv6 solo es compatible con el nivel Premium.

  4. Especifica si es una dirección IPv4 o IPv6.

  5. Elige si esta dirección IP será regional o global.

    • Si reservas una dirección IP estática para un balanceador de cargas global, elige Global y, luego, haz clic en Reservar.
    • Si reservas una dirección IP estática para una VM o un balanceador de cargas de red, elige Regional y, luego, elige la región en la que deseas crear la dirección.
  6. Si reservas una dirección IPv6 externa regional, también elige lo siguiente:

    • Red: la red de VPC
    • Subred: la subred a la que se asigna la dirección IPv6 regional estática
    • Tipo de extremo: elige Instancia de VM o Balanceador de cargas de red
  7. Opcional: Si reservas la dirección IP externa estática de una VM, en la lista Adjuntar, elige una VM a la que deseas conectar la dirección IP.

  8. Haz clic en Reservar si deseas reservar la dirección IP.

gcloud

Para reservar una dirección IP externa estática, usa el comando gcloud compute addresses create.

Usa las siguientes instrucciones para reservar una dirección IPv4 o IPv6 externa estática:

  • Para reservar una dirección IP global, usa los campos --global y --ip-version. En el campo --ip-version, especifica IPv4 o IPv6. Las direcciones IP globales solo se pueden usar con balanceadores de cargas globales.

    gcloud compute addresses create ADDRESS_NAME \
      --global \
      --ip-version [IPV4 | IPV6]
    

    Reemplaza ADDRESS_NAME por el nombre que deseas asociar a esta dirección.

  • Para reservar una dirección IPv4 externa regional, usa el campo --region.

    gcloud compute addresses create ADDRESS_NAME \
       --region=REGION
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: Es el nombre que deseas asociar con esta dirección.
    • REGION: Es la región en la que deseas reservar esta dirección. Esta región debe ser la misma que el recurso al que deseas conectar la dirección IP.
  • Para reservar una dirección IPv6 externa regional, usa los campos --region, --subnet, --ip-version y --endpoint-type. Se asigna un rango IPv6 /96 desde la subred especificada.

    gcloud compute addresses create IPV6_ADDRESS_NAME \
       --region=REGION \
       --subnet=SUBNET_NAME \
       --ip-version=IPV6 \
       --endpoint-type=[VM | NETLB]
    

    Reemplaza lo siguiente:

    • IPV6_ADDRESS_NAME: Es un nombre para la dirección.
    • REGION: Es la región de la dirección.
    • SUBNET_NAME: Es la subred a la que se asignará la dirección IPv6 regional estática. La subred debe tener un rango de direcciones IPv6 externas asignado.
    • VM | NETLB: Es el tipo de extremo. ya sea una VM o un balanceador de cargas de red.

Para ver el resultado, usa el comando gcloud compute addresses describe:

gcloud compute addresses describe ADDRESS_NAME

Terraform

Puedes usar el recurso google_compute_address para crear una dirección IP externa regional.

resource "google_compute_address" "default" {
  name   = "my-test-static-ip-address"
  region = "us-central1"
}

En el siguiente ejemplo, se muestra cómo usar el recurso google_compute_global_address para crear una dirección IPv6 externa global:

resource "google_compute_global_address" "default" {
  project      = var.project_id # Replace this with your service project ID in quotes
  name         = "ipv6-address"
  address_type = "EXTERNAL"
  ip_version   = "IPV6"
}

REST

  • Para crear una dirección IPv4 regional, invoca el método addresses.insert regional:

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

    El cuerpo de la solicitud debe contener la siguiente información:

    {
      "name": "ADDRESS_NAME"
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • REGION: el nombre de la región para esta solicitud
    • ADDRESS_NAME: Es el nombre que deseas asociar a la dirección
  • Para direcciones IPv4 estáticas globales, llama al método globalAddresses.insert:

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

    El cuerpo de la solicitud debe contener la siguiente información:

    {
      "name": "ADDRESS_NAME"
    }
    
  • Para direcciones IPv6 estáticas globales, llama al método globalAddresses.insert:

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

    El cuerpo de la solicitud debe contener la siguiente información:

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6"
    }
    

    Para ver el resultado, usa el método addresses.get.

  • Para direcciones IPv6 estáticas regionales, llama al método addresses.insert:

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

    El cuerpo de la solicitud debe contener la siguiente información:

    {
      "name": "ADDRESS_NAME",
      "ipVersion": "IPV6",
      "ipv6EndpointType": "VM|LB",
      "networkTier": "PREMIUM",
      "subnetwork": "SUBNET"
    }
    

    Reemplaza SUBNET por la subred de este proyecto.

    Para ver el resultado, usa el método addresses.get.

Asigna una dirección IP externa estática a una VM nueva

Después de reservar una dirección IP externa estática, puedes asignarla a una VM.

Consola

  1. En la consola de Google Cloud, ve a la página Crea una instancia.

    Ir a Crear una instancia

  2. Especifica los detalles de la VM.

  3. Expanda la sección Opciones avanzadas.

  4. Expande la sección Herramientas de redes.

  5. En la sección Interfaces de red, expande una interfaz de red para editarla.

  6. Para asignar una dirección IPv4, haz lo siguiente:

    1. Elige una red.
    2. Elige la dirección IP de la lista Dirección IPv4 externa.
  7. Para asignar una dirección IPv6, haz lo siguiente:

    1. Elige una red que contenga una subred IPv6.
    2. Elige una subred de pila doble de la lista Subred.
    3. En Tipo de pila IP, elige IPv4 e IPv6 (pila doble).
    4. Elige la dirección IPv6 externa recién reservada de la lista Dirección IPv6 externa. Como alternativa, elige CREAR DIRECCIÓN IP y reserva una dirección IPv6 externa estática nueva.
    5. En Nivel de servicio de red, elige Premium.
  8. Para terminar de modificar la interfaz de red, haz clic en Listo.

  9. Continúa con el proceso de creación de VM.

gcloud

Puedes crear una VM y asignar una dirección IP externa regional estática que ya hayas reservado.

  • Para asignar una dirección IPv4 externa estática, haz lo siguiente:

    gcloud compute instances create VM_NAME --address=IP_ADDRESS
    

    Reemplaza lo siguiente:

    • VM_NAME: el nombre de la VM.
    • IP_ADDRESS: La dirección IP que se asignará a la VM. Usa la dirección IP externa estática reservada, no el nombre de la dirección.
  • Para asignar una dirección IPv6 externa estática, haz lo siguiente:

    gcloud compute instances create VM_NAME \
        --subnet=SUBNET \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --ipv6-network-tier=PREMIUM \
        --zone=ZONE
    

Terraform

Puedes usar el recurso google_compute_instance para asignar una dirección IP externa.

resource "google_compute_instance" "default" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "us-central1-a"

  boot_disk {
    initialize_params {
      image = "ubuntu-1404-trusty-v20160627"
    }
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = google_compute_address.default.address
    }
  }
}

REST

Para asignar una dirección IPv4 externa estática a una VM nueva, haz lo siguiente:

En tu solicitud para crear una VM nueva, debes proporcionar explícitamente la propiedad networkInterfaces[].accessConfigs[].natIP y la dirección IPv4 externa que quieres utilizar. Por ejemplo:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
      "natIP": "IPV4_ADDRESS"
     }],
    "network": "global/networks/default"
  }],
  "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "SOURCE_IMAGE"
      }
}]
}

Para asignar una dirección IPv6 externa estática a una VM nueva, haz lo siguiente:

En tu solicitud para crear una VM nueva, debes proporcionar explícitamente la propiedad networkInterfaces[].ipv6AccessConfigs[].externalIpv6 y la dirección IPv6 externa que quieres utilizar. Por ejemplo:

{
  "name": "VM_NAME",
  "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
  "networkInterfaces": [{
          "accessConfigs": [{
              "name": "external-nat",
              "type": "ONE_TO_ONE_NAT"
          }],
          "ipv6AccessConfigs": [{
        "externalIpv6": "IOV6_ADDRESS",
        "externalIpv6PrefixLength": 96,
        "name": "external-ipv6-access-config",
        "networkTier": "PREMIUM",
        "type": "DIRECT_IPV6"
          }],
      "stackType": "IPV4_IPV6",
      "subnetwork":"SUBNETWORK
  }],
  "disks": [{
    "autoDelete": "true",
    "boot": "true",
    "mode": "READ_WRITE",
    "type": "PERSISTENT",
    "initializeParams": {
        "sourceImage": "SOURCE_IMAGE"
    },
  }],
 }

Cambia o asigna una dirección IP externa a una VM existente

Puedes cambiar o asignar una dirección IP externa, efímera o estática, a una VM existente.

Una VM puede tener varias interfaces y cada una de estas puede tener una dirección IP externa. Si la VM ya tiene una dirección IP externa, primero debes quitar esa dirección. Luego, puedes asignar una dirección IP externa nueva a la VM existente.

Consola

  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 a la que quieres asignar una IP externa. Se mostrará la página Detalles de la instancia.
  3. En la página Detalles de la instancia, completa los siguientes pasos:

    1. Haga clic en Editar.
    2. Expande Interfaces de red.
    3. Elige la dirección IP externa requerida para asignar a la VM:
      1. En Dirección IPv4 externa, elige Dirección IPv4 efímera o una dirección IPv4 externa estática.
      2. En Dirección IPv6 externa, elige Dirección IPv6 externa o estática.
    4. Haz clic en Listo.
  4. Haz clic en Guardar.

gcloud

  1. Opcional: Reserva una dirección IP externa estática.

    Si quieres asignar una dirección IP externa estática, debes reservar una dirección y asegurarte de que no la use otro recurso. Si es necesario, sigue las instrucciones si necesitas reservar una nueva dirección IP externa estática o si deseas anular la asignación de una dirección IP externa estática.

    Si planeas usar una dirección IP externa efímera, puedes omitir este paso y Compute Engine asigna de manera aleatoria una dirección IP externa efímera.

  2. Quita la tarea de dirección IP existente.

    • Para quitar una dirección IPv4 de una VM, borra la configuración de acceso existente.

      Puedes establecer una configuración de acceso para cada VM. Antes de que intentes asignar una configuración de acceso nueva a una VM, verifica si tu VM tiene una configuración de acceso mediante una solicitud con gcloud compute instances describe comando:

      gcloud compute instances describe VM_NAME
      

      Si hay una configuración de acceso existente, esta aparecerá con el siguiente formato:

      networkInterfaces:
      - accessConfigs:
        - kind: compute#accessConfig
          name: external-nat
          natIP: 203.0.113.1
          type: ONE_TO_ONE_NAT
      

      Antes de agregar una nueva configuración de acceso, debes borrar la existente con el subcomando instances delete-access-config:

      gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
      

      Reemplaza lo siguiente:

      • VM_NAME: el nombre de la VM.
      • ACCESS_CONFIG_NAME: La configuración de acceso que se borrará. Asegúrate de incluir el nombre completo entre comillas.
    • Para quitar una dirección IPv6 de una VM, cambia el tipo de pila.

      Comprueba si tu VM tiene una configuración de IPv6 mediante una solicitud con el comando gcloud compute instances describe:

      gcloud compute instances describe VM_NAME \
          --zone=ZONE
      

      Reemplaza lo siguiente:

      • VM_NAME: el nombre de la VM.
      • ZONE: la zona de la VM.

      Si ya se asignó una dirección IPv6 externa a nic0, la configuración se muestra en el siguiente formato:

      networkInterfaces:
        ...
        ipv6AccessConfigs:
        - externalIpv6: 2001:db8:4000:15:0:0:0:0
          externalIpv6PrefixLength: 96
          kind: compute#accessConfig
          name: external-ipv6
          networkTier: PREMIUM
          type: DIRECT_IPV6
        ipv6AccessType: EXTERNAL
        kind: compute#networkInterface
        name: nic0
      

      Quita la configuración de la dirección IPv6 existente con el subcomando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface=NIC \
        --stack-type=IPV4_ONLY \
        --zone=ZONE
      

      Reemplaza lo siguiente:

      • NIC: el nombre de la interfaz de red
      • VM_NAME: el nombre de la VM.
      • ZONE: la zona de la VM.
  3. Asigna la dirección IP externa nueva.

    • Para asignar una dirección IPv4, usa el subcomando instances add-access-config:

      Nota: No reemplaces IP_ADDRESS con el nombre de la IP estática. Debes usar la dirección IP real.
      gcloud compute instances add-access-config VM_NAME \
      --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
      

      Reemplaza lo siguiente:

      • VM_NAME: el nombre de la VM.
      • ACCESS_CONFIG_NAME: El nombre para llamar a esta configuración de acceso. Asegúrate de incluir el nombre completo entre comillas.
      • IP_ADDRESS: La dirección IP que se agregará.

      Si deseas que Compute Engine asigne una dirección IP externa efímera en lugar de usar una dirección IP externa estática, omite la propiedad --address IP_ADDRESS:

      gcloud compute instances add-access-config VM_NAME \
        --access-config-name="ACCESS_CONFIG_NAME"
      
    • Para asignar un rango de direcciones IPv6, usa el subcomando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface==NIC \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPV4_IPV6 \
        --external-ipv6-address=IPV6_ADDRESS \
        --external-ipv6-prefix-length=96 \
        --zone=ZONE
      

      Reemplaza lo siguiente:

      • VM_NAME: el nombre de la VM.
      • NIC: el nombre de la interfaz de red
      • IPV6_ADDRESS: La dirección IPv6 que se asignará a la VM. Especifica la primera dirección IPv6 en el rango /96.
      • ZONE: la zona de la VM.

REST

Si deseas cambiar la dirección IPv4 o IPv6 externa de una VM, puedes agregar una configuración de acceso nueva para esa VM.

  1. Comprueba si tu VM tiene una configuración de acceso existente. Para verificar los detalles de la VM, realiza una solicitud GET al método instances.get.

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

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
    • ZONE: La zona donde se ubica la VM.
    • VM_NAME: El nombre de la VM

    Si hay una configuración de acceso IPv4 existente, la respuesta es similar a la siguiente:

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "accessConfigs": [
          {
            "type": "ONE_TO_ONE_NAT",
            "name": "External NAT",
            "natIP": "IPV4_ADDRESS",
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    El campo networkInterfaces[].accessConfigs[].natIP muestra la dirección IPv4 externa estática de la VM.

    Si hay una configuración de acceso IPv6 existente, la respuesta es similar a la siguiente:

    "networkInterfaces": [
      {
        "network":
        ...
        "name": "nic0",
        "ipv6AccessConfigs": [
          {
            type: "DIRECT_IPV6",
            "name": "external-ipv6",
            "externalIpv6": "IPV6_ADDRESS",
            "externalIpv6PrefixLength": 96,
            "networkTier": "PREMIUM",
            "kind": "compute#accessConfig"
          }
        ],
        ...
      }
    ]
    

    El campo networkInterfaces[].ipv6AccessConfigs[].externalIpv6 muestra la dirección IPv6 externa estática de la VM.

  2. Borra la configuración de acceso existente mediante una solicitud POST al método instances.deleteAccessConfig.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/deleteAccessConfig
    
  3. Para agregar una nueva configuración de acceso a la interfaz de red de la VM, realiza una solicitud POST al método instances.addAccessConfig.

Cambia la dirección IP de una regla de reenvío

Si necesitas actualizar la dirección IP en una regla de reenvío, sigue estos pasos:

  1. Anula la asignación de la dirección IP.

  2. Borra la regla de reenvío con el comando gcloud compute forwarding-rules delete o el método forwardingRules.delete.

  3. Vuelve a crear la regla de reenvío con el comando gcloud compute forwarding-rules create o el método forwardingRules.insert.

Promueve una dirección IP externa efímera

Si tu instancia tiene una dirección IP externa efímera y deseas asignar la dirección IP a tu proyecto de manera permanente, debes promover la dirección IP externa efímera a una dirección IP externa estática. Promover una dirección IP externa efímera a una reservada no implica que Google Cloud descarte los paquetes enviados al VM. Esto incluye los paquetes que se enviaron a la VM directamente o mediante un balanceador de cargas.

Consola

  1. Ve a la página Direcciones IP.

    Ir a Direcciones IP

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

gcloud

Usa las siguientes instrucciones para promover una dirección IPv4 o IPv6 externa estática:

  • Si quieres promover una dirección IPv4 externa efímera a una dirección IPv4 externa estática, debes proporcionar la dirección IP externa efímera mediante el uso de la siguiente información: --addresses marca con el compute addresses createcomando. Usa la marca region a fin de ascender una dirección IP regional efímera o la marca global a fin de ascender una dirección IP global efímera.

    gcloud compute addresses create ADDRESS_NAME --addresses=IP_ADDRESS \
        [--region=REGION | --global]
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: Es el nombre que deseas asociar a esta dirección.
    • IP_ADDRESS: la dirección IP que deseas ascender.
    • REGION: la región a la que pertenece la dirección IP regional.

    • Si quieres promover una dirección IPv6 externa regional efímera a una dirección IPv6 externa regional estática, debes proporcionar la dirección IP externa efímera mediante el uso de la marca --addresses con el comando compute addresses create.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --addresses=IPV6_ADDRESS \
        --prefix-length=96
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: un nombre para el recurso de dirección IP.
    • REGION: la región para el recurso de dirección IPv6.
    • IPV6_ADDRESS: la dirección IPv6 que estás promoviendo.

REST

Para ascender una dirección IP regional efímera, llama al método addresses.insert:

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

Si quieres promover una dirección IP global efímera, debes realizar una solicitud POST al siguiente URI:

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

Especifica los valores para los campos obligatorios del cuerpo de la solicitud:

  • Para las direcciones IPv4, el cuerpo de la solicitud debe contener los siguientes campos:

    {
      "name": "ADDRESS_NAME",
      "address": "IPV4_ADDRESS"
      "addressType": "EXTERNAL"
    }
    
  • Para las direcciones IPv6, tu cuerpo de solicitud debe contener los siguientes campos:

    {
      "name": "ADDRESS_NAME",
      "address": "IPV6_ADDRESS"
      "prefixLength": 96
      "addressType": "EXTERNAL"
    }
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: Es el nombre que deseas asociar a esta dirección
    • IPV4_ADDRESS|IPV6_ADDRESS: la dirección IPv4 o IPv6 que deseas ascender
    • REGION: la región a la que pertenece la dirección IPv4 o IPv6
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.

La dirección IP externa permanece adjunta a la instancia incluso después de que se haya asignado a una dirección IP externa estática. Si necesitas asignar la dirección IP externa estática nueva a otro recurso, anula la asignación de la dirección IP externa estática de la VM existente.

Enumera direcciones IP externas estáticas

A fin de crear una lista de las direcciones IP externas estáticas que reservaste para tu proyecto, sigue estos pasos.

Consola

Para ver una lista de las direcciones IP del proyecto, en la consola de Google Cloud, ve a la página Direcciones IP externas.

Ir a Direcciones IP externas

gcloud

Usa el comando gcloud compute addresses list:

  • Para enumerar todas las direcciones IP, usa el siguiente comando:

    gcloud compute addresses list
  • Para enumerar todas las direcciones IP globales, usa el siguiente comando:

    gcloud compute addresses list --global
  • Para enumerar todas las direcciones IP regionales en una región determinada, usa el siguiente comando:

    gcloud compute addresses list \
      --regions=REGION
    

    Reemplaza REGION por la región de la que deseas enumerar las direcciones. Puedes enumerar direcciones de varias regiones si especificas nombres de región separados por comas:

    gcloud compute addresses list \
      --regions=REGION1,REGION2,..REGION_n_
    

REST

  • Para enumerar las direcciones IPv4 o IPv6 regionales, llama al método addresses.list:

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

    Reemplaza lo siguiente:

    • REGION: El nombre de la región para esta solicitud
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • Para enumerar todas las direcciones de todas las regiones, llama al método aggregatedList:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
    
  • Para enumerar las direcciones IPv4 o IPv6 globales, llama al método globalAddresses.list:

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

    Reemplaza lo siguiente:

    PROJECT_ID: Es el ID del proyecto de esta solicitud.

Describe una dirección IP externa estática

Para obtener información sobre una dirección IP externa estática, sigue estos pasos.

Consola

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

    Ir a Direcciones IP externas

  2. Haz clic en la dirección IP que la que quieres obtener más información.

gcloud

Usa el comando addresses describe y reemplaza ADDRESS_NAME por el nombre de la dirección IP externa que deseas describir.

  • Para una dirección IPv4 o IPv6 global, usa el siguiente comando:

    gcloud compute addresses describe ADDRESS_NAME --global
  • Para una dirección IPv4 o IPv6 regional, usa el siguiente comando:

    gcloud compute addresses describe ADDRESS_NAME --region=REGION

REST

  • Para describir una dirección IPv4 o IPv6 regional, llama al método addresses.get:

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

    Reemplaza lo siguiente:

    • ADDRESS_NAME: El nombre de la dirección IP.
    • REGION: El nombre de la región para esta solicitud
    • PROJECT_ID: Es el ID del proyecto de la solicitud.
  • Para describir una dirección IPv4 o IPv6 global, llama al método globalAddresses.get:

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

    Reemplaza lo siguiente:

    • ADDRESS_NAME: El nombre de la dirección IP.
    • PROJECT_ID: Es el ID del proyecto de la solicitud.

Anula la asignación de una dirección IP externa estática

Anular la asignación de una dirección IP la quita del recurso, pero conserva la dirección IP reservada. Una vez que la dirección IP está anulada, puedes reasignarla a otro recurso.

Para anular la asignación de la dirección IPv4 o IPv6, borra la VM.

Consola

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

    Ir a Direcciones IP externas

  2. Elige la dirección IP estática para la que deseas anular la asignación.
  3. Haz clic en Cambiar para abrir el cuadro de diálogo Adjuntar dirección IP.
  4. En la lista desplegable Adjuntar a, elige Ninguna.
  5. Haz clic en OK.

gcloud

  1. Comprueba si una dirección IP estática está en uso mediante el comando gcloud compute addresses list:

    gcloud compute addresses list
    

    El resultado es similar a este:

    NAME                      REGION    ADDRESS                  STATUS
    example-address-ipv4      REGION    198.51.100.1             RESERVED
    example-address-new-ipv4  REGION    203.0.113.1              IN_USE
    example-address-ipv6      REGION    2001:db8:1:1:1:1:1:1     RESERVED
    example-address-new-ipv6  REGION    2001:db8:4:4:4:4:4:4     IN_USE
    
    • Si la dirección IP no está en uso, el estado es RESERVED.
    • Si la dirección IP está en uso, el estado es IN_USE.
  2. Recupera el nombre de la VM que usa la dirección IP:

    gcloud compute addresses describe ADDRESS_NAME \
      --region=REGION
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: el nombre del recurso de dirección IPv6.
    • REGION: la región del recurso de dirección IPv6.

    El resultado es similar a este:

    address: IP_ADDRESS
    addressType: EXTERNAL
    ...
    region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME
    status: IN_USE
    subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET
    users:
    - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/VM_NAME
    

    El campo users muestra el nombre de la VM que usa la dirección IP.

  3. Anula la asignación de la dirección IP de la VM.

    • Para anular la asignación de una dirección IPv4, borra el archivo de configuración de acceso de la VM:

      1. Obtén el nombre de la configuración de acceso que quieres borrar. Para obtener el nombre, usa el comando gcloud compute instances describe. Reemplaza VM_NAME por el nombre de la VM.

        gcloud compute instances describe VM_NAME
        

        La configuración de acceso aparece en el siguiente formato:

        networkInterfaces:
          - accessConfigs:
            - kind: compute#accessConfig
              name: external-nat
              natIP: 203.0.113.1
              type: ONE_TO_ONE_NAT
        
      2. Borra la configuración de acceso con el comando gcloud compute instances delete-access-config:

        gcloud compute instances delete-access-config VM_NAME \
          --access-config-name="ACCESS_CONFIG_NAME"
        

        Reemplaza lo siguiente:

        • VM_NAME: el nombre de la VM.
        • ACCESS_CONFIG_NAME: El nombre de la configuración de acceso que se borrará. Asegúrate de incluir el nombre completo entre comillas.
    • Para anular la asignación de un rango de direcciones IPv6, usa el comando instance network-interfaces update:

      gcloud compute instances network-interfaces update VM_NAME \
        --network-interface=nic0 \
        --stack-type=IPV4_ONLY \
        --zone=ZONE
      

      Reemplaza lo siguiente:

      • VM_NAME: Es el nombre de la VM que usa la dirección IP.
      • ZONE: la zona de la VM.
  4. Comprueba que tu dirección IP externa estática ahora esté disponible y marcada como RESERVED, en lugar de IN_USE.

    gcloud compute addresses list \
      --filter="ADDRESS_NAME AND region=REGION"
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: el nombre del recurso de dirección IP.
    • REGION: la región del recurso de la dirección IP.

Ya que tu dirección IP externa estática está disponible, puedes elegir asignarla a otra instancia.

REST

Para anular la asignación de una dirección IPv4 o IPv6 externa estática, sigue estos pasos:

  • Para las direcciones IPv4, borra la configuración de acceso adjunta a la VM que usa la dirección.

    1. Para verificar los detalles de configuración de acceso de una VM, realiza una solicitud GET al método instances.get.

      GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
      
    2. Borra la configuración de acceso existente mediante una solicitud POST al método instances.deleteAccessConfig.

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

      Reemplaza lo siguiente:

      • PROJECT_ID: El ID del proyecto de esta solicitud
      • ZONE: La zona donde se ubica la VM.
      • VM_NAME: El nombre de la VM
  • Para las direcciones IPv6, actualiza el tipo de pila de la interfaz de red de la VM a la que se conecta la dirección IPv6.

    1. Realiza una solicitud PATCH al método instances.updateNetworkInterface.

    2. En el cuerpo de la solicitud, actualiza el valor del campo stackType a IPV4_ONLY.

      Por ejemplo:

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/updateNetworkInterface
      
      {
        "networkInterfaces": [{
          ...
          "stackType" : "IPV4_ONLY"
          ...
          }]
      }
      

Liberar una dirección IP externa estática

Si ya no necesitas una dirección IPv4 o IPv6 externa estática, puedes liberar la dirección IP mediante el borrado del recurso de dirección IP.

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

Si usas la gcloud CLI o REST, 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 externas disponibles.

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

Consola

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

    Ir a Direcciones IP externas

  2. Elige la dirección IP que deseas liberar.
  3. Haz clic en Liberar dirección IP.

gcloud

Usa el comando compute addresses delete:

gcloud compute addresses delete ADDRESS_NAME

Reemplaza ADDRESS_NAME por el nombre de la dirección IPv4 o IPv6 que deseas liberar.

REST

  • Para liberar una dirección IPv4 o IPv6 regional, llama al método addresses.delete:

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

    Reemplaza lo siguiente:

    • ADDRESS_NAME: El nombre de la dirección IP.
    • REGION: El nombre de la región para esta solicitud
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.
  • Para liberar una dirección IPv4 o IPv6 global, llama al método globalAddresses.delete:

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

    Reemplaza lo siguiente:

    • ADDRESS_NAME: El nombre de la dirección IP.
    • PROJECT_ID: Es el ID del proyecto de esta solicitud.

Restringe direcciones IP externas a VMs específicas

Para ciertas cargas de trabajo, puede que tengas requisitos esenciales que incluyen restricciones de seguridad y de red. Por ejemplo, es posible que desees restringir las direcciones IP externas para que solo las VMs específicas puedan usarlas. Esta opción puede ayudar a evitar el robo de datos o mantener el aislamiento de red. Mediante una política de la organización, puedes restringir las direcciones IP externas a VMs específicas con restricciones a fin de controlar el uso de direcciones IP externas para las VM dentro de una organización o un proyecto.

Esta es la restricción para controlar la dirección IP externa en las VM:

constraints/compute.vmExternalIpAccess

Para usar la restricción, especifica una política con una allowedList de VMs que pueden tener direcciones IP externas. Si no especificas una política, se permiten todas las direcciones IP externas para todas las VMs. Cuando la política está vigente, solo a las VMs que aparecen en la lista de allowedValues se les puede asignar una dirección IP externa, ya sea efímera o estática, y otras VMs de Compute Engine en la organización o proyecto que no están definidas de forma explícita en la política tienen prohibido el uso de direcciones IP externas.

Se identifican las VMs en las listas de entidades permitidas y de denegación con el URI de la VM:

projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

Especificaciones para restringir direcciones IP externas

  • Puedes aplicar esta restricción de lista solo a las VMs.
  • No puedes aplicar la restricción de forma retroactiva. Todas las VM que tienen direcciones IP externas antes de habilitar la política conservarán sus direcciones IP externas.
  • Esta restricción acepta una allowedList o una deniedList, pero no ambas en la misma política.
  • Depende de ti o de un administrador que cuente con los permisos necesarios para administrar y mantener el ciclo de vida y la integridad de la instancia. La restricción solo verifica el URI de la VM y no evita que las VMs de la lista de anunciantes permitidos se modifiquen, borren o se vuelvan a crear.

Permisos necesarios para restringir direcciones IP externas

Para establecer una restricción en el proyecto o en el nivel de la organización, debes tener la función orgpolicy.policyAdmin en la organización.

Establece la restricción de políticas a nivel de la organización

Consola

  1. Ve a la página Políticas de organización.

    Ir a Políticas de la organización

  2. Si es necesario, elige la organización requerida en el menú desplegable del proyecto.
  3. Haz clic en Definir IP externas permitidas para instancias de VM.
  4. Haz clic en Editar para editar la política de IP externa. Si no puedes acceder a la herramienta Editar, no tienes los permisos correctos.
  5. Elige Personalizar a fin de establecer la política de la organización para VMs específicas.

    Opción de personalización en la página de edición de política de la organización.

  6. Elige el Tipo de política y la Aplicación de política obligatorios.

  7. En Valores de la política, elige Personalizado.

  8. Ingresa un URI para una VM y presiona Intro. El URI debe tener el siguiente formato:

    projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
    
  9. Haz clic en Nuevo valor de la política e ingresa los URI para las VMs según sea necesario.

  10. Haz clic en Guardar para aplicar la restricción.

gcloud

Primero necesitas el ID de tu organización si quieres establecer una restricción para el acceso de IP externas. Puedes encontrar el ID de la organización si ejecutas el comando organizations list y buscas el ID numérico en la respuesta:

gcloud organizations list

La CLI de gcloud muestra una lista de organizaciones en el siguiente formato:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Usa el comando gcloud resource-manager org-policies set-policy para establecer la política. Debes proporcionar tu política como un archivo JSON. Crea un archivo JSON en el siguiente formato:

{
"constraint": "constraints/compute.vmExternalIpAccess",
"listPolicy": {
  "allowedValues": [
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
     "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de esta solicitud, como example-project. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requieren el ID numérico de la organización.
  • ZONE: La zona de la VM
  • VM_NAME: El nombre de la VM

De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las VMs que no quieres que tengan una dirección IP externa. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Luego, debes pasar el archivo con la solicitud:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID

Reemplaza ORGANIZATION_ID por el ID numérico de la organización.

Si no quieres que ninguna VM tenga acceso a una IP externa, puedes establecer una política con allValues establecido como DENY:

{
  "constraint": "constraints/compute.vmExternalIpAccess",
  "listPolicy": {
    "allValues": "DENY"
  }
}

REST

Usa la API de setOrgPolicy() para definir la restricción. Las VM que aparecen en la lista allowedValue que especificas pueden tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las VMs que no quieres que tengan una dirección IP externa. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Por ejemplo, la siguiente es una solicitud para establecer la restricción compute.vmExternalIpAccess en una organización en la que las VMs de determinados proyectos dentro de la organización pueden tener direcciones IP externas:

POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy

En el ejemplo anterior, ORGANIZATION_ID es el ID numérico de la organización.

Ahora, en el cuerpo de la solicitud, debes proporcionar la política deseada para esta restricción:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME",
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
        ]
      }
    }
 }

Si no quieres que ninguna VM tenga acceso a una IP externa, puedes establecer una política con allValues establecido como DENY:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allValues": "DENY"
      }
    }
 }

Establece la política a nivel de proyecto

Establecer una política a nivel de proyecto anula la política a nivel de organización. Por ejemplo, si el nivel de la organización tiene example-vm-1 en la lista allowedValues, pero la política en el nivel de proyecto tiene la misma VM en la lista deniedValues, la VM no podrá tener una dirección IP externa.

Consola

Sigue el mismo proceso documentado en Establece una restricción de política a nivel de la organización, pero elige el proyecto deseado del selector de proyectos, en lugar de la organización.

Selector de proyectos.

gcloud

Usa el comando gcloud resource-manager org-policies set-policy para establecer la política. Debes proporcionar tu política como un archivo JSON. Crea un archivo JSON en el siguiente formato:

{
 "constraint": "constraints/compute.vmExternalIpAccess",
 "listPolicy": {
  "allowedValues": [
   "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
  ]
 }
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto de esta solicitud, como example-project. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requieren el ID numérico de la organización.
  • ZONE: la zona de la VM.
  • VM_NAME: el nombre de la VM.

De manera alternativa, puedes especificar una lista deniedValues de VMs a las que deseas prohibirles de manera explícita que tengan una dirección IP externa. A cualquier instancia que no esté en la lista se le permitirá de manera implícita tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Luego, debes pasar el archivo con la solicitud:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project

REST

Usa la API de setOrgPolicy para definir la restricción. Las VMs que aparecen en la lista allowedValue que especificas pueden tener direcciones IP externas. De manera alternativa, puedes especificar una lista deniedValues en la que se expresen las VMs que no quieres que tengan una dirección IP externa. Cualquier instancia que no esté en la lista, está autorizada de forma implícita a tener una dirección IP externa. Solo puedes especificar allowedValues o deniedValues, pero no ambos.

Por ejemplo, la siguiente es una solicitud para establecer la restricción compute.vmExternalIpAccess en un proyecto a fin de permitir que VMs específicas tengan direcciones IP externas:

POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy

Reemplaza PROJECT_ID por el ID del proyecto para esta solicitud

El cuerpo de la solicitud contiene la política deseada de esta restricción:

{
  "policy": {
    "constraint": "constraints/compute.vmExternalIpAccess",
    "listPolicy": {
      "allowedValues": [
        "projects/PROJECT_ID/zones/ZONE/instances/VM_NAME"
      ]
    }
  }
}

Prácticas recomendadas para restringir direcciones IP externas

  • Evita usar la lista deniedValues con esta restricción. Si defines valores en la lista deniedValues, implica que solo las VMs en la lista deniedValues tienen restringido el uso de direcciones IP externas. Esto podría representar un problema de seguridad si quieres controlar con precisión qué VM pueden tener direcciones IP externas. Si deseas quitar ciertas VM de la lista allowedValues, actualiza la política existente para quitar las VM de allowedList, en lugar de colocar las VM en la lista deniedValues en una jerarquía inferior.

  • Si deseas establecer una política en una gran parte de la jerarquía de recursos, pero eximir determinados proyectos, restablece la política predeterminada mediante el método setOrgPolicy y especifica el objeto restoreDefault para permitir que todas las VM de los proyectos se asocien con direcciones IP externas. Las políticas actuales de los proyectos no se ven afectadas por la configuración predeterminada.

  • Usa esta política de organización junto con las funciones de IAM si quieres controlar mejor tu entorno. Esta política solo se aplica a las VMs, pero si deseas controlar y restringir mejor las direcciones IP externas en los dispositivos de red, puedes otorgar el rol compute.networkAdmin a las partes correspondientes.

  • Todos los servicios y productos que se ejecutan en Compute Engine dentro de la organización o proyecto con la política habilitada están sujetos a esta política de la organización. En particular, los servicios como Google Kubernetes Engine, Dataflow, Dataproc y Cloud SQL se ven afectados por esta política. Si esto genera algún problema, Google recomienda configurar otros servicios y productos en un proyecto diferente que no tenga aplicada la política de la organización, y usar Shared VPC si es necesario.

¿Qué sigue?