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
.
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 asubnet0
y no tiene una dirección IP externa.nic1
se conecta asubnet1
y tiene una dirección IP externa efímera.nic2
se conecta asubnet2
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.
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 asubnet-perimeter
, que es parte denetwork-perimeter
, con una dirección estáticareserved-address
.nic1
se conecta asubnet-1
, que es parte denetwork-1
, sin dirección IP externa.nic2
se conecta asubnet-2
, que es parte denetwork-2
, sin dirección IP externa.nic3
se conecta asubnet-3
, que es parte denetwork-3
, sin dirección IP externa.nic4
se conecta asubnet-4
, que es parte denetwork-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:
- Una VM tiene dos interfaces:
nic0
ynic1
. La interfaznic0
está envpc-net-a
. La interfaznic1
está envpc-net-b
. La VM tiene una etiqueta de red denominadavpn-ok
. La etiqueta es un atributo de la instancia y no de una interfaz específica. - La red
vpc-net-a
tiene una ruta estática personalizada con una etiqueta denominadavpn-ok
. - La red
vpc-net-b
tiene una ruta estática personalizada con una etiqueta denominadavpn-123
.
Estos pasos numerados corresponden a la figura 3:
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 VPCnetwork-1
nic1
en la red de VPCnetwork-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
ennetwork-1
nic1
ennetwork-2
Supongamos que debes permitir el siguiente tráfico desde vm1
:
- Tráfico SSH desde
vm1
a cualquier instancia ennetwork-1
- Tráfico HTTP y HTTPS desde
vm1
a cualquier instancia ennetwork-2
Para lograrlo, sigue estos pasos:
Asigna dos etiquetas de red a
vm1
:vm1-network1
yvm1-network2
.Crea una regla de firewall
allow
de entrada ennetwork-1
con los siguientes componentes para permitir el tráfico SSH desdevm1
hacia todas las VM ennetwork-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
- Acción:
Crea una regla de firewall de permiso de entrada en
network-2
con los siguientes componentes para permitir el tráfico HTTP y HTTPS desdevm1
hacia todas las VM ennetwork-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
- Acción:
En la figura 4, se muestra este ejemplo de configuración de firewall: