Configura direcciones IP internas estáticas


En esta página, se muestra cómo configurar y administrar direcciones IPv4 o IPv6 internas estáticas para tus instancias de máquinas virtuales (VM) de Compute Engine.

Si una instancia de máquina virtual (VM) requiere una dirección IP interna fija que no cambie, puedes obtener una dirección IP interna estática para esa VM mediante una de las siguientes opciones:

Para obtener información sobre cómo administrar las direcciones IP internas secundarias, consulta Rangos de IP de alias.

En Compute Engine, cada instancia de VM puede tener varias interfaces de red. Cada interfaz puede tener una dirección IP externa, una dirección IP interna principal y una o más direcciones IP internas secundarias. Para conocer las direcciones IP, consulta la documentación de Direcciones IP.

Con las direcciones IP internas estáticas, siempre puedes usar la misma dirección IP para una VM, incluso si tienes que borrar y volver a crear la VM.

Para configurar una dirección IP externa estática en lugar de una dirección IP interna, consulta Configura direcciones IP externas estáticas.

Antes de comenzar

  • Lee sobre las direcciones IP.
  • 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 un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

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

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Para obtener más información, consulta Set up authentication for a local development environment.

      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.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Si deseas obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud.

Roles obligatorios

Para obtener los permisos que necesitas para configurar y administrar direcciones IP estáticas, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para configurar 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.instances.update en la instancia de VM
  • compute.instances.updateNetworkInterface en la instancia de VM
  • compute.instances.addAccessConfig en la instancia de VM
  • compute.instances.deleteAccessConfig en la instancia de VM
  • compute.networks.list en la red
  • compute.subnetworks.use en la subred
  • compute.subnetworks.list en la subred
  • Para crear VMs, sigue estos pasos:
    • compute.instances.create en el proyecto
    • Para usar una imagen personalizada con el fin de crear la VM, sigue estos pasos: compute.images.useReadOnly en la imagen
    • Si deseas usar una instantánea para crear la VM, sigue estos pasos: compute.snapshots.useReadOnly en la instantánea
    • Para usar una plantilla de instancias a fin de crear la VM, haz lo siguiente: compute.instanceTemplates.useReadOnly en la plantilla de instancias
    • Para asignar una red heredada a la VM: compute.networks.use en el proyecto
    • Si deseas especificar una dirección IP estática para la VM; compute.addresses.use en el proyecto
    • Para asignar una dirección IP externa a la VM cuando se usa una red y punto heredado; compute.networks.useExternalIp en el proyecto
    • A fin de especificar una subred para la VM: compute.subnetworks.use en el proyecto o en la subred elegida
    • Para asignar una dirección IP externa a la VM cuando se usa una red de VPC, compute.subnetworks.useExternalIp en el proyecto o en la subred elegida
    • A fin de configurar los metadatos de la instancia de VM para la VM y los puntos, sigue estos pasos: compute.instances.setMetadata en el proyecto
    • A fin de configurar etiquetas para la VM y los puntos; compute.instances.setTags en la VM
    • Si deseas configurar etiquetas para la VM, haz lo siguiente: compute.instances.setLabels en la VM
    • A fin de configurar una cuenta de servicio para que la VM la usecompute.instances.setServiceAccount en la VM
    • Si deseas crear un disco nuevo para la VM: compute.disks.create en el proyecto
    • Para conectar un disco existente en modo de solo lectura o de lectura y escritura, haz lo siguiente: compute.disks.use en el disco
    • Para conectar un disco existente en modo de solo lectura y dos puntos, sigue estos pasos: compute.disks.useReadOnly en el disco

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.

Cómo configurar una dirección IP interna estática

Puedes reservar una dirección IP interna estática y, luego, especificar la dirección reservada cuando crees una VM. También puedes crear la VM con una dirección IP interna efímera y, luego, promover esa dirección IP efímera a una dirección IP interna estática.

Si deseas usar una dirección IP interna estática, debes tener una red de VPC para tu proyecto. Para ver las redes de VPC de tu proyecto, consulta Visualiza las redes de VPC.

Reserva una dirección IPv4 o IPv6 interna estática y asóciala con una VM específica

En este caso, debes reservar por separado una dirección IP interna estática y asígnala a un recurso:

  1. Elige una subred en la red de VPC. Para las direcciones IPv6, asegúrate de que sea una subred de pila doble.

  2. Reserva una dirección IP internadesde el rango de IP principal de la subred. En este paso, se crea un recurso de dirección IP interna con nombre que contiene esa dirección IP interna específica. Reservar la dirección IP evita que Google Cloud asigne de forma automática esa dirección como una dirección efímera.

  3. Para usar la dirección IP interna reservada, asóciala con una instancia de VM cuando crees el recurso de VM.

Especifica una dirección IPv4 o IPv6 interna efímera para una VM y, luego, promueve la dirección

En este caso, debes ascender una dirección IPv4 o IPv6 interna efímera que aún esté asociada a una VM:

  1. Elige una subred en la red de VPC. Para las direcciones IPv6, asegúrate de que sea una subred de pila doble.

  2. Crea una instancia de VM con una dirección IPv4 o IPv6 efímera asignada de forma automática o una dirección IPv4 específica.

  3. Promueve la dirección IP interna efímera a una dirección estática.

Los dos métodos se describen en la figura 1.

Estados de reserva de direcciones IP internas.
Figura 1. Estados de reserva de direcciones IP internas (haz clic para ampliar).

Ve las direcciones IP internas estáticas disponibles

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

Cómo se asignan las direcciones IP internas

A las interfaces de red para una VM se les asignan direcciones IP de la subred a la que están conectadas. Cada interfaz de red tiene una dirección IPv4 interna principal, que se asigna desde el rango IPv4 principal de la subred. Si la VM está conectada a una subred de pila doble con un rango de IPv6 interno, puedes asignar una dirección IPv6 interna a cada interfaz de red.

Las direcciones IPv4 internas se pueden asignar de las siguientes maneras:

  • Compute Engine asigna de forma automática una dirección IPv4 única del rango de subred IPv4 principal.
  • Puedes asignar una dirección IPv4 interna específica cuando creas una instancia de VM o reservar una dirección IPv4 interna estática para tu proyecto y asignarle esa interfaz de red VM.

Las direcciones IPv6 internas se pueden asignar de las siguientes maneras:

Usa direcciones IP internas estáticas reservadas cuando crees recursos

Después de reservar una dirección IP interna estática, puedes asignar la dirección reservada cuando creas una VM o un balanceador de cargas interno.

En los siguientes procedimientos, se describe cómo usar direcciones IP internas estáticas cuando se crean recursos:

Crea una instancia de VM con una dirección IPv4 o IPv6 interna reservada

Cuando creas una VM que está conectada a una subred de doble pila con un rango de IPv6 interno sin especificar ninguna dirección IPv6 interna estática, Compute Engine asigna automáticamente a la VM una dirección IPv6 interna efímera del rango IPv6 de la subred.

Console

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

    Ir a Crea una instancia de VM

  2. Expande la sección Opciones avanzadas.

  3. Expande la sección Herramientas de redes.

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

    1. Elige una red y una subred.
    2. Elige una dirección IPv4 interna reservada de la lista Dirección IPv4 principal principal.

    Como alternativa, elige Reservar dirección IP interna estática y reserva una dirección IPv4 interna estática nueva.

  5. Para asignar una dirección IPv6 interna, haz lo siguiente:

    1. Elige una red que contenga una subred IPv6.
    2. Elige una subred de pila doble de la lista Subred. La subred debe tener el tipo de acceso IPv6 INTERNAL.
    3. En Tipo de pila IP, elige IPv4 e IPv6 (pila doble).
    4. Elige una dirección IPv6 interna reservada de la lista Dirección IPv6 principal principal.

    Como alternativa, elige Reservar dirección IPv6 interna estática y reserva una dirección IPv6 interna estática nueva.

  6. Para terminar de modificar la interfaz de red, haz clic en Listo.

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

  8. Haz clic en Crear.

