Configurar intervalos de IP de alias
En este documento se explica cómo configurar direcciones IP con alias e intervalos de IP con alias mediante la Google Cloud consola y la interfaz de línea de comandos de Google Cloud. Antes de ejecutar estos comandos, consulta Intervalos de IP de alias.
Limitaciones
Subred
- Los límites por red describen el número máximo de intervalos secundarios que puedes definir para cada subred.
- No puedes añadir y quitar intervalos secundarios al mismo tiempo. Las acciones de añadir y quitar deben realizarse por separado.
- No se admite la expansión de CIDR en intervalos secundarios.
Instancia de VM
- Los intervalos de direcciones IP de alias se admiten en todas las interfaces de red de máquinas virtuales. El enrutamiento se configura automáticamente para los intervalos de IP de alias en la interfaz de red principal, pero no en las interfaces secundarias. Si tienes varias interfaces de red, debes configurar el enrutamiento de políticas para las interfaces adicionales. Para ver un ejemplo de cómo hacerlo, consulta el siguiente tutorial: Configurar el enrutamiento de una interfaz de red adicional.
- Los intervalos de IPs de alias se pueden añadir o eliminar, pero no actualizar.
- Si quitas un intervalo de IPs alias de una VM y lo asignas a otra, la transferencia puede tardar hasta un minuto en completarse.
- Las etiquetas de origen de cortafuegos no se admiten en las direcciones IP de alias. Esto significa que, cuando configuras etiquetas de origen en reglas de cortafuegos, las etiquetas de origen coinciden con la dirección IP principal de la VM, pero no con las direcciones IP de alias. Usa intervalos de origen para permitir o denegar el tráfico de entrada de direcciones IP de alias.
- El DNS interno resuelve el nombre de una VM en su IP principal. Los nombres adicionales de las IPs de alias no se configuran automáticamente, pero se pueden añadir manualmente.
Red VPC
- Añadir o quitar un gran número de intervalos de IPs de alias al mismo tiempo puede llevar mucho tiempo. Por ejemplo, puede tardar hasta 10 minutos en añadir o eliminar 7000 intervalos de direcciones IP de alias.
- Las redes de nube privada virtual (VPC) en modo automático no se pueden eliminar si hay intervalos de subredes secundarias.
- En una ruta estática, la dirección IP del siguiente salto debe ser la dirección IP principal de la VM. No se admiten direcciones IP de alias como direcciones IP de salto siguiente.
- No se admiten direcciones IPv6.
- Los intervalos de IP de alias solo se admiten en redes de VPC, no en redes antiguas. Para determinar el tipo de red, enumera tus redes. Las redes de VPC tienen un modo
custom
oauto
. Las redes antiguas tienen el modolegacy
.
Comandos de subred
Los intervalos de IP de alias de la VM se deben asignar desde un intervalo propiedad de la subred en la que se encuentra la VM. Todas las subredes tienen un intervalo principal, que es el intervalo estándar de direcciones IP internas que define la subred. Una subred también puede tener uno o varios intervalos de IP secundarias de direcciones IP internas. Puedes asignar intervalos de IP de alias desde los intervalos principales o secundarios de la subred.
Debe asignar a cada intervalo secundario un nombre único para la subred. Al asignar un intervalo de IPs de alias a una VM, el nombre del intervalo secundario indicaGoogle Cloud de qué intervalo de subred se deben asignar las IPs de alias.
Todos los intervalos, tanto los principales como los secundarios, deben ser únicos en todas las subredes de la red de VPC y en las redes conectadas mediante el emparejamiento de redes de VPC, Cloud VPN o Cloud Interconnect.
En esta sección se explica cómo crear una subred con un intervalo secundario, añadir un intervalo secundario a una subred ya creada o quitar un intervalo secundario de una subred. Una vez que tu subred tenga el intervalo que quieras usar, consulta la sección Trabajar con instancias de VM para obtener información sobre cómo asignar un intervalo a una VM.
Crear una subred con uno o varios intervalos CIDR secundarios
En este comando se presupone que ya tienes una red de VPC. Si no tienes una, créala.
Este comando es el mismo tanto si creas una subred para la interfaz principal de la VM como si lo haces para una de las interfaces secundarias.
Si usas un intervalo secundario para asignar IPs de alias, puedes separar el espacio de IPs de los servicios alojados en la VM, lo que te ayuda a crear reglas de firewall que solo permitan el acceso a los servicios que se ejecutan en la VM y bloqueen el acceso a la dirección IP principal de la VM.
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Haga clic en el nombre de una red.
Haz clic en Añadir subred.
Escribe un nombre para la nueva subred.
Especifica la región.
Introduce un intervalo de direcciones IP en notación CIDR (por ejemplo,
10.65.61.0/24
).Haz clic en Crear intervalo de IPs secundario.
Introduce un nombre de intervalo de subredes.
Introduce un intervalo de IP secundario en notación CIDR (por ejemplo,
10.9.0.0/24
).Para añadir intervalos de IPs secundarias, haga clic en Añadir intervalo de IPs en cada intervalo y, a continuación, proporcione un nombre y un intervalo.
Haz clic en Añadir.
gcloud
gcloud compute networks subnets create s1 \ --network NETWORK_NAME \ --region REGION \ --range 10.65.61.0/24 \ --secondary-range RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Haz los cambios siguientes:
NETWORK_NAME
: el nombre de la red en la que quieres crear la subred.REGION
: la región en la que vas a crear la subred.RANGE_NAME_1
=RANGE_CIDR_1
yRANGE_NAME_2
=RANGE_CIDR_2
: los nombres de los intervalos secundarios de los que se obtendrán los intervalos de IP de alias y el propio intervalo de IP de alias (por ejemplo,range1=10.9.0.0/24
).
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Crea una subred con uno o varios intervalos secundarios.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks { "ipCidrRange": "PRIMARY_IP_RANGE", "network": "NETWORK_URL", "name": "SUBNET_NAME", "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...] }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la red VPC en la que se va a crear la subred.REGION
: la región en la que se va a ubicar la subred.PRIMARY_IP_RANGE
: el intervalo de direcciones IP principal de la subred.NETWORK_URL
: URL o red VPC en la que se va a crear la subred.SUBNET_NAME
: nombre de la subred.SECONDARY_RANGE_NAME_1
ySECONDARY_RANGE_NAME_2
: los nombres que se usarán para los intervalos secundarios.SECONDARY_IP_RANGE_1
ySECONDARY_IP_RANGE_2
: los intervalos de direcciones IP que se van a usar para los intervalos secundarios.
Para obtener más información, consulta el método subnetworks.insert
.
Terraform
Puede usar el recurso de Terraform para crear una subred con uno o varios intervalos secundarios.
Los argumentos de Terraform tienen valores de ejemplo que puedes cambiar.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Añadir intervalos CIDR secundarios a una subred
En este procedimiento se da por hecho que tienes una subred que quieres usar, pero necesitas añadir uno o varios intervalos secundarios.
Te recomendamos que uses un intervalo secundario para la asignación de IPs de alias con el fin de crear reglas de firewall que permitan acceder a los servicios que se ejecutan en una VM, pero no a la dirección IP principal de la VM.
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Haga clic en el nombre de una subred para ver su página de detalles y modificarla.
Haz clic en Editar.
En la sección Intervalos de IPs secundarias, haz clic en Añadir intervalo de IPs.
Introduce un nombre en Nombre del intervalo de subredes.
Introduce un intervalo para Intervalo de IP secundario en notación CIDR. Por ejemplo:
10.9.0.0/24
.Para añadir intervalos de IPs secundarias, haga clic en Añadir intervalo de IPs en cada intervalo y, a continuación, proporcione un nombre y un intervalo.
Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
Haz los cambios siguientes:
SUBNET_NAME
: el nombre de la subred a la que quieras añadir los intervalos secundarios.REGION
: la región en la que vas a crear la subred.RANGE_NAME_1
=RANGE_CIDR_1
yRANGE_NAME_2
=RANGE_CIDR_2
: los nombres de los intervalos secundarios de los que se obtendrán los intervalos de IP de alias y el propio intervalo de IP de alias (por ejemplo,range1=10.9.0.0/24
).
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Añade un intervalo secundario a una subred que ya exista.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "secondaryIpRanges": [ { "rangeName": "SECONDARY_RANGE_NAME_1", "ipCidrRange": "SECONDARY_IP_RANGE_1" }, { "rangeName": "SECONDARY_RANGE_NAME_2", "ipCidrRange": "SECONDARY_IP_RANGE_2" }, ...], "fingerprint": "SUBNET_FINGERPRINT" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la subred que se va a modificar.REGION
: la región en la que se encuentra la subred.SUBNET_NAME
: el nombre de la subred que se va a modificar.SECONDARY_RANGE_NAME_1
ySECONDARY_RANGE_NAME_2
: los nombres que se usarán para los intervalos secundarios.SECONDARY_IP_RANGE_1
ySECONDARY_IP_RANGE_2
: los intervalos de direcciones IP que se van a usar en los intervalos secundarios.SUBNET_FINGERPRINT
: el ID de huella digital de la subred, que se proporciona cuando describes una subred.
Para obtener más información, consulta el método subnetworks.patch
.
Quitar un intervalo CIDR secundario de una subred
Puedes quitar intervalos secundarios de una subred. Para ver los intervalos asociados a una subred, consulta Describir una subred.
Consola
En la Google Cloud consola, ve a la página Redes de VPC.
Haga clic en el nombre de una subred para ver su página de detalles y modificarla.
Haz clic en Editar.
En la sección Intervalos de IP secundarios, haga clic en X junto al intervalo secundario que quiera quitar.
Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
Haz los cambios siguientes:
SUBNET_NAME
: el nombre de la subred de la que quieras quitar los intervalos secundarios.REGION
: la región en la que vas a crear la subred.RANGE_NAME_1
yRANGE_NAME_2
: los nombres de los intervalos secundarios que se van a quitar de la subred de destino.SUBNET_NAME
Por ejemplo,range1=10.9.0.0/24
.
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Excluye los intervalos secundarios para eliminarlos. En el siguiente ejemplo se eliminan todos los intervalos secundarios de una subred:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "fingerprint": "SUBNET_FINGERPRINT", "secondaryIpRanges": [ ] }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la subred que se va a modificar.REGION
: la región en la que se encuentra la subred.SUBNET_NAME
: el nombre de la subred que se va a modificar.SUBNET_FINGERPRINT
: el ID de huella digital de la subred que ya existe, que se proporciona cuando describes una subred.
Para obtener más información, consulta el método subnetworks.patch
.
Trabajar con instancias de VM
Estos comandos muestran cómo crear una instancia con un intervalo de IPs alias, añadir uno o varios intervalos de IPs alias a una instancia de VM ya creada o eliminar uno o varios intervalos de una instancia de VM ya creada.
Crear una VM con un intervalo de IP de alias en el intervalo CIDR principal
Sigue este procedimiento si quieres asignar un intervalo de IPs alias del intervalo principal de la subred. El intervalo que elijas no debe estar en uso, ni siquiera parcialmente, por ningún otro recurso de la red VPC.
Sigue este procedimiento si quieres que la interfaz principal y las direcciones IP de alias de la instancia estén en el mismo intervalo.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en
Crear instancia.Escribe un nombre para la nueva instancia.
Especifica una zona.
Haz clic en Redes.
En la sección Interfaces de red, despliega la interfaz de red predeterminada.
En Intervalos de IP de alias, haz clic en
Añadir intervalo de IPs.Deja Intervalo de subred 1 configurado como Principal.
En Intervalo de IP de alias, introduce un intervalo de IP en notación CIDR. Este intervalo debe ser un subintervalo no utilizado del intervalo principal.
Haz clic en Crear.
gcloud
gcloud compute instances create vm1 \ --zone ZONE \ --network-interface "subnet=SUBNET_NAME,aliases=RANGE_CIDR_1;RANGE_CIDR_2,..."
Haz los cambios siguientes:
ZONE
: la zona en la que se va a incluir la instancia.SUBNET_NAME
: el nombre de la subred que contendrá la instancia.RANGE_CIDR_1
yRANGE_CIDR_2
: los intervalos de IP de la subred principal que se asignarán a la interfaz. Los intervalos pueden ser un intervalo específico (192.168.100.0/24
), una sola dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si el intervalo de IPs se especifica solo mediante la máscara de red, el asignador de IPs elige un intervalo disponible con la máscara de red especificada y lo asigna a la interfaz de red. Para especificar más de un intervalo, separa los intervalos con punto y coma (;
).
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Crea una instancia con una dirección IP de alias del intervalo de direcciones IP principal de la subred de la instancia.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "CIDR_RANGE" } ] }, ... ], ... }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que vas a crear la instancia.ZONE
: la Google Cloud zona en la que se va a crear la instancia.CIDR_RANGE
: el intervalo de IP de la subred principal que se asignará a la interfaz. El intervalo puede ser un intervalo específico (192.168.100.0/24
), una sola dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si especificas el intervalo de IP solo por la máscara de red, el asignador de direcciones IP elegirá un intervalo disponible con la máscara de red especificada y lo asignará a la interfaz de red.
Para obtener más información, consulta el método instances.insert
.
Crear una VM con un intervalo de IP de alias en un intervalo CIDR secundario
Sigue este procedimiento si quieres asignar un intervalo de IPs alias tomado de un intervalo secundario de la subred. Te recomendamos que mantengas los intervalos de IP de alias separados del intervalo principal de la subred para crear reglas de firewall que permitan el acceso a los servicios que se ejecutan en una VM, pero no a la dirección IP principal de la VM.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en
Crear instancia.Escribe un nombre para la nueva instancia.
Especifica una zona.
Haz clic en Redes.
En la sección Interfaces de red, despliega la interfaz de red predeterminada.
En Intervalos de IP de alias, haz clic en
Añadir intervalo de IPs.En Intervalo de subred, selecciona el intervalo de IP secundario que quieras usar.
En Intervalo de IP de alias, introduce un intervalo de IP en notación CIDR. Este intervalo debe ser un intervalo no utilizado del intervalo de IP secundario.
Haz clic en Crear.
gcloud
gcloud compute instances create vm3 \ --zone ZONE \ --network-interface subnet=SUBNET_NAME,aliases=RANGE_NAME:RANGE_CIDR
Haz los cambios siguientes:
ZONE
: la zona en la que se va a incluir la instancia.SUBNET_NAME
: el nombre de la subred que contendrá la instancia.RANGE_NAME
: el nombre del intervalo secundario de la subred del que se va a obtener el intervalo de IP de alias.RANGE_CIDR
: el intervalo de IPs que se asignará a la interfaz. El intervalo puede ser un intervalo específico (192.168.100.0/24
), una dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si el intervalo de IPs se especifica solo mediante la máscara de red, el asignador de IPs elige un intervalo disponible con la máscara de red especificada y lo asigna a la interfaz de red.
Para ver la sintaxis completa , consulta la documentación de gcloud
.
API
Crea una instancia con una dirección IP de alias del intervalo de direcciones IP secundarias de la subred de la instancia.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_CIDR_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" } ] }, ... ], ... }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que vas a crear la instancia.ZONE
: la zona en la que creas la instancia. Google CloudSECONDARY_CIDR_RANGE: the IP range to assign to the interface. The range can be a specific range (
192.168.100.0/24), a single IP address (
192.168.100.1), or a netmask in CIDR format (
/24"). Si especificas el intervalo de direcciones IP solo por la máscara de red, el asignador de direcciones IP elegirá un intervalo disponible con la máscara de red especificada y lo asignará a la interfaz de red.SECONDARY_RANGE_NAME
: el nombre del intervalo secundario de la subred del que se va a obtener el intervalo de IP de alias.
Para obtener más información, consulta el método instances.insert
.
Crear una VM con varias interfaces y direcciones IP de alias
En este ejemplo se crean dos redes, cada una con una subred, y una VM con interfaces en ambas redes. Si ya tienes dos redes de VPC, puedes saltar al paso "Crear una VM con interfaces en ambas redes".
Consola
Crea la primera red y subred:
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
En Nombre, escribe
my-network1
.Define Modo de creación de subred como
Custom
y, a continuación, especifica el nombre de la subredmy-subnet1
.Especifica una región.
Define el intervalo de direcciones IP como
172.16.1.0/24
.Haz clic en Crear intervalo de IPs secundario.
Asigna el valor
range1
a Nombre del intervalo de subredes.Asigna el valor
10.1.0.0/16
a Intervalo de IP secundario.Haz clic en Listo.
Haz clic en Crear.
Crea la segunda red y subred:
En la Google Cloud consola, ve a la página Redes de VPC.
Haz clic en Crear red VPC.
En Nombre, escribe
my-network2
.Define Modo de creación de subred como
Custom
y, a continuación, especifica el nombre de la subredmy-subnet2
.En Región, especifica la misma región que en la primera red y subred.
Define el intervalo de direcciones IP como
172.16.2.0/24
.Haz clic en Crear intervalo de IPs secundario.
Asigna el valor
range2
a Nombre del intervalo de subredes.Asigna el valor
10.2.0.0/16
a Intervalo de IP secundario.Haz clic en Listo.
Haz clic en Crear.
Crea una VM con interfaces en ambas redes:
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en
Crear instancia.Define la zona en la región en la que has creado las subredes.
Haz clic en Redes.
Haz clic en la primera interfaz de red.
- Selecciona Red y, a continuación,
my-network1
. - Asigna el valor
my-subnet1
a Subred. - Haz clic en Intervalos de IP de alias.
- Haz clic en Añadir intervalo de IPs.
- Asigna el valor
Primary
a Intervalo de subred. - Define Intervalo de IPs de alias como
/32
. - Haz clic en Añadir intervalo de IPs.
- Asigna el valor
range1
a Intervalo de subred. - Define Intervalo de IPs de alias como
/24
. - Haz clic en Listo.
- Selecciona Red y, a continuación,
Haz clic en Añadir interfaz de red.
- Selecciona
my-network2
. - Asigna el valor
my-subnet2
a Subred. - Haz clic en Intervalos de IP de alias.
- Haz clic en Añadir intervalo de IPs.
- Asigna el valor
Primary
a Intervalo de subred. - Define Intervalo de IPs de alias como
/32
. - Haz clic en Añadir intervalo de IPs.
- Asigna el valor
range2
a Intervalo de subred. - Define Intervalo de IPs de alias como
/24
. - Haz clic en Listo.
- Selecciona
Haz clic en Crear.
gcloud
Crea la primera red:
gcloud compute networks create my-network1 --subnet-mode CUSTOM
Añadir una subred:
gcloud compute networks subnets create my-subnet1 \ --network my-network1 \ --range 172.16.1.0/24 \ --secondary-range range1=10.1.0.0/16
Crea una segunda red:
gcloud compute networks create my-network2 --subnet-mode CUSTOM
Añadir una subred:
gcloud compute networks subnets create my-subnet2 \ --network my-network2 \ --range 172.16.2.0/24 \ --secondary-range range2=10.2.0.0/16
Crea una VM con interfaces en ambas redes. La primera interfaz de red que aparece en la lista, la que está en
my-subnet1
, es la interfaz principal:gcloud compute instances create multi-nic-alias-vm \ --machine-type f1-micro \ --network-interface "subnet=my-subnet1,aliases=/32;range1:/24" \ --network-interface "subnet=my-subnet2,aliases=/32;range2:/24"
Usa el comando display para ver las interfaces y sus direcciones:
gcloud compute instances describe multi-nic-alias-vm
... networkInterfaces: - ... aliasIpRanges: - ipCidrRange: 172.16.1.2/32 - ipCidrRange: 10.1.0.0/24 subnetworkRangeName: range1 name: nic0 network: .../networks/my-network1 networkIP: 172.16.1.3 subnetwork: .../subnetworks/my-subnet1 ... - ... aliasIpRanges: - ipCidrRange: 172.16.2.2/32 - ipCidrRange: 10.2.0.0/24 subnetworkRangeName: range2 name: nic1 network: .../networks/my-network2 networkIP: 172.16.2.3 subnetwork: .../subnetworks/my-subnet2
API
Crea dos redes de VPC en modo personalizado llamadas
my-network1
ymy-network2
. Para obtener más información, consulta Crear una red VPC en modo personalizado con solo subredes IPv4.Añade subredes a las redes de VPC. Para obtener más información, consulta Añadir una subred solo IPv4.
Añade una subred llamada
my-subnet1
amy-network1
. Especifica172.16.1.0/24
para el intervalo principal y10.1.0.0/16
para el intervalo secundario con el nombrerange1
.Añade una subred llamada
my-subnet2
amy-network2
. Especifica172.16.2.0/24
para el intervalo principal y10.2.0.0/16
para el intervalo secundario con el nombrerange2
.
Crea una instancia de VM con interfaces en ambas redes.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "networkInterfaces": [ { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet1", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range1", "ipCidrRange": "/24" } ] }, { "subnetwork": "projects/PROJECT_ID/regions/REGION/subnetworks/my-subnet2", "aliasIpRanges": [ { "ipCidrRange": "/32", }, { "subnetworkRangeName": "range2", "ipCidrRange": "/24" } ] } ], ... }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto en el que vas a crear la instancia.ZONE
: la Google Cloud zona en la que se va a crear la instancia.REGION
: la región Google Cloud en la que se encuentra la subred. Las subredes deben estar en la misma región que la instancia.
Para obtener más información, consulta el método
instances.insert
.
Añadir intervalos de IP de alias a una instancia ya creada
Puedes añadir un intervalo de IPs alias a una instancia en ejecución.
Es posible que las nuevas direcciones no estén disponibles inmediatamente, incluso después de que haya finalizado la llamada a la API. Las nuevas direcciones solo están disponibles después de que el SO invitado haya añadido las direcciones y las rutas.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de una instancia.
Haz clic en Editar.
En Interfaces de red, haz clic en la interfaz de red a la que quieras añadir un intervalo de IPs de alias (
nic0
en este ejemplo).Haz clic en Intervalos de IP de alias.
Haz clic en Añadir intervalo de IPs.
Selecciona un intervalo de subredes.
Introduce un intervalo de IPs de alias.
Haz clic en Listo.
Haz clic en Guardar.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] \ --aliases "RANGE_NAME_1:RANGE_CIDR_1; \ RANGE_NAME_2:RANGE_CIDR_2;..."
Haz los cambios siguientes:
INSTANCE_NAME
: nombre de la instancia que se va a modificar.ZONE
: la zona que contiene la instancia.NETWORK_INTERFACE
: nombre de la interfaz de red a la que se va a añadir un intervalo de direcciones IP de alias.RANGE_NAME_1
yRANGE_NAME_2
: nombres de los intervalos secundarios de subredes de los que se va a obtener el intervalo de IPs de alias. Si asigna intervalos del intervalo principal de la subred, omita este valor.RANGE_CIDR_1
yRANGE_CIDR_2
: los intervalos de IP que se asignarán a la interfaz. Los intervalos pueden ser un intervalo específico (192.168.100.0/24
), una dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si el intervalo de IPs se especifica solo mediante la máscara de red, el asignador de IPs elige un intervalo disponible con la máscara de red especificada y lo asigna a la interfaz de red.
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Añade intervalos de IP de alias a una instancia ya creada.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ { "ipCidrRange": "SECONDARY_IP_RANGE", "subnetworkRangeName": "SECONDARY_RANGE_NAME" }, existing ranges... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la instancia que se va a modificar.ZONE
: la Google Cloud zona en la que se creará la instancia.INSTANCE_NAME
: nombre de la instancia que se va a modificar.NETWORK_INTERFACE_NAME
: el nombre de la interfaz de red de la instancia que se va a modificar.SECONDARY_IP_RANGE
: el intervalo de IPs que se va a asignar a la interfaz. El intervalo puede ser un intervalo específico (192.168.100.0/24
), una dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si solo especificas el intervalo de IPs mediante la máscara de red, el asignador de direcciones IP elegirá un intervalo disponible con la máscara de red especificada y lo asignará a la interfaz de red.SECONDARY_RANGE_NAME
: el nombre del intervalo secundario de la subred del que se va a obtener el intervalo de IP de alias. Si vas a asignar rangos del rango principal de la subred, omite este campo.INTERFACE_FINGERPRINT
: el ID de huella digital de la interfaz de red, que se proporciona cuando se describe una instancia.
Para obtener más información, consulta el método instances.updateNetworkInterface
.
Modificar intervalos de IP de alias de una instancia ya creada
Puede añadir más intervalos de IP de alias a una instancia o quitar uno o varios intervalos.
Es posible que los cambios de dirección no se vean inmediatamente. La llamada a la API debe finalizar y el SO invitado debe modificar las direcciones y las rutas.
Consola
En la consola de Google Cloud , ve a la página Instancias de VM.
Haz clic en el nombre de una instancia.
Haz clic en Editar.
En Interfaces de red, haz clic en la interfaz de red a la que quieras añadir un intervalo de IPs de alias (
nic0
en este ejemplo).Haz clic en Intervalos de IP de alias.
Para añadir un intervalo de IPs de alias, haz clic en Añadir intervalo de IPs de alias.
Para quitar un intervalo de IPs de alias, haz clic en la X situada junto al intervalo de IPs de alias.
Haz clic en Listo.
Haz clic en Guardar.
gcloud
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone ZONE \ [--network-interface NETWORK_INTERFACE; default="nic0"] \ --aliases "RANGES_TO_RETAIN;NEW_RANGE_NAME:NEW_RANGE_CIDR;..."
Haz los cambios siguientes:
INSTANCE_NAME
: nombre de la instancia que se va a modificar.ZONE
: la zona que contiene la instancia.NETWORK_INTERFACE
: el nombre de la interfaz de red que se va a modificar.RANGES_TO_RETAIN
: los intervalos actuales, en formatoCURRENT_RANGE_NAME
:CURRENT_RANGE_CIDR
, que quieras conservar. Si añade intervalos a una instancia que no tiene ninguno, estos valores estarán en blanco. Si quitas todos los intervalos de la instancia, el campo--aliases
estará en blanco.NEW_RANGE_NAME
: el nombre del intervalo secundario de la subred del que se obtendrán los nuevos intervalos de IPs de alias. Si asignas intervalos del intervalo principal de la subred, omite este valor.NEW_RANGE_CIDR
: el intervalo de direcciones IP que se va a asignar a la interfaz. Este intervalo puede ser un intervalo específico (192.168.100.0/24
), una sola dirección IP (192.168.100.1
) o una máscara de red en formato CIDR (/24
). Si el intervalo de direcciones IP se especifica solo mediante la máscara de red, el asignador de IPs elige un intervalo disponible con la máscara de red especificada y lo asigna a la interfaz de red.
Para añadir intervalos, ejecuta el comando y especifica todos los intervalos de IPs de alias que ya tengas y los nuevos. Los pares están separados por punto y coma. Por ejemplo:
--aliases
"CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"
.
Para quitar intervalos, ejecuta el comando y especifica solo los intervalos de IPs de alias que quieras conservar. Si vas a conservar intervalos de un intervalo secundario, debes especificar el nombre del intervalo secundario. Un intervalo CIDR puede ser un intervalo específico (192.168.100.0/24
) o una sola dirección IP (192.168.100.1
). Por ejemplo:
--aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR"
.
Para quitar todos los intervalos, ejecuta el comando y especifica la marca --aliases
, pero usa comillas para proporcionar una entrada en blanco. Por ejemplo:
--aliases ""
.
No puedes añadir y quitar intervalos en el mismo comando gcloud
. Para quitar algunos intervalos y añadir otros con la CLI de gcloud, primero ejecuta el comando para quitar los intervalos innecesarios y, a continuación, vuelve a ejecutarlo para añadir los intervalos necesarios.
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
En el caso de una interfaz de red de una instancia, añade o elimina intervalos de direcciones IP alias.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NETWORK_INTERFACE_NAME { "aliasIpRanges": [ include new and existing ranges to add them... exclude existing ranges to remove them... ], "fingerprint": "INTERFACE_FINGERPRINT" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto que contiene la instancia que se va a modificar.ZONE
: la zona que contiene la instancia.INSTANCE_NAME
: nombre de la instancia que se va a modificar.NETWORK_INTERFACE_NAME
: el nombre de la interfaz de red de la instancia que se va a modificar.INTERFACE_FINGERPRINT
: el ID de huella digital de la interfaz de red, que se proporciona cuando se describe una instancia.
Para obtener más información, consulta el método instances.updateNetworkInterface
.
Solución de problemas
En esta sección se enumeran varios problemas que pueden surgir al configurar intervalos de IPs de alias.
No se puede crear una instancia de VM con una IP de alias
Comprueba que la red sea una red de VPC. Las IPs de alias no se admiten en las redes antiguas.
gcloud compute networks list --filter="name=NETWORK_NAME"
La red
MODE
debe serauto
ocustom
.Si se especifica un nombre de intervalo de subred, comprueba lo siguiente:
gcloud compute networks subnets describe SUBNET_NAME --region=REGION
- La subred tiene un intervalo secundario con el nombre correspondiente.
- El intervalo de IP de alias solicitado está dentro de este intervalo secundario o, si se usa una máscara de red, es más pequeño que el intervalo principal.
Si no se especifica el nombre del intervalo de subred, comprueba que el intervalo de IPs de alias solicitado esté dentro del intervalo de subred principal o, si se usa una máscara de subred, que sea más pequeño que el intervalo principal.
No se puede conectar a la IP de alias
Verifica las reglas de cortafuegos.
Lista de todas las reglas de cortafuegos:
gcloud compute firewall-rules list --format=json
Verifica que se permite el tráfico hacia y desde un intervalo de IPs de alias.
Si es necesario, añade reglas de cortafuegos para permitir hacer ping a un intervalo de IP de alias:
gcloud compute firewall-rules create FIREWALL_NAME1 \ --network NETWORK_NAME \ --priority 0 \ --source-ranges ALIAS_IP \ --allow icmp
gcloud compute firewall-rules create FIREWALL_NAME2 \ --network NETWORK_NAME \ --priority 0 \ --direction out \ --destination-ranges ALIAS_IP \ --allow icmp
Asegúrate de que la VM reconoce los intervalos de alias de IP como locales. En distribuciones de Linux, como Debian, normalmente se puede hacer de la siguiente manera.
Conéctate a la instancia y ejecuta este comando:
ip route show table local
El resultado debería ser similar al siguiente:
local ALIAS_IP_RANGE dev eth0 proto 66 scope host
En
/etc/default/instance_configs.cfg
, comprueba que el ajusteip_aliases
esté configurado comotrue
. Si necesitas cambiarlo, también debes reiniciar el agente invitado:systemctl restart google-guest-agent
Si la ruta local no está presente, configúrala con este comando:
ip route add to local ALIAS_IP_RANGE dev eth0 proto 66
El servicio de inicio automático no se vincula a la dirección IP del alias
En las distribuciones de Linux compatibles, el agente invitado preinstalado define automáticamente las direcciones IP de alias como direcciones locales. Esto significa que no es necesario configurar nada a nivel del SO.
Sin embargo, esto también significa que el SO no reconoce las direcciones IP de alias como direcciones locales antes de que se ejecute el agente invitado. Si tienes servicios de inicio automático en tu VM y se inician antes que el agente invitado, no podrán enlazarse a las direcciones IP de alias.
Por ejemplo, un servidor HTTP Apache puede cerrarse con el siguiente error:
could not bind to address ALIAS_IP:80
Para solucionar este problema, configura tu servicio para que se inicie después del agente invitado. En las distribuciones que usan systemctl
, sigue estos pasos.
Como usuario con privilegios, ejecuta el siguiente comando para añadir un fragmento de código de inserción para el servicio que no funciona correctamente. Por ejemplo, un servidor HTTP de Apache en Debian sería
apache2
:systemctl edit YOUR_SERVICE
En el editor de texto, añade las siguientes líneas. Asegúrate de añadir las líneas encima de la línea
Lines below this comment will be discarded
.[Unit] After=google-guest-agent.service
Mi intervalo de IP secundarias no aparece en la lista
Los intervalos de IP secundarios no se muestran como subredes normales. Para verificar que se ha creado el intervalo de IPs secundario de la subred, usa el comando gcloud compute networks subnets describe
.
Crea una subred.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
El resultado debería ser similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Lista tus subredes.
gcloud compute networks subnets list
El resultado debería ser similar al siguiente:
NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Consulta los detalles de una subred para ver los intervalos secundarios.
gcloud compute networks subnets describe my-subnet --region us-central1
El resultado debería ser similar al siguiente:
... ipCidrRange: 10.9.0.0/16 ... secondaryIpRanges: - ipCidrRange: 172.16.0.0/12 rangeName: secondaryrange1 ...
El intervalo secundario de la subred especificada no existe
Cuando crees una VM, si aparece un error que indica que el intervalo secundario no existe, comprueba lo siguiente:
- La subred tiene un intervalo secundario con el nombre especificado.
- Vas a crear la VM en la subred que tiene el intervalo secundario.
Para ver este error, ejecuta los siguientes comandos:
Crea una subred con un intervalo secundario.
gcloud compute networks subnets create my-subnet \ --region us-central1 \ --network my-network \ --range 10.9.0.0/16 \ --secondary-range secondaryrange1=172.16.0.0/12
El resultado debería ser similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/regions/us-central1/subnetworks/my-subnet]. NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Crea una instancia en otra red, como la predeterminada, en lugar de en la subred que acabas de crear.
gcloud compute instances create instance-1 \ --zone us-central1-a \ --network default
El resultado debería ser similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-1]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-1 us-central1-a n1-standard-1 10.128.0.2 47.82.96.9 RUNNING
Intenta asignar un intervalo de IPs de alias de la subred creada en el paso 1. El comando falla porque el intervalo secundario está en una subred diferente de la instancia.
gcloud compute instances network-interfaces update instance-1 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
El resultado debería ser similar al siguiente:
ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource.aliasIpRanges[0].subnetworkRangeName': 'secondaryrange'. The specified subnetwork secondary range does not exist.
Crea otra instancia, esta vez con su interfaz en la subred creada en el paso 1.
gcloud compute instances create instance-2 \ --zone us-central1-a \ --network-interface subnet=my-subnet
El resultado debería ser similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/google.com:my-project/zones/us-central1-a/instances/instance-2]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS instance-2 us-central1-a n1-standard-1 10.9.0.2 38.74.204.89 RUNNING
Añade un intervalo de IP de alias a la interfaz. Esta vez, el comando se ejecuta correctamente porque la interfaz y el intervalo secundario están en la misma subred.
gcloud compute instances network-interfaces update instance-2 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
El resultado debería ser similar al siguiente:
Updating network interface [nic0] of instance [instance-2]...done.
No se pueden añadir ni quitar intervalos de IP secundarios en la misma solicitud
No se admite añadir y quitar intervalos de IPs secundarias de subredes en el mismo comando. Los comandos de la CLI de gcloud para añadir y quitar intervalos secundarios conservan los intervalos que no se modifican.
Para añadir y quitar intervalos, ejecuta los dos comandos por separado.
gcloud compute networks subnets update SUBNET_NAME \ --add-secondary-ranges RANGE_NAME_1=RANGE_CIDR_1,RANGE_NAME_2=RANGE_CIDR_2,...
gcloud compute networks subnets update SUBNET_NAME \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
Para obtener más información sobre este comando, usa
gcloud compute networks subnets update --help
.
No se pueden añadir y quitar intervalos de IPs de alias simultáneamente
No se admite añadir y quitar intervalos de IPs de alias de VMs en la misma solicitud. Debes eliminar el intervalo actual de forma explícita para poder añadir el nuevo.
El comando de la CLI de gcloud para actualizar los intervalos de IP de alias no conserva los intervalos que ya hay, por lo que, si se omite un intervalo, se interpreta como una solicitud para eliminarlo.
Por ejemplo, si la VM actual tiene un intervalo de alias 10.9.27.0/24
y el nuevo intervalo solicitado es /24
, el comando para solicitar /24
se rechaza porque se interpreta como la eliminación de 10.9.27.0/24
y la adición de /24
.
Ejemplo:
Crea un intervalo de IPs de alias.
gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
Prueba a añadir
/24
sin especificar el intervalo. Se produce un error.gcloud compute instances network-interfaces update vm --aliases "/24" ERROR: (gcloud.compute.instances.network-interfaces.update) HTTPError 400: Invalid value for field 'resource. aliasIpRanges': ''. Cannot simultaneously add and remove alias IP ranges.
Actualiza la VM para que no tenga ningún intervalo de IPs alias.
gcloud compute instances network-interfaces update vm --aliases "" Updating network interface [nic0] of instance [vm]...done.
Añade el nuevo intervalo de direcciones IP de alias.
gcloud compute instances network-interfaces update vm --aliases "/24" Updating network interface [nic0] of instance [vm]...done.
Para obtener más información sobre este comando, usa
gcloud compute instances network-interfaces update --help
.
Etiquetas de origen y cuentas de servicio de origen de reglas de cortafuegos
La cuenta de servicio de origen del cortafuegos y las etiquetas de origen solo se amplían a las IPs de red principales de las instancias coincidentes y no se aplican a las IPs de alias de las instancias coincidentes. Por lo tanto, una regla de cortafuegos basada en etiquetas de origen no afecta al tráfico de una dirección IP de alias de instancia. Las direcciones IP de alias se pueden añadir a las reglas de cortafuegos como intervalos de origen o de destino.
Problemas con las VMs que tienen varias interfaces e intervalos de IP de alias
Consulta el artículo Solucionar problemas de VMs con varias interfaces de red.
Habilitar el alias de IP en las Google Cloud imágenes inhabilita el puente cbr0
en los clústeres de Kubernetes autogestionados
En las imágenes proporcionadas por Google, el agente invitado de Google crea rutas locales para intervalos de direcciones IP de alias. En los clústeres de Kubernetes autogestionados, debes configurar el agente invitado de Google para que no cree rutas locales para los intervalos de IPs de alias. Este paso no es necesario en los clústeres de GKE, ya que GKE inhabilita la creación de rutas locales para los intervalos de IPs de alias en sus imágenes de nodo.
Síntomas:
Los pods de Kubernetes pierden el acceso a la red si la ruta local creada por el agente invitado elimina el intervalo de IP de alias de la interfaz
cbr0
.Una captura de paquetes en el dispositivo de puente Linux (
tcpdump -ni cbr arp
) muestra que no hay respuestas ARP de la interfazcbr0
, aunque esa interfaz esté activa.Al inspeccionar la tabla de rutas local (
ip route show table local
), se observa que el intervalo de direcciones IP de alias se ha asignado a la interfaz de red principal (por ejemplo,eth0
oens4
) en lugar de a la interfaz de puente del contenedor (cbr0
).
Solución:
Ejecuta el comando adecuado que se indica en Paquetes instalados en el entorno de invitado para determinar si la VM del nodo ejecuta el agente de invitado de Google o un paquete anterior de Compute Engine.
Si tu VM de nodo no ejecuta el agente invitado de Google, instala el agente invitado o usa una imagen más reciente proporcionada por Google.
Configura el agente invitado de Google para que no cree rutas locales para intervalos de IPs de alias y reglas de reenvío.
Edita
/etc/default/instance_configs.cfg
y defineip_forwarding=false
en la sección[NetworkInterfaces]
. Puedes crear la sección[NetworkInterfaces]
si aún no está en el archivoinstance_configs.cfg
.Realiza una de las siguientes tareas:
Reinicia la VM del nodo.
Reinicia el servicio
google-guest-agent.service
y edita la tabla de rutas local.Para reiniciar el servicio
google-guest-agent.service
, ejecutasudo systemctl restart google-guest-agent.service
. A continuación, edita la tabla de rutas local para eliminar las entradas de los intervalos de direcciones IP de alias. Por ejemplo:sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
Haz los cambios siguientes:
ALIAS_IP_RANGE
: el intervalo de direcciones IP de alias.DEVICE_IDENTIFIER
: el identificador de la interfaz de red (por ejemplo,ens4
oeth0
).
Para obtener más información, consulta la sección Configuración de la documentación del agente invitado de Google.