Usa rutas

En esta página, se describe cómo crear y administrar rutas para redes de nube privada virtual (VPC) en Google Cloud. También, se da por hecho que estás familiarizado con los diferentes tipos de rutas de Google Cloud y sus características, como se describe en la Descripción general de rutas.

En cada red nueva hay dos tipos de rutas que genera el sistema: una ruta predeterminada, la cual se puede quitar o reemplazar, y una ruta de subred para cada una de las subredes. No puedes quitar una ruta de subred, a menos que borres la subred correspondiente.

Además de las rutas generadas por el sistema, puedes crear otras rutas estáticas personalizadas.

Enumera las rutas para una red de VPC

Puedes usar Google Cloud CLI o la API para enumerar y ver detalles de los siguientes tipos de rutas:

Ni los comandos de gcloud CLI ni los métodos de la API muestran los siguientes tipos de rutas:

Para ver la vista completa de rutas, usa la consola de Google Cloud. Para enumerar y describir rutas basadas en políticas, consulta Usa rutas basadas en políticas.

Consola

  1. En la consola de Google Cloud, ve a la página Supervisión.

    Ir a Rutas

  2. En la pestaña Effective routes, haz lo siguiente:

    • Elige una red de VPC.
    • Elige una región.
  3. Haz clic en Ver.

  4. Puedes filtrar según el tipo de ruta, el rango de IP de destino, el tipo de siguiente salto y mucho más.

gcloud

Usa los siguientes comandos de gcloud CLI para enumerar y ver detalles sobre las rutas enumeradas antes:

gcloud compute routes list \
    --filter="network=NETWORK_NAME" \
    --project=PROJECT_ID
gcloud compute routes describe ROUTE_NAME \
    --format="flattened()" \
    --project=PROJECT_ID

Reemplaza lo siguiente:

  • NETWORK_NAME: Es el nombre de la red de VPC.
  • PROJECT_ID: el ID del proyecto que contiene tu red de VPC.
  • ROUTE_NAME: el nombre de la ruta.

API

Usa los siguientes métodos de API para enumerar y ver detalles sobre las rutas enumeradas antes:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes?filter=network="NETWORK_URL
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes/ROUTE_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto que contiene tu red de VPC.
  • NETWORK_URL: la URL de la red de VPC.
  • ROUTE_NAME: el nombre de la ruta.

Para obtener más información, consulta el método routes.list y el método routes.get.

Enumera las rutas aplicables a una interfaz de red de VM

Puedes usar la consola de Google Cloud a fin de ver las rutas aplicables para la interfaz de red de una VM. En esta vista, se acota la lista de rutas que puedes usar para el tráfico de salida.

Para ver las rutas aplicables a una interfaz de red específica de una VM, sigue estos pasos.

Consola

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

    Ir a Instancias de VM

  2. Ubica la instancia de VM en la lista. En el menú Más acciones al final de la fila, selecciona Ver detalles de red.

  3. Si una instancia tiene varias interfaces de red, en la sección Detalles de la interfaz de red, selecciona la interfaz de red que deseas ver.

  4. En la sección Detalles de firewall y rutas, haz clic en la pestaña Rutas para ver todas las rutas que aplican a la interfaz de red, ordenadas por nombre de ruta.

Agrega y quita rutas estáticas

Puedes agregar o quitar rutas estáticas y rutas basadas en políticas que sean locales para tu red de VPC. En esta sección, se describe cómo agregar y borrar rutas estáticas locales. Para obtener más información sobre cómo agregar y quitar rutas basadas en políticas, consulta Usa rutas basadas en políticas.

Las rutas de subred se agregan y borran de forma automática cuando agregas o borras una subred. Para obtener más información sobre cómo agregar y quitar subredes, consulta Trabaja con subredes.

Todas las rutas en una red de VPC que están conectadas mediante el intercambio de tráfico entre redes de VPC deben manipularse en la red de VPC que exporta esas rutas. Para obtener más información, consulta Opciones de intercambio de rutas.

Antes de agregar una ruta estática

