Reserva una dirección IP interna estática

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. Las reglas de reenvío pueden tener direcciones IP externas para el balanceo de cargas externo o direcciones internas para el balanceo de cargas interno. Para obtener información sobre las direcciones IP, consulta la documentación Direcciones IP.

Las IP internas estáticas proporcionan la habilidad de reservar direcciones IP internas del rango de IP configurado en la subred y, luego, asignan esas direcciones 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 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 externa estática.

Antes de comenzar

Permisos

Para reservar y administrar direcciones IP internas estáticas, se te debe otorgar la función compute.networkAdmin. Para obtener más información sobre las funciones, consulta Funciones de IAM de Compute Engine.

Restricciones

  • No puedes cambiar la dirección IP 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. Sin embargo, puedes promover la dirección IP interna efímera de un recurso a una 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.

  • No hay forma de saber si una dirección IP es estática o efímera después de asignarla a un recurso, excepto si se compara la dirección IP con la lista de las direcciones IP internas estáticas reservadas para ese proyecto. Usa el subcomando addresses list a fin de ver una lista de las direcciones IP internas estáticas disponibles para el proyecto.

  • 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.

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

Puedes reservar una dirección IP interna estática antes de crear el recurso asociado, o puedes crear el recurso 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. Consulta Cómo usar redes VPC para obtener información sobre cómo crear la red de VPC.

Reserva una dirección específica y, luego, asóciala con un recurso específico

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

  1. Crea una subred desde la red de VPC.

  2. Reserva una dirección IP interna desde el rango de IP principal de la subred. En este paso, se crea un recurso de dirección IP interna que contiene esa dirección IP interna específica. Este paso también 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 o un balanceador de cargas interno cuando crees la VM o el recurso del balanceador de cargas.

Especifica una dirección IP interna efímera para un recurso y promueve la dirección

En este caso, debes promover una dirección IP interna efímera que aún esté asociada a un recurso para una dirección IP interna estática.

  1. Crea una subred.

  2. Crea una instancia de VM o un balanceador de cargas interno con una dirección IP efímera asignada de forma automática o una dirección IP elegida de forma específica.

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

Los dos métodos se describen en el siguiente diagrama.

Reserva de una IP interna.

Reserva una nueva dirección IP interna estática

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

Para reservar una dirección IP interna estática nueva, ya sea una asignada de forma automática o una dirección sin usar de una subred existente, puedes usar Google Cloud Console, la herramienta de gcloud o la API.

Console

  1. En Cloud Console, ve a la página Redes de VPC.

    Ir a la página Redes de VPC

  2. Identifica la red de VPC que deseas asociar con la instancia.
  3. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  4. Selecciona tu proyecto.
  5. Haz clic en Crea una instancia y especifica un nombre para la instancia.
  6. Selecciona la Región en la que se encuentra la red de VPC.
  7. Selecciona una Zona dentro de esa región.
  8. Completa los otros campos de la instancia.
  9. Expande el menú Administración, seguridad, discos, Herramientas de redes, instancia única.
  10. Haz clic en Herramientas de redes.
  11. Haz clic en Interfaces de Herramientas de redes para editar.
  12. En Red, selecciona la red de VPC que creaste.
  13. Elige la subred.
  14. En IP interna principal, selecciona Dirección IP estática de reserva.
  15. Completa el resto de las opciones de las Herramientas de red.
  16. Haz clic en Listo.
  17. Completa los requisitos de la instancia.
  18. Haz clic en Crear.

gcloud

Ejecuta el comando compute addresses create mediante la herramienta de gcloud:

gcloud compute addresses create ADDRESS_NAME [ADDRESS_NAME..] \
    --region REGION --subnet SUBNETWORK \
    --addresses IP_ADDRESS

Reemplaza los siguientes elementos:

  • ADDRESS_NAME: Son los nombres que deseas para una o más de las direcciones que se crearán.
  • 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 asignará una de forma automática desde la subred.

Por ejemplo, para reservar una dirección IP interna asignada de forma automática desde una subred, ejecuta este comando:

gcloud compute addresses create example-address-1 \
    --region us-central1 --subnet subnet-1

Para reservar una dirección IP interna específica desde una subred, ejecuta este comando:

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

