Configurar el enrutamiento de una interfaz de red adicional

En este tutorial se describe cómo crear una instancia de máquina virtual (VM) con varias interfaces de red, cada una de las cuales está conectada a una red de nube privada virtual (VPC) diferente. Además, el tutorial proporciona un ejemplo de cómo configurar el enrutamiento en una máquina virtual Linux para que puedas hacer ping correctamente a la interfaz nic1.

La configuración de enrutamiento de este tutorial se aplica a ambos tipos de interfaz de red: vNICs e interfaces de red (NICs) dinámicas. Aunque en el ejemplo de este tutorial se usa una instancia con varias NICs virtuales, puedes configurar el mismo ejemplo para una instancia que tenga NICs dinámicas.

Las instancias con varias interfaces de red se denominan instancias con varias NIC.

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Configuración de ejemplo

En el siguiente diagrama se muestran las redes de VPC, las subredes y las instancias que crearás en este tutorial, junto con valores de ejemplo que puedes usar para los nombres de los recursos y los intervalos de direcciones IP de las subredes:

Imagen 1. En este tutorial, crearás dos redes de VPC, cada una con dos subredes. Todas las subredes están en la misma región. Además, crea tres instancias: una instancia con varias NICs que se conecta a las dos primeras subredes y una instancia en cada una de las dos subredes restantes (haz clic para ampliar).

Crear dos redes de VPC

Para crear una instancia con varias NICs, las redes de VPC a las que la conectes deben existir. Crea dos redes de VPC. En este tutorial, cada red de VPC tiene dos subredes.

Para crear la configuración que se muestra en el ejemplo de configuración, cree sus redes y subredes con los siguientes valores:

  • Una red llamada network-1 que contiene lo siguiente:
    • Una subred llamada subnet-1 que tiene un intervalo de direcciones IPv4 principal de 10.10.1.0/24.
    • Una subred llamada subnet-3 que tiene un intervalo de direcciones IPv4 principal de 10.10.3.0/24.
  • Una red llamada network-2 que contiene lo siguiente:

    • Una subred llamada subnet-2 que tiene un intervalo de direcciones IPv4 principal de 10.10.2.0/24.
    • Una subred llamada subnet-4 que tiene un intervalo de direcciones IPv4 principal de 10.10.4.0/24.

Consola

  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 el campo Name (Nombre), introduce un nombre para la red VPC.

  4. Elige Personalizado en Modo de creación de subred.

  5. En la sección Nueva subred, especifica lo siguiente:

    1. Asigna un nombre a la subred.
    2. Selecciona una región. Asegúrate de que las dos redes de VPC que crees usen la misma región en al menos una de sus subredes. Usa esta misma región cuando crees la instancia con varias NICs en la siguiente sección. La configuración de ejemplo usa la misma región para todas las subredes.
    3. Introduce un intervalo de direcciones IP. Este es el intervalo IPv4 principal de la subred.

      Si seleccionas un intervalo que no es una dirección RFC 1918, confirma que no entra en conflicto con una configuración ya establecida. Para obtener más información, consulta Intervalos de subred IPv4.

    4. Haz clic en Listo.

  6. Haz clic en Añadir subred para crear una segunda subred. Usa esta segunda subred para probar ping desde fuera del intervalo de la subred principal de la interfaz de red de tu instancia.

  7. En la sección Reglas de cortafuegos, selecciona la regla allow-custom y, a continuación, haz clic en EDITAR. Configura la regla de la siguiente manera para asegurarte de que puedes probar la conectividad desde las instancias de prueba hasta multi-nic-vm:

    1. En Intervalos de IPv4, mantén seleccionadas las casillas de los intervalos de direcciones IPv4 de las subredes.
    2. En Otros intervalos de IPv4, introduce 35.235.240.0/20 para que puedas conectarte a las instancias de prueba mediante SSH. Si se incluye este intervalo, se permiten las conexiones SSH mediante el reenvío de TCP de Identity-Aware Proxy (IAP). Para obtener más información, consulta Permitir conexiones SSH entrantes a VMs.
    3. En Protocolos y puertos, selecciona protocolos y puertos especificados.
      1. Selecciona TCP y, a continuación, introduce 22, 3389 para permitir RDP y SSH.
      2. Selecciona Otro y, a continuación, introduce icmp para permitir ICMP.
  8. Haz clic en Crear.

  9. Repite estos pasos para crear una segunda red de VPC. Asegúrate de que los intervalos de direcciones IP de las subredes no se solapen con las subredes de tu primera red, como los intervalos de direcciones IP que se usan en la configuración de ejemplo.