Antes de agregar una ruta estática, asegúrate de comprender los siguientes puntos:

  • Asegúrate de comprender los diferentes tipos de siguientes saltos que pueden usar las rutas estáticas. Para obtener información sobre los diferentes tipos de próximos saltos de rutas estáticas, incluidos los que admiten destinos de IPv6, consulta Siguientes saltos y características.
  • A menos que uses subredes híbridas, una ruta estática no puede tener un rango de destino que coincida con el rango de destino de una subred o una ruta de subred de intercambio de tráfico o sea más específico que dicho rango. Para obtener más información, consulta Interacciones con rutas estáticas personalizadas en Descripción general de la ruta y, además, Interacciones de la ruta estática y la subred en la documentación de intercambio de tráfico entre redes de VPC.
  • Para evitar conflictos cuando usas una red de modo automático, no crees rutas estáticas cuyos destinos se ajusten a 10.128.0.0/9. A fin de obtener más detalles, revisa los rangos de IP reservados para las redes de modo automático.
  • Los destinos de las rutas estáticas personalizadas no se pueden superponer con ningún rango asignado interno.
  • Asegúrate de estar familiarizado con las instancias como siguientes saltos antes de crear una ruta estática personalizada que use una VM como su siguiente salto. Google Cloud solo valida que exista una VM en el momento en que creas la ruta si eliges una instancia de siguiente salto.
  • Si creas una ruta con una etiqueta de red, solo las VM con esa etiqueta reciben esa ruta. Sin embargo, las VM etiquetadas aún recibirán todas las rutas que no tengan una etiqueta de red.

Agrega una ruta estática

Agrega una ruta estática a una red. Para obtener más información sobre los diferentes tipos de siguientes saltos de rutas estáticas, incluidos los que admiten destinos de IPv6, consulta Siguientes saltos y características.

Consola

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

    Ir a Rutas

  2. Haz clic en la pestaña Administración de rutas.

  3. Haz clic en Crear ruta.

  4. Especifica un Nombre y una Descripción para la ruta.

  5. En la lista Red, selecciona una red existente para la ruta.

  6. En la lista Tipo de ruta, selecciona Ruta estática.

  7. En la lista Versión de IP, selecciona la versión de IP requerida:

    • Para crear una ruta estática IPv4, selecciona IPv4.
    • Para crear una ruta estática IPv6, selecciona IPv6.
  8. Especifica un rango de IP de destino. El destino más amplio posible es 0.0.0.0/0 para IPv4 o ::/0 para IPv6.

  9. Especifica una prioridad para la ruta. La prioridad puede ser de 0 (la prioridad más alta) a 65535 (la prioridad más baja).

  10. Para que la ruta sea aplicable solo a instancias seleccionadas con etiquetas de red que coincidan, especifícalas en el campo Etiquetas de instancia. Para que la ruta sea aplicable a todas las instancias de la red, deja el campo en blanco.

  11. Selecciona un próximo salto para la ruta:

    • Puerta de enlace de Internet predeterminada: entrega paquetes a Internet y a los servicios y las APIs de Google
    • Especifica una instancia: entrega paquetes a la interfaz de red de una instancia de VM. Especifica la instancia de VM por nombre y zona. Si el destino de la ruta es una dirección IPv6, la instancia de VM debe ser pila doble.
    • Especifica la dirección IP de una instancia: especifica la dirección IPv4 interna principal de una instancia existente en la red de VPC.
    • Especifica el túnel VPN: entrega paquetes a un túnel de VPN clásica existente mediante el enrutamiento estático.
    • Especifica un nombre de regla de reenvío o una dirección IP de un balanceador de cargas de red de transferencia interno: entrega paquetes a un balanceador de cargas de red de transferencia interno, que se especifica por su nombre de regla de reenvío interno (o dirección IPv4) y región.
  12. Haz clic en Crear.

gcloud

Crea una ruta estática personalizada nueva con el siguiente comando de gcloud CLI:

gcloud compute routes create ROUTE_NAME \
    --network=NETWORK \
    --destination-range=DESTINATION_RANGE \
    --priority=PRIORITY \
    NEXT_HOP_SPECIFICATION

