Configura rangos de alias de IP
En este documento, encontrarás instrucciones para configurar alias de direcciones IP y rangos de alias de IP mediante Google Cloud Console y Google Cloud CLI. Antes de ejecutar estos comandos, revisa los Rangos de IP de alias.
Limitaciones
Subred
- Los límites por red describen la cantidad máxima de rangos secundarios que puedes definir para cada subred.
- No puedes agregar y quitar rangos secundarios al mismo tiempo. Agregar y quitar deben ser pasos separados.
- La expansión CIDR no es compatible con los rangos secundarios.
Instancia de VM
- Los rangos de IP de alias son compatibles con todas las interfaces de red de VM. El enrutamiento se configura automáticamente para los rangos de IP de alias en la interfaz de la red principal, pero no en las interfaces secundarias. Si tienes varias interfaces de red, debes configurar el enrutamiento de la política para las interfaces adicionales. Para ver un ejemplo de cómo hacer esto, consulta el siguiente instructivo: Configura el enrutamiento a una interfaz secundaria de una VM.
- Los rangos de IP de alias se pueden agregar o quitar, pero no actualizar.
- Si quitas un rango de IP de alias de una VM y se lo asignas a otra VM, la transferencia podría tardar hasta un minuto en completarse.
- Las etiquetas de origen de firewall no son compatibles con las direcciones IP de alias. Cuando configuras etiquetas de origen en reglas de firewall, las etiquetas de origen coinciden con la dirección IP principal de VM, pero no con las direcciones IP de alias. Usa rangos de origen para permitir o denegar el tráfico de entrada de alias de direcciones IP.
- El DNS interno resuelve un nombre de VM a su IP principal. Los nombres adicionales para la IP de alias no se configuran automáticamente, pero se los puede agregar de forma manual.
Red de VPC
- Agregar o quitar una gran cantidad de rangos de IP de alias a la vez puede llevar mucho tiempo. Por ejemplo, puede llevar hasta 10 minutos agregar o quitar 7,000 rangos de IP de alias.
- Las redes de VPC de modo automático no pueden quitarse si hay rangos de la subred secundaria presentes.
- En una ruta estática, la dirección IP del salto siguiente debe ser la dirección IP principal de la VM. Las direcciones IP de alias no son compatibles con direcciones IP de salto siguiente.
- Las direcciones IPv6 no son compatibles.
- Los rangos de IP de alias solo son compatibles en redes de VPC y no en redes heredadas. Para determinar el tipo de tu red, enumera tus redes. Las redes de VPC tienen un modo
custom
oauto
. Las redes heredadas tienen un modolegacy
.
Comandos de la subred
Los rangos de IP de alias de VM deben asignarse desde un rango que pertenezca a la subred en la cual se encuentra la VM. Todas las subredes tienen un rango principal, que es el rango estándar de direcciones IP internas que definen la subred. Una subred también puede tener uno o más rangos de IP secundarios de direcciones IP internas. Puedes asignar rangos de IP de alias ya sea desde los rangos primarios o secundarios de la subred.
Debes dar a cada rango secundario un nombre que sea único para esa subred. Cuando asignes un rango de alias de IP a una VM, el nombre del rango secundario le dice a Google CLoud de qué rango de la subred debe asignar los alias de IP.
Todos los rangos, tanto principales como secundarios, deben ser únicos en todas las subredes de la red de VPC y en cualquier red conectada mediante intercambio de tráfico entre redes de VPC, de VPN o de interconexión.
En esta sección, se muestra cómo crear una subred con un rango secundario, agregar un rango secundario a una subred existente o quitar un rango secundario de una subred. Una vez que tu subred tenga el rango que deseas utilizar, consulta los comandos de instancias de VM para obtener instrucciones sobre cómo asignar un rango a una VM.
Cómo crear una subred con uno o más rangos CIDR secundarios
Este comando supone que ya cuentas con una red de VPC. De no ser así, crea una.
Este comando es el mismo ya sea que estés creando una subred para una interfaz principal de VM o una de las interfaces secundarias.
Utilizar un rango secundario para la asignación de IP de alias te permite separar el espacio de IP para servicios alojados en la VM, por lo que es más fácil crear reglas de firewall que permitan el acceso solo a los servicios que se ejecutan en la VM y que bloqueen el acceso a la dirección IP primaria de VM.
Console
- Ve a la página Redes de VPC en la consola de Google Cloud.
Ir a la página Redes de VPC - Haz clic en el nombre de una red existente.
- Haz clic en Agregar subred.
- Ingresa un Nombre para la nueva subred.
- Especifica la Región.
- Ingresa un Rango de direcciones IP en la notación CIDR (Ejemplo: 10.65.61.0/24).
- Haz clic en Crear rango de IP secundario.
- Ingresa un Nombre de rango de la subred.
- Ingresa un Rango de IP secundario en la notación CIDR (Ejemplo: 10.9.0.0/24).
- A fin de agregar rangos de IP secundarios adicionales para cada rango, haz clic en Agregar rango de IP y, luego, proporciona un nombre y un rango.
- Haz clic en Agregar.
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,...
Reemplaza lo siguiente:
NETWORK_NAME
: El nombre de la red en la cual deseas crear la subred.REGION
: La región en la cual estás creando la subred.RANGE_NAME_1
=RANGE_CIDR_1
yRANGE_NAME_2
=RANGE_CIDR_2
: Los nombres de los rangos secundarios de los que saldrán los rangos de IP de alias y el rango de IP de alias en sí; por ejemplo,range1=10.9.0.0/24
.
Para ver la sintaxis completa, consulta la documentación de la CLI de gcloud.
API
Crea una subred con uno o más rangos 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" }, ...] }
Reemplaza lo siguiente:
NETWORK_URL
: La URL o la red de VPC en la que se creará la subred.PRIMARY_IP_RANGE
: El rango de direcciones IP principal de la subred.PROJECT_ID
: El ID del proyecto que contiene la red de VPC en la que se creará la subred.REGION
: La región en la que se ubicará la subred.SECONDARY_IP_RANGE_1
ySECONDARY_IP_RANGE_2
: Los rangos de direcciones IP que se usarán para los rangos secundarios.SECONDARY_RANGE_NAME_1
ySECONDARY_RANGE_NAME_2
: Los nombres que se usarán para los rangos secundarios.SUBNET_NAME
: Es un nombre de la subred.
Para obtener más información, consulta el método subnetworks.insert
.
Terraform
Puedes usar el recurso de Terraform para crear una subred con uno o más rangos secundarios.
Los argumentos de Terraform tienen valores de ejemplo que puedes cambiar.
Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.
Agrega rangos CIDR secundarios a una subred existente
Para este procedimiento, se supone que tienes una subred que deseas utilizar, pero que necesitas agregar uno o más rangos secundarios.
Si usas un rango secundario para la asignación de alias de IP, será más fácil crear reglas de firewall que permitan el acceso a los servicios que se están ejecutando en una VM, pero no a la dirección IP principal de la VM.
Console
- Ve a la página Redes de VPC en la consola de Google Cloud.
Ir a la página Redes de VPC - Haz clic en el nombre de una subred para modificarla y ver su página de detalles.
- Haz clic en Editar.
- En la sección Rangos de IP secundarios, haz clic en Agregar rango de IP.
- Ingresa un nombre para el Nombre del rango de la subred.
- Ingresa un rango para el Rango de IP secundario en la notación CIDR. Por ejemplo:
10.9.0.0/24
. - A fin de agregar rangos de IP secundarios adicionales para cada rango, haz clic en Agregar rango de IP y, luego, proporciona un nombre y un rango.
- 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,...
Reemplaza lo siguiente:
SUBNET_NAME
: El nombre de la subred a la que deseas agregar el rango secundarioREGION
: La región en la cual estás creando la subred.RANGE_NAME_1
=RANGE_CIDR_1
yRANGE_NAME_2
=RANGE_CIDR_2
: Los nombres de los rangos secundarios de los que saldrán los rangos de IP de alias y el rango de IP de alias en sí; por ejemplo,range1=10.9.0.0/24
.
Para ver la sintaxis completa, consulta la documentación de la CLI de gcloud.
API
Agrega un rango secundario a una subred existente.
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": "SUBNETWORK_FINGERPRINT" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto que contiene la subred que deseas modificar.REGION
es la región en la que se encuentra la subred.SECONDARY_IP_RANGE_1
ySECONDARY_IP_RANGE_2
son los rangos de direcciones IP que se usarán para los rangos secundarios.SECONDARY_RANGE_NAME_1
ySECONDARY_RANGE_NAME_2
son los nombres que se usarán para los rangos secundariosSUBNET_FINGERPRINT
es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.SUBNET_NAME
es el nombre de la subred que deseas modificar.
Para obtener más información, consulta el método subnetworks.patch
.
Quita un rango CIDR secundario de una subred
Puedes quitar rangos secundarios existentes de una subred. Para ver los rangos que están asociados con una subred, consulta Describe una subred.
Console
- Ve a la página Redes de VPC en la consola de Google Cloud.
Ir a la página Redes de VPC - Haz clic en el nombre de una subred para modificarla y ver su página de detalles.
- Haz clic en Editar.
- En la sección Rangos de IP secundarias, haz clic en la X junto al rango secundario para quitarlo.
- Haz clic en Guardar.
gcloud
gcloud compute networks subnets update SUBNET_NAME \ --region REGION \ --remove-secondary-ranges RANGE_NAME_1,RANGE_NAME_2,...
donde
SUBNET_NAME
es el nombre de la subred de la cual deseas quitar los rangos secundarios.REGION
es la región en la cual estás creando la subred.RANGE_NAME_1
yRANGE_NAME_2
son los nombres de los rangos secundarios que se quitarán de la subred de destinoSUBNET_NAME
; por ejemplo,range1=10.9.0.0/24
.
Para ver la sintaxis completa, consulta la documentación de la CLI de gcloud.
API
Excluye los rangos secundarios para quitarlos. En el siguiente ejemplo, se quitan todos los rangos secundarios de una subred existente:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME { "fingerprint": "SUBNET_FINGERPRINT", "secondaryIpRanges": [ ] }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto que contiene la subred que deseas modificar.REGION
es la región en la que se encuentra la subred.SUBNET_FINGERPRINT
es el ID de huella digital de la subred existente, que se proporciona cuando describes una subred.SUBNET_NAME
es el nombre de la subred que deseas modificar.
Para obtener más información, consulta el método subnetworks.patch
.
Trabaja con instancias de VM
Con estos comandos, se muestra cómo crear una instancia con un rango de alias de IP, cómo agregar uno o más rangos de alias de IP a una instancia de VM existente o cómo quitar uno o más rangos de una instancia de VM existente.
Crea una VM con un rango de IP de alias en el rango CIDR principal
Utiliza este procedimiento si deseas asignar un rango de IP de alias desde el rango principal de la subred. El rango que elijas no debe estar en uso, aunque sea en parte, por ningún otro recurso de la red de VPC.
Utiliza este procedimiento si deseas que la interfaz principal de la instancia y las direcciones IP de alias estén en el mismo rango.
Console
- Ve a la página Instancias de VM en la consola de Google Cloud.
Ir a la página Instancias de VM - Haz clic en Crear instancia.
- Ingresa un Nombre para la nueva instancia.
- Especifica una Zona.
- Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
- Haz clic en la pestaña Herramientas de redes.
- Haz clic en el botón de editar (ícono de lápiz) que se encuentra junto a la interfaz primaria en la sección Interfaces de la red.
- Haz clic en Mostrar rangos de IP de alias.
- Deja el Rango de la subred como Principal.
- Ingresa un Rango de IP de alias en la notación CIDR. Este rango debe ser un subrango no utilizado del rango 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,..."
donde
ZONE
es la zona que contendrá la instancia.SUBNET_NAME
es el nombre de la subred que contendrá la instancia.RANGE_CIDR_1
yRANGE_CIDR_2
son los rangos de IP de la subred principal que se asignarán a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de IP elige un rango disponible con la máscara de red especificada y lo asigna a la interfaz de red. Para especificar más de un rango, separa los rangos con punto y coma (;
).
Para ver la sintaxis completa, consulta la documentación de la CLI de gcloud.
API
Crea una instancia con un alias de dirección IP del rango 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" } ] }, ... ], ... }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que creas la instancia.CIDR_RANGE
es el rango de IP de la subred principal que se asignará a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de direcciones IP elige un rango disponible con la máscara de red especificada y lo asigna a la interfaz de red.ZONE
es la zona de Google Cloud en la que se creará la instancia.
Para obtener más información, consulta el método instance.insert
.
Crea una VM con un rango de alias de IP en un rango CIDR secundario
Utiliza este procedimiento si deseas asignar un rango de IP de alias desde el rango secundario de la subred. Mantener los rangos de IP de alias separados del rango principal de la subred facilita la creación de reglas de firewall que permiten el acceso a los servicios que se están ejecutando en una VM, pero no a las direcciones IP principales de la VM.
Console
- Ve a la página Instancias de VM en la consola de Google Cloud.
Ir a la página Instancias de VM - Haz clic en Crear instancia.
- Ingresa un Nombre para la nueva instancia.
- Especifica una Zona.
- Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
- Haz clic en la pestaña Herramientas de redes.
- Haz clic en el botón de editar (ícono de lápiz) que se encuentra junto a la interfaz primaria en la sección Interfaces de la red.
- Haz clic en Mostrar rangos de IP de alias.
- Selecciona la Subred que tiene el rango secundario.
- En Rango de subred, selecciona el Rango de IP secundario que deseas utilizar.
- Ingresa un Rango de IP de alias en la notación CIDR. Este rango debe ser un rango no utilizado del rango 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
donde
ZONE
es la zona que contendrá la instancia.SUBNET_NAME
es el nombre de la subred que contendrá la instancia.RANGE_NAME
es el nombre del rango secundario de la subred desde el cual saldrá el rango de IP de alias.RANGE_CIDR
es el rango de IP que se asignará a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de IP elige un rango 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 un alias de dirección IP del rango de direcciones IP secundario 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" } ] }, ... ], ... }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que creas la instancia.SECONDARY_CIDR_RANGE
es el rango de IP que se asignará a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de direcciones IP elige un rango disponible con la máscara de red especificada y lo asigna a la interfaz de red.SECONDARY_RANGE_NAME
es el nombre del rango secundario de la subred desde el cual saldrá el rango de IP de alias.ZONE
es la zona de Google Cloud en la que se creará la instancia.
Para obtener más información, consulta el método instance.insert
.
Crea una VM con interfaces múltiples y alias de direcciones IP
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 “Crea una instancia de VM”.
Console
Crea la primera red y subred:
- Ve a la página Redes de VPC en la consola de Google Cloud.
Ir a la página Redes de VPC - Haz clic en Crear red de VPC.
- Ingresa un Nombre de
my-network1
. - Con el Modo de creación de subred configurado como
Custom
, especifica un Nombre de subredmy-subnet1
. - Especifica una Región.
- Configura el Rango de direcciones IP como
172.16.1.0/24
. - Haz clic en Crear rango de IP secundario.
- Configura el Nombre del rango de la subred como
range1
. - Configura el Rango de IP secundario como
10.1.0.0/16
. - Haz clic en Listo.
- Haz clic en Crear.
Crea la segunda red y subred:
- Ve a la página Redes de VPC en la consola de Google Cloud.
Ir a la página Redes de VPC - Haz clic en Crear red de VPC.
- Ingresa un Nombre de
my-network2
. - Con el Modo de creación de subred configurado como
Custom
, especifica un Nombre de subredmy-subnet2
. - Especifica la misma Región que para la primera red y subred.
- Configura el Rango de direcciones IP como
172.16.2.0/24
. - Haz clic en Crear rango de IP secundario.
- Configura el Nombre del rango de la subred como
range2
. - Configura el Rango de IP secundario como
10.2.0.0/16
. - Haz clic en Listo.
- Haz clic en Crear.
Crea una VM con interfaces en ambas redes:
- Ve a la página Instancias de VM en la consola de Google Cloud.
Ir a la página Instancias de VM - Haz clic en Crear instancia.
- Establece la zona de la región en la que creaste las subredes.
- Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
- Haz clic en Herramientas de redes.
- Haz clic en la primera interfaz de la red.
- Configura Red como
my-network1
. - Configura la Subred como
my-subnet1
. - Haz clic en Mostrar rangos de IP de alias.
- Haz clic en Agregar rango de alias de IP.
- Configura el Rango de la subred en
Primary
. - Configura el Rango de alias de IP como
/32
. - Haz clic en Agregar rango de IP.
- Configura el Rango de la subred en
range1
. - Configura el Rango de alias de IP como
/24
. - Haz clic en Listo.
- Haz clic en Agregar interfaz de la red.
- Selecciona
my-network2
. - Configura la Subred como
my-subnet2
. - Haz clic en Mostrar rangos de IP de alias.
- Haz clic en Agregar rango de alias de IP.
- Configura el Rango de la subred en
Primary
. - Configura el Rango de alias de IP como
/32
. - Haz clic en Agregar rango de IP.
- Configura el Rango de la subred en
range2
. - Ingresa un Rango de alias de IP de
/24
. - Haz clic en Listo.
- Haz clic en Crear.
gcloud
Crea la primera red:
gcloud compute networks create my-network1 --subnet-mode CUSTOM
Agrega 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
Agrega 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 de la lista, la de
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 de visualización 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 de modo personalizado con los nombres
my-network1
ymy-network2
. Para obtener más información, consulta Crea una red de modo personalizado.Agrega subredes a las redes de VPC. Para obtener más información, consulta Agrega subredes.
Agrega una subred llamada
my-subnet1
amy-network1
. Especifica172.16.1.0/24
para el rango principal y10.1.0.0/16
para el rango secundario con el nombrerange1
.Agrega una subred llamada
my-subnet2
amy-network2
. Especifica172.16.2.0/24
para el rango principal y10.2.0.0/16
para el rango 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" } ] } ], ... }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto en el que creas la instancia.REGION
es la región de Google Cloud en la que se encuentra la subred. Las subredes deben estar en la misma región que la instancia.ZONE
es la zona de Google Cloud en la que se creará la instancia.
Para obtener más información, consulta el método
instance.insert
.
Agrega rangos de alias de IP a una instancia existente
Puedes agregar un rango de IP de alias a una instancia en ejecución.
Es posible que las direcciones nuevas no estén disponibles de inmediato, incluso después de que haya finalizado la llamada a la API. Solo estarán disponibles después de que el SO invitado haya agregado las direcciones y las rutas.
Console
- Ve a la página Instancias de VM en la consola de Google Cloud.
Ir a la página Instancias de VM - Haz clic en el nombre de una instancia existente.
- Haz clic en Editar.
- Haz clic en la interfaz de la red nic0 (o la interfaz de la red a la cual agregarás un rango de IP de alias).
- Haz clic en Mostrar rangos de IP de alias.
- Haz clic en Agregar rango de IP.
- Selecciona un Rango de subred.
- Ingresa un rango de alias de IP.
- 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;..."
Reemplaza lo siguiente:
ZONE
es la zona que contiene la instancia de origen.NETWORK_INTERFACE
es el nombre de la interfaz de red a la que agregarás un rango de direcciones IP de alias.RANGE_NAME_1
yRANGE_NAME_2
son los nombres de los rangos secundarios de la subred desde los cuales se extraerá el rango de IP de alias. Si asignas rangos desde el rango principal de la subred, omite este valor.RANGE_CIDR_1
yRANGE_CIDR_2
son los rangos de IP que se asignarán a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de IP elige un rango 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 CLI.
API
Agrega rangos de alias de IP a una instancia existente.
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" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto que contiene la instancia que se va a modificar.INSTANCE_NAME
es el nombre de la instancia que se va a modificar.NETWORK_INTERFACE_NAME
es el nombre de la interfaz de red de la instancia que se va a modificar.INTERFACE_FINGERPRINT
es el ID de huella digital de la interfaz de red existente, que se proporciona cuando describes una instancia.SECONDARY_CIDR_RANGE
es el rango de IP que se asignará a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de direcciones IP elige un rango disponible con la máscara de red especificada y lo asigna a la interfaz de red.SECONDARY_RANGE_NAME
es el nombre del rango secundario de la subred desde el cual saldrá el rango de IP de alias. Si asignas rangos desde el rango principal de la subred, omite este campo.ZONE
es la zona de Google Cloud en la que se creará la instancia.
Para obtener más información, consulta el método instance.updateNetworkInterface
.
Modifica rangos de alias de IP para una instancia existente
Puedes agregar más rangos de alias de IP a una instancia existente o quitar uno o más rangos.
Es posible que los cambios de dirección no se vean de inmediato. La llamada a la API debe finalizar y el SO invitado debe modificar las direcciones y las rutas.
Console
- Ve a la página Instancias de VM en la consola de Google Cloud.
Ir a la página Instancias de VM - Haz clic en el nombre de una instancia existente.
- Haz clic en Editar.
- Haz clic en la interfaz de la red nic0 (o la interfaz de la red que modificarás).
- Haz clic en Mostrar rangos de IP de alias.
- Para agregar un rango de IP de alias, haz clic en Agregar rango de IP de alias.
- Para quitar un rango de alias de IP, haz clic en la X junto al rango de alias de IP.
- 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;..."
Reemplaza lo siguiente:
ZONE
: la zona que contiene la instanciaNETWORK_INTERFACE
: el nombre de la interfaz de red que estás modificandoRANGES_TO_RETAIN
son los rangos existentes, en formatoCURRENT_RANGE_NAME
:CURRENT_RANGE_CIDR
, que deseas conservar. Si agregas rangos a una instancia que no tiene ninguno, estos valores estarán en blanco. Si quitas todos los rangos de la instancia, el campo--aliases
completo estará en blanco.NEW_RANGE_NAME
: el nombre del rango secundario de la subred desde el cual saldrán los nuevos rangos de IP de alias. Si asignas rangos desde el rango principal de la subred, omite este valor.NEW_RANGE_CIDR
: El rango de direcciones IP que se asignará a la interfaz. El rango puede ser un rango 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 rango de IP solo por máscara de red, el asignador de IP elige un rango disponible con la máscara de red especificada y lo asigna a la interfaz de red.
Para agregar rangos, ejecuta el comando y especifica todos los rangos de alias de IP nuevos y existentes. Los pares se separan mediante punto y coma. Ejemplo: --aliases
"CURRENT_RANGE_NAME:CURRENT_RANGE_CIDR;NEW_RANGE_NAME:NEW_RANGE_CIDR"
Para quitar rangos, ejecuta el comando y especifica solamente los rangos de alias de IP que deseas conservar. Si quieres mantener rangos de un rango secundario, debes especificar el nombre del rango secundario. Un rango CIDR puede ser un rango específico (192.168.100.0/24
) o una sola dirección IP (192.168.100.1
). Ejemplo: --aliases "RANGE_NAME:RANGE_CIDR;RANGE_CIDR"
.
A fin de quitar todos los rangos, ejecuta el comando y especifica la marca --aliases
, pero usa comillas para proporcionar una entrada en blanco. Ejemplo: --aliases ""
.
No puedes agregar y quitar rangos en el mismo comando de gcloud
. Si deseas quitar algunos rangos y agregar otros con la CLI de Google Cloud, primero ejecuta el comando para quitar los rangos innecesarios y vuelve a ejecutarlo a fin de agregar los rangos necesarios.
Para ver la sintaxis completa, consulta la documentación de gcloud
.
API
Para una interfaz de red de una instancia existente, agrega o quita rangos de alias de direcciones IP.
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" }
Reemplaza los marcadores de posición por valores válidos:
PROJECT_ID
es el ID del proyecto que contiene la instancia que se va a modificar.INSTANCE_NAME
es el nombre de la instancia que se va a modificar.NETWORK_INTERFACE_NAME
es el nombre de la interfaz de red de la instancia que se va a modificar.INTERFACE_FINGERPRINT
es el ID de huella digital de la interfaz de red existente, que se proporciona cuando describes una instancia.
Para obtener más información, consulta el método instance.updateNetworkInterface
.
Soluciona problemas
No se puede crear una instancia de VM con una IP de alias
Verifica que la red sea de VPC. Los alias de IP no son compatibles con redes heredadas.
gcloud compute networks list --filter="name=NETWORK_NAME"
La red
MODE
debe ser "automática" o "personalizada".Si se especifica un nombre de rango de la subred, verifica lo siguiente:
gcloud compute networks subnets describe SUBNET_NAME --region=REGION
- que la subred tenga un rango secundario con el nombre correspondiente;
- que el rango de IP de alias solicitado esté dentro del rango secundario o, en caso de que se use máscara de red, que sea menor que el rango principal.
Si el nombre del rango de subredes no está especificado, verifica que el rango de IP de alias solicitado esté dentro del rango de subredes principal o, en caso de que se use máscara de red, que sea menor que el rango principal.
No se puede conectar con la IP de alias
Verifica las reglas de firewall.
Detalla todas las reglas de firewall:
gcloud compute firewall-rules list --format=json
Verifica que el tráfico hacia y desde la IP de alias esté permitido.
De ser necesario, agrega reglas de firewall para permitir que se haga ping a la 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 reconozca los rangos de IP de alias como locales. En las distribuciones de Linux, como Debian, esto 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 contener lo siguiente:
local ALIAS_IP_RANGE dev eth0 proto 66 scope host
Asegúrate de que
ip_aliases = true
en/etc/default/instance_configs.cfg
. Si tienes que cambiar esto, también debes reiniciar el agente invitado:systemctl restart google-guest-agent
Si la ruta local no está presente, configúrala con el siguiente 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 configura automáticamente las direcciones IP de alias como direcciones locales. Esto simplifica la configuración, ya que no se necesita ninguna configuración 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 que se inician automáticamente en tu VM y se inician antes que el agente invitado, no se pueden vincular a las direcciones IP de alias.
Por ejemplo, un servidor HTTP de Apache podría salir con el siguiente error:
could not bind to address ALIAS_IP:80
Para resolver 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 privilegiado, ejecuta el siguiente comando para agregar un fragmento directo al servicio que no funciona de forma correcta: por ejemplo, un servidor HTTP de Apache en Debian sería
apache2
:systemctl edit YOUR_SERVICE
En el editor de texto, agrega las siguientes líneas. Asegúrate de agregar las líneas antes de la línea que dice
Lines below this comment will be discarded
.[Unit] After=google-guest-agent.service
Mi rango de IP secundario no aparece en la lista
Los rangos de IP secundarios no se detallan en las subredes regulares. Para mostrar que se creó el rango de IP 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
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
Detalla tus subredes.
gcloud compute networks subnets list
NAME REGION NETWORK RANGE my-subnet us-central1 my-network 10.9.0.0/16
Obtén detalles sobre una subred a fin de ver los rangos secundarios.
gcloud compute networks subnets describe my-subnet --region us-central1
... ipCidrRange: 10.9.0.0/16 ... secondaryIpRanges: - ipCidrRange: 172.16.0.0/12 rangeName: secondaryrange1 ...
No existe el rango secundario de la subred especificada
Si cuando estás creando una VM, recibes un error que dice que el rango secundario no existe, asegúrate de lo siguiente:
- Que la subred tenga un rango secundario con el nombre especificado.
- Que estés creando tu VM dentro de la subred que tiene el rango secundario.
Puedes ver este error si ejecutas los siguientes comandos:
Crea una subred con un rango 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
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 red predeterminada, en lugar de hacerlo en la subred que se creó recién.
gcloud compute instances create instance-1 \ --zone us-central1-a \ --network default
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 rango de alias de IP desde la subred creada en el paso 1. El comando arrojará un error, ya que el rango secundario se encuentra en una subred diferente que la instancia.
gcloud compute instances network-interfaces update instance-1 \ --zone us-central1-a \ --aliases secondaryrange1:172.16.0.10/32
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, 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
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
Agrega un rango de IP de alias a la interfaz. Esta vez, el comando funciona correctamente, ya que la interfaz y el rango 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
Updating network interface [nic0] of instance [instance-2]...done.
No se pueden agregar ni quitar rangos de IP secundarios en la misma solicitud
Actualmente, no se puede agregar y quitar rangos de IP secundarios de la subred en el mismo comando. El comando de gcloud para agregar y quitar rangos secundarios preservará los rangos existentes que no se modifiquen.
Para agregar o quitar rangos, 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 ver más detalles de este comando, usa gcloud compute networks subnets update --help
.
No se pueden agregar y quitar rangos de alias de IP en simultáneo
Por el momento, no es posible agregar y quitar rangos de alias de IP de VM en la misma solicitud.
El comando de gcloud
para actualizar rangos de alias de IP NO conserva los rangos existentes, por lo que omitir un rango se considera una solicitud para borrar ese rango.
Por ejemplo, si la VM actual tiene un rango de alias 10.9.27.0/24
y el nuevo rango solicitado es /24
, la ejecución del comando para solicitar /24
se rechazará ya que se interpreta como que se está quitando 10.9.27.0/24
y agregando /24
.
El rango existente debe quitarse de forma explícita antes de poder agregar un rango nuevo.
Ejemplo:
Crea un rango de alias de IP.
gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
Intenta agregar
/24
sin especificar el rango existente. 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 un rango de IP de alias.
gcloud compute instances network-interfaces update vm --aliases "" Updating network interface [nic0] of instance [vm]...done.
Agrega el rango de alias de IP nuevo.
gcloud compute instances network-interfaces update vm --aliases "/24" Updating network interface [nic0] of instance [vm]...done.
Para ver más detalles de este comando, usa gcloud compute instances network-interfaces update --help
.
Etiquetas de origen y cuentas de servicio de origen de reglas de firewall
La cuenta de servicio de origen de firewall y las etiquetas de origen solamente se expanden a las IP de redes principales de instancias coincidentes, y no se aplican a instancias coincidentes de IP de alias. Por ende, una regla de firewall basada en etiquetas de origen no afectará el tráfico desde una dirección IP de alias de la instancia. Las direcciones IP de alias pueden agregarse a las reglas de firewall como rangos de origen o destino.
Problemas con VM con interfaces múltiples y rangos de IP de alias
Consulta Solución de problemas para interfaces múltiples.
La habilitación del alias de IP en imágenes de Google Cloud inhabilita el puente cbr0
en los clústeres de Kubernetes con administración automática
En las imágenes que proporciona Google, el agente invitado de Google crea rutas locales para los rangos de direcciones IP de alias. En el caso de los clústeres de Kubernetes autoadministrados, debes configurar el agente invitado de Google a fin de que no cree rutas locales para los rangos de IP de alias. Este paso no es necesario para los clústeres de GKE, ya que GKE inhabilita la creación de rutas locales para los rangos de alias de IP en sus imágenes de nodo.
Síntomas:
Los pods de Kubernetes pierden acceso a la red si la ruta local que creó el agente invitado quita el rango de IP de alias de la interfaz de
cbr0
.Una captura de paquetes en el dispositivo puente de Linux (
tcpdump -ni cbr arp
) muestra la falta de respuestas ARP de la interfazcbr0
aunque esa interfaz esté activa.Cuando inspeccionas la tabla de ruta local (
ip route show table local
), se revela que el rango de direcciones IP de alias está asignado a la interfaz de red principal (por ejemplo,eth0
oens4
) en lugar de la interfaz del puente del contenedor (cbr0
).
Solución:
Ejecuta el comando adecuado que se enumera en Paquetes instalados para el entorno invitado a fin de determinar si la VM de nodo ejecuta el agente invitado de Google. o un paquete más antiguo de Compute Engine.
Si la VM de tu 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 a fin de omitir la creación de rutas locales para los rangos de alias de IP y las reglas de reenvío.
Edita
/etc/default/instance_configs.cfg
y configuraip_forwarding=false
en la sección[NetworkInterfaces]
. Puedes crear la sección[NetworkInterfaces]
si aún no está presente en el archivoinstance_configs.cfg
.Realiza una de las siguientes tareas:
Reinicia el servicio
google-guest-agent.service
y edita la tabla de ruta local.Para reiniciar el servicio
google-guest-agent.service
, ejecutasudo systemctl restart google-guest-agent.service
. Luego, edita la tabla de ruta local para quitar las entradas de los rangos de alias de direcciones IP. Por ejemplo:sudo ip route del local ALIAS_IP_RANGE dev DEVICE_IDENTIFIER
Reemplaza lo siguiente:
ALIAS_IP_RANGE
: El rango de alias de direcciones IP.DEVICE_IDENTIFIER
es el identificador de la interfaz de red. Por ejemplo,ens4
oeth0
.
Para obtener más información, consulta la sección Configuración en la documentación del agente invitado de Google.
¿Qué sigue?
- Obtén más información sobre las instances.