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 o auto. Las redes heredadas tienen un modo legacy.

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

  1. Ve a la página Redes de VPC en la consola de Google Cloud.
    Ir a la página Redes de VPC
  2. Haz clic en el nombre de una red existente.
  3. Haz clic en Agregar subred.
  4. Ingresa un Nombre para la nueva subred.
  5. Especifica la Región.
  6. Ingresa un Rango de direcciones IP en la notación CIDR (Ejemplo: 10.65.61.0/24).
  7. Haz clic en Crear rango de IP secundario.
  8. Ingresa un Nombre de rango de la subred.
  9. Ingresa un Rango de IP secundario en la notación CIDR (Ejemplo: 10.9.0.0/24).
  10. 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.
  11. 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 y RANGE_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 y SECONDARY_IP_RANGE_2: Los rangos de direcciones IP que se usarán para los rangos secundarios.
  • SECONDARY_RANGE_NAME_1 y SECONDARY_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.

resource "google_compute_subnetwork" "network-with-private-secondary-ip-ranges" {
  project       = var.project_id # Replace this with your project ID in quotes
  name          = "test-subnetwork"
  ip_cidr_range = "10.2.0.0/16"
  region        = "us-central1"
  network       = "test-vpc-network"
  secondary_ip_range {
    range_name    = "tf-test-secondary-range-update1"
    ip_cidr_range = "192.168.10.0/24"
  }
}

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

  1. Ve a la página Redes de VPC en la consola de Google Cloud.
    Ir a la página Redes de VPC
  2. Haz clic en el nombre de una subred para modificarla y ver su página de detalles.
  3. Haz clic en Editar.
  4. En la sección Rangos de IP secundarios, haz clic en Agregar rango de IP.
  5. Ingresa un nombre para el Nombre del rango de la subred.
  6. Ingresa un rango para el Rango de IP secundario en la notación CIDR. Por ejemplo: 10.9.0.0/24.
  7. 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.
  8. 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 secundario
  • REGION: La región en la cual estás creando la subred.
  • RANGE_NAME_1=RANGE_CIDR_1 y RANGE_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 y SECONDARY_IP_RANGE_2 son los rangos de direcciones IP que se usarán para los rangos secundarios.
  • SECONDARY_RANGE_NAME_1 y SECONDARY_RANGE_NAME_2 son los nombres que se usarán para los rangos secundarios
  • 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.

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

  1. Ve a la página Redes de VPC en la consola de Google Cloud.
    Ir a la página Redes de VPC
  2. Haz clic en el nombre de una subred para modificarla y ver su página de detalles.
  3. Haz clic en Editar.
  4. En la sección Rangos de IP secundarias, haz clic en la X junto al rango secundario para quitarlo.
  5. 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 y RANGE_NAME_2 son los nombres de los rangos secundarios que se quitarán 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 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

  1. Ve a la página Instancias de VM en la consola de Google Cloud.
    Ir a la página Instancias de VM
  2. Haz clic en Crear instancia.
  3. Ingresa un Nombre para la nueva instancia.
  4. Especifica una Zona.
  5. Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
  6. Haz clic en la pestaña Herramientas de redes.
  7. 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.
  8. Haz clic en Mostrar rangos de IP de alias.
  9. Deja el Rango de la subred como Principal.
  10. Ingresa un Rango de IP de alias en la notación CIDR. Este rango debe ser un subrango no utilizado del rango principal.
  11. 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 y RANGE_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

  1. Ve a la página Instancias de VM en la consola de Google Cloud.
    Ir a la página Instancias de VM
  2. Haz clic en Crear instancia.
  3. Ingresa un Nombre para la nueva instancia.
  4. Especifica una Zona.
  5. Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
  6. Haz clic en la pestaña Herramientas de redes.
  7. 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.
  8. Haz clic en Mostrar rangos de IP de alias.
  9. Selecciona la Subred que tiene el rango secundario.
  10. En Rango de subred, selecciona el Rango de IP secundario que deseas utilizar.
  11. 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.
  12. 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:

  1. Ve a la página Redes de VPC en la consola de Google Cloud.
    Ir a la página Redes de VPC
  2. Haz clic en Crear red de VPC.
  3. Ingresa un Nombre de my-network1.
  4. Con el Modo de creación de subred configurado como Custom, especifica un Nombre de subred my-subnet1.
  5. Especifica una Región.
  6. Configura el Rango de direcciones IP como 172.16.1.0/24.
  7. Haz clic en Crear rango de IP secundario.
  8. Configura el Nombre del rango de la subred como range1.
  9. Configura el Rango de IP secundario como 10.1.0.0/16.
  10. Haz clic en Listo.
  11. Haz clic en Crear.

Crea la segunda red y subred:

  1. Ve a la página Redes de VPC en la consola de Google Cloud.
    Ir a la página Redes de VPC
  2. Haz clic en Crear red de VPC.
  3. Ingresa un Nombre de my-network2.
  4. Con el Modo de creación de subred configurado como Custom, especifica un Nombre de subred my-subnet2.
  5. Especifica la misma Región que para la primera red y subred.
  6. Configura el Rango de direcciones IP como 172.16.2.0/24.
  7. Haz clic en Crear rango de IP secundario.
  8. Configura el Nombre del rango de la subred como range2.
  9. Configura el Rango de IP secundario como 10.2.0.0/16.
  10. Haz clic en Listo.
  11. Haz clic en Crear.