Puedes crear varias direcciones si usas más de un nombre de dirección. Sin embargo, todas las direcciones se reservarán en la misma subred. Por ejemplo:

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

API

Realiza una llamada al método addresses.insert.

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

El cuerpo de la solicitud debe incluir el addressType que debe ser INTERNAL, el name de la dirección y la subnetwork a la que pertenece la dirección IP. Puedes permitir que el sistema asigne de forma automática una dirección IP o especificar la address para una dirección IP específica. La dirección IP debe pertenecer al rango de direcciones IP principal de la subred.

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

Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet",
  "address": "10.128.0.12"
}

Promueve una dirección IP interna efímera en uso a una dirección estática

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

Antes de reservar una dirección IP existente, necesitarás el valor de la dirección IP que deseas promover. Realiza una solicitud describe al recurso para obtener la dirección IP. Por ejemplo, si promocionas una dirección IP que una instancia de VM use en la actualidad, usa el siguiente comando:

gcloud compute instances describe INSTANCE_NAME --zone ZONE | grep "networkIP"

La herramienta de gcloud muestra el valor networkIP, que es la IP interna que usa el recurso. Por ejemplo:

networkIP: 10.240.0.2

Luego, promueve la dirección.

Console

Para promover una dirección IP interna efímera a una dirección IP estática en Console, sigue estos pasos:

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona tu proyecto.
  3. Selecciona la instancia que deseas cambiar.
  4. Haz clic en la herramienta Editar en la parte superior de la página.
  5. Haz clic en la herramienta de edición en Interfaces de red.
  6. En Tipo de IP interna, selecciona Estática.
  7. Completa la información de una dirección IP estática.
  8. Haz clic en Listo para guardar los cambios.
  9. Haz clic en Guardar para actualizar tu instancia.

gcloud

Para promover una o más direcciones IP existentes, usa el comando compute addresses create y proporciona la marca --addresses con las IP internas explícitas que desees promover:

gcloud compute addresses create ADDRESS_NAME_1 [ADDRESS_NAME_2..] \
    --addresses IP_ADDRESS_1,[IP_ADDRESS_2,..] \
    --region REGION \
    --subnet SUBNETWORK

Reemplaza los siguientes elementos:

  • ADDRESS_NAME: Son los nombres que desees para la dirección. Declara los nombres en el mismo orden en el que declararás las direcciones IP. En este caso, ADDRESS_NAME_1 corresponde a IP_ADDRESS_1, y ADDRESS_NAME_2 a IP_ADDRESS_2.
  • IP_ADDRESS_1,[IP_ADDRESS_2,...]: Son las direcciones IP que se deben promover. Por ejemplo, 10.128.1.9.
  • REGION: Es la región en la que se reservará esta dirección.
  • SUBNETWORK: Es la subred de esta solicitud.

Por ejemplo:

gcloud compute addresses create example-address-1 example-address-2 \
    --addresses 10.128.4.90,10.128.0.232 \
    --region us-central1 \
    --subnet subnet-1

API

Realiza una llamada al método addresses.insert.

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

El cuerpo de la solicitud debe incluir el addressType que debe ser INTERNAL, el name de la dirección, la address que se promoverá y la subnetwork a la que pertenece la dirección IP:

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

Por ejemplo:

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-central1/addresses

{
  "name": "example-address-1",
  "addressType": "INTERNAL",
  "address": "10.128.0.2",
  "subnetwork": "regions/us-central1/subnetworks/my-custom-subnet"
}

Crea una instancia de VM con una dirección IP interna específica

Puedes elegir una dirección IP interna específica para asignar a una instancia cuando la creas. La dirección IP debe ser una dirección IP válida de la subred de la instancia y la dirección IP no debe estar en uso. La dirección IP permanece adjunta a la instancia hasta que borres la instancia, lo que libera la dirección IP de nuevo al grupo. Si detienes y reinicias la instancia, esta conserva la misma dirección IP interna.

Si no especificas una dirección IP, Compute Engine asigna de forma automática una desde la subred o la red. Puedes especificar una dirección IP interna mediante Google Cloud Console, la herramienta de gcloud o la API de Compute Engine.