gcloud

  1. Usa el comando networks create para crear una red de VPC.

    gcloud compute networks create NETWORK --subnet-mode=custom
    

    Haz los cambios siguientes:

    • NETWORK: nombre de la red de VPC.
  2. Usa el comando networks subnets create para crear una subred para tu red de VPC.

    gcloud compute networks subnets create NAME \
      --network=NETWORK \
      --range=RANGE \
      --region=REGION
    

    Haz los cambios siguientes:

    • NAME: nombre de la subred.
    • NETWORK: nombre de la red de VPC.
    • RANGE: un intervalo de direcciones IP. Este es el intervalo IPv4 principal de la subred.

      Si introduces un intervalo que no es una dirección RFC 1918, confirma que no entra en conflicto con ninguna configuración. Para obtener más información, consulta Intervalos de subredes IPv4.

    • REGION: una región. Asegúrate de que las dos redes de VPC que crees usen la misma región en al menos una de sus subredes. Usa esta misma región cuando crees la instancia con varias NICs en la siguiente sección. La configuración de ejemplo usa la misma región para todas las subredes.

  3. Repite el paso anterior para crear otra subred. Usa esta segunda subred para probar ping desde fuera del intervalo de la subred principal de la interfaz de red de tu instancia.

  4. Crea una regla de cortafuegos para permitir SSH, RDP e ICMP:

    gcloud compute firewall-rules create allow-ssh-rdp-icmp \
     --network NETWORK \
     --action=ALLOW \
     --direction=INGRESS \
     --rules=tcp:22,tcp:3389,icmp \
     --source-ranges=SOURCE_RANGE
    

    Haz los cambios siguientes:

    • NETWORK: introduce el valor que corresponda a la red que estés creando:
      • En la primera red, introduce network-1.
      • Cuando repitas los pasos de esta sección para la segunda red, introduce network-2.
    • SOURCE_RANGE: introduce el valor que corresponda a la red que estés creando:
      • En la primera red, introduce 10.10.3.0/24, 35.235.240.0/20. Si incluyes 10.10.3.0/24, podrás probar la conectividad de test-vm-1 a la interfaz nic0 de multi-nic-vm. 35.235.240.0/20 permite las conexiones SSH mediante el reenvío de TCP de Identity-Aware Proxy (IAP). Para obtener más información, consulta Permitir conexiones SSH entrantes a VMs.
      • Cuando repitas los pasos de esta sección para la segunda red, introduce 10.10.4.0/24, 35.235.240.0/20. Si incluyes 10.10.4.0/24, podrás probar la conectividad de test-vm-2 a la interfaz nic0 de multi-nic-vm. Si se incluye 35.235.240.0/20, se permiten las conexiones SSH mediante el reenvío de TCP de Identity-Aware Proxy (IAP). Para obtener más información, consulta Permitir conexiones SSH entrantes a VMs.
  5. Repite estos pasos para crear una segunda red de VPC. Asegúrate de que los intervalos de direcciones IP de las subredes no se solapen con las subredes de tu primera red, como los intervalos de direcciones IP que se usan en la configuración de ejemplo.

Crear una instancia con varias NICs

Crea una instancia que tenga una interfaz para cada red de VPC que hayas creado en la sección anterior.

