Interfaces de red múltiples

En esta página, se proporciona una descripción general de las interfaces de red múltiples en una instancia de máquina virtual (VM). Además, se describe cómo funcionan y se muestran algunas opciones de configuración. Para obtener información sobre cómo crear configuraciones en las que se usen interfaces múltiples, consulta la sección sobre cómo crear VMs con interfaces de red múltiples.

Las VMs con varios controladores de interfaces de red se denominan VMs con varias NIC.

De forma predeterminada, las redes de nube privada virtual (VPC) de Google Cloud son dominios de redes privadas aisladas. Las redes tienen un permiso global y contienen subredes regionales. Las instancias de VM dentro de una red de VPC se pueden comunicar entre sí a través de direcciones IP internas, siempre y cuando las reglas de firewall lo permitan. Sin embargo, no se permite la comunicación mediante direcciones IP internas entre redes, a menos que configures mecanismos como el intercambio de tráfico entre redes de VPC o Cloud VPN.

Cada instancia de una red de VPC tiene una interfaz de red predeterminada. Cuando configuras una interfaz de red, debes elegir una red de VPC y una subred dentro de esa red de VPC para conectar la interfaz. Puedes crear más interfaces de red adicionales conectadas a tus VMs, pero cada interfaz debe conectarse a una red de VPC distinta. Con las interfaces de red múltiples, puedes crear configuraciones en las que una instancia se conecta directamente a varias redes de VPC.

Cada instancia puede tener hasta ocho interfaces, según el tipo de instancia. Para obtener más información, consulta Cantidad máxima de interfaces de red.

Cada interfaz puede tener las siguientes direcciones IP configuradas:

  • Una dirección IPv4 interna (obligatoria)
  • Una dirección IPv4 externa
  • Una dirección IPv6, ya sea interna o externa, pero no ambas

    Para configurar una dirección IPv6, debes conectar la interfaz a una subred que tenga un rango IPv6 configurado.

Por lo general, es posible que necesites varias interfaces si quieres configurar una instancia como un dispositivo de red que se encargue del balanceo de cargas, la detección y prevención de intrusiones (IDS/IPS), el firewall de aplicación web (WAF) o la optimización de la WAN entre redes. Las interfaces de red múltiples también son útiles cuando las aplicaciones que se ejecutan en una instancia requieren una separación del tráfico, como la separación del tráfico del plano de datos del de la administración.

La MTU de la red conectada afecta a todas las interfaces de una VM. Para obtener más información sobre la MTU de las interfaces, consulta Unidad máxima de transmisión.

Casos de uso

Usa interfaces de red múltiples cuando una instancia individual necesite acceso a más de una red de VPC, pero no deseas conectar ambas redes directamente.

  • Función de seguridad y red: las interfaces de red múltiples habilitan funciones virtualizadas de dispositivo de red, como balanceadores de cargas, servidores de traducción de dirección de red (NAT) y servidores proxy configurados con interfaces de red múltiples. Para obtener más detalles, consulta Ejemplo 1: Dispositivos virtuales de seguridad y Herramientas de redes.

  • Aislamiento de perímetro (también conocido como aislamiento de DMZ): Una práctica importante en las arquitecturas de red en niveles es aislar los servicios públicos de una red interna y sus servicios. Puedes usar interfaces de red múltiples para crear parámetros de configuración en los que haya interfaces de red individuales dentro de la instancia; uno de ellos debe aceptar el tráfico público y el otro debe administrar el tráfico privado de backend, que tiene controles de acceso más restringidos.

    Cualquier recurso al que se pueda acceder desde Internet debe estar separado de tu red interna y sus servicios. Esto limita drásticamente el alcance y el daño que puede causar un incumplimiento de las normas de seguridad. Por ejemplo, puedes colocar una segunda interfaz de red en cada servidor web que se conecte a una red de nivel medio donde reside un servidor de aplicaciones. El servidor de aplicaciones también puede ser de dos bases para una red de backend en la que resida el servidor de base de datos. Cada instancia de dos bases recibe y procesa solicitudes en el frontend, inicia una conexión al backend y, luego, envía solicitudes a los servidores en la red de backend.

    Mediante la configuración de dos interfaces distintas, una pública y otra privada, puedes aplicar distintas reglas de firewall y controles de acceso a cada interfaz por separado, y aplicar funciones de seguridad en las comunicaciones del dominio público al privado. Para obtener más información, consulta Ejemplo 2: Usa dispositivos de terceros en una situación de red de VPC compartida.

Ejemplos de configuración

En esta sección se analizan varios ejemplos comunes sobre cómo usar interfaces de red múltiples.

Ejemplo 1: Dispositivos virtuales de seguridad y Herramientas de redes

Por lo general, las aplicaciones virtuales de seguridad y Herramientas de redes, como los firewalls de aplicaciones web (WAF), los firewalls de seguridad a nivel de la aplicación y los aceleradores WAN, se configuran con interfaces virtuales múltiples. Cada una de las interfaces múltiples se configura con su propia dirección IP interna y, de forma opcional, con su propia dirección IP externa.

En la figura 1, se describe un ejemplo de configuración de un firewall a nivel de la aplicación en el que se controla el tráfico de Internet a una red de VPC. El firewall a nivel de la aplicación se implementa en las VMs de Compute Engine.

En este ejemplo, la ruta predeterminada de la VM del dispositivo se configuró para usar nic1.

Figura 1. Una instancia con un dispositivo de VM tiene tres interfaces de red. Cada interfaz está conectada a una subred que está en una red de VPC diferente (haz clic para ampliar).

Aprovisiona y configura instancias para el ejemplo 1

En el siguiente ejemplo, se supone que subnet0, subnet1 y subnet2 ya existen, con rangos que no se superponen.

Para crear la VM y las interfaces de red de este ejemplo, usa el siguiente comando:

gcloud compute instances create vm-appliance \
    --network-interface subnet=subnet0,no-address \
    --network-interface subnet=subnet1 \
    --network-interface subnet=subnet2,no-address \
    --machine-type n1-standard-4

Este comando crea una instancia con tres interfaces de red:

  • nic0 se conecta a subnet0 y no tiene una dirección IP externa.
  • nic1 se conecta a subnet1 y tiene una dirección IP externa efímera.
  • nic2 se conecta a subnet2 y no tiene una dirección IP externa.

Ejemplo 2: Usa dispositivos de terceros en una situación de red de VPC compartida

Esta configuración es útil cuando quieres compartir un conjunto único de aplicaciones centralizadas de terceros para las cargas de trabajo o las aplicaciones alojadas en diferentes proyectos. En la figura 2, hay cuatro aplicaciones distintas (App1, App2, App3 y App4) que se alojan en proyectos de servicio diferentes. Necesitas que estén protegidas de todo ingreso de Internet y que el tráfico de salida se inspeccione y filtre en un dispositivo de terceros con una ubicación central en el proyecto host de VPC compartida.

Figura 2. Una instancia en un proyecto host de VPC compartida aloja un dispositivo de VM. La instancia tiene una interfaz de red para cada uno de los cuatro proyectos de servicio y otra interfaz para la red de VPC perimetral de red (haz clic para ampliar).

Aprovisiona y configura las interfaces de red y la VM para el ejemplo 2

Para crear la VM y las interfaces de red de este ejemplo, usa el siguiente comando:

gcloud compute instances create VM-appliance \
    --network-interface subnet=subnet-perimeter,address='reserved-address' \
    --network-interface subnet=subnet-1,no-address \
    --network-interface subnet=subnet-2,no-address \
    --network-interface subnet=subnet-3,no-address \
    --network-interface subnet=subnet-4,no-address \
    --machine-type=n1-standard-4

Esto crea una instancia con cinco interfaces de red:

  • nic0 se conecta a subnet-perimeter, que es parte de network-perimeter, con una dirección estática reserved-address.
  • nic1 se conecta a subnet-1, que es parte de network-1, sin dirección IP externa.
  • nic2 se conecta a subnet-2, que es parte de network-2, sin dirección IP externa.
  • nic3 se conecta a subnet-3, que es parte de network-3, sin dirección IP externa.
  • nic4 se conecta a subnet-4, que es parte de network-4, sin dirección IP externa.

Detalles operativos adicionales

Interfaces de red múltiples en un entorno de VPC compartida

La VPC compartida te permite compartir redes de VPC entre proyectos de tu organización de Google Cloud.

La VPC compartida te permite crear instancias asociadas con una red de VPC compartida alojada en un proyecto host centralizado de VPC compartida. Para obtener información sobre cómo configurar redes de VPC compartida, consulta la sección sobre cómo aprovisionar una VPC compartida.

Para crear instancias con una o más interfaces asociadas a redes de VPC compartidas, debes tener la función de usuario de la red de Compute (roles/compute.networkUser) en el proyecto host de VPC compartida.

Resolución DNS con interfaces de red múltiples

Cuando se realiza una consulta de DNS interna con el nombre de host de la instancia, esta se resuelve en la interfaz principal (nic0) de la instancia. Si la interfaz nic0 de la instancia está conectada a una subred en una red de VPC diferente a la red de VPC de la instancia que emite la consulta de DNS interna, la consulta fallará.

Los registros DNS privados de Compute Engine no se generan por interfaz.

Comportamiento DHCP con interfaces de red múltiples

En una configuración de interfaz múltiple predeterminada, el SO está configurado para usar DHCP. El comportamiento de DHCP y ARP de cada una de las interfaces múltiples es el mismo que el de DHCP y ARP en una instancia con una sola interfaz.

En una instancia de interfaz múltiple que usa DHCP, cada interfaz obtiene una ruta para la subred en la que se encuentra. Además, en la instancia, se obtiene una sola ruta predeterminada que está asociada con la interfaz principal eth0. A menos que se configure manualmente de otra manera, el tráfico que salga de una instancia hacia un destino que no sea una subred conectada de forma directa lo hará a través de la ruta predeterminada en eth0.

El comportamiento es el mismo para las interfaces con direcciones IPv6. La interfaz obtiene una ruta para el rango de subred IPv6 en el que se encuentra, así como una ruta IPv6 predeterminada única.

En este ejemplo, se obtiene la ruta predeterminada (default via 10.138.0.1 dev eth0) en la interfaz principal eth0, y las interfaces eth0 y eth1 obtienen las rutas para sus respectivas subredes.

instance-1:~$ ip route
default via 10.138.0.1 dev eth0
10.137.0.0/20 via 10.137.0.1 dev eth1
10.137.0.1 dev eth1 scope link
10.138.0.0/20 via 10.138.0.1 dev eth0
10.138.0.1 dev eth0 scope link

Para obtener más información, consulta el siguiente instructivo: Configura el enrutamiento para una interfaz adicional.

Interfaces de red múltiples y rutas estáticas personalizadas

Cuando una instancia de VM tiene varias interfaces y una etiqueta de red, es posible que la etiqueta de red no afecte a todas las interfaces de la VM. La etiqueta de red de una VM afecta a una interfaz si esta está en una red de VPC que contiene una ruta estática con una etiqueta coincidente.

Por ejemplo:

  1. Una VM tiene dos interfaces: nic0 y nic1. La interfaz nic0 está en vpc-net-a. La interfaz nic1 está en vpc-net-b. La VM tiene una etiqueta de red denominada vpn-ok. La etiqueta es un atributo de la instancia y no de una interfaz específica.
  2. La red vpc-net-a tiene una ruta estática personalizada con una etiqueta denominada vpn-ok.
  3. La red vpc-net-b tiene una ruta estática personalizada con una etiqueta denominada vpn-123.

Estos pasos numerados corresponden a la figura 3:

Figura 3. La ruta estática personalizada en vpc-net-a afecta nic0 porque tienen una etiqueta en común y la ruta estática personalizada en vpc-net-b no afecta nic1 (haz clic para agrandar).

En el caso de la red vpc-net-a, debido a que tiene una ruta con una etiqueta en común con la VM, la etiqueta vpn-ok de la VM se aplica a la interfaz nic0 de la VM en vpc-net-a. En cambio, debido a que vpc-net-b no tiene una ruta estática con la etiqueta vpn-ok, la etiqueta de red vpn-ok de la VM se ignora en la interfaz nic1 de la VM.

Etiquetas en rutas de instancias con interfaces de red múltiples

Si eliges usar etiquetas con rutas, observa que las etiquetas se aplican en el nivel de la instancia y, en consecuencia, se aplican a todas las interfaces de una instancia de máquina virtual. Si esto no es conveniente, asegúrate de que las etiquetas aplicadas a las rutas sean únicas para cada red de VPC.

Interfaces de red múltiples y balanceadores de cargas

Con los balanceadores de cargas de Google Cloud, solo se distribuye el tráfico a la primera interfaz (nic0) de una instancia de backend, a excepción del balanceo de cargas de TCP/UDP interno.

Interfaces de red múltiples y reglas de firewall

Cada red de VPC tiene su propio conjunto de reglas de firewall. Si la interfaz de una instancia está en una red de VPC específica, las reglas de firewall de esa red se aplican a esa interfaz.

Por ejemplo, supongamos que una instancia de VM tiene las siguientes dos interfaces:

  • nic0 en la red de VPC network-1
  • nic1 en la red de VPC network-2

Las reglas de firewall que crees para la red network-1 se aplican a nic0. Las reglas de firewall que crees para la red network-2 se aplican a nic1.

Para obtener más información, consulta las Reglas de firewall de VPC.

Firewalls en instancias con interfaces de red múltiples

  • En las reglas de firewall de entrada, se pueden usar etiquetas de red o cuentas de servicio para identificar las fuentes, los destinos o ambos.

  • En las reglas de firewall de salida, se pueden usar etiquetas de red o cuentas de servicio para identificar los destinos (fuentes).

Para obtener más información, consulta Filtra la fuente y el destino por cuenta de servicio.

Las etiquetas de red y las cuentas de servicio identifican instancias, en lugar de interfaces específicas. Ten en cuenta que las reglas de firewall están asociadas con una sola red de VPC y que cada interfaz de una instancia de varias NIC debe estar en una subred que esté en una red de VPC única.

En el siguiente ejemplo, se demuestra cómo puedes usar etiquetas de origen de manera eficaz para las reglas de firewall allow de entrada. La instancia vm1 tiene las siguientes dos interfaces de red:

  • nic0 en network-1
  • nic1 en network-2

Supongamos que debes permitir el siguiente tráfico desde vm1:

  • Tráfico SSH desde vm1 a cualquier instancia en network-1
  • Tráfico HTTP y HTTPS desde vm1 a cualquier instancia en network-2

Para lograrlo, sigue estos pasos:

  1. Asigna dos etiquetas de red a vm1: vm1-network1 y vm1-network2.

  2. Crea una regla de firewall allow de entrada en network-1 con los siguientes componentes para permitir el tráfico SSH desde vm1 hacia todas las VM en network-1:

    • Acción: allow
    • Dirección: ingress
    • Fuentes: VM con la etiqueta vm1-network1
    • Destinos: Todas las instancias de la red de VPC
    • Protocolos y puertos: tcp:22
  3. Crea una regla de firewall de permiso de entrada en network-2 con los siguientes componentes para permitir el tráfico HTTP y HTTPS desde vm1 hacia todas las VM en network-2:

    • Acción: allow
    • Dirección: ingress
    • Fuentes: VM con la etiqueta vm1-network2
    • Destinos: Todas las instancias de la red de VPC
    • Protocolos y puertos: tcp:80,443

En la figura 4, se muestra este ejemplo de configuración de firewall:

Figura 4. La regla de firewall 1 y la regla de firewall 2 tienen una etiqueta de origen asociada con la VM1. La regla de firewall 1, que está en network-1, solo afecta a nic0 de la VM1 porque ambas están en network-1. La regla de firewall 2 solo afecta a nic1 de la VM1 porque también comparte una red (haz clic para ampliar).

¿Qué sigue?