Puedes asignar direcciones IP externas estáticas a tus instancias de máquina virtual y Bare Metal. También puedes cambiar, enumerar y liberar direcciones IP estáticas de tus instancias. Para reservar una dirección IP externa estática, consulta el artículo Reservar una dirección IP externa estática.
Las direcciones IP externas pueden ser estáticas o efímeras. Si una instancia requiere una dirección IP externa fija que no cambie, haz lo siguiente:
- Obtén una dirección IP externa estática. Puedes reservar nuevas direcciones IP externas o promover direcciones IP externas efímeras.
- Asigna la dirección IP reservada a una instancia ya creada o asígnala al crear una instancia.
Si necesitas una dirección IP estática en tu red interna de Compute Engine, consulta Reservar una dirección IP interna estática.
Para obtener información sobre cómo reservar una dirección IP externa estática o crear una dirección IP externa global, consulta Reservar una dirección IP externa estática.
Antes de empezar
- Consulta información sobre las direcciones IP.
- Consulta las cuotas y los límites de las direcciones IP externas estáticas.
- Consulta los precios de las direcciones IP externas.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
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.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para configurar y gestionar direcciones IP estáticas, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en tu proyecto:
-
Para crear y actualizar instancias, sigue estos pasos:
Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para configurar y gestionar direcciones IP estáticas. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para configurar y gestionar direcciones IP estáticas, se necesitan los siguientes permisos:
-
compute.instances.update
en la instancia -
compute.instances.updateNetworkInterface
en la instancia -
compute.instances.addAccessConfig
en la instancia -
compute.instances.deleteAccessConfig
en la instancia -
compute.networks.list
en la red -
compute.subnetworks.use
en la subred -
compute.subnetworks.list
en la subred -
Para crear instancias, sigue estos pasos:
compute.instances.create
en el proyecto- Para usar una imagen personalizada para crear la VM, haz clic en
compute.images.useReadOnly
en la imagen. - Para usar una captura para crear la VM,
compute.snapshots.useReadOnly
en la captura - Para usar una plantilla de instancia para crear la VM, haz clic en
compute.instanceTemplates.useReadOnly
en la plantilla de instancia. - Para asignar una red antigua a la VM, haz lo siguiente:
compute.networks.use
en el proyecto - Para especificar una dirección IP estática para la máquina virtual,
compute.addresses.use
en el proyecto - Para asignar una dirección IP externa a la VM cuando se usa una red antigua, haz lo siguiente:
compute.networks.useExternalIp
en el proyecto - Para 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. - Para definir los metadatos de la instancia de VM de la VM:
compute.instances.setMetadata
en el proyecto, - Para definir etiquetas en la máquina virtual,
compute.instances.setTags
en la máquina virtual - Para definir etiquetas de la VM,
compute.instances.setLabels
en la VM - Para definir una cuenta de servicio que use la VM, haz lo siguiente en la VM:
compute.instances.setServiceAccount
- Para crear un disco para la VM
compute.disks.create
del proyecto, sigue estos pasos: - Para adjuntar un disco en modo de solo lectura o de lectura y escritura, haz lo siguiente:
compute.disks.use
en el disco - Para adjuntar un disco en modo de solo lectura,
compute.disks.useReadOnly
en el disco.
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Limitaciones
Solo un recurso a la vez puede usar una dirección IP externa estática.
No hay forma de comprobar si una dirección IP es estática o efímera después de que se haya asignado 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
gcloud compute addresses list
para ver una lista de direcciones IP externas estáticas disponibles para el proyecto.Cada VM puede tener varias interfaces de red, y cada interfaz puede tener asignadas las siguientes direcciones IP según su tipo de pila:
- Interfaces solo IPv4:
- Una dirección IPv4 interna (obligatoria)
- Una dirección IPv4 externa (opcional)
- Interfaces de doble pila (IPv4 e IPv6):
- Una dirección IPv4 interna (obligatoria)
- Una dirección IPv4 externa (opcional)
- Un intervalo de direcciones IPv6, ya sea interno o externo, pero no ambos (obligatorio)
/96
- Interfaces solo IPv6:
- Un intervalo de direcciones IPv6, ya sea interno o externo, pero no ambos (obligatorio)
/96
- Un intervalo de direcciones IPv6, ya sea interno o externo, pero no ambos (obligatorio)
- Interfaces solo IPv4:
No puedes desasignar ni cambiar la dirección IPv6 externa de una VM con una interfaz de red solo IPv6. Sin embargo, puedes convertir una dirección IP externa efímera de un recurso en una dirección IP externa estática para que la dirección siga reservada incluso después de que se elimine el recurso.
No puedes cambiar el nombre de una dirección IP estática.
Nota: Las interfaces de red pueden recibir tráfico de varias reglas de reenvío, que pueden servir otras direcciones IP externas. Cualquier número de direcciones IP externas puede hacer referencia a una interfaz de red a través de estas reglas de reenvío, pero a cada interfaz de red solo se le puede asignar una dirección IPv4 externa y un intervalo de direcciones IPv6 externas
/96
.Para obtener más información sobre el balanceo de carga y las reglas de reenvío, consulta la documentación sobre el balanceo de carga.
Ver las direcciones IP externas estáticas disponibles
Para ver una lista de las direcciones IP externas estáticas que has reservado para tu proyecto, sigue estos pasos.
Consola
En la Google Cloud consola, ve a la página Direcciones IP.
Haz clic en Direcciones IP externas.
gcloud
Usa el comando
gcloud compute addresses list
:Para obtener una lista de todas las direcciones IP, usa el siguiente comando:
gcloud compute addresses list
Para ver una lista con todas las direcciones IP globales, usa el siguiente comando:
gcloud compute addresses list --global
Para obtener una lista con todas las direcciones IP regionales de una región determinada, usa el siguiente comando:
gcloud compute addresses list \ --regions=REGION
Sustituye
REGION
por la región de la que quieras obtener la lista de direcciones. Puede enumerar las direcciones de varias regiones especificando los nombres de las regiones separados por comas:gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
API
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
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de esta solicitudREGION
: el nombre de la región de esta solicitud
Para obtener una lista de todas las direcciones de todas las regiones, llama al método
addresses.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
Haz los cambios siguientes:
PROJECT_ID
: el ID de proyecto de esta solicitud
Go
Java
Python
Configurar direcciones IP externas estáticas
En las siguientes secciones se describe cómo configurar direcciones IP externas estáticas para sus instancias.
Crear una instancia que use una dirección IP externa estática
Una vez que hayas reservado una dirección IP externa estática, puedes asignarla a una instancia.
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
Para asignar una dirección IP externa estática a la instancia, haz lo siguiente:
En el menú de navegación, haga clic en Redes.
En la sección Interfaces de red, especifica las interfaces de red que quieras usar en la instancia con las siguientes opciones:
Para añadir una interfaz de red, haz clic en Añadir interfaz de red. A continuación, en la lista Red, selecciona una red.
Para eliminar una interfaz de red, haz clic en
Eliminar.
Selecciona una de las opciones siguientes:
Para asignar una dirección IPv4 externa estática, sigue estos pasos:
- Despliega una interfaz de red.
- Selecciona la dirección IP de la lista Dirección IPv4 externa.
Para asignar una dirección IPv6 externa estática, sigue estos pasos:
- Expande una interfaz de red que contenga una subred con un intervalo de direcciones IPv6 externas.
- Seleccione esa subred en la lista Subred.
- En Tipo de pila de IP, selecciona IPv4 e IPv6 (pila dual) o IPv6 (pila única).
- Selecciona la dirección IPv6 externa recién reservada en la lista Dirección IPv6 externa. También puedes seleccionar Reservar dirección IPv6 externa estática y reservar una nueva dirección IPv6 externa estática.
- En Nivel de servicio de red, seleccione Premium.
Para terminar de modificar la interfaz de red, haz clic en Hecho.
Continúa con el proceso de creación de la instancia.
gcloud
Puedes crear una instancia y asignarle una dirección IP externa regional estática que ya hayas reservado.
Para asignar una dirección IPv4 externa estática, sigue estos pasos:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --address=IPV4_ADDRESS
Para asignar una dirección IPv6 externa estática, sigue estos pasos:
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --subnet=SUBNET \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUM
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia de computación.ZONE
: la zona en la que se creará la instanciaIPV4_ADDRESS
: la dirección IPv4 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.SUBNET
: una subred que contiene direcciones IPv6 externasSTACK_TYPE
: el tipo de pila de la instancia, ya seaIPV4_IPV6
(pila dual) oIPV6_ONLY
IPV6_ADDRESS
: la dirección IPv6 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.
Terraform
Puede usar el recurso
google_compute_instance
para asignar una dirección IP externa.REST
Para asignar una dirección IPv4 externa estática a una instancia de computación nueva, sigue estos pasos:
En tu solicitud para crear una instancia, proporciona explícitamente la propiedad
networkInterfaces[].accessConfigs[].natIP
y la dirección IPv4 externa que quieras usar. Por ejemplo:{ "name": "INSTANCE_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" } }] }
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia de computaciónZONE
: la zona en la que se creará la instanciaMACHINE_TYPE
: opcional: URL completa o parcial del recurso de tipo de máquina que se usará al crear la instancia, con el siguiente formato:zones/ZONE/machineTypes/MACHINE_TYPE
IPV4_ADDRESS
: la dirección IPv4 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.SOURCE_IMAGE
: una versión específica de una imagen pública, comoprojects/debian-cloud/global/images/debian-10-buster-v20200309
, o una familia de imágenes, comoprojects/debian-cloud/global/images/family/debian-10
.
Para asignar una dirección IPv6 externa estática a una instancia nueva, haz lo siguiente:
En tu solicitud para crear una instancia, proporciona explícitamente la propiedad
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
y la dirección IPv6 externa que quieras usar. Por ejemplo:{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "ipv6AccessConfigs": [{ "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "STACK_TYPE", "subnetwork":"SUBNETWORK" }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia de computaciónZONE
: la zona en la que se creará la instanciaMACHINE_TYPE
: opcional. URL completa o parcial del recurso de tipo de máquina que se usará al crear la instancia, con el siguiente formato:zones/ZONE/machineTypes/MACHINE_TYPE
IPV6_ADDRESS
: la dirección IPv6 que se asignará a la instancia. Usa la dirección IP externa estática reservada, no el nombre de la dirección.STACK_TYPE
: el tipo de pila de la instancia, que puede serIPV4_IPV6
(pila dual) oIPV6_ONLY
SUBNET
: una subred que contiene direcciones IPv6 externasSOURCE_IMAGE
: una versión específica de una imagen pública, como"projects/debian-cloud/global/images/debian-10-buster-v20200309"
, o una familia de imágenes, como"projects/debian-cloud/global/images/family/debian-10"
.
Go
Java
Python
Cambiar o asignar una dirección IP externa a una instancia ya creada
Puedes cambiar o asignar una dirección IP externa, ya sea efímera o estática, a una instancia de solo IPv4 o de pila dual que ya exista. Este procedimiento no se admite en instancias que solo usen IPv6.
Una instancia de proceso puede tener varias interfaces. Una interfaz de pila única puede tener una dirección IP externa. Una interfaz de doble pila puede tener una dirección IPv4 externa y una dirección IPv6 externa. Si la instancia ya tiene una dirección IP externa, primero debes quitarla. Después, puedes asignar una nueva dirección IP externa a la instancia.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haga clic en el nombre de la instancia a la que quiera asignar una IP externa. Se muestra la página Detalles de la instancia.
En la página Detalles de la instancia, sigue estos pasos:
- Haz clic en Editar.
- Despliega Interfaces de red.
- Selecciona la dirección IP externa que quieras asignar a la instancia.
Si la instancia es solo IPv4 y quieres asignarle una dirección IPv6, primero debes cambiar el tipo de pila a doble pila.
- En Dirección IPv4 externa, selecciona Efímera o una dirección IPv4 externa estática.
- En Dirección IPv6 externa, selecciona Efímera (automática), Efímera (personalizada) o una dirección IPv6 externa estática.
- Haz clic en Listo.
Haz clic en Guardar.
gcloud
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 esté usando otro recurso. Si es necesario, sigue las instrucciones para reservar una dirección IP externa estática nueva o para desasignar una dirección IP externa estática.
Si tienes intención de usar una dirección IP externa efímera, puedes omitir este paso y Compute Engine asignará aleatoriamente una dirección IP externa efímera.
Quita cualquier asignación de dirección IP, tal como se describe en el artículo Anular la asignación de una dirección IP externa estática.
Asigna la nueva dirección IP externa.
Para asignar una dirección IPv4, usa el subcomando
instances add-access-config
:Nota: No sustituyasIP_ADDRESS
por el nombre de la dirección IP estática. Debes usar la dirección IP real.gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.ACCESS_CONFIG_NAME
: el nombre que se le asignará a esta configuración de acceso. Asegúrate de incluir el nombre completo entre comillas.IP_ADDRESS
: la dirección IP que se va a añadir.
Si quieres que Compute Engine asigne una dirección IP externa efímera en lugar de usar una estática, omite la propiedad
--address IP_ADDRESS
:gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
Para cambiar una instancia a doble pila y asignarle una dirección IPv6, usa el subcomando
instance network-interfaces update
:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.NIC
: el nombre de la interfaz de red.STACK_TYPE
: el tipo de pila de la instancia, que debe serIPV4_IPV6
. No puedes cambiar el tipo de pila a IPV6_ONLY.IPV6_ADDRESS
: la dirección IPv6 que se asignará a la instancia. Especifica la primera dirección IPv6 del intervalo/96
.ZONE
: la zona de la instancia.
REST
Puedes cambiar la dirección IPv4 o IPv6 externa de una instancia añadiendo una nueva configuración de acceso a esa instancia.
Quita cualquier asignación de dirección IP, tal como se describe en el artículo Anular la asignación de una dirección IP externa estática.
Elimina la configuración de acceso actual haciendo una solicitud
POST
al métodoinstances.deleteAccessConfig
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
Añade una nueva configuración de acceso a la interfaz de red de la instancia enviando una solicitud
POST
al métodoinstances.addAccessConfig
.En el caso de las direcciones IPv4, haz la siguiente solicitud:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }
En el caso de las direcciones IPv6, actualiza el
stackType
de la interfaz de red aIPV4_IPV6
y actualiza la propiedadnetworkInterfaces[].ipv6AccessConfigs[].externalIpv6
y la dirección IPv6 externa que quieras usar.Para obtener más información, consulta Asignar una dirección IP externa estática a una instancia nueva.
Go
Java
Python
Restringir las direcciones IP externas a instancias específicas
En el caso de algunas cargas de trabajo, es posible que tengas requisitos esenciales, como restricciones de seguridad y de red. Por ejemplo, puede restringir las direcciones IP externas para que solo puedan usarlas determinadas instancias de proceso. Esta opción puede ayudar a evitar la filtración externa de datos o a mantener el aislamiento de la red. Con una política de organización, puedes restringir las direcciones IP externas a instancias específicas con restricciones para controlar el uso de direcciones IP externas de tus instancias en una organización o un proyecto.
La restricción para controlar las direcciones IP externas de las instancias es la siguiente:
constraints/compute.vmExternalIpAccess
Para usar la restricción, especifica una política con un
allowedList
de instancias que puedan tener direcciones IP externas. Si no especifica ninguna política, se permitirán todas las direcciones IP externas en todas las instancias. Cuando la política está en vigor, solo se puede asignar una dirección IP externa (efímera o estática) a las instancias que se incluyan en la listaallowedValues
. Las demás instancias de Compute Engine de la organización o del proyecto que no se definan explícitamente en la política no podrán usar direcciones IP externas.Las instancias se identifican en las listas de permitidas y denegadas mediante el URI de la instancia:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Especificaciones para restringir direcciones IP externas
- Puede aplicar esta restricción de lista solo a instancias.
- No puedes aplicar la restricción de forma retroactiva. Todas las instancias que tengan direcciones IP externas antes de habilitar la política conservarán sus direcciones IP externas.
- Esta restricción acepta un
allowedList
o undeniedList
, pero no ambos, en la misma política. - Tú o un administrador con los permisos necesarios podéis gestionar y mantener el ciclo de vida y la integridad de la instancia. La restricción solo verifica el URI de la instancia y no impide que las instancias de la lista de permitidas se modifiquen, eliminen o vuelvan a crear.
Permisos necesarios para restringir direcciones IP externas
Para definir una restricción a nivel de proyecto o de organización, debes tener asignado el rol
orgpolicy.policyAdmin
en la organización.Definir la restricción de la política a nivel de organización
Consola
- Ve a la página Políticas de la organización.
- Si es necesario, selecciona la organización que quieras en el menú desplegable de proyectos.
- Haz clic en Define allowed external IPs for VM instances (Definir IPs externas permitidas para instancias de VM).
- Haga clic en Editar para modificar la política de IP externa. Si no puedes acceder a la herramienta Editar, significa que no tienes los permisos adecuados.
Selecciona Personalizar para definir la política de la organización en instancias concretas.
Seleccione la implementación de la política y el tipo de política que necesite.
En Valores de la política, selecciona Personalizado.
Introduce un URI para una instancia. El URI debe tener el siguiente formato:
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Haz clic en Nuevo valor de política e introduce los URIs de las instancias según sea necesario.
Haz clic en Guardar para aplicar la restricción.
gcloud
Para definir una restricción de acceso a IPs externas, primero necesitas el ID de tu organización. Para encontrar el ID de organización, ejecuta el
organizations list
comando y busca el ID numérico en la respuesta:gcloud organizations list
La CLI de gcloud devuelve una lista de organizaciones con el siguiente formato:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
Usa el comando
gcloud resource-manager org-policies set-policy
para definir la política. Debes proporcionar tu política en un archivo JSON. Crea un archivo JSON con el siguiente formato:{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de esta solicitud, comoexample-project
. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requiere el ID numérico de la organización.ZONE
: la zona de la instanciaINSTANCE_NAME
: el nombre de la instancia
También puede especificar una
deniedValues
lista para indicar las instancias que quiere prohibir explícitamente que tengan una dirección IP externa. Cualquier instancia que no esté en la lista podrá tener implícitamente una dirección IP externa. Solo puede especificarallowedValues
odeniedValues
, pero no ambos.A continuación, envía el archivo con tu solicitud:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
Sustituye
ORGANIZATION_ID
por el ID numérico de la organización.Si no quieres que ninguna instancia tenga acceso a una IP externa, puedes definir una política con
allValues
enDENY
:{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } }
REST
Usa la API
setOrgPolicy()
para definir la restricción. Las instancias de la listaallowedValue
que especifiques podrán tener direcciones IP externas. También puedes especificar unadeniedValues
lista para indicar las instancias que quieres que no tengan una dirección IP externa. Cualquier instancia que no esté en la lista podrá tener una dirección IP externa. Solo puedes especificarallowedValues
odeniedValues
, pero no ambos.Por ejemplo, la siguiente es una solicitud para aplicar la restricción
compute.vmExternalIpAccess
a una organización en la que se permite que las instancias de determinados proyectos tengan direcciones IP externas:POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
donde
ORGANIZATION_ID
es el ID numérico de la organización.Ahora, en el cuerpo de la solicitud, proporciona la política de esta restricción:
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
Si no quieres que ninguna instancia tenga acceso a una IP externa, puedes definir una política con
allValues
enDENY
:{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } } }
Definir la política a nivel de proyecto
Si se define una política a nivel de proyecto, se anula la política a nivel de organización. Por ejemplo, si el nivel de organización tiene
example-vm-1
en la listaallowedValues
, pero la política a nivel de proyecto tiene la misma instancia en la listadeniedValues
, la instancia no podrá tener una dirección IP externa.Consola
Sigue el mismo proceso que se describe en Definir una restricción de política a nivel de organización, pero elige tu proyecto en el selector de proyectos en lugar de la organización.
gcloud
Usa el comando
gcloud resource-manager org-policies set-policy
para definir la política. Debes proporcionar tu política en un archivo JSON. Crea un archivo JSON con el siguiente formato:{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de esta solicitud, comoexample-project
. Ten en cuenta que esto es diferente de la configuración de políticas de la organización, que requiere el ID numérico de la organización.ZONE
: la zona de la instancia.INSTANCE_NAME
: el nombre de la instancia.
También puedes especificar una
deniedValues
lista de instancias a las que quieras prohibir explícitamente que tengan una dirección IP externa. Cualquier instancia que no esté en la lista podrá tener una dirección IP externa. Solo puede especificarallowedValues
odeniedValues
, pero no ambos.A continuación, envía el archivo con tu solicitud:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
Usa la API
setOrgPolicy
para definir la restricción. Las instancias de la listaallowedValue
que especifiques podrán tener direcciones IP externas. También puedes especificar unadeniedValues
lista para indicar las instancias que quieres prohibir explícitamente que tengan una dirección IP externa. Cualquier instancia que no esté en la lista podrá tener una dirección IP externa. Solo puede especificarallowedValues
odeniedValues
, pero no ambos.Por ejemplo, a continuación se muestra una solicitud para definir la restricción
compute.vmExternalIpAccess
en un proyecto para permitir que instancias específicas tengan direcciones IP externas:POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
Sustituye
PROJECT_ID
por el ID del proyecto de esta solicitud.El cuerpo de la solicitud contiene la política de esta restricción:
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
Prácticas recomendadas para restringir direcciones IP externas
Evita usar la lista
deniedValues
con esta restricción. Si define valores en la listadeniedValues
, significa que solo las instancias de la listadeniedValues
tienen restringido el uso de direcciones IP externas. Esto podría suponer un problema de seguridad si quieres controlar exactamente qué instancias pueden tener direcciones IP externas. Si quieres quitar determinadas instancias de la listaallowedValues
, actualiza la política para quitar las instancias deallowedList
en lugar de ponerlas en la listadeniedValues
en una jerarquía inferior.Si quieres definir una política en una gran parte de la jerarquía de recursos, pero quieres excluir determinados proyectos, restaura la política predeterminada con el método
setOrgPolicy
especificando el objetorestoreDefault
para permitir que todas las instancias de los proyectos se asocien a direcciones IP externas. La configuración predeterminada no afecta a las políticas actuales de los proyectos.Usa la política de organización junto con los roles de gestión de identidades y accesos para controlar mejor tu entorno. Esta política solo se aplica a las instancias, pero si quieres controlar y restringir mejor las direcciones IP externas en los dispositivos de red, puedes asignar el rol
compute.networkAdmin
a las partes correspondientes.Todos los servicios y productos que se ejecuten en Compute Engine dentro de la organización o el proyecto en el que esté habilitada la política estarán sujetos a esta política de organización. En concreto, esta política afecta a servicios como Google Kubernetes Engine, Dataflow, Dataproc y Cloud SQL. Si esto supone un problema, Google recomienda que configure otros servicios y productos en un proyecto diferente al que no se le aplique la política de la organización y que utilice la VPC compartida, si es necesario.
Gestionar direcciones IP externas estáticas
En las siguientes secciones se describe cómo gestionar las direcciones IP externas estáticas de tus instancias.
Determinar si una dirección IP interna es efímera o estática
Las direcciones IP internas estáticas y efímeras se comportan y aparecen de la misma forma 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 aunque lo elimines y lo vuelvas a crear. Por lo general, una dirección IP efímera se libera si detienes o eliminas el recurso.
Para determinar si una dirección es estática o efímera, sigue estos pasos:
En la Google Cloud consola, ve a la página Direcciones IP.
Busca la dirección en la lista y consulta la columna Tipo para ver el tipo de dirección IP.
Anular la asignación de una dirección IP externa estática
Si anulas la asignación de una dirección IP, se eliminará del recurso, pero la dirección IP seguirá reservada. Una vez que se haya desasignado la dirección IP, podrá reasignarla a otro recurso. Este procedimiento se admite en instancias de pila dual, pero no en instancias solo IPv6.
También puedes desasignar la dirección IPv4 o IPv6 eliminando la instancia.
Consola
En la Google Cloud consola, ve a la página Direcciones IP.
Haz clic en Direcciones IP externas.
Selecciona la dirección IP estática que quieras desasignar.
Haz clic en
Ver acciones y selecciona la opción Reasignar a otro recurso.En la lista desplegable Adjuntar a, selecciona Ninguno.
Haz clic en Aceptar.
gcloud
Para comprobar si una dirección IP estática se está utilizando, usa el comando
gcloud compute addresses list
:gcloud compute addresses list
El resultado debería ser similar al siguiente:
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
.
- Si la dirección IP no está en uso, el estado es
Recupera el nombre de la instancia que usa la dirección IP:
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
Haz los cambios siguientes:
ADDRESS_NAME
: nombre del recurso de dirección IPv6.REGION
: la región del recurso de dirección IPv6.
El resultado debería ser similar al siguiente:
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/INSTANCE_NAME
En el campo
users
se muestra el nombre de la instancia que usa la dirección IP.Desasigna la dirección IP de la instancia.
Para desasignar una dirección IPv4, elimina el archivo de configuración de acceso de la instancia:
Obtén el nombre de la configuración de acceso que quieras eliminar. Para obtener el nombre, usa el comando
gcloud compute instances describe
. SustituyeINSTANCE_NAME
por el nombre de la instancia.gcloud compute instances describe INSTANCE_NAME
La configuración de acceso tiene el siguiente formato:
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NAT
Elimina la configuración de acceso con el comando
gcloud compute instances delete-access-config
:gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.ACCESS_CONFIG_NAME
: el nombre de la configuración de acceso que se va a eliminar. No olvides incluir el nombre completo entre comillas.
Para desasignar un intervalo de direcciones IPv6, usa el comando
instance network-interfaces update
:gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia que usa la dirección IP.ZONE
: la zona de la instancia.
Comprueba que tu dirección IP externa estática esté disponible y marcada como
RESERVED
en lugar deIN_USE
.gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
Haz los cambios siguientes:
ADDRESS_NAME
: el nombre del recurso de dirección IP.REGION
: la región del recurso de dirección IP.
Ahora que tienes disponible tu dirección IP externa estática, puedes asignarla a otra instancia.
REST
Para desasignar una dirección IPv4 o IPv6 externa estática, sigue estos pasos:
En el caso de las direcciones IPv4, elimina la configuración de acceso asociada a la instancia que usa la dirección.
Para consultar los detalles de configuración de acceso de una instancia, haz una solicitud
GET
al métodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
Elimina la configuración de acceso actual haciendo una solicitud
POST
al métodoinstances.deleteAccessConfig
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto de esta solicitudZONE
: la zona en la que se encuentra la instanciaINSTANCE_NAME
: el nombre de la instancia
En el caso de las direcciones IPv6, actualiza el tipo de pila de la interfaz de red de la instancia a la que está asociada la dirección IPv6.
Realiza una solicitud
PATCH
al métodoinstances.updateNetworkInterface
.En el cuerpo de la solicitud, actualiza el valor del campo
stackType
aIPV4_ONLY
.Por ejemplo:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }
Java
Python
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 eliminando el recurso de dirección IP. Si eliminas una instancia, no se libera automáticamente una dirección IP externa estática. Debes liberar manualmente las direcciones IP externas estáticas cuando ya no las necesites.
Para liberar una dirección IP externa estática, consulta el artículo Liberar una dirección IP externa estática de la documentación de VPC.
Siguientes pasos
- Más información sobre las direcciones IP
- Consulta más información sobre las redes y los cortafuegos.
- Consulta cómo dirigirte a las instancias de Compute Engine mediante DNS interno.
- Consulta los precios de VPC.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-19 (UTC).
-