Reemplaza lo siguiente:

  • ROUTE_NAME: el nombre de la ruta
  • NETWORK: es el nombre de la red de VPC que contiene la ruta
  • DESTINATION_RANGE: las direcciones IPv4 o IPv6 de destino a las que se aplica esta ruta. El destino más amplio posible es 0.0.0.0/0 para IPv4 o ::/0 para IPv6.
  • PRIORITY: la prioridad de la ruta, que puede ser de 0 (la prioridad más alta) a 65535 (la prioridad más baja)
  • NEXT_HOP_SPECIFICATION: el próximo salto de la ruta estática. Usa uno de los siguientes parámetros o una combinación de parámetros:

    • --next-hop-gateway=default-internet-gateway: Entrega paquetes en Internet, a las APIs y a los servicios de Google.
    • --next-hop-instance=INSTANCE_NAME y --next-hop-instance-zone=ZONE: entregan paquetes a la interfaz de red de una instancia de VM existente. Especifica la instancia de VM por nombre y zona. Si el destino de la ruta es una dirección IPv6, la instancia de VM debe ser pila doble.
    • --next-hop-address=ADDRESS: Especifica la dirección IPv4 principal de una instancia existente en la red de VPC.
    • --next-hop-vpn-tunnel=VPN_TUNNEL_NAME y --next-hop-vpn-tunnel-region=REGION: entregan paquetes a un túnel de VPN clásica existente mediante el enrutamiento estático.
    • --next-hop-ilb=FORWARDING_RULE y --next-hop-ilb-region=REGION: entregan paquetes a un balanceador de cargas de red de transferencia interno. Especifica la instancia de VM mediante el nombre (o la dirección IPv4) y la región de la regla de reenvío interno.

    Para que la ruta estática personalizada solo se aplique a ciertas VM por etiqueta de red, agrega la marca --tags y especifica una o más etiquetas de red. Para obtener más información sobre cómo trabajan las etiquetas de red en conjunto con las rutas estáticas personalizadas, consulta Rutas aplicables en la descripción general de rutas. Puedes usar etiquetas con cualquier ruta estática personalizada.

Para obtener más información sobre la sintaxis de gcloud CLI, consulta la documentación del SDK.

API

Crea una nueva ruta estática personalizada.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "destRange": "DESTINATION_RANGE",
  "priority": PRIORITY,
  "NEXT_HOP_SPECIFICATION"
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se crea tu ruta.
  • ROUTE_NAME: el nombre de la ruta
  • NETWORK: es el nombre de la red de VPC que contiene la ruta.
  • DESTINATION_RANGE: el rango de direcciones IPv4 o IPv6 de destino al que se aplica esta ruta. El destino más amplio posible es 0.0.0.0/0 para IPv4 o ::/0 para IPv6.
  • PRIORITY: la prioridad de la ruta, que puede ser de 0 (la prioridad más alta) a 65535 (la prioridad más baja)
  • NEXT_HOP_SPECIFICATION: el próximo salto de la ruta estática. Usa uno de los siguientes parámetros o una combinación de parámetros:
    • nextHopGateway: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/gateways/default-internet-gateway: entrega paquetes a Internet, a las APIs y a los servicios de Google
    • nextHopInstance: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME: entrega paquetes en la interfaz de red de una instancia de VM. Especifica la instancia de VM por nombre y zona. Si el destino de la ruta es una dirección IPv6, la instancia de VM debe ser pila doble.
    • nextHopIp: ADDRESS: Especifica la dirección IPv4 principal de una instancia existente en la red de VPC.
    • nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/vpnTunnels/VPN_TUNNEL_NAME: entrega paquetes a un túnel de VPN clásica existente mediante el enrutamiento estático.
    • nextHopIlb: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE: entrega paquetes a un balanceador de cargas de red de transferencia interno. Especifica la instancia de VM mediante el nombre (o la dirección IPv4) y la región de la regla de reenvío interno.

Para que la ruta estática personalizada se aplique solo a algunas VM por etiqueta de red, agrega el campo tags y especifica una o más etiquetas de red. Para obtener más información sobre cómo trabajan las etiquetas de red en conjunto con las rutas estáticas personalizadas, consulta Rutas aplicables en la descripción general de rutas. Puedes usar etiquetas con cualquier ruta estática personalizada.

Para obtener más información, consulta el método routes.insert.

Terraform

Puedes crear una ruta estática mediante un módulo de Terraform.

Esta ruta estática crea una ruta predeterminada a Internet.

module "google_compute_route" {
  source       = "terraform-google-modules/network/google//modules/routes"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "default"

  routes = [
    {
      name              = "egress-internet"
      description       = "route through IGW to access internet"
      destination_range = "0.0.0.0/0"
      tags              = "egress-inet"
      next_hop_internet = "true"
    }
  ]
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega una ruta predeterminada IPv4

La ruta estática predeterminada IPv4 (0.0.0.0/0) con next-hop-gateway configurado como default-internet-gateway se configura de forma automática para cada red de VPC. Sigue estos pasos para volver a crear esta ruta si es necesario.

Consola