gcloud

  • Usa el comando instances create a fin de crear una instancia de VM con una dirección IPv4 interna reservada y usa la marca --private-network-ip para especificar la dirección IP:

    gcloud compute instances create VM_NAME
        --private-network-ip IP_ADDRESS
    

    Reemplaza lo siguiente:

    • VM_NAME: el nombre de la imagen que deseas crear
    • IP_ADDRESS: la dirección IP que deseas asignar.

    Si usas una red de modo de subred personalizado, también debes especificar la subred con el parámetro --subnet SUBNET.

  • Para crear una instancia con una dirección IPv6 interna reservada, usa la marca --internal-ipv6-address a fin de especificar la dirección IP:

    gcloud compute instances create VM_NAME
        --subnet SUBNETWORK
        --stack-type IPV4_IPV6
        --internal-ipv6-address INTERNAL_IPV6_ADDRESS
        --zone ZONE
    

    Reemplaza lo siguiente:

    • VM_NAME: el nombre de la imagen que deseas crear
    • SUBNETWORK: la subred para esta dirección IPv6 interna.
    • INTERNAL_IPV6_ADDRESS: la dirección IPv6 /96, el nombre de la dirección IP o el URI del recurso de dirección. La dirección IP debe reservarse antes de poder usarla.
    • ZONE: La zona para la VM.

REST

Para crear una instancia de VM con una dirección IP interna estática, usa el método instances.insert.

  • Para las direcciones IPv4 internas, proporciona de forma explícita la propiedad networkInterfaces[].networkIP con la dirección IPv4 interna que deseas asignar a la VM.

    Por ejemplo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "networkIP": "IPV4_ADDRESS"
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto en el que se creará la VM.
    • ZONE: la zona en la que se creará la VM.
    • VM_NAME: el nombre de la máquina virtual.
    • IPV4_ADDRESS: la dirección IPv4 interna que se asignará a la VM.
  • En las direcciones IPv6 internas, especifica de forma explícita los valores para las siguientes propiedades:

    • networkInterfaces[].stackType
    • networkInterfaces[].ipv6Address
    • networkInterfaces[].internalIpv6PrefixLength
    • networkInterfaces[].ipv6AccessType

    Por ejemplo:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "VM_NAME",
    "machineType": "zones/us-central1-f/machineTypes/e2-micro",
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "network": "global/networks/default",
      "stackType": "IPV4_IPV6"
      "ipv6Address": ""IPV6_ADDRESS"",
      "internalIpv6PrefixLength": 96
      "ipv6AccessType": INTERNAL,
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
    }

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto en el que se creará la VM.
    • ZONE: la zona en la que se creará la VM.
    • VM_NAME: el nombre de la VM.
    • IPV6_ADDRESS: la dirección IPv6 que se asignará a la VM.

Si borras una instancia de VM con una dirección IP efímera, la dirección volverá al grupo de direcciones sin asignar. Si necesitas una dirección IP interna para conservar más allá de la vida útil de la instancia, puedes reservar una dirección IP interna estática.

Asigna una dirección interna estática a la interfaz de red secundaria de una VM

Cuando creas una instancia de VM con varias interfaces de red, puedes usar una dirección IPv4 o IPv6 interna estática reservada para las interfaces de red primaria y secundaria.

Si quieres usar una dirección IPv4 o IPv6 interna estática para una interfaz de red secundaria, consulta Crea instancias de VM con interfaces de red múltiples.

Cambia o asigna una dirección IPv6 interna a una VM existente.

Puedes cambiar o asignar una dirección IPv6 interna para una instancia de VM existente.

Si la instancia ya tiene una dirección IPv6 interna asignada, primero debes anular la asignación de esa dirección. Luego, asigna una dirección nueva a la instancia mediante la interfaz de red de la instancia.

Para cambiar o asignar una dirección IPv6 interna estática a una instancia de VM existente, completa los siguientes pasos.

Console

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

    Ir a Instancias de VM

  3. Haz clic en el nombre de la instancia cuya dirección IPv6 interna deseas cambiar.
  4. En la página de detalles de la instancia, completa los siguientes pasos:

    1. Haz clic en Editar.
    2. Expande Interfaces de red.
    3. En la lista Dirección IPv6 interna principal, elige Dirección asignada automáticamente (/96) o una dirección IPv6 interna estática reservada.
    4. Haz clic en Listo.
  5. Haz clic en Guardar.

gcloud

Usa el comando compute instances network-interfaces update