Para crear una instancia con varias NICs, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Crear una instancia.

    Ir a Crear una instancia

  2. En el campo Name (Nombre), introduce un nombre para la instancia. Corresponde a multi-nic-vm en la configuración de ejemplo.

  3. En el campo Región, selecciona la misma región en la que has creado una subred en cada una de tus redes de VPC. La instancia debe estar en la misma región que las subredes a las que se conectan sus interfaces. La configuración de ejemplo usa la misma región para todas las subredes.

  4. En el campo Zona, selecciona una zona.

  5. En la sección Opciones avanzadas, expande Redes y, a continuación, haz lo siguiente:

    1. Consulta la sección Interfaces de red. Google Cloud rellena automáticamente la primera interfaz de red con una red y una subred. Corresponde a network-1 y subnet-1 en la configuración de ejemplo.
    2. En Dirección IPv4 interna principal, selecciona una de las siguientes opciones:
      • Efímera para asignar una nueva dirección IPv4 efímera
      • Una dirección IPv4 interna estática reservada de la lista
      • Reservar dirección IPv4 interna estática para reservar y asignar una nueva dirección IPv4 interna estática. Si utilizas la configuración de ejemplo, reserva 10.10.1.3.
    3. En Dirección IPv4 externa, selecciona una None.

    4. Para añadir otra interfaz, haz clic en Añadir interfaz de red.

    5. En Red y Subred, selecciona la segunda red y la segunda subred que has creado. Corresponde a network-2 y subnet-2 en la configuración de ejemplo.

    6. En Tipo de pila de IP, selecciona IPv4 (pila única).

    7. En Dirección IPv4 interna principal, selecciona una de las siguientes opciones:

      • Efímera para asignar una nueva dirección IPv4 efímera
      • Una dirección IPv4 interna estática reservada de la lista
      • Reservar dirección IPv4 interna estática para reservar y asignar una nueva dirección IPv4 interna estática. Si utilizas la configuración de ejemplo, reserva 10.10.2.3.
    8. En Dirección IPv4 externa, selecciona una None.

    9. Para terminar de añadir la interfaz de red, haz clic en Hecho.

  6. Haz clic en Crear.

gcloud

Para crear interfaces de red en una instancia nueva, usa el comando instances create.

Incluye la marca --network-interface en cada interfaz, seguida de las claves de red adecuadas, como network, subnet y private-network-ip. En el caso de la dirección IP externa, el siguiente comando especifica no-address.

gcloud compute instances create INSTANCE_NAME \
    --zone ZONE \
    --network-interface \
        network=NIC0_NETWORK,subnet=NIC0_SUBNET,private-network-ip=NIC0_INTERNAL_IPV4_ADDRESS,no-address \
    --network-interface \
        network=NIC1_NETWORK,subnet=NIC1_SUBNET,private-network-ip=NIC1_INTERNAL_IPV4_ADDRESS,no-address

Haz los cambios siguientes:

  • INSTANCE_NAME: el nombre de la instancia que se va a crear. Corresponde a multi-nic-vm en la configuración de ejemplo.
  • ZONE: la zona en la que se crea la instancia. Introduce una zona de la misma región en la que hayas creado una subred en cada una de tus redes de VPC. La instancia debe estar en la misma región que las subredes a las que se conectan sus interfaces. La configuración de ejemplo usa la misma región para todas las subredes.
  • Valores de la primera interfaz:
    • NIC0_NETWORK: la red a la que se adjunta la interfaz. Corresponde a network-1 en la configuración de ejemplo.
    • NIC0_SUBNET: la subred a la que se adjunta la interfaz. Corresponde a subnet-1 en la configuración de ejemplo.
    • NIC0_INTERNAL_IPV4_ADDRESS: la dirección IPv4 interna que quieres que tenga la interfaz en la subred de destino. Si utilizas la configuración de ejemplo, introduce 10.10.1.3. Omítelo si solo quieres que se asigne cualquier dirección válida.
  • Valores de la segunda interfaz
    • NIC1_NETWORK: la red a la que se adjunta la interfaz. Corresponde a network-2 en la configuración de ejemplo.
    • NIC1_SUBNET: la subred a la que se adjunta la interfaz. Corresponde a subnet-2 en la configuración de ejemplo.
    • NIC1_INTERNAL_IPV4_ADDRESS: la dirección IPv4 interna que quieres que tenga la interfaz en la subred de destino. Si utilizas la configuración de ejemplo, introduce 10.10.2.3. Omítelo si solo quieres que se asigne una dirección válida.

