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

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

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

    Ir a redes de VPC

  2. Haga clic en el nombre de una red.

  3. Haz clic en Añadir subred.

  4. Escribe un nombre para la nueva subred.

  5. Especifica la región.

  6. Introduce un intervalo de direcciones IP en notación CIDR (por ejemplo, 10.65.61.0/24).

  7. Haz clic en Crear intervalo de IPs secundario.

  8. Introduce un nombre de intervalo de subredes.

  9. Introduce un intervalo de IP secundario en notación CIDR (por ejemplo, 10.9.0.0/24).

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

  11. 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 y RANGE_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 y SECONDARY_RANGE_NAME_2: los nombres que se usarán para los intervalos secundarios.
  • SECONDARY_IP_RANGE_1 y SECONDARY_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.

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"
  }
}

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

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

    Ir a redes de VPC

  2. Haga clic en el nombre de una subred para ver su página de detalles y modificarla.

  3. Haz clic en Editar.

  4. En la sección Intervalos de IPs secundarias, haz clic en Añadir intervalo de IPs.

  5. Introduce un nombre en Nombre del intervalo de subredes.

  6. Introduce un intervalo para Intervalo de IP secundario en notación CIDR. Por ejemplo: 10.9.0.0/24.

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

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

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 y RANGE_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 y SECONDARY_RANGE_NAME_2: los nombres que se usarán para los intervalos secundarios.
  • SECONDARY_IP_RANGE_1 y SECONDARY_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

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

    Ir a redes de VPC

  2. Haga clic en el nombre de una subred para ver su página de detalles y modificarla.

  3. Haz clic en Editar.

  4. En la sección Intervalos de IP secundarios, haga clic en X junto al intervalo secundario que quiera quitar.

  5. 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 y RANGE_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

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

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Escribe un nombre para la nueva instancia.

  4. Especifica una zona.

  5. Haz clic en Redes.

  6. En la sección Interfaces de red, despliega la interfaz de red predeterminada.

  7. En Intervalos de IP de alias, haz clic en Añadir intervalo de IPs.

  8. Deja Intervalo de subred 1 configurado como Principal.

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

  10. 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 y RANGE_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

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

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Escribe un nombre para la nueva instancia.

  4. Especifica una zona.

  5. Haz clic en Redes.

  6. En la sección Interfaces de red, despliega la interfaz de red predeterminada.

  7. En Intervalos de IP de alias, haz clic en Añadir intervalo de IPs.

  8. En Intervalo de subred, selecciona el intervalo de IP secundario que quieras usar.

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

  10. 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 Cloud
  • SECONDARY_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:

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

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. En Nombre, escribe my-network1.

  4. Define Modo de creación de subred como Custom y, a continuación, especifica el nombre de la subred my-subnet1.

  5. Especifica una región.

  6. Define el intervalo de direcciones IP como 172.16.1.0/24.

  7. Haz clic en Crear intervalo de IPs secundario.

  8. Asigna el valor range1 a Nombre del intervalo de subredes.

  9. Asigna el valor 10.1.0.0/16 a Intervalo de IP secundario.

  10. Haz clic en Listo.

  11. Haz clic en Crear.

Crea la segunda red y subred:

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

    Ir a redes de VPC

  2. Haz clic en Crear red VPC.

  3. En Nombre, escribe my-network2.

  4. Define Modo de creación de subred como Custom y, a continuación, especifica el nombre de la subred my-subnet2.

  5. En Región, especifica la misma región que en la primera red y subred.

  6. Define el intervalo de direcciones IP como 172.16.2.0/24.

  7. Haz clic en Crear intervalo de IPs secundario.

  8. Asigna el valor range2 a Nombre del intervalo de subredes.

  9. Asigna el valor 10.2.0.0/16 a Intervalo de IP secundario.

  10. Haz clic en Listo.

  11. Haz clic en Crear.

Crea una VM con interfaces en ambas redes:

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

    Ir a instancias de VM

  2. Haz clic en Crear instancia.

  3. Define la zona en la región en la que has creado las subredes.

  4. Haz clic en Redes.

  5. Haz clic en la primera interfaz de red.

    1. Selecciona Red y, a continuación, my-network1.
    2. Asigna el valor my-subnet1 a Subred.
    3. Haz clic en Intervalos de IP de alias.
    4. Haz clic en Añadir intervalo de IPs.
    5. Asigna el valor Primary a Intervalo de subred.
    6. Define Intervalo de IPs de alias como /32.
    7. Haz clic en Añadir intervalo de IPs.
    8. Asigna el valor range1 a Intervalo de subred.
    9. Define Intervalo de IPs de alias como /24.
    10. Haz clic en Listo.
  6. Haz clic en Añadir interfaz de red.

    1. Selecciona my-network2.
    2. Asigna el valor my-subnet2 a Subred.
    3. Haz clic en Intervalos de IP de alias.
    4. Haz clic en Añadir intervalo de IPs.
    5. Asigna el valor Primary a Intervalo de subred.
    6. Define Intervalo de IPs de alias como /32.
    7. Haz clic en Añadir intervalo de IPs.
    8. Asigna el valor range2 a Intervalo de subred.
    9. Define Intervalo de IPs de alias como /24.
    10. Haz clic en Listo.
  7. Haz clic en Crear.

gcloud

  1. Crea la primera red:

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

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

  1. Crea dos redes de VPC en modo personalizado llamadas my-network1 y my-network2. Para obtener más información, consulta Crear una red VPC en modo personalizado con solo subredes IPv4.

  2. Añade subredes a las redes de VPC. Para obtener más información, consulta Añadir una subred solo IPv4.

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

    2. Añade una subred llamada my-subnet2 a my-network2. Especifica 172.16.2.0/24 para el intervalo principal y 10.2.0.0/16 para el intervalo 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"
            }
          ]
        }
      ],
      ...
    }
    

    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

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

    Ir a instancias de VM

  2. Haz clic en el nombre de una instancia.

  3. Haz clic en Editar.

  4. 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).

  5. Haz clic en Intervalos de IP de alias.

  6. Haz clic en Añadir intervalo de IPs.

  7. Selecciona un intervalo de subredes.

  8. Introduce un intervalo de IPs de alias.

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

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 y RANGE_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 y RANGE_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

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

    Ir a instancias de VM

  2. Haz clic en el nombre de una instancia.

  3. Haz clic en Editar.

  4. 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).

  5. Haz clic en Intervalos de IP de alias.

  6. Para añadir un intervalo de IPs de alias, haz clic en Añadir intervalo de IPs de alias.

  7. Para quitar un intervalo de IPs de alias, haz clic en la X situada junto al intervalo de IPs de alias.

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

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 formato CURRENT_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

  1. 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 ser auto o custom.

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

  1. Verifica las reglas de cortafuegos.

    1. Lista de todas las reglas de cortafuegos:

      gcloud compute firewall-rules list --format=json
      
    2. Verifica que se permite el tráfico hacia y desde un intervalo de IPs de alias.

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

    1. 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
      
    2. En /etc/default/instance_configs.cfg, comprueba que el ajuste ip_aliases esté configurado como true. Si necesitas cambiarlo, también debes reiniciar el agente invitado:

      systemctl restart google-guest-agent
      
    3. 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.

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

  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
    

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

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

  1. Crea un intervalo de IPs de alias.

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

Solución:

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

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

  3. Configura el agente invitado de Google para que no cree rutas locales para intervalos de IPs de alias y reglas de reenvío.

    1. Edita /etc/default/instance_configs.cfg y define ip_forwarding=false en la sección [NetworkInterfaces]. Puedes crear la sección [NetworkInterfaces] si aún no está 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 rutas local.

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

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

Siguientes pasos