  1. En la consola de Google Cloud, ve a la página Supervisión.

    Ir a Rutas

  2. Haz clic en la pestaña Administración de rutas.

  3. Haz clic en Crear ruta.

  4. Especifica un Nombre y una Descripción para la ruta.

  5. Selecciona una red existente para la ruta.

  6. En Rango de IP de destino, ingresa 0.0.0.0/0.

  7. Especifica una Prioridad para la ruta. La prioridad puede ser de 0 (la prioridad más alta) a 65535 (la prioridad más baja).

  8. En Siguiente salto, selecciona Puerta de enlace de Internet predeterminada.

  9. Haz clic en Crear.

gcloud

Vuelve a crear la ruta IPv4 predeterminada de una red.

gcloud compute routes create ROUTE_NAME \
    --destination-range=0.0.0.0/0 \
    --network=NETWORK \
    --next-hop-gateway=default-internet-gateway

Reemplaza lo siguiente:

  • ROUTE_NAME: un nombre para la ruta
  • NETWORK: es el nombre de la red de VPC que contiene la ruta

API

Vuelve a crear la ruta IPv4 predeterminada de una red.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "destRange": "0.0.0.0/0",
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "nextHopGateway": "projects/PROJECT_ID/global/gateways/default-internet-gateway"
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se crea tu ruta.
  • ROUTE_NAME: un nombre para la ruta
  • NETWORK_NAME: es el nombre de la red de VPC que contiene la ruta

Agrega una ruta predeterminada IPv6

La ruta estática predeterminada IPv6 (::/0) con next-hop-gateway configurado como default-internet-gateway se configura de forma automática para la red de VPC cuando creas una subred de doble pila con el externo. Tipo de acceso de IP. Puedes borrar la ruta para bloquear todo el tráfico de IPv6 desde las VMs hacia Internet. También puedes volver a crear la ruta si es necesario.

Consola

  1. En la consola de Google Cloud, ve a la página Supervisión.

    Ir a Rutas

  2. Haz clic en la pestaña Administración de rutas.

  3. Haz clic en Crear ruta.

  4. Especifica un Nombre y una Descripción para la ruta.

  5. Selecciona una red existente para la ruta.

  6. En Rango de IP de destino, ingresa ::/0.

  7. Especifica una prioridad para la ruta. La prioridad puede ser de 0 (la prioridad más alta) a 65535 (la prioridad más baja).

  8. En Siguiente salto, selecciona Puerta de enlace de Internet predeterminada.

  9. Haz clic en Crear.

gcloud

Vuelve a crear la ruta IPv6 predeterminada de una red.

gcloud compute routes create ROUTE_NAME \
    --destination-range=::/0 \
    --network=NETWORK \
    --next-hop-gateway=default-internet-gateway

Reemplaza lo siguiente:

  • ROUTE_NAME: un nombre para la ruta.
  • NETWORK: es el nombre de la red de VPC que contiene la ruta.

API

Vuelve a crear la ruta IPv6 predeterminada de una red.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes
{
  "destRange": "::/0",
  "name": "ROUTE_NAME",
  "network": "NETWORK_NAME",
  "nextHopGateway": "projects/PROJECT_ID/global/gateways/default-internet-gateway"
}

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se crea tu ruta.
  • ROUTE_NAME: un nombre para la ruta
  • NETWORK_NAME: es el nombre de la red de VPC que contiene la ruta

Modifica una ruta estática

No puedes editar ni actualizar una ruta estática después de crearla. Para modificar una ruta estática, debes borrarla y crear un reemplazo.

Borra una ruta estática

Para borrar un modelo, haz lo siguiente:

Consola

  1. En la consola de Google Cloud, ve a la página Supervisión.

    Ir a Rutas

  2. Haz clic en la pestaña Administración de rutas.

  3. Selecciona la casilla de verificación junto a la regla que deseas borrar.

  4. Haz clic en Borrar.