Crea una VM con interfaces en ambas redes:

  1. Ve a la página Instancias de VM en la consola de Google Cloud.
    Ir a la página Instancias de VM
  2. Haz clic en Crear instancia.
  3. Establece la zona de la región en la que creaste las subredes.
  4. Haz clic en Administración, seguridad, discos, Herramientas de redes, un solo inquilino.
  5. Haz clic en Herramientas de redes.
  6. Haz clic en la primera interfaz de la red.
  7. Configura Red como my-network1.
  8. Configura la Subred como my-subnet1.
  9. Haz clic en Mostrar rangos de IP de alias.
  10. Haz clic en Agregar rango de alias de IP.
  11. Configura el Rango de la subred en Primary.
  12. Configura el Rango de alias de IP como /32.
  13. Haz clic en Agregar rango de IP.
  14. Configura el Rango de la subred en range1.
  15. Configura el Rango de alias de IP como /24.
  16. Haz clic en Listo.
  17. Haz clic en Agregar interfaz de la red.
  18. Selecciona my-network2.
  19. Configura la Subred como my-subnet2.
  20. Haz clic en Mostrar rangos de IP de alias.
  21. Haz clic en Agregar rango de alias de IP.
  22. Configura el Rango de la subred en Primary.
  23. Configura el Rango de alias de IP como /32.
  24. Haz clic en Agregar rango de IP.
  25. Configura el Rango de la subred en range2.
  26. Ingresa un Rango de alias de IP de /24.
  27. Haz clic en Listo.
  28. Haz clic en Crear.

gcloud

  1. Crea la primera red:

    gcloud compute networks create my-network1 --subnet-mode CUSTOM
    
  2. 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
    
  3. Crea una segunda red:

    gcloud compute networks create my-network2 --subnet-mode CUSTOM
    
  4. 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
    
  5. 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"
    
  6. 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

  1. Crea dos redes de VPC de modo personalizado con los nombres my-network1 y my-network2. Para obtener más información, consulta Crea una red de modo personalizado.

  2. Agrega subredes a las redes de VPC. Para obtener más información, consulta Agrega subredes.

    1. Agrega una subred llamada my-subnet1 a my-network1. Especifica 172.16.1.0/24 para el rango principal y 10.1.0.0/16 para el rango secundario con el nombre range1.

    2. Agrega una subred llamada my-subnet2 a my-network2. Especifica 172.16.2.0/24 para el rango principal y 10.2.0.0/16 para el rango secundario con el nombre range2.

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

  1. Ve a la página Instancias de VM en la consola de Google Cloud.
    Ir a la página Instancias de VM
  2. Haz clic en el nombre de una instancia existente.
  3. Haz clic en Editar.
  4. 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).
  5. Haz clic en Mostrar rangos de IP de alias.
  6. Haz clic en Agregar rango de IP.
  7. Selecciona un Rango de subred.
  8. Ingresa un rango de alias de IP.
  9. Haz clic en Listo.
  10. 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 y RANGE_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 y RANGE_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

  1. Ve a la página Instancias de VM en la consola de Google Cloud.
    Ir a la página Instancias de VM
  2. Haz clic en el nombre de una instancia existente.
  3. Haz clic en Editar.
  4. Haz clic en la interfaz de la red nic0 (o la interfaz de la red que modificarás).
  5. Haz clic en Mostrar rangos de IP de alias.
  6. Para agregar un rango de IP de alias, haz clic en Agregar rango de IP de alias.
  7. Para quitar un rango de alias de IP, haz clic en la X junto al rango de alias de IP.
  8. Haz clic en Listo.
  9. 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 instancia
  • NETWORK_INTERFACE: el nombre de la interfaz de red que estás modificando
  • RANGES_TO_RETAIN son los rangos existentes, en formato CURRENT_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

  1. 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".

  2. 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.
  3. 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

  1. Verifica las reglas de firewall.

    1. Detalla todas las reglas de firewall:

      gcloud compute firewall-rules list --format=json
      
    2. Verifica que el tráfico hacia y desde la IP de alias esté permitido.

    3. 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
      
  2. 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:

    1. 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
      
    2. 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
      
    3. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. Detalla tus subredes.

    gcloud compute networks subnets list
    
    NAME       REGION       NETWORK     RANGE
    my-subnet  us-central1  my-network  10.9.0.0/16
    
  3. 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:

  1. 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
    
  2. 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
    
  3. 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.
    
  4. 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
    
  5. 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:

  1. Crea un rango de alias de IP.

    gcloud compute instances create vm --network-interface "subnet=s1,aliases=10.9.27.0/24"
    
  2. 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.
    
  3. 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.
    
  4. 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 interfaz cbr0 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 o ens4) en lugar de la interfaz del puente del contenedor (cbr0).

Solución:

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

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

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

    1. Edita /etc/default/instance_configs.cfg y configura ip_forwarding=false en la sección [NetworkInterfaces]. Puedes crear la sección [NetworkInterfaces] si aún no está presente en el archivo instance_configs.cfg.

    2. Realiza una de las siguientes tareas:

      • Reinicia la VM del nodo.

      • Reinicia el servicio google-guest-agent.service y edita la tabla de ruta local.

        Para reiniciar el servicio google-guest-agent.service, ejecuta sudo 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 o eth0.

    Para obtener más información, consulta la sección Configuración en la documentación del agente invitado de Google.

¿Qué sigue?