Console

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

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. En la página Crear una instancia nueva, completa las propiedades que quieras para tu instancia.
  4. Expande la sección Administración, seguridad, discos, herramientas de redes, instancia única.
  5. Haz clic en Herramientas de redes.
  6. En Interfaces de redes, haz clic en la interfaz de red predeterminada para editarla.
  7. De forma opcional, en Red y Subred, selecciona la red y la subred que deseas usar.
  8. En IP interna principal, selecciona una opción de dirección IP interna de la lista desplegable.
  9. Haz clic en Listo para terminar de modificar la interfaz de red.
  10. Haz clic en Crear para crear la instancia.

gcloud

Especifica una dirección IP válida cuando crees la instancia:

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

Reemplaza los siguientes elementos:

  • INSTANCE_NAME: El nombre de la instancia 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.

API

Si quieres crear una instancia con una dirección IP interna estática, debes usar la API de Compute Engine. Realiza una solicitud a fin de crear una instancia nueva como harías normalmente, pero proporciona la propiedad networkInterfaces[].networkIP de manera explícita con la IP interna que quieres usar. Por ejemplo:

{
  "name": "INSTANCE_NAME",
  "machineType": "zones/us-central1-f/machineTypes/e2-micro",
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT",
     }],
    "network": "global/networks/default",
    "networkIP": "IP_ADDRESS"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "initializeParams": {
        "sourceImage": "projects/debian-cloud/global/images/v20150818"
     }
   }]
 }

Reemplaza los siguientes elementos:

  • INSTANCE_NAME: El nombre de la instancia.
  • IP_ADDRESS: La dirección IP que se asignará a la instancia.

Si borras una instancia con una dirección IP especificada, la dirección vuelve al grupo de direcciones no asignadas. 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.

Crea un balanceador de cargas interno con una dirección IP interna estática

Para crear un balanceador de cargas interno que use una dirección IP interna estática, sigue las instrucciones en los siguientes vínculos:

Usa una dirección IP interna estática para una interfaz de red secundaria

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

Para asignar una dirección IP interna estática a una interfaz de red secundaria, sigue estos pasos:

  1. Primero, reserva una dirección IP interna estática. Por ejemplo, en el siguiente ejemplo, se reserva una dirección llamada my-second-ip-address en la región us-central1. Debido a que el comando omite la marca --addresses, Compute Engine reserva una dirección IP aleatoria:

    gcloud compute addresses create my-second-ip-address \
        --region us-central1 --subnet subnet-b
  2. Usa la dirección como la dirección IP para la interfaz secundaria cuando crees una instancia de VM. Por ejemplo:

    gcloud compute instances create my-instance \
        --image-family IMAGE_FAMILY \
        --image-project IMAGE_PROJECT \
        --network-interface subnet=subnet-a,no-address \
        --network-interface \
          subnet=subnet-b,private-network-ip=my-second-ip-address,no-address

Usa una IP interna estática con una VPC compartida

Puedes crear una 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 IP disponibles en la subred compartida seleccionada de la red de VPC compartida. Consulta estas páginas para obtener más información sobre este caso práctico:

Borra una dirección IP interna estática

Puedes borrar una dirección IP interna estática si ya no la necesitas. Puedes borrar una dirección, ya sea que otro recurso la use o no. Si un recurso usa la dirección, permanece adjunta al recurso hasta que este se borra. En ese caso, la dirección se devuelve al grupo de direcciones disponibles para otros proyectos.

Console

  1. Ve a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Selecciona tu proyecto.
  3. Selecciona la instancia de VM de la lista de proyectos.
  4. Selecciona la herramienta Editar en la parte superior de la página.
  5. Haz clic en la herramienta de edición en Interfaces de red.
  6. Cambia el Tipo de IP interna de Estática a Efímera.
  7. Selecciona Liberar para liberar la dirección IP estática.
  8. Haz clic en Listo para guardar los cambios.

    La instancia usará la dirección IP estática hasta que se borre o reinicie la instancia. Luego de eso, la dirección IP se devuelve al grupo predeterminado de la subred de direcciones IP internas disponibles.

gcloud

Ejecuta el comando compute addresses delete mediante la herramienta de gcloud:

gcloud compute addresses delete ADDRESS_NAME \
    --region REGION

Reemplaza los siguientes elementos:

  • 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

Realiza una llamada al método addresses.delete.

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

Por ejemplo, para borrar una dirección en la región us-west1, ejecuta el siguiente comando:

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

Próximos pasos