gcloud compute instances network-interfaces update VM_NAME \
    --network-interface NIC \
    --ipv6-network-tier PREMIUM \
    --stack-type IPV4_IPV6 \
    --internal-ipv6-address INTERNAL_IPV6_ADDRESS \
    --zone ZONE

Reemplaza lo siguiente:

  • VM_NAME: el nombre de la imagen que deseas crear
  • NIC: el nombre de la interfaz de red que se actualizará.
  • INTERNAL_IPV6_ADDRESS: la dirección IPv6 interna /96 que se asignará a la interfaz, el nombre de la dirección IP o el URI del recurso de dirección.
  • ZONE: La zona para la VM.

REST

Usa el método instances.update. Actualiza la propiedad networkInterfaces[].ipv6Address con la dirección IPv6 interna que deseas asignar.

Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
  {
    ...
    "networkInterfaces": [{
      "accessConfigs": [{
        "type": "ONE_TO_ONE_NAT",
        "name": "External NAT",
      }],
      "stackType": "IPV4_IPV6"
      "ipv6Address": "IPV6_ADDRESS",
      "internalIpv6PrefixLength": 96
      "subnetwork": "regions/REGION/subnetworks/SUBNETWORK",
    }],
    "disks": [{
      "autoDelete": "true",
      "boot": "true",
      "type": "PERSISTENT",
      "initializeParams": {
          "sourceImage": "projects/debian-cloud/global/images/v20150818"
      }
    }]
  }
 

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
  • ZONE: la zona en la que se creará la VM.
  • VM_NAME: el nombre de la VM.
  • IPV6_ADDRESS: la dirección IPv6 que se asignará a la VM.

    Si especificas el URI del recurso de dirección IPv6 interna o un rango de direcciones IPv6 como el valor de IPV6_ADDRESS, debes dejar el valor de internalIpv6PrefixLength en blanco.

Administra direcciones IP internas estáticas

Los siguientes procedimientos te permiten administrar direcciones IP internas estáticas para tus VMs:

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.

Anula la asignación de una dirección IPv6 interna estática

Puedes anular la asignación de una dirección IPv6 interna estática de una instancia de VM de pila doble si actualizas el tipo de pila para la interfaz de red de la instancia o si borras la instancia a la que pertenece la dirección está asignada.

Cuando anulas la asignación de una dirección IPv6 interna, el sistema la quita del recurso, pero mantiene la dirección reservada para tu proyecto. Luego, puedes reasignar la dirección a otro recurso.

Para anular la asignación de una dirección IPv6 interna estática de una instancia de VM, completa los siguientes pasos.

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 instancia a cuya dirección IPv6 interna deseas anular la asignación.
  3. En la página de detalles de la instancia, completa los siguientes pasos:

    1. Haz clic en Editar.
    2. Expande Interfaces de red.
    3. En Tipo de pila de IP, elige IPv4 (pila única).
    4. Haz clic en Listo.
  4. Haz clic en Guardar.

gcloud

Usa el comando compute instances network-interfaces update con la marca --stack-type establecida como IPV4_ONLY:

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

Reemplaza lo siguiente:

  • VM_NAME: Es el nombre de la VM cuya interfaz de red deseas actualizar.
  • NIC: el nombre de la interfaz de red que se actualizará.
  • ZONE: La zona para la VM.

Comprueba que tu dirección IPv6 interna estática ahora esté disponible y marcada como RESERVED en lugar de IN_USE:

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

REST

Actualiza el tipo de pila de instancias de la interfaz de red a la que se adjunta la dirección IPv6 interna:

  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"
        ...
        }]
    }
    

    Reemplaza lo siguiente:

    • PROJECT_ID: el ID del proyecto en el que se encuentra la VM.
    • ZONE: la zona en la que se creará la VM.
    • VM_NAME: el nombre de la VM.

Libera una dirección IP interna estática

Si ya no necesitas una dirección IPv4 o IPv6 interna estática, puedes borrar el recurso de dirección IP para liberarla. Borrar una VM no libera de forma automática una dirección IP externa estática. Debes liberar las direcciones IP externas estáticas de forma manual cuando ya no las necesites.

Para liberar una dirección IP interna estática, consulta Libera una dirección IPv4 o IPv6 interna estática en la documentación de VPC.

¿Qué sigue?