Crear dos instancias de prueba

Crea dos instancias adicionales:

  • Una en la misma red, pero en una subred diferente, que la interfaz nic0 de la instancia con varias NICs que has creado. Corresponde a test-vm-1 en subnet-3 en la configuración de ejemplo.
  • Una en la misma red, pero en una subred diferente, que la interfaz nic1 de la instancia con varias NICs que has creado. Corresponde a test-vm-2 en subnet-4 en la configuración de ejemplo.

Estas instancias se usan para probar ping desde las subredes que están fuera del intervalo de la subred principal de tu instancia, que tiene varias interfaces de red.

Para crear las instancias, sigue estos pasos:

Consola

  1. En la Google Cloud consola, ve a la página Crear una instancia.

    Ir a Crear una instancia

  2. En el campo Name (Nombre), introduce un nombre para la instancia.

  3. En el campo Región, selecciona la región en la que has colocado la subred adicional en tu primera red VPC.

  4. En el campo Zona, selecciona una zona.

  5. En la sección Opciones avanzadas, expande Redes y, a continuación, haz lo siguiente:

    1. Revisa la sección Interfaces de red. Asegúrate de que la subred sea diferente de la que usa la interfaz nic0 de tu instancia con varias NICs.
  6. Haz clic en Crear.

  7. Repite estos pasos para crear una instancia en tu segunda red de VPC y en una subred diferente a la de la interfaz nic1 de tu instancia con varias NICs.

gcloud

  1. Ejecuta el comando instances create e incluye la marca --network-interface para cada interfaz, seguida de las claves de red adecuadas, como network, subnet, private-network-ip o address.

    gcloud compute instances create INSTANCE_NAME \
      --zone ZONE \
      --network-interface \
           network=NIC0_NETWORK,subnet=NIC0_SUBNET, private-network-ip=NIC0_INTERNAL_IPV4_ADDRESS
    

    Haz los cambios siguientes:

    • INSTANCE_NAME: el nombre de la instancia que se va a crear.
    • ZONE: la zona en la que se crea la instancia. Introduce la región en la que has colocado la subred adicional en tu primera red de VPC, es decir, la subred que no utiliza la instancia de varias NICs.
    • NIC0_NETWORK: la red a la que se adjunta la interfaz.
    • NIC0_SUBNET: la subred a la que se adjunta la interfaz.
    • NIC0_INTERNAL_IPV4_ADDRESS: la dirección IPv4 interna que quieres que tenga la interfaz en la subred de destino. Omítelo si solo quieres que se asigne cualquier dirección válida.
  2. Repite el paso anterior para crear una instancia en tu segunda red de VPC y en una subred diferente a la de la interfaz nic1 de tu instancia con varias NICs.

Probar la conectividad con la instancia de varias NICs

Sigue los pasos de esta sección para probar ping desde las instancias adicionales que has creado en cada interfaz de tu instancia con varias interfaces de red.

En la siguiente tabla se muestran los casos en los que puedes hacer ping correctamente en este punto del tutorial con los valores de dirección IP de la configuración de ejemplo.

De Para ping successful
Instancia (test-vm-1) en la misma red, pero en una subred diferente, que la interfaz nic0 de multi-nic-vm. Dirección IP interna (10.10.1.3) de la interfaz nic0 de multi-nic-vm
Instancia (test-vm-2) en la misma red, pero en una subred diferente, que la interfaz nic1 de multi-nic-vm Dirección IP interna (10.10.2.3) de la interfaz nic1 de multi-nic-vm

Obtener las direcciones IP de la instancia con varias NICs

Si es necesario, obtén las direcciones IP de la interfaz de tu instancia con varias NICs para poder hacer ping en las secciones siguientes.