  5. Haz clic en Borrar nuevamente para confirmar.

gcloud

Borra una ruta estática personalizada mediante el siguiente comando de gcloud CLI:

gcloud compute routes delete ROUTE_NAME

Reemplaza ROUTE_NAME por el nombre de la ruta que deseas borrar.

API

Borra una ruta estática personalizada para quitarla de tu red de VPC mediante el método routes.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/routes/ROUTE_NAME

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto en el que se encuentra tu ruta.
  • ROUTE_NAME: el nombre de la ruta que se borrará.

Propagación de cambios de ruta

Cuando agregas o borras una ruta estática, la ruta se propaga a todas las instancias de VM y regiones en tu red de VPC. Un estado de la operación de ruta PENDING o RUNNING indica que el cambio de ruta está en cola.

Después de la cola, el estado de la operación de ruta cambia a DONE. Es posible que se necesiten 30 segundos más antes de que todas las instancias de VM en tu red de VPC y las redes de intercambio de tráfico entre redes de VPC usen una ruta nueva o dejen de usar una ruta anterior.

Si agregas o quitas varias rutas estáticas de forma simultánea, los cambios se pueden aplicar en cualquier orden. No hay ninguna garantía de que el orden en el que envías los cambios de ruta sea el orden en el que se procesan. Diferentes instancias pueden detectar los cambios en momentos diferentes.

Si necesitas realizar cambios de ruta que dependen unos de otros, debes realizar esos cambios de forma secuencial; para ello, realiza los cambios posteriores solo después de que el estado del cambio anterior sea DONE y de que hayan transcurrido 30 segundos adicionales.

Habilita el reenvío de IP para las instancias

De forma predeterminada, el reenvío de IP está inhabilitado y Google Cloud realiza una verificación de direcciones de origen estricta. Sujeto a la configuración de firewall de salida efectiva, una VM puede emitir paquetes con las siguientes fuentes:

  • La dirección IPv4 interna principal de la interfaz de red (NIC) de una instancia.
  • Cualquier rango de alias de IP que se configura en la NIC de una instancia.
  • Si se configura un rango de direcciones IPv6 en la subred y la instancia es de doble pila, cualquiera de las direcciones IPv6 están asignadas a la NIC.
  • Una dirección IP interna o externa asociada con una regla de reenvío, para el balanceo de cargas de transferencia o el reenvío de protocolos si la instancia es un backend de un balanceador de cargas de red de transferencia interno o un balanceador de cargas de red de transferencia externo, o una instancia de destino hace referencia a ella.

A fin de usar una VM como un siguiente salto para una ruta, es necesario que la VM reenvíe paquetes cuyos orígenes no coincidan con una de las direcciones IP o los rangos de la lista anterior. Para reenviar paquetes con direcciones de origen arbitrarias, debes habilitar el reenvío de IP:

  • Cuando creas o actualizas una VM, debes habilitar el reenvío de IP mediante las instrucciones que se indican en esta sección. La habilitación del reenvío de IP se aplica a todas las NIC de la VM.
  • Además de los pasos de esta sección, debes habilitar el reenvío de IP dentro del sistema operativo invitado de VM. Para hacerlo en Linux, establece el valor de uno o ambos de los siguientes parámetros del kernel en 1: net.ipv4.ip_forward (para IPv4) o net.ipv6.conf.all.forwarding (para IPv6).

Para habilitar el reenvío de IP cuando creas una VM, completa los siguientes pasos.

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. En la sección Opciones avanzadas, expande Herramientas de redes, discos, seguridad, administración, usuario único.

  4. Expande la sección Herramientas de redes.

  5. En la sección Reenvío de IP, selecciona la casilla de verificación Habilitar.

gcloud

Cuando creas una instancia, agrega la marca --can-ip-forward a tu comando:

gcloud compute instances create ... --can-ip-forward

API

Cuando crees una instancia, usa el campo canIpForward para habilitar el reenvío de IP:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "canIpForward": true,
  ...other fields
}

Reemplaza lo siguiente:

  • PROJECT_ID: El ID del proyecto que contiene la instancia
  • ZONE: la zona deb Google Cloud que contiene la instancia

Para obtener más información, consulta el método instances.insert.

Terraform

Puedes usar el recurso de Terraform para crear una instancia de VM con el reenvío de IP habilitado.

En este ejemplo, los argumentos de Terraform tienen valores asignados que puedes cambiar.

resource "google_compute_instance" "default" {
  project      = var.project_id # Replace this with your project ID in quotes
  zone         = "southamerica-east1-b"
  name         = "instance-next-hop"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    network = "default"
  }
  can_ip_forward = true
}

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Después de habilitar el reenvío de IP, continúa con el proceso de creación de VM.

Para habilitar el reenvío de IP en una VM existente, actualiza las propiedades de la instancia canIpForward.

¿Qué sigue?