Consola

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

    Ir a instancias de VM

  2. En la lista de instancias, busca la instancia con varias NICs que has creado y anota estos valores para que puedas hacer ping en los pasos siguientes:

    • Las direcciones IP internas de sus interfaces nic0 y nic1

gcloud

  1. Ejecuta el comando instances list:

    gcloud compute instances list
    
  2. Busca tu instancia con varias NICs y anota lo siguiente del resultado:

    • INTERNAL_IP: la primera y la segunda direcciones corresponden a las interfaces de red nic0 y nic1.

Hacer ping en la interfaz nic0 de tu instancia

  1. En la lista de instancias, busca la instancia que has creado en la misma red, pero en una subred diferente, que la interfaz nic0 de la instancia con varias NICs.

    1. En la fila de la instancia, haz clic en SSH.
  2. Ejecuta el siguiente comando para hacer ping a la dirección IP interna de la interfaz nic0 de tu instancia con varias NICs:

    ping INTERNAL_IP_NIC0
    

    Sustituye INTERNAL_IP_NIC0 por la dirección correspondiente que hayas registrado anteriormente. Si utilizas la configuración de ejemplo, introduce 10.10.1.3.

    Ten en cuenta que el ping se ha realizado correctamente.

  3. Ejecuta exit para cerrar la ventana de la terminal.

Hacer ping en la interfaz nic1 de tu instancia

  1. En la lista de instancias, busca la instancia que has creado en la misma red, pero en una subred diferente, que la interfaz nic1 de la instancia con varias NICs.

    1. En la fila de la instancia, haz clic en SSH.
  2. Ejecuta el siguiente comando para hacer ping a la dirección IP interna de la segunda interfaz de tu instancia con varias NICs:

    ping INTERNAL_IP_NIC1
    

    Sustituye INTERNAL_IP_NIC1 por la dirección correspondiente que hayas registrado anteriormente. Si utilizas la configuración de ejemplo, introduce 10.10.2.3.

    Ten en cuenta que el ping no se ha realizado correctamente.

  3. Ejecuta exit para cerrar la ventana de la terminal.

Configurar el enrutamiento de políticas

La prueba de ping de la sección anterior ha fallado debido al enrutamiento asimétrico: el tráfico se envía a la interfaz nic1 de multi-nic-vm, pero la ruta predeterminada de la instancia provoca que las respuestas se envíen desde nic0. Para obtener más información, consulta las especificaciones en el artículo sobre la descripción general de las interfaces de red múltiples.

Sigue los pasos de esta sección para configurar el enrutamiento de políticas y asegurarte de que los paquetes de salida salgan por la interfaz correcta.

En este tutorial se usan VMs de Linux. Los sistemas operativos Windows no admiten el enrutamiento de políticas basado en la fuente.

Buscar la pasarela predeterminada de la interfaz nic1 de la instancia

Para encontrar la pasarela predeterminada de la interfaz de una instancia, consulta el servidor de metadatos. Si usas la configuración de ejemplo, el valor es 10.10.2.1.

Para encontrar la pasarela predeterminada de la dirección IPv4 de la interfaz nic1, haz la siguiente solicitud desde la instancia con varias NICs:

curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/1/gateway -H "Metadata-Flavor: Google"

Para buscar la pasarela predeterminada de otra interfaz de red, especifica el número de interfaz correspondiente. Para saber el nombre que se ha asignado a la interfaz, consulta Obtener las direcciones IP de la instancia con varias NICs. Google Cloud Es diferente del nombre de la interfaz que asigna el sistema operativo. La interfaz tiene el formato nicNUMBER. En tu solicitud al servidor de metadatos, introduce solo el número. Por ejemplo, para nic2, especifica 2.

Configurar una nueva tabla de enrutamiento en la instancia con varias NICs

En esta sección se describe cómo configurar una nueva tabla de enrutamiento en la instancia con varias NICs.

  1. Habilita la consola en serie siguiendo los pasos que se indican en Habilitar el acceso a una instancia de VM.

  2. Para no perder la conectividad con la instancia mientras cambias la ruta predeterminada, conéctate a la consola serie.

  3. Ejecuta ip link list para enumerar las interfaces de red de tu instancia y, a continuación, anota el nombre de la interfaz nic1, como ens5.

  4. Ejecuta el siguiente comando para asegurarte de que la interfaz nic1 está configurada con una dirección IP.

    ip addr show NIC
    

    Sustituye NIC por el nombre de la interfaz nic1 del paso anterior.

    Si no se ha asignado automáticamente una dirección IP a la interfaz nic1, puedes asignarla manualmente ejecutando el siguiente comando:

    sudo ip addr add IP_ADDRESS dev NIC
    

    Haz los cambios siguientes:

    • IP_ADDRESS: la dirección IP interna que se va a configurar en la interfaz. Corresponde a 10.10.2.3 en la configuración de ejemplo.
    • NIC: el nombre de la interfaz nic1 del paso anterior.
  5. Crea una tabla de rutas personalizada para la interfaz de red nic1.

    echo "1 ROUTE_TABLE_NAME" | sudo tee -a /etc/iproute2/rt_tables
    

    Sustituye ROUTE_TABLE_NAME por un nombre para la tabla de rutas, como route-nic1.

  6. Crea la ruta predeterminada en la tabla de rutas personalizada destinada a la interfaz de red nic1 y una ruta con una sugerencia de origen para los paquetes enviados a la pasarela.

    sudo ip route add default via GATEWAY dev NIC table ROUTE_TABLE_NAME
    sudo ip route add GATEWAY src IP_ADDRESS dev NIC table ROUTE_TABLE_NAME
    

    Haz los cambios siguientes:

    • GATEWAY: la dirección IP de la pasarela predeterminada de la interfaz. Corresponde a 10.10.2.1 en la configuración de ejemplo.
    • NIC: la interfaz a la que quieres añadir una ruta. Por ejemplo, ens5.
    • ROUTE_TABLE_NAME: el nombre de tu tabla de rutas.
    • IP_ADDRESS: la dirección IP interna configurada en la interfaz. Corresponde a 10.10.2.3 en la configuración de ejemplo.
  7. Crea reglas de enrutamiento que indiquen a la instancia que use la tabla de rutas personalizada para los paquetes con orígenes o destinos que coincidan con la dirección IPv4 interna principal asignada a la interfaz nic1:

    sudo ip rule add from IP_ADDRESS/PREFIX_LENGTH table ROUTE_TABLE_NAME
    sudo ip rule add to IP_ADDRESS/PREFIX_LENGTH table ROUTE_TABLE_NAME
    

    Haz los cambios siguientes:

    • IP_ADDRESS: la dirección IP interna configurada en la interfaz. Corresponde a 10.10.2.3 en la configuración de ejemplo.
    • PREFIX_LENGTH: la longitud del prefijo de la dirección IP configurada.
    • ROUTE_TABLE_NAME: el nombre de tu tabla de rutas.
  8. Ejecuta el siguiente comando para eliminar todas las entradas de la tabla de rutas de la caché. Esto puede ser necesario si usas una instancia con tablas de rutas configuradas anteriormente.

    sudo ip route flush cache
    

Volver a probar la conectividad a la instancia con varias NICs

En la siguiente tabla se muestran los casos en los que puedes hacer ping correctamente ahora que has configurado el enrutamiento de políticas. Repite los pasos para hacer ping a la interfaz nic1 de tu instancia para confirmar que ahora puedes hacer ping a ambas direcciones IP correctamente.

De Para ping successful
Instancia (test-vm-1) en la misma red, pero en una subred diferente, que la interfaz nic0 de multi-nic-vm. Dirección IP interna (10.10.1.3) de la interfaz nic0 de multi-nic-vm
Instancia (test-vm-2) en la misma red, pero en una subred diferente, que la interfaz nic1 de multi-nic-vm Direcciones IP internas (10.10.2.3) de la interfaz nic1 del multi